diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2349882e1..a45a9b014 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -178,12 +178,12 @@ and dispatch only the first again. The second then ships under the newer version. `check-release-versions.mjs` decides *whether* to bump, never by how much. -Pick the level from the changes the release carries: a change that alters the -behaviour of a published API, its emitted wire bytes, or the errors it throws -is breaking and needs a major bump, even when the new behaviour is a fix. The -signal comes from the commits, so mark a breaking change where Conventional -Commits puts it (see below) rather than leaving it for the release to -rediscover. +Pick the level from the changes the release carries: a breaking change, as +described under "Breaking Changes" below, needs a major bump. A bug fix that +brings an API back to its contract does not, even when callers can observe +the difference. The signal comes from the commits, so mark a breaking change +where Conventional Commits puts it (see below) rather than leaving it for the +release to rediscover. ### npm authentication @@ -257,7 +257,8 @@ We follow the [Conventional Commits](https://www.conventionalcommits.org/) speci A commit that breaks a published API marks it, either as `!` after the type/scope (`feat(qwp)!: ...`) or as a `BREAKING CHANGE:` footer. That marker is what tells a release it has to be a major one, so a pull request carrying -such a change needs it on the pull request title too. +such a change needs it on the pull request title too. "Breaking Changes" below +describes what counts as one. 3. Push your changes to your fork: @@ -267,6 +268,41 @@ git push origin feature/your-feature-name 4. Create a Pull Request from your fork to the main repository. +## Breaking Changes + +A change is breaking when code that relies on a published API's contract -- +its documentation, its types, and what it evidently promises -- has to change +to keep working. Whether a caller can observe a difference does not decide +it. Breaking changes include: + +- removing or renaming an export, option or connect-string key, changing a + default, or narrowing a signature or type; +- changing documented behaviour, such as the error class a documented failure + raises, or refusing input the documentation accepts; +- making the client send something a supported server version rejects. + +A bug fix that brings the implementation back to its contract is not +breaking, even though callers can observe the difference. Commit it as a +plain `fix:`, without `!` or a `BREAKING CHANGE:` footer, and describe what +callers will notice in the commit body and the pull request. Such fixes +include: + +- a method that returns a promise but threw synchronously, and now rejects or + resolves instead; +- a crash, hang, unhandled rejection or uncaught exception that becomes an + ordinary result or an error the caller can catch; +- an error raised for something the contract does not treat as a failure, + such as cancelling a query that has already ended, or an error whose class + names the wrong cause; +- input the documentation accepts that the code refused or mishandled, such + as data that fits within `max_buf_size`. + +The wording of an error message is not part of the contract; the error's +class, and the conditions documented for it, are. A fix that also changes +documented behaviour is breaking all the same. If it is unclear whether the +old behaviour belonged to the contract, say so in the pull request and let +the reviewers decide. + ## Pull Request Guidelines 1. Make sure all tests pass diff --git a/QWP.md b/QWP.md index 12ef603fb..cb3e4b680 100644 --- a/QWP.md +++ b/QWP.md @@ -1533,7 +1533,11 @@ statement that completed anyway, or a result that ended with nothing withheld, succeeds. A query sends at most one `CANCEL`. `cancel()` settles once its `CANCEL` has been sent, or once a reconnect has taken it over: the frame then follows the replayed request, so a callback that awaits `cancel()` does not hold up the -reconnect that has to drain it first. +reconnect that has to drain it first. Once a query has ended, `cancel()` and +`grantCredit()` resolve without sending anything, even if the session has since +closed or failed, so a timer or an `AbortSignal` listener that fires after +completion may still call them. Neither throws: every failure, such as an invalid +credit amount, rejects the promise it returns. `await query.awaitCompletion(timeoutMs)` bounds only the caller's wait and returns `false` without cancelling when the timeout expires, matching Java @@ -1553,8 +1557,12 @@ client discards, and ends a round trip after that. Without flow control (`initialCredit: 0`, the default) QuestDB does not read the connection while it streams a result: it sends the rest of the result before it sees the `CANCEL`, and the client discards it. If the server does not terminate the query within the bound, -its connection is closed, which is what ends the query on the server. A query ended -with `query.cancel()` then fails with `QwpEgressQueryCancelTimeoutError`; one already +its connection is closed, which is what ends the query on the server. A browser +cannot drop a connection itself, only send a close and wait for the server's reply. +Without flow control QuestDB reads that close only once the query has finished or +failed, so in a browser closing does not stop such a query until the browser abandons +the closing handshake, after 60 seconds in Chromium. When the bound expires, a query +ended with `query.cancel()` fails with `QwpEgressQueryCancelTimeoutError`; one already released by its timeout or by breaking out of `for await` keeps the error it was released with. A reconnecting session, the default, opens a new connection for the next query instead of failing. This client-initiated replacement emits `disconnected` @@ -1663,6 +1671,101 @@ const session = await connectQwpBrowserEgress({ }); ``` +### Error positions, statistics, row counts and paging + +Per-query options ask QuestDB for what `/exec` reports besides the rows: where an +error points in the SQL text, how long the query took, and how many rows a result +has while it is read one page at a time. They need a server whose `SERVER_INFO` +advertises the `QUERY_DETAILS` capability (`QWP_EGRESS_CAPABILITY.QUERY_DETAILS`). + +```typescript +import { QwpEgressQueryError } from "@questdb/browser-client"; + +const pageSize = 100; +const offset = 2 * pageSize; +try { + const page = await session.query(sql, { + skipRows: offset, + maxRows: pageSize, + countRows: true, + stats: true, + errorPosition: true, + }); + for await (const batch of page) render(batch); + const completion = await page.completion; + if (completion.kind === "result-end") { + // totalRows counts the rows of this page, rowCount those of the result. + showPager(offset, completion.totalRows, completion.rowCount); + } + showTimings(completion.stats); +} catch (error) { + if (error instanceof QwpEgressQueryError && error.position !== undefined) { + highlight(sql, error.position, error.message); + } + throw error; +} +``` + +- `errorPosition: true` makes a `QwpEgressQueryError` carry `position`, the UTF-16 + offset into the SQL text the error points at. That is an index into the + JavaScript string the query was issued with, so `sql.slice(error.position)` + starts where the error does, whatever non-ASCII text precedes it. The message is + then bare, without the `[n]` prefix, a position or an error number, that QuestDB + otherwise puts in front of it. An error the SQL engine raises without a position + of its own reports 0, the start of the text, as `/exec` does: a query timeout on + the server and a query cancelled there with `CANCEL QUERY` are among them. An + error that does not come from the SQL engine, such as a protocol error, a row + too large for the server's send buffer or the cancellation `cancel()` sends, + carries no position, and neither does the error for a request the server + rejected before reading its options. +- `stats: true` adds `stats` to the completion of a result (`RESULT_END`) and of a + statement (`EXEC_DONE`), as `QwpQueryStats`: `compileNanos`, zero when the + server reused a cached plan; `executeNanos`, from the server receiving the + request to its terminal response, the other durations included; `countNanos`, + spent counting the rows past the end of the row window for `countRows`, which + is zero unless `maxRows` ended the stream first; `clientWaitNanos`, the time + the query waited for this client to read results or grant credit; and + `jitCompiled`, whether its filter ran as JIT-compiled native code. Errors carry + no statistics. +- `countRows: true` adds `rowCount` to a result's completion: the rows in the + whole result set, whatever `skipRows` and `maxRows` leave out, while + `totalRows` still counts the rows the stream carried. When `maxRows` ends the + stream first, the server counts the remaining rows without sending them, which + can take as long as reading them and runs under the server's query timeout. +- `skipRows` and `maxRows` bound the rows a query streams, like SQL + `LIMIT skipRows, skipRows + maxRows` around it: the first `skipRows` rows are + left out, and at most `maxRows` follow. `maxRows: 0` streams only the schema, in + one empty batch. Both take a non-negative safe integer or a `bigint` up to + 2^63 - 1. A server with `QUERY_DETAILS` ignores the window and the row count + for statements. + +The client drops `errorPosition`, `stats` and `countRows` on an endpoint without +`QUERY_DETAILS`, as it drops `resetDictionary` on one without `QUERY_FLAGS`, so +they are safe during a rolling upgrade: the reports are simply absent. A row +window cannot be dropped that way, because such a server would stream the whole +result. A query with a positive `skipRows` or any `maxRows` therefore rejects with +`QwpEgressRowWindowUnsupportedError` before anything is sent, and so does a +statement: the client cannot tell the two apart before sending them. Failover +applies the same rules: a replay asks the endpoint it reaches for the details that +endpoint supports, and a query whose row window it cannot honour fails with +`QwpEgressRowWindowUnsupportedError` instead of being replayed. A query issued +while the session is reconnecting is checked twice: against `session.serverInfo`, +which still describes the lost endpoint, and then against the endpoint the +reconnect reaches. If only the second lacks `QUERY_DETAILS`, nothing is sent and +`query()` still resolves, but the query's `completion` and iteration reject with +`QwpEgressRowWindowUnsupportedError`. Check +`session.serverInfo.capabilities & QWP_EGRESS_CAPABILITY.QUERY_DETAILS` to choose +between a row window and SQL `LIMIT` in advance. + +The low-level `encodeQwpQueryRequest()` takes the raw flags +(`QWP_QUERY_FLAG_ERROR_POSITION`, `QWP_QUERY_FLAG_STATS`, +`QWP_QUERY_FLAG_COUNT_ROWS`, `QWP_QUERY_FLAG_SKIP_ROWS` and +`QWP_QUERY_FLAG_MAX_ROWS`) together with the `skipRows` and `maxRows` values the +last two require, and `decodeQwpEgressMessageWithQueryFlags(bytes, queryFlags)` +reads the trailers those flags add to `RESULT_END`, `EXEC_DONE` and +`QUERY_ERROR`. `decodeQwpEgressMessage(bytes)` keeps its single parameter, so it +stays safe to pass straight to `map()`, and rejects those trailers. + ## Combined pooled client Use `QwpClient` when one long-lived application component needs both ingestion @@ -1990,6 +2093,7 @@ The public error classes preserve enough context for policy decisions: | `QwpEgressQueryAbandonedError` | Result iteration ended before the server completed the query | | `QwpEgressQueryTimeoutError` | The query ran past its timeout and was cancelled | | `QwpEgressQueryCancelTimeoutError` | A cancelled query did not produce a terminal server response before the drain deadline | +| `QwpEgressRowWindowUnsupportedError` | A query asked an endpoint without the `QUERY_DETAILS` capability for a row window (`skipRows`, `maxRows`) | Always close senders and sessions in `finally`. For a standalone sender, publication plus ACK draining is bounded by `closeFlushTimeoutMs`; the subsequent WebSocket closing diff --git a/README.md b/README.md index 8b3a11f3d..8899e00eb 100644 --- a/README.md +++ b/README.md @@ -545,6 +545,16 @@ reusable buffer pool. Views are invalid when their callback returns; copy a byte view with `.slice()` or call `batch.materialize()` inside the callback to retain data. Tune the default four-slot pool with the session's `bufferPoolSize`. +A query can also ask for what `/exec` reports besides the rows. With +`errorPosition: true` a `QwpEgressQueryError` carries `position`, the offset into +the SQL string the error points at; `stats: true` adds compile, execution and +client-wait times and JIT use to the completion as `stats`; and `countRows: true` +adds the size of the whole result as `rowCount`. `skipRows` and `maxRows` read a +result one page at a time, like SQL `LIMIT`. These options need a server that +advertises the `QUERY_DETAILS` capability; see +[QWP.md](QWP.md#error-positions-statistics-row-counts-and-paging) for how older +servers are handled. + `queryTimeoutMs` (connect-string key `query_timeout_ms`) sets the session's default query timeout; a per-query `timeoutMs` overrides it, and zero disables it. The timeout runs from the `query()` call and covers the whole query. When it diff --git a/docs/assets/hierarchy.js b/docs/assets/hierarchy.js index a13da9298..492640f45 100644 --- a/docs/assets/hierarchy.js +++ b/docs/assets/hierarchy.js @@ -1 +1 @@ -window.hierarchyData = "eJy1mltv2zYUx7+LnplOh7qRfmsuxQqk21on3UMRFIrE2Fpk0qPkdEWR716QCjKbkmyKVF98918//Xk755A/AilE2wSLL4AhCRFN0gwBxhlFlEKGSBglCCCGBBHIUgRhCAkCHEdEvcbqx3ESIkKAIACqfkdTjACHIUEUAyAIcZzcoUCyh5oVbSV4Eyx+BFkCiXrm+YYFi+Djt+3lTub3NXtbPN7y/CmvavXuSkohAxQ8VrwMFoAJCnayDhZBUedNw5rfvv67Y01b3n/lomT/NGdFXTHevjmq92bdbuoAdRrBImib8kxd4Kz74BkF6r4P6T6xbZ1/v6z0HeTyuwfYoNQJJhQU66ouJePB4guhcYxImER3GjWJjqP+xWRTNS3jhY+dp1RtTKUwRLpshWRvt1vGy5tqw8Su9cYckbRgBIhHGc/ztljfCHGdy5W/lSOSNoxRNsp4sWbF41ZUfCYTDT0buuQInZByt1U9aCa6Qz0buiwdpZuHafpwDikg1fGQalmkDEQEaIIIVm9xkiKCQT1k6jOa6WEPdHCG0gjvdnU9z828KllYi2Hc2mtRPLJyHqY9LRuqI4NFKV2LZqahcqBmQ5Yc9+uWb6V48lwFj2vaUGbj/ezjLpc5bys+V9OagjZ8dLx9l2y1Ybydd8oeErXgTIjZ2qJmH6pmo1YAHzJTxoIlxcZCvGS8vKhF49WOhogFBwHS5/AkmD79kihFyhI9rZIo7SP5hyWmioU5NDYikVsuWSGemA5rZ4xHT+va0KbYoN2uZF76jLl9hUkNmpAUqfwCEUpj3aqUGl5+VtGr4DOMvyGl036p1GiPSHUPJs93Dw9MfsYOIIcCU9yimOg8Qj2PEUW+RJGFI/GBIzfF9kbmvNkK2Tpcff/vNtdOjN57kRdr9ok1rP3AmiZfsVcGFY69MFS8ZfIhL472j57SKM6rnEZKYnqIdPUfKy4FZ75Aho4tTmosGe+keukKof9tfels4NK/s7xk0g+g07DAOBgxEIZppMofYagLIgRRmsZItRhSPUlVUfRiQtPMSM3/ECW7WknWNH9uu1KIK39PydLMDOM+0ns+G9OhlCUUhawP9Te7X6pIv50DyxSb2uaqKZEyT7crTY3l5OOOvSyVvqOzp2Rnoe6NZhzc7OpWFxh8ofpS9lR0iOpC1LsN9+TpRKxJzHrjvsiyWLNNPgtPJ+Uwp4T07gWUDIFe8XKeZvxfyNo6bKZYYtdWfOU7MA9lXIbki2NpZMbs8onJ9/xB+FrWU7L1DMdJL5rqBzSTcAyRyX7FAJ1fNDTWgHMpvjVMLlmjQtlztSXQynxrHxXfdwJ7xh2TPB2QAYRmvOG5PdAn9Nkf0Fsic20Q9NG8dwgAKKVq4wbr/Ee/+AWbBKfJp+8SAGRgbhM4VUoG4KaXSgAys37oUivps0wulujdNZ9qyTCDS9fCMdK+dF2Lml3LqWIyTDetZKJ7/S+pmfTp5iia6F1Sz6rJAJlj2UQPPKRnXqTXiLsOMUkGFwunNGZ0nXBIZQCHZBjNLZ0ZZXNJafR2+iCca1oziueb2ugmRtrNrsXBzG6ciyF9ZsdqCGBsxgOO5ZA+klM9RJ2RiDwKIn2MCRURfUDDuyQyguBYE8ExSdVhEBypxxgQ4IjosyRqOlF9Sp8r6SJ29dVMCXT/LlwzaMU+VwY9FBg5ptA4jrB/Cj0GNCmHVsd+5sqhjwM5JtHKq66DxXHvqIlbEj3GOTmLVuek5siih8JanzRaT/8vpplblM559FA055BIPz//BORkSfI=" \ No newline at end of file +window.hierarchyData = "eJy1mltv2zYUx7+LnpmOF10ovzWXYgXSbYmT7qEwCkVibC0yqVFSuqLIdy9IZZl1symRe4mdAPnrp/85FM851A9PClFX3uoLwgRGIA5jAhD2fQwQhD4BFAUBQCiIMKA4DgGCKIAA4RBB9T301XfsAxoTChCGEQYxpBggjMIAxIQggCCheAM8yR4Llta54JW3+uFFIQrUJ0/2zFt5N9/Ky0YmDwV7nz7d8+Q5yQv125WUQnrAe8p55q0QpsBrZOGtvLRIqopVv3z9u2FVnT185SJjf1VnaZEzXr87qvduV+8LD7Qa3sqrq+xMXeCs/cML8NR9d+luWVkk3y9zfQeJ/G4BNip1ggl46S4vMsm4t/oSw9AHFEVko1Ejchz1DyarvKoZT23sPKVqYCpGaIx0XQvJ3pcl49ldvmeiqa0xJyRNGIk/yXie1OnuTojrRG7trZyQNGEMoknGix1Ln0qRc0cm9vRM6KIjdELKplQZ5Iiuq2dCF4eTdG6YZi9ntS6ASjygIguUgYASFABK1K8kCgElRP2IA0B9FOllT/rPzwOED01RuLmZNyUDawmZtvZapE8sc8N0oGVCdWSxKKVrUTlaKh01E7LouF/3vJTi2XIXPK5pQhlP59lNk8iE1zl3Fdq+oAGfj6bju2bbPeO120f2mKgBZwT70RYF+5RXe7UD2JD1ZUxY/N5GvGY8uyhEZRXHnogBR0zokMOSYP7jNw5CoCzRj9U4CIdI9mVJX+W0OarI65Lcc8lS8cx0WeuwHj2ta0JLcY+23Moks1lzhwqzAhrBEKj+AsQI+Sqq6rNL91lVr4I7WH9jSgZ+EXK4BFV6MHnePD4y+RkvAOkKzGomfKj7CPU5RURsiYiBI0HHkbu0vJMJr0oh6wVXP/x3k2tHvey9SNIdu2UVqz+xqkq27I0BB+G/DDmvmXxM0qP5MVCaxHmT00hh1EvZq39Yeik4swXq6Zji0N42+0Gqr0sh9H+bXjomI5f+lSUZk3YArYYBRnfFhDQCKmWACpKalMR6GkICPR8hAEEMoV5TURx30X8TGbvaSlZVv5ftLGTpDQyUDN2kPh0ifeTOmLpSZlB62DSk+pM9rFWtX7vg6ovNjnoUx0C5t2mBY9gFvmnY625pu0AHSqYmIjIo1aumqPWMwRZqKGVM5Q8mKkrqQhTNnlvytCLGJAGcJlmnO7ZPnPC0UnMTTDu1eQUdjPSU+hXP3ITxPyFj6/rF6K1o6pxvbVdmV2bJmmwdwxD2y3b5zORH/ihsLRsomXpGOiVxWw8Na5pZOD2R2X4FRHc5CEG/tzGdS/GtYnLNKlXNnqtjgVompXlh/NAKHBh3TPJ0TYYQhr2dyvKEYEhoc0SgT0VcnREM0awPCRBGQajObuhryAM6On23PCc4TT7/oAAhGlIXw5IRuPnTEoRo7NuPS4Yss+cl+oDNZmAyzrAgtSBFQPuyabH6qbVoaDJON29qorP+fxmbDOlczE30Qanl4GSEbOHkRC88oJ+8QO8RbXgxwqObxaJGZnKfWNDMIIz9cbRlDc0k26KmRh2pj8It7Wsm8Wx7Gx1ioN1sI04wcjQPGTIvHIgg7GPiZCIyRFo0EkHY7x94zZqJDDFmDEX0SxrWU5EJhGVjEe0H0LkDdLAAwoF+WySIA/3OiPpLGMI2xYJ+M7a4gR7exdIOWpG66qDHCqOFLTQOoYMWegpoVg+t3vxx1UMfB1rYRCuvNq+kjproKc7ZXbR6VcpFFz1W1tq00frx/2pa6KqPHqvmFjTSLy8/AXATSoI=" \ No newline at end of file diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index a4e52835d..3b316bac0 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "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" \ No newline at end of file +window.navigationData = "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" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index 90c0d47b9..2428c8c0c 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "eJzMvVlzIzmW7/lVrqVeu+d2KjJj8vbTMCgpUlPakpIiu7LtmgxyBymvcDoYcFBLXpvvPgZfSF8Ap+MsLr10V0UJf/4OHOvBwcH/+Umrl/yn//zv//PT9ySLf/rP43/7KRNr+dN//vT//NjK3MSP//PR/onU/x6liczMT//201anP/3nT2sVb1OZ/8+H6u8e2n/3fz2ZdfrTv/0UpSLPZf7Tf/700//3b/Wv/Hz82+53/njZfBEmerpT6kLolTzVWundr1TFvb/iLO347X/7aSO0xfcbtsf79ed9NUQqy43eRoYE6qgtFwTolm3W6n8c/7LjfrR/eZv8Lb+8GZlToBeKefK3fKwUGenX4vULuQFr8cptQ6ddJ1n8TaTbQPxdqY/Qjtsw6Pa7r5E95vHn459/+aVBum0MMyDGUoCI7j9+2X9ULXOJYqsFGNhyab4olUqRYQBzaR53KkyUb0ZiEUsJHr75k0D1kVyaqJTg4TsR6PqLBWP9ncgoWYv05+PfsJRNIVbW418/07CWQqysn3+hQS10mEjV9jFFt9FahIfxLFUCNZTn0iwrDR7Cr1I9ifwJybjaqfBQnuMm61yahGu2zqW5UNkKiZeWEnx8+MEn3anwUF5t0xSJmJUSfHxks44lnWDmaTDjG0CDmbsdUM1CDWTGmcgS04yjlpd7LL19Uho7muaVBg/hXbKWuRHrzWUSaYXZ11pWU6utazVm6iuR0UFnlRgP8/02iZGk21KCh++b0BF+o/S8U2GgNOo+ycxvM63FG4bTqK3VEZUODWnXV1SWupV5nqjsi1ImN1pswr2hAzofwZ90CA/tYRqqR4+3MRLbPGy3ctiKSnLPb/L435P835PsSerEyJjTnlTlcq5iapusbFTKvotdxT+RmlQpvos1WuYbleXyi4rDRqeDVtXKj6XyJH1IS6PfROiuf4Qpe9l3+Uq51M9SLxS1YaWuVu9t2V8qY7Hs71L3fSwzwmxz+gGw1H3PEbAkuJR5LlYsxq130u9in11bq625eRLUE3KlvKmU38c6/XYlX81pFm9UEug2O2ygfsvkq5F78Xex0VpEalcpOJUtnbPIJL9TG5WqVRKJ1E4CC/kvGRF/uSQ3+x+xM4Kuf+T9rNYiy60Io831T7yLxd3d15uRCyliGbaZ2ZX6CDurNgx6H7WvEV+ESXBcRocQHoPhYuu04Y3KE5OosLPwDmBDg4VRy7VIsiTwhKID2RQhomz6UOTrRkZ2ysIwliIyg3mjDjJqKeIvyeo8M4Fe6V5VivgxWSWVDh/pfUKEuuVmxfbxgpO2n3cZi4PcT8dYyuVOhpMT/9WXOxkmzvPM/Bx2HuWgTCoRPkb8F08y1u99npmwo0g3IuwEchThfULxqbfM3/o+ofjYW+avfZ8QfO4t8/c2SzxiqUG0nuyvwv+0i/3ghW9Z6oOswhswFKvwqka8q8hUZisTdrrdgdwpEPE1293GxkvDBpomYiGDG2lGcoYPNU5O+FgzkjO4JzsxwX15mBJ88trhRJ+8HiR9sf8rdPPQRC2EsLuHcayw7YMLFrd/GEML2UD0STE7iBGUwC1EjxO5hxhLSvDtkbuIEaSgbUSPk3HErykJvjvjeF9Toob7GpJptC/k8XN8IcM5x+84CT455xy/48R/dMY5vqQEbCn6kIg9xQjGv6RWBJPQ37UMDWdn7zMvNyMBkGWJD7DnaYBg9zvzLl5nr7OWRidR0Lds0u2LE5A129mj0lq9/LGVOmi522QrJX5UEix8tzILPOHqA+a1BjFhEVwGbnVVYWomlWWBJ5+dvpB1TzWhXM7RYm7NjoNDRHuFP8wY0mWiGU6a1eSt0ZOttmFms+j7fSaeRZLa/xZctX6VD1DHB+CwlT1Qg1RxtwctoIq6BdgCibk9aA9lxG24TaHxtofMoYq2DbcEFJ16yBzS2NRwm2CRqYeMoo1LhVoVGpU6ziqqmFSAVaCI1INWkcajQq0CRKOOM4wwFjXcNmgk6iHTqONQAZbBo1APGkcfgxpuX2AE6iGbiOJPR9lBH316yDrG2FOgxbjI0xH28sSdjmun7T3H6UrLPA/2GjSKfYBdRZcGu41oVopvra3Wm1SGRnc6QBsyHJxaFsXPgxbRPcxKBXaV103ZzbglskimqYy/vN3nYQ6ifqXWWo9v2xzmKBrFvEzVy1wVvTiVuAq2UlFTiod4I3JzIkWcJmFr2x6vFYr3Qjy0WppEIyt2r8HDaKReJ5lIFzKSyTMSthbTezEe6m0u82+JfAnyYvdwrcpzpcLDadXnIk0fRfR9sc1C49R7xFYvqvT0To+H/SUxT08qjZNstZD5NjW4ym7I6Z0cFXnT4/zfIn/LonMjtTBK/28UdCGVVFJMvEKvSYY0odcMI1qH9KsWERpzVYmwML6IxMxpFjeFFscKp31CUsz2BAsGVj6yZQ35mqbPmgIOdPyLMFlJsfCmIlnPCRqA1WFtBbFWmwthZJG7F8VqlVJh5GOlxEErXzeJliTDainFPLIuRYJrAJUAC1uSJWGZv/p0tQQfH77DlzqcvX2lRWbmWsZJkD+mR1roRLUOB2mSnwSeHvQgkzzuHhXQ8W22+dNCFicSuB2LFdJ7IW5Wu2ch430uxTiYtUylyOWlMFInIk3+ljF+4K9E1w1Rzjmg+jlb5WTstsp5mYtPS13vheh09V78HFW9F2JT1Ls5U3ohN2nYbQsnsVkqrWspHl7rFSJwLDHxVSd0+Em5EuKcle0m70xp215PtEhwW0YrtlTatte4EqPyinvPPWaPIrNzLWrT0xb5WGciDjbCE5JO9TGdQ7hsoDqV8FvgbTPlnvMO3037Qh+r7Xj4CNuPoyqZ2pDPFqp2NN6Sali+hLqEfZZUumusb3jYEm+vwHSED9j2WZo7awtnaNQjoq/wsDsdUlJvOyUYtz/uiM05Vk8xSvONz1OMzHxjcshoXKWeC7ehKoht0Z0GIcKyC/dRjmoNYAXW9eEPPynuZyAhdyJclE8ii/Mn8R2wc22BNnW4WAHX5BykiNtyIzkzuVImEUbG9tRTU3Sco71m1NLkt+Gv3MQX8hlyHOax4O/cxGmlyMVfhsafZ0uFxC6FklKIjrZ1QF5uFpGgexUeSuiheHs8Qx6IHmIMvW7pG3LZCFEHTi1OkiOnA7QbLa3WmdI3SqWL0uOO5K40l0pvlEr1TpPHgvrmMYYYfHt5PCEwcq6PiQyeO8BaBpbDjsw6iy8rhDsuO8CaP21NrF6yM6UbF2axs0ElulS6/Dvy0WJo8Q28Ge3T+DCbTA8azS7TUXdDl11RS4a+BfYfSBYPo657n4kkVc9SBzeRVsEP0C76PNjG0K4aTwsQxsj1Jiys1oHakOHhDL5i7qrP3q1yLGG7LZ4XUcX5LPoOPw3zaXyAFjqIhm2s3rrztIelVuuzPGgHMcxvBZc5aDMRym6EXklzax1yWVgg87AJpW6+1+W3RJF+A6MYv4Czr16J6Du0j+7Kfpy+2UYi6pP7OvL6JstnyvDADSU22jLxEc1HPyrFwJEhQ8zO9opbFntFPk4LZloY+6uPcmV8yAbM0niUBe02cynXSr+V4WSzzUZmMfTMbljpA7SeEYDYJnSgNj3taC1eg1PnjjFmLV7ByXRhltgDRHsJgcWcWnxim0AHlWPsQZ1XwmzZ5kzfxgpP8F38Y1cRwXun1IVd36LGrr7SBxu7PICUY5ejNr17LLGWc7UNyy0zxpxCOaqUJ7IGOxL7bKEaicdbQjIS+8whHYmHbfL3+DPbPkh6fF/pg/V4DyBlj3fUJlMf8RlD1UfGW7IRb6kCvHs2xppKe2KLSHq9zyTSXj9sU7vX21PWWVT8OHRz4pH4AP18iAzbwX0V5/fRqK0O8zYO4jcEudlBq/RBeNTyfAR9v40vquoCte5W4Q/SrvtMFC26XU1UZ0E+Xuh50GhSaK9zwGL7m5e301a1MipSaXg7bRb8CG20x4Nun62q8dZgEWd8ERo2tC/1AequA4OtuEaNUEU3dwnBoc1ONoqI4S4hKlx4DCU6BrdLTBaAG0YPir71s6NCb8eQw+Juu8C4oFs3JypOtDcGQMO+DrMFRyx22cDhiiPZgmMVnYDgQEX3+NmedRayeqXk9PVJbHMDOB30SHyA+WiIDDs5+SqOMF5qEB8TORXIHrxuHq536Op5BHW3bVuvwkkS2QR4AnBD1inwIdq1jwvfql1VRtcu/NzwVnGAeLhN3EidJ7mxgU/o5tHV+oAtxYlI3Wh6dcrVfjzWUD0CFGKXq5WV2etBM2qv+IdpS30qmubTrqyhk0VIAKSXvVDEhD4G0Idf2Pdiw+/sH+DttmOb7Dg4E1aj2Idot20afHvdV4rnSxfpvmDttMNaKOHa50HaSKXbdRbYMHt1WmtwEILSGvQYUakMxlDaFwkCox76kPYtAmCAwwhGY58lubL/GQNZqGSlChFl++6nxFViWZ6DzJbBfl/KXuIdr0+KdwOhA2VV+mON3k0owkG8rqmB2Ab7Zwv4l2+B25gG+48EDaFP3rktnyv9uF+/UtCXmnFTk9OCzSZ9m4voSdoktNAxoW2AlYyspK4kGfnj+vFONHbcfwaUiTb0zvIwMfTi8njqRqpcCuxGslxu7lyawkV7Gz3JtaCBz6UpnMZ5rUk8MnrnG0T926Ifa6bZERFOM0UFeU+DKHYMe2rKXcMwd7nuxyx7m3VttShWv2OYoZN5lxc7iQ+zYnc+e1qq3c8BXtweqIFLsw8apsXuhva4VDuiYd5nkSb4llCrUHK2zoyLfkHUvRg5l0qfimJhj2ZdKi1FsaZn5IXviveg+J3xEGEq3tQWD7mT4eJsPCeAhm1rcRHr8IxSnlkAnEVqNCl8p9bkxG/OBikJOj15b3eurufFMAhbXu/Lfpj1dQeJZoHdqKNBH/d5FstXCmb735NKjJK5uyuw1ypupP4m0i2g73e5C7mN1M+VHCN5BlpUdYFxC6pRnCq72qYpcM3a41VZtk1T5MJ1DPdGyyixgZVfktCgIhf4Tu4xgYYUjSWH7xC60PgtwhjePBIpQVOuZThJ39aPKt37e29By5seeKG69/jmqIXOGDvM24aAu1Ih5USvxruQqOX4KMaZ1jaGZS2zIv8HTc9bSSOsblzrsvRDlyUk66AdP87LO4r6S2I7DRn2YyE3BbdSqRSAXbwLeqfFSvxmCIYNi1sKcbLOnwTB2nklTVQKcbKeyChZi/Q+K6YwgPvJgR2Xmtu9JqsFavtIMYdb8FqKk/csVYJmlF5WSpy0X6V6EvkTzUJ0Jc2q1ONYiXbIz4nmwoR97rtQ2YoENS2FuFmPf/38p9I0Y0Va6r2Uepzkt09K07SIvFJipTU6IWoVeS3FyltsJGh4ayl+3jOlIYdvXuil0pjDlwByUmx25nuz/I1slbw1y98mWCPfb5P492QFiI12MW+T+KkU42a+gDi/Pcgpxgl+mDjJrXsOT5vkWanDRlp5EolczJUnkcXH7KOm6X5Ncu4+aH/oS2LWYhOc3cgDv03Tx0IQnNFoLHs55xJxl2L8zNXEQtNS6pmFu5UUxx05UU2XYhw17Tz9W6gXWGVXBT/MuV+Th+bQr66a4Zg6JGmtwcWo1QtwxmhhavWCnCocpGhvdwsR5eo+TEfi5+4Ckzq5R9qA7+5E7u3DvBjfdheYwrE9ghjq1e7hYl3aI1hB/uweKMqZfZgS5snuUuLc2Icp0T7sLjCZA3sEO9B73UNGuq4PkwL91l1QpNP6MCfKY92lJXFXH2YG+aq7rChH9WFGmJe6C4lzUY+jBPunXbBo5/RhZqBnukuLdEuP4AT6pHugSIf0CFKgN7pHinRFjyWFeHPdrBhX7mFauB+3S4t34o6gBXtwe7Ro9+04WpDv1gWLctweYIV6bVucWJftAUa1RPIVAmRsXe+PSuVlkq+t+yE8f1C38EfwAjmZ0J6gXjWR5Zry8JIllxpNbhNozkOvkXvorVbvIjm3BcU/4eErmem4tTT6TYTuvdzwTa3pLCizw9o/JzChFNPqXWz4S2V0Nvxdik1oQ5Gui6gTl2KT9+LyZy9lnosVnRnrnd50lpTv3RKYsBPim7eqFydunkIv/3mIS7nNU/cOIHud67cr+WpOs3ijkkBXhscU/ZbJVyP3itNZY9nxFpQqrNSd06Ykv1MblapVEonUlivzABLYkuRmr2znCF0rT2yfFlluS1JbV+tOZ1tnR3Arsxj4fm+n6AfYDbiIsHuBbgVR7QTcrFT7gLHUkHeF3eSY14QHaPutNSz7XFkC2zY7A4KIvssYklanQXNUiGCy6VSV4aVcS6OTKOgsosm3L05Ottk+pkn+hK/DnRBtPbaSxdkj73lw7pHWl7YS8LwjB/iCZqIWFmiNeYjmKsyT2AbKYN7DYaYyBgD3CUsNrm9YHfsjEUsRNsY3I5GAb0Zy0UUii2QamHOnCVcKAHNvHGB7EhpXc1aBreZCn+JpgUGf4RnBdKa0fSkOhbZUeqNg52gHCMs3Q8Bwu+LEXLHA9lKrwNXWqvCWn49/QzLudJhJj3/9TEJ6/OtnZtLPv5CAfv6FmZOEchLGO/kK7t8tTlMKUbMWcVfI6iw0uGqzCLj6dIxDrERYGQkI+fi2eVAYQZusLMzBNMvir9Jg92+FlMhiG0XCtoOref8UCbhD16AvpQYxYRXsh2uHlQhXS0wydF8uJBj50HRsbJtn5PRsFbjoqmBDHGAlwsk4w3tirAyrN8b+AB6Ri26jpRWpdlaL8OSfLd9bKVZtsRAZQIeZgxN/NhnB+T6HmYqAV9xnLiS4vnMZ54oELDTYCIPjZFts4OjYYSoTGpbThDK9OBwapmQtcyPWG9zn3MlwfVEb/IlDtApcdHbddqb0LPoOpbMKS6VFoUBNZ4/2oMdaR7vSeCrncVtxMndXhniADokdEh/ksNhHRnFo7Ko4zzEs8jzRYwPRAeNoK8q4JXIzStkp7Sj/5hJwcuozofyXNeIwdZC+32tB/fQj9UzavkgfukHxyLSTrP8tMUPvBxxzWQbbMf36cbtcSi3j2dreuA9O3OFmr0VFIQpO4DHWBlBbddQ4ZZwR65jKMJiOHEU7aa+DwDtlP0LPcyGhe163jrwRP3lg0nA3LjRJ+BBnK3oljhcyUs+2Q+NpRRzrhhobtQ0fTWR+ptUaD12JLUsxNuaVNNd6FhPU8koapUXMWsPhPignKtwbNZLT6G0WibD8Hm7UhhIbbZHzakZQr4UQMJrNz9qZD+6se+dLMduHEDeKfYBZoEuDnQCaleKZ+Yv/h0GsBIjY8I82OuowhT7YOIoR8rRJDxLzqomHsjeez7UEhR/1YIsxPSrU4A7BEdT2pk9gzGC/ecpXAwwbHEEYPPP0Pzx00hlDp9L0UUTfsXVY6/DVY75L1nQb+vBOjzbf5WkCv74zjrhKKHRTv6KEpa4iBDYNPRbyNIlk6Lv2fV6rooGv2XvmJceM/mew671RDDujd9yngFdjuzC4F2ObNeLt8uFdvcmH6eIHycJbXAcN3th6bJ3Gdp9Ve0H7xwu5SW1ayXrVGezaO6z2ARabIyGxa9ARNUvlTBttEZV7Lcy2TovbrLSIZXjbapT7CK2oi4NuL816IWsZfUroqcAoPkj2FgejM3ELIWdojpY+Yi89CyEdKBNLH9GdhIWQE5ZvpQ/qSbVCThqaVcVH2kuoQkkKyp3iIHWnTSEnBWRI8cG6kqMQ8kJzi/RxvWlFKGnhGUQcwAPJQwiZA/OE9Dm7KUJwbPTZQPrEYxKBUFuBy/nhtOFAug9kG2mv/8odyUK9BK8A2yU/wBrQAYRdBXZqh2od6CSFrgRHMhYe0lDHgbtKrRLUeTCOFvIyhYsV8zTFOFKQP8aFinLJeFmPf/3c7O3lIw/2IGyHm2RG6qWIhon3BUm9WbvnLXIcz1FLKLj6GtXiAS1f3kFC7kRoADvf9ktZarY1T3NVXycNwe0LkH7rPFllIqVhOtqJBVelo5oOVem8KHy9MYCG6pIgrdYo3eZN3zQS62ivB63adnV5sOVKy5ysMo92cqzQSUZLvddjxd40E2RgmaGZMg4Au3veaVE/qJ7XkiDteWJrnqiYjioxtC/YWXGDoa72kt9tM/AOa0opa9tJLxJvAqPKFD0nWiTZXS+cFGtaKR5bcXeA6RQGNmL8KU2zsu9nlFpv7J81z6/RFrU0oQNWKP6FfJbA0XbYhrQSZjakSDlk7UhyIzOpz7NH9ToXGxEl5o3Qrvp30up3Evs70f53Jm5+BQ5DryqF361fLUWS2pPBe53SGVWLbkvRSQ1KssQkIp1rGSfADY7Doko1qlUnNWktXr/YHLytYBisRWvxWjwfqoHhCiEGqOysahGLViAa1gaV1S2tH542wXfZaGVUpAg7TlNxUlN+bKV+ox/dCtl3G9ts0EM7vx7WnqbipKbk+wtHhJ/Hqr7b1ykPZ23WaA7DrLbNI/2O5hWLsi9K2ffixIbQtkL4sSE8qWGdByqw5jieqZjAiObZJ9aC7jHoBPgv8vFWRd+lORP25Ipu2f0iH/NCeLkTntSwv5sxH1hjqF7SOWCA2zN1nuFdU20NWt9U9B057DrgbK4IjgG3U5fk7janKbT+ttEmqLNWrkYKO1Q/g+OkxrTvyNNZ1L8mP6lZ59aQZ5GSdqDatqQSf59+VBoI328OmtbbcU5hVJkL3P48w7BXJgm34u83+lF4fb22vaNZHP5Gp52TORyDDOf4onwux3GmxdviIsIs+v4PKTciTZ4lpX2VvIi+f6/l38FIGyHN1VYL7fdtnni/scswJsfxOJNWSidpKuis2QtOa0gVNXAlV8okwv4pwyhS/Ui2/xFURp1AA0sffzmQXTaj7wnsKj39pfaa6CHTIPNStaKzpxSb1oD6wMJGDRAv/utjCxs58D7r/7V4teGcFzJbUe431+LV/kBay05slFwr/VZeDZxtNjKLT6SI0yQjnZnLX9HFr4jiV+LqV95hgm6afCleqdtpw1TbZt+lqarsZLfUojNNZfsV1juY1L6HQGCNrASnNuRGK0S0oNuWzV5zanMWMt+oLCecilWm95pTm1PmSyVvbHkh+z5NDnle7TKI48B6nDHIw12XMRynu2ONKYQ4RutK2jNkcxhDcFbtMoTrsHqsURTHuW672M5zR5rmS1GKN61QjpvK05pW3JQU5c8DD3xddnVlpzUKfHbtMoX28HqcATSn1y5rGI+vvaa5j39vO+MF6hzYI0Z+WUFmJokKXw4951HvB6CzkK9qfZ5KaSLgPn3Qnlp3IjNsSFMSyVkUtZI40tlT/YCIwAkegYYhrv0NG4S9AhhoCHhcHrQCmGRhtAnjhq+FzLcpUasrtWivjjJ0jgYmX9+o6nUwZwuDObXuNGaQdYymDbT9omeAu1v8Wa9cUNN5V+WDXDp0YvXjoMIquldjjOELbgPYAhhGm0Zyku8xju8sf6x5+JNgt2lMZ8FjzUI6y9w2cbjLxhpE4JZxG8XlmBlvGIVrxmfbgHOGxxzwbOm2gHaDP9YImi2+26LBTT6ZOZ0FwFxET7K4vdZNoTfOol550kl/mYpVaJ92Ex3VUugW06+xMdk9UezQLJ+jUTfiLVUiBp39e5grSbpz/9HGFHcmL0UeetjgMaSQW5dyfF+gyII1B+zyPNSFXn9Xx133z1IDUhl4bNiLsRrQHRGLQuX4ngSHTnRKE3sD7BnrbaqMtUQ/QzyaLr6jUjhPldEt4fDm3qk7Ty76YutCAV4LsYEWj6z8YW/73oKSdLipC9XiDnEOT9MRZEL1lDEZfF7rcWHnRujgodDZtishSlDXgHEpjU4i2HBRlSVOj6ZyGbz+6OEc7XSAFVjXywBmkoXGhXo4SyEeUNtdodNBC3QvxANaDeZ40L0QGaiz59g8XDC/Y6888VXSH9tEg513brijShUVVN6vN48JT2qbS3tbJMlW4Gt9HkOa2p5bfdTmJHFK/Tms5DTfYi1eL5Jl8WNU8GvxmlaSzPDFYsX+3aV4pWEvFG2uvLUAZSkGoCew1dsAeoJYuY1AL0dg0movJaeo9wY8VcU34Olrvjs3Fdm+Oy+ajqRvFKVd06n1OjFGxt8gWZl7WEc7PXiC5lY1+e5Fup4WhDJj3xYcA7zyvSwIhaZ4WnAMeNbMxw6FheZiHwW4TYNPnhyElQoLYh6eErZPCH2KfQygedvgASsRFkBQzvg+Ivmg1Bvh65vxc7vHtRm7gpl7CsTjffANUB/SEfQNJlcteR3vIgcMlh7gnRon8ovI56kUZNAvIo8qPWLsTuOtnuuFPGnRLErrnwZM8D2YI/DM3qoS3yF0VsiH+sX6lA0hKtDOFy7TcrUSjJ4+y+DzIZ8M7UDVegiIAAz+KpC32nz5LLpPm1HQY544CzVgo+VzorZ57402CkNq8SkNqm52nYd20mFLKtUE1GNDTdjnACW1YZ/+k8kI5xAEO9lolSUdbGJpU99oGe8nzCtlkmV1AwMPerT7hX3ypKzzC8DaP+C7j7XabDgNK/UnMMvZkoqDVJirvy9AHV2sQKnVPVxFVjhHVvWgWm1Vlwf8McliSNiIj9vqgS8DhGHflBFChOCbnSIzOlHrPaq1GHEx7wb4sP2vBpDj41Ls+wwYSrBPbkLxE+BryD4TClXPFWRyEwzw0M0HjzpxG8R2zjuLOgECZu7pitAGulbN8YuIvqvl8rzsYMD6dpLu7h08lj9R9WHMJ+hV6zjjLsUrp2Fr8TqlUZfidWaMXG8Mh01r8Sr26tOZZDN22L9l+VBr8RpX+lN8KZXB/SZuQ1QmK0V6dOcA9i2RL8WABzJiV5r6MHJjYyeCPb4uqKOWGrBW97XE4lnoEBM4FFzArShI8SISMyet6EKSq7bbkafFm4EkjaNW4kJdaZEZxBK5w1vIYVfHB6GT/CT8VQknb5LH3Scl8KidcSyzB1DxF8jmqVGUeAQD7Ju7MEfw3XKzSoYv5qAhMTtjN2b3+77KyDZH2C2yTul3v0Pm4qG7QdatK7r7Y05u6O2xkZhqI8u13F14XIKTdycIjVEYCY659OYEJ7/yNtIQ8LLGZQRuWTMSWL3ks+VSRib4JNbNrF5ysdfjwgbf0XNC097QG2kC7H6ek5/wdp4fvjPL1L7AascdaEanNOksAzxGdiGhTo+7NeTDBeR/dbP2Mr6iQbvfXIcHNRZl3n0VsaegWzuUtUG6WmxgIpaJY8BAU20fj26CHYQGD/cNYtpBfhAXNrQ3WAkH9C6oq0v/LkX4ldRGyY/RvRssjk4eUl1VfXD1oCaovx/RAeN6T5PW04foUBE9p8np6j8oyE6v+VpeIoCEfDaLkvabxyT42KPHclSJBNdaq0L80XHllYsvFKQ7NWLkzpf+XWRx/iS+y0tpRCxM6NtNvfLEbrPMyMwUfqHwq9tutqNKVO5Fg+u2X2u+KKtdOvrTzP6H0AWTx4R9Knq5k+UzAvsWkceI9eA7RNRG1K9s2ZC39UaDUmx4DNlLRy1pPmN+vGy+gWYSjwU/XjaIKWU0dhlUulDBofse7FJPK1gQfyD2X+EnIIPYvae1CbA7g3uVcL10q8MCUlwS1EP8MtFrGV+K19visYNg56KX8Wgnvhav5UsKMGejsyK9McNLqefFdVcyOwrNqNbkxYdGjw3Qo0LHQuBh70/6yV3PT9Jge3qqdXFBQkh65Wk9jgAXnpsI7sTr15BvtQK6Q+DB3YvxAWvYq18eYud7X9TIOfhlLw+1700vanAj9ToJfyvBQ91QY0RO1jI3Yr0JDpDzUdeCsIi4IXD3qAa71dMuTJxu6buMb+3pYxYBu13rrkuhl+/1oHV66MoO7W0klyUc15ECjSsaFptdxRAztUn1M5VsVtVvVk5lGOXdMadh5JfHggzjaYKl9qQNsPxJtuZXyk/c+FKRG8TKo2WB1cIuOg7gEryR7CI/+DgymxH3uYw5rNjmMmY2wz6XnWSr6o3QO/t/KKyoZCunrKlleY0oPwbVh6hEyy8xzVcoDSiOo8gtWNaqXCZsH9MkfyJdRO40+ReSZSXNou+ZekllvJJx8RkIjakeqG/8QvlJJjLtpq5LHrt2n2oio4wyIp1F3yn6SaElSi1O3GJk2n0HKvBiaNo0VNlNKIcpYgv0XpTdgFuwN9EDnwPvowWA71/xJmvy+yNT7pZfLE7JuGWtxolcR0iSUS8bgqzgxQBMPsyU4/pU40xpBPVAU9ow0UhTmkA51JT4E4w1l429zWyz2T/xRtYZmrscUfyC2f/CVKbZG/FFbMJWy1sjwnOjjjLvsfEref0rnCZeCcI5IptgdtjdxwZe5ffC61oYc4sfYgjtfLczY5KJb2dEfruNIiljuvF3Z0ieN6SZjLE3rZNs1R/LKL5LJd4fxmi/jvvwqHZeIk7FWxKkB0mAe5NeJvDlSWdFcRyOO5jx5+OjsHFH5A5uglPyUeA5yvXgACdwNowCR586O9hpDp59+O7hA5mPyaNCOoisxWuxfF7If5WHXZSQNsq2WErrpjq07nnz4AzagUiEEwi/UUmussskO7V5l4vjrD+TLFYv0K7gNqj8mXWSyd3PvBQ/g+odY43crU6q/F91wixSE3c/UmUAq9NmTWqgPXRjNa6IY38fw8C5s0Zbhsueddg036iNme/r0vQxkLCUIy6sMhByvdODV21VUywLkDYywdrjIK4RZgtuzC3YWokL1SCOj9uo6BNjB6q7X91Ck4X3ytOm2UbeknLT0dyS6tcc0y0pjxFriltSQ0Z4WkpxW2KfSvZEpsF3A4ekiDNiGMCDqQfxjva64Bp3VqN/8NPhqXUOm1Hooi6+HDLD3YaKAJuFzLcpcCfQECBtL1l4mg8PEfgFM0cVHZjB77TIchEBkjP62Gtl01KmNaXTMi5Utjr+9TPkYnmzKGlreFE62E3agzmqVYKrr1Ul3oqzD0nepsrY1OT6WQBagUMBW42tHJEqmz2LJLWtgIjsSGWiIRlcs64688BrmUoRvN/wgu/lOKGNdfUXl0mpuI3179eK1OjtBl0k8TyFb6p65d89SYubiC4fU7/G6E4lPOzQI4nRqGvCb3+E2E2PBsYkx/Fgk6eaGm0MNJujxxBUPsfR0CAXgYcY7iQYjQtOTuRBpk3zNdoMWOIijw2E6b+GDHDNOIuyjULsqIoSJzWCvanUA8K9ptSqmgFU2DtKblhEAsCxuKBRogcKHx8OIGLeS+qjol9KGoP8w/7NGXRx1OItpMB57MbAoqa3Fit+ZjuAmv8IvZLehyw1qPA6g+c+2gtwsNsuTHuVG5Se1wF0tFcKrsJO5fgy3QBernWBgt+rHYcJTC/sIsVkFx4Ju0lyFcvg808nbakFO+kchwvYmblIoduycZDIV35dwBRv+46Dh8ctubiREUte5N7gmqutjqR1oMCSZTgUaIdZoGvPx3WEcuy56ss36GopTHjqSC93Q48Tu3Afhg8VHuidGifyWrwm6+2ainkvxwqdZKTQOzlO6CK8nAq5FuMErgLIqZD3csTQ/WF5m5qZ1uINcmDVLU4bMpGsZZYDgkWdVEctOUittivK50Sy/yMN8E6KEtb5/YugDtgZRV+A1nlUhJvAArw8aEdlrAki0MtRaT58FYfmmPRSl1KMsJADIR8t2YnQeHzQxsNND998jIXFnLH4qMkPWcabA3VD+UxBOaPGY4MPLnzctCcX4w2BHV34rCA8uxg0wTkXzVW6XcMsKYu+dxhVj6UfQIWqzKqC/J4N8AsNfXL0Cw1jkO3dEHwl1yosiCb8McY+Ye8BRsZmgFiGNpGxS9Ae5ECXv42e5Do0/rYv8JG6f4MIHEXpqCKeRtqEhb4VOgjr/PanWYzZeOyL08ZG2ZTHqG1HB+yoUMRvOhrVRb6K7yHTruEPo4NX8F1y3Pr9MCh+9d4lZlq7HzYFt3LvmkGwbj+MjFy1d5k51uwjjChSc6gXmq5aZuMo1djqHbPJ6AKTbzGc+N0ZR22tUxV2Tb5dmHS2MUKvZHBj7vMc7YTC20C7ajygf4e/D+TChD4L5IXsfOdb8NMNjZK0Z4ubTZrI+EalSRTqEOwyHVVim1osuB6b9eMN5DBypYIfyOmxNnQ4MGNpimfKZyb4LLyHWmsJAzsJH4G71Gp9loeOoD1SK7PMQReZRkBWIebA1W8PtpLDLH1HQP/YCi0yk2QyvhHBa7IedENuI2CPuo6ALh9Jg21/esilGOJ+wGjg2yKi3N7/pWEuI9QfSz0O7GKFdxW+le/xFkLQjfwYUEUwOhhFOjb459b6Sv7cPjb6Grp+8Qt9xJnXhUg6EXcrk3XCc1pDOP+NNAY9HTrtoJkdR5pANlk6TaGdO0eaRDBaOo2hGjzHmoEbS90mEAytfnznSAuLlWyVpR1Pt0adpdv8CZL/o491ZPWWVg+c+KNdT779TKrCgw0duDsdPszwKDIPJzB+bBxolcCWokobUjywxdOyWsYAd5uDt1aDuttGIcvl0uaUe5Yz4v62E56o4yVl5gw8+F6IB7R6XIeomis13rqtXxkiadb140KcrbrMo28bHUUdlzn0d2rcyPYBCZvynRJ8uddkxLcNBPp+hA/f/iHq8Ygw/FsjVqTseS3ICN5IZ5SXr6WTTJiFdiOhUR41tMnM6a1G67xqUH9VpzzpqjQSG/GYpIkJT5HmBjvqKAKqtVtf3iXf1j7QGHwA6+Mu5WAnsOOh1bp4AiNR2VzFMiJi36tGleokJlzIZxl62eSwCWmlymeC3Kgo3NXt5K6l+GAhcSkeWLLAlNHwgMgUDzs0NGU0aqZiSTWYWC3mkQQTSuOhJo+lGW2MVsGBrB4bKiW+ei+PXv4UaXolMpXbW7zBuUQ87KX0i0jTrCXNZww4IshjAW1I0GgzYAE2HhsII2xGG2ADO6jGHqtFP/Z0V7VF0lfIzcdGSdKVbBJcfR2QI2ClNWrC18sAh3xduEqDCK/zNe83Ky1iWbjZT6QRSfADcA4F4n1KeH4UHxM8SYqrnob85naJTwadFjNCzA0OWLF5maFrtgBcLY1+AySf8DI3BTnBy8l+Eb7w8ZKXitAFUDD6X+ExjQfQoeGNIehFyAxlvywVJ+iY5Q/BnEgH6BHBTwEGVA+b3jyFJ1P28leamydgRuUQfP12JV8NMPOR3wL9lslXg8l+FGCERSYCL6WIYbsLk20SQxaZu3Kki5CnZBW6026DHFUK4ZW2qwdfTiD1giMrBUjAOt/wT/l4q6Lv0lwk30O/Y6ssdXJVod/uwm/+9ZGOSi3o1b92/fhwt8ul1DKerQGbdRdypSfW0LSwo7A3WhkVqdAxxwHcUOJB1VLEbzZCl6BBFFp5pUWG28rvL+K4SBx3keRGZjL0voYDWsRx8YpiulfkQS92MnjeWoYHchMeTeRqtcBQolGIWq7VsyRuBaXoNA3BpnzEE1cqfIh/JuZpLtLihUoa3JfEPEV7RR50I/U6yUjGs6YUHWxnmWAdqxqUxKRZlHSR8PDwo1Y/zzbb4Hm3y3VUCL4U/5xUguH12awob+BenqzsB4vv6iylaPa95i7z6b//zGUAwAvVJ4a6n8YAYtLF9EnR6WLGIEPSxfRRwelixiBus+Bk933CSoQK8Pg//tf//fOvx82x6kuSxbfSmMaEa1f/g5z7MtghygPU2suMwrElOGDKv51tzdONVs9JHFRN/cJ8iGfSNOJAxrIVpfigbssoGFsDMjNJ1H7PbSykU4Ud+otSJjdabOYqWyYrKHVHhgG77OVhXWZfhgHoREbJWqTtZcZBpGYpDii1tU/v2nSooWCdkgxwp0VY+3wfNzaerleUDa/rrh+JRhTq6cX6lsiXektj71PphotmJKJDggH3q1RPIn8KbH3NUgxQ1aOmN1oV//8fzbXqQTZHYRbE8vmg8orQZfO8awRhtywLoPn8SwiT+fwLB8bm+ZfAxrUrwoBTvfcaSNQsxQf1Z+sp3LFQRSkmKMjE1C7HAHYlV8okdpuMmKAGRFiQcyPjXc2EYLYKsqFdbdePUoPgGkUZ8Ir3sezHSWXYKr1TkAGt/b5M2BzVL8sCuMtwbNcSv4ssTkN2iu7ybKAL9dJc8oRydoqzYbZPy0fCkRyVO5Aat/fn3bxYB9EchXkRO6lOQgDLomx4F2q1CukazVIMUHfttHsHccq/5wCpHdH3Tb/hYZ5mMQasZohL2MDbLckHd+cKxhrL1yzMgbhN4sBl3a4IA07TLxz2Obsl2eAWjfCfkVQL9cKG08lIPpKIJg35pwbPnzcP8+uL+8urh7t/3pzueJ6FTmyE7wBTuyTpoeKX86vZ4p9ImCrmKPyYo6P18FCELflQr68vTmdXaFalUikA+X/CYP95h/3ER7BcekGY899nCyxm9CQAURlBmCczfG3GoIiBMMzT+fnl7OLn49/QsKUrvVSaAPn4189EyKXSBMgNhx2OuBBiBb6+/3KBb7/FIcYkqA+zxWKGnhRK4AdROUo4sc8urmd3WN5lqgTgqD4I9Ovp9e+z29+xqKvySIEZ9vwKXaegOwRhkDff0ANBsnnmHgMurq++YjFTBYnfDMak6f0WdpK+b5EJpq+0PCFghr39/XqB7lT5k9Lc3er2n5dfri/QpMV9X2bUu/PL09u72eUNltY0ohMnAX64ml1d35JhPxSJGpjh7+/PT7DE2y3kdnsQ5rfZgmJv8yw0z/am5xi4vFmc3t6eX189zK9PTufB4J3ypE6CxexPEp4jLQD3upxyw1//r9u78EbqJP47N9CmehC50waqfc3D5ey/Hm7ns+AdQ688aRto7UjxWNgdbl91uEW0dqd0+NAVAxA/eM87TA/c+Y6A7zXts9n9xd3D6VfbJR6+3J+dnS4ebq6vLx5uz/8Kb+iDasQ+286vnV+d353PLh7mi9OT89Cl3KAWL/ft6eLb6eLh/Ors+sEuQK7v7x4uQ9ceozSp7bhfzAqfxPwfD3+efrm9nv/j9O7hZnF9dz0PXqEOixGTV7U0n93MvpxfnN+F7ql65UkH9MYERcLVTJoIGlb6ssNj4h/3p4t/PpxdzL6GNmOPAT9sGMxDPy0hlwF/XV+FDn0ecliuknHI7kZ9eXp7O/sKxK8K0zbn2fz304fF6e1p6KDsgDqKRPQkH7TMIe/w9TUPHMLMruanoSOZmzqLIMlKg4Ehc58TWMsYcj0qFPj0v07nDyfg7tZilq8yeoiRHW4cdjnCnS4W16EbWRd4ObzJ6j3FSdAXp3/cn95StJQSvnqYlh9/cXpr1zlfZnfzUGe9i14XgW0Pj8JA0vMC4U+vQvfAA+iga+2h4I31JAF5mcbrIcmWigXdPTHezO6ALcaWpF6BXs2vT86vvj58vV6cX1zMQsE6xbno7q/qxehpcJN1aRBz2iWm3fqcLqxX5zJ45uuV5+G7uJs9lG77h5Pz+d35NSCyZ0iKhbqxH7u5vghdBDk1ODhh/adZlIMK4ObclSPm+f10dnK6gHhzGiWJmc6vwENysygX1eK6/A//OA+eqJ0apNup2fwfV9d/XpyefA0ekv1wRyL6nqmXVMagR1u82gdiWvbjA4NJ8VaLIszlPUy7uf9ycX77O6U9iNeAxhvh6RJNfyLYazYsRtpJGi2LHrLZslDfwvMbhz9K5Zy+vro6nd89XF6fhA7tLgnaUer2n1ehR6VeqCORv2WA12p8msNd9/rsjAxcLZdTYZNWOHN9dxr05ezreSh7UYZ4AWCPzYoQq4eT88vTq+KE+OL06mvwIsUvxE8c6nJ3STBQFg6bh8X1n7cP9zc3p4uHL9f3wasrvxAD8fz04uL2ofgFgLPJocDBWEayXM0uT+EttS/CRlrWxt0sPOraqcHAeX5yenV3fnZuP9o/704hvakrwUBZNH9MVbYFGAh7TgrIDtQvxEBc1ASyK/U0uDjLj3e2mF1C6rQrwUBpPRk2HmXn+oN+f7cQMfH+xLo8qIT76QaUiJkXp/Ui6/Tb6dUdxFvhkqDdBlxc2NOOm+vzq7vbh/urxels/jtgyPKCHok0fagfRcgftpmWInqCvcvi+53hdffs/u73h7PZ+UXwXn/AqK15erBvFwM3+wAzqgKERiDenYeZcHJ+S29FnOTTG9L0m58ubs9v72xJ28juF3Rdp+HGeNjY1+xsHm/zUL2Z/R7G3l/Nvs3OL0gHiKaV20w8iySdcnioR7+H2d3d6eXNHfVQUY99D8IYud6YiYeN0pqH62+noYEQfpNKCx7UMySnPMyMm8X5pV1acjTAjU7WQr+9R+PbFSFscFpOMR721jp2KXU5u/0HfGXm1CBek92eXtkjsyIw6GE+uzv9eh3M6dQgjsizYW3ho5CfrApwgw48buGDmQdmDxfXt6E79AEjYmHEQ6pyWJApyIj9rvbrLPSa3JAlSWTzxdlhZyVgt+Yg5pxf3Z0urmYXoMi4AXOKFO+ZSBExchBzLs4vz+8eTv9rfnp6QtlZ0mSdmAf5GkkZT9hjrq7vHv5cnENcRgPGZMo82KcqwPMaxJSb2eL2lLqVbYTO5cRNrL7g8PDt/Ppidhce8j9kT/UW1sNzotI6Pfw0Zt3Ofz+9nD1cnt9eAnznAzblRfKnh3WSr8EhmyCDTuf3i/M7WMzvkD0y2urEYKJ/IebcX9mIC8K2ts1skMV0DcyOY+QDQPHiDv+XGFoz3lxfnM9RK8ZSgdaL92V2ZWP0UVNgg+tIPIrMBuoTzH2V7KF90N3iHDvtNQ2wrz8nNDNemAEP13e/B2+1D5vxoMwTcLcdbszd6eLy/GoWGlLqtaJ6dgx2vWYUfq/HFnE7i2tAg9qVJO2hlf8CSVO7KoAVuRcb52yZ26XBffiuxw39ENkFwRa62RkLvzi9uTifh8Yb96C13KRJJJhhb+9mVyezi/DrVT3e3IgsFin0ctUgcrd33c3u7oN39UWhj+El2aNg3SKlEqcLocFK4TMYBQyOzWzRImMwR6Hi/BkNWgoHxhhgnMeiAUzhohgDjPFJNHDxTogxsNeYBqsY2ynCHdIgRPs/xqAiPQMNXBJXwChk1N6/SUyw2R8HDL2t2abF3dIchYrYxzdQ0Rt3D2pnZXI3W3wNTmJQFqLdj1+FrvQbEEcigy3wK41Ra3sEHmYPMgoRtoJvImIW7z7ETlO7v/m6mJ1UPQMS2tUXoG2C93e/2yjXOcRn7WErwp5ab5mGV69D+lCKj/reDXRO8lkTiY14TFI73qPmqGCTfr+7s6fd/y/k3N9nzJMxmwct/wU/9w824/pm9sd96KLQx6824scWtjQMBre7XOr61yqVE9d/lTeMyABTvgUzEfpidnV7E57Q1wuvRZZvoLl9g/G/2Zi/6yvqAenZxvipjH808sxldSK6m99nt9B+3dL4eDNaH49yUmurj4rnpbOjivriNKDTbqpuEGhCVYo4sKu4hVDeQdpnj704/RacHcwvxEJ8fkVE7BLCEn/eN1cRx/Y58NKpN4u+/ykfb1X0XZqbKohhB73cZoWf0g99UIuQe/e+0li4sgAlgQqqHPvntL9ucqPF5o+XzZfy7287r9iOYvKIUJKWbzaNZnoz6DfrGr9e5Sof++v2zyl/XWWRMF/ejMxDIPalaFnsPLL/1PPyj4O4XAqcjOXzyhjGUoGTsXzNE8NYKlAyaimMxHxqpwAjYXglOgU4CE+EERcqzxvvyUI4HTIctPVc+62OPURiD+lx8CNxeeiql/LG0tg/p/z1/kMDIxh2hehJmm8GjCY5/vUzPUkj/f9okM+/0HKo2Da8ucrsLb7TLFJxUrxKFYDllOCgLGfDS5nnYhXUop0CHIRn2v4DgKwoyEF0nhU2L2S+UVkOYutIMFLeFoeH5+XZIZRzL8JJWryEdbILfjmRqREYaJceB/83oZOgxVSnJDnTvVkGzgxVIWKS8rGDP142f+UmhvTjvgAp4VJsU9NeI/wusjgNWncOyZDS5skqE0bGd4032MZD9kpTstXvro7GKQqQE8yqtxTDMIpShCwyq3r3LIrkBrIA8ChwMH5JsjhkO90uyEE0r19oCEYqS7Iw1Y8whDMVJTmY9m7VG5WmoaPrkAwHLZiPjeir0kmahiwwukU5qKq1y1yt14kBV1pfhZEVS8nN110HYnmdehz8f9gHPRa79zyCeZvlOfiC172dkuRMgevefSFCkmVq879kdvIOXI10SpIyKWE+HQexFCWoGYK8M1UJQob9m/BjGaoShAxJFvYlir+n/f2gr1D8PeXvlw/Jj/75zTPpr+dkh9uHpAipq1ftx5LZPyf+9TAHb1WCmCF0PN2VIeT48bI5Kff7jc3+jUqTKIRsQIWWtVqo3iZ/hyx42gVpiRoGz4WRKxUUs+EWoCUs1ybhVbYvR8ijpYghK61WOS6eq+36MchV5ihNyJY/lXGhY2mKv6f8/WJfEAJQFCAkMADPoGHwB27N8rcLma1MyFJrX4iSZJvEIQzbJCb89WehA8ONqhKEDMWNrNqP8rsUYUEVjtIMbMHDW7sglmgfrrn720zF8l95/ac12FrF21aQZuvPHBiNkODj3/bXQozZ3DUC2UvxqphPvFVopMVtK/Ywv/68NzlSWW70NjKN8IpglKO2SghWW80XRP2kckRNHVXF91wmj/89yf/dJuYqLnL8j+ofkuxJ2rYVU4GnaoXgLku/A/ZG5PmL0jGCvSHxHgagutZR74rJZODV+72XSXb3pNV29bTZYgyp5NZJZppy72fY3e76EdIk1z2mCY0x+o3CFKPf3tWQ4ia8RJiwE3gHeJPmjevD4ewmzTuXh6dE/yZ1snzD4T/XGu9hgvouMwx+Vf4d0Le5TQKzxrT7hsQ0Bhz/xy/7JWSUqhxDX5fvodOT7m6rIdaWvftuXLQraSrP3Gxr1Fm6zZ8W6iVH0K+kqSKExNaopVXUpSK/NXn5JD18aB/zov3I7tfY/9joEXvt9U6pC6FXsh3bfYDTWfh990N+JMy+yF1LngHt0f6l9T22rxbBwQvBPPlbPlaCfOxr8fqFGn8tXpkt6LTnJIu/iXQbBr8r9P7tt42Cbbf72miMTJ+Pf/6leWtqm42eFZyEZXkatuaoqWUuMWR1eXqyXJovSqVSjF52OfByaR53IjyMzQueMMBSgYVu3vTIgugqny4L3YnA1l11NYmHrn/xCMbY1OEkbZ5bY0hLHU7SRlAGBrSQ4eFsB3nDIGsNFsIzGzCEA1xWEix8XzvhRyDCfQwTC+M5alLOpUmYZuVcmotmGAwIrgqkYaNDDzf7WBsWxqttmuIAs1KBjY5qhrGc/LNMgxj96RvEzC2AaMZpAPPNOpaXZNy0tMxj5+1TwKGTm7KOYWHh2139ukwirRA7VUu6ixtZ12K8zFciI0POKi0W4vtmyAmIswpaYaH71glJAQHu41roGY26TzLzWzvYM5zSqK2VEZUMCWfX5/Nm5KIdUDOCc1fo/X0+bRSsz2dfGz4fZahvr8MH9uO5yDreqI3KE9PMlRWO15DgINRyLZIsCVsBdxCbGjSMzZ4rXzcyMqfjjxwchKUG4NxhFKGNP/2SrM5bVyAg1Sjix2RV36Rg47xPaEC3zKTIfl1QkvbtLuFZ5/4TjHF/i4qREv299/eseCjPM/Nz0E7HwZhUGmyE6G9d39JiIwza3roBQbvaUXz3CcFH3vJ+5fuE4DNveb/zfYL/0FveL928MQsELCVo1ov9FfafNiIidFlbFvoQK+wGCsEKu6oN7yoxbd+6CEfcCdDQNdvbxp6ng4aWJmChghpbRlIGDy5OSvDoMpIytPc6IaH9d5gRupPvUGJ38gc5i8skwG1BE7TQQe4LxpGCNgYuVNTOYAwrYGvQ50TsDUYwwjYHPUrc7mAsJ/6r4/YHIzghG4QeJd/4XjPivzjf6F4zYgb3GpFnbC/U0XN5ocI4l+8o8R+bcS7fUaI/N99cXjKGbxb6iPDdwgjCv6RW+Ann71qFhLKzp+lkXj+MGJRpnW8v08BA7mPmXbjOHmYtjU6ikK/YZNuXxnM129ej0lq9FCm1gGSlwo9KgYOukzMfgpfXErR8QfdVuq2td1eFhCjsXkq/B4x7g+kwlXN8mFub49CLEb2yH2TU6BKRDCDNKvLW5j4/030mnkWS2v8WWq1+kXev3wNoyIoeqD3PGW8ktkH9/CB/pbcnB9yVgllim9dcxaTWWM2o1JzeouKf6Iyp5Ka3o7g0LcJikQ8Z09Sc3qLyge+FIjWpFNXqXW36S2X0Nv1dir6DTUaYbU48KJSi7zYqlD/ffQCEyqz1Tnd6y6q8CjdPgnRKqmQ3lew72KXfruSrDbTZqCRoK3nQNP2WyVcbflMrT2+dtYXOolJtEis6u9gkv1MblapVEonUDu2L4s1oQtuS3Ox/wY7zuv6Fd7LXXvu2ElzW1vrT29rZVZRvHoX6Ahql3n3f0GVBbhSaFeJbT6v1JpWBMZYOzIYKA2WVW+g8ZKHcg6xEQEHcbsbu3enioYtUxl/e7vMgh0+/Qmupx7dtDnL8jCJepurFvmamlf0tDLBVippKLLwbkZsTKeI0CVq/9mitTrzXYWHV0iQaV6l7CRZCI/U6yUS6kJFMnnGotZbea7Ewb3OZf0vk+NwvLlgr8lyJsFBa8blI00cRfV9ss8D48B6vlYsqOb2TYyF/SczTk0rtu0YLmW9Tg6rohpreqRFxN73G/y3ytyw6N1ILo/T/xiAXSkmlxEMr9JpiEBN6TT+GdTi/ahFhIVeVBgfhi0jMnGQJU0gxrGPapxvtR7TACwNOOqrFC/XKpU+ahh/F+BdaslLioE1Fsp7jP72V4fz+sVabC2FkkWEJQ2qFUmHkYyXEwCpfN4mWFMNoqcQ7ki5Fgvr0VXkOsiRLgu5w99lqBTY6dCcvZRh7+EqLzHReIwRwFjJRLcPAmeQnYZ7/HmKSx103PxndxqZ1lMVhAmovYnX0XoeZ1O5GqGifSy0GYi1TKXJ5KYzUiUiTv2WMHuYrzXVDk3HEr37NVjcVua1uVuLiqxLXeaE5WZ0Xv0ZU54XWBHVuzpReyE0adL/ByWuWSutaiYXWOnjwLiIeuupIDT39VjqM86/du50pbdvpiRYJaiNotZZK23YaV1pEHm3vacXsUWR2WsVsZ9oaH+kkw0FGd67RqTqe8wOXBUSnCX5+b2spd5J36M7Z1/lIrcZDR9dyHNXI03p8lhC1oPF2VOPwJdCl67Ojkl0jfbvDdnh7A6IDfLg2z9HMOVs2fWMeEROFRt3JUHJ62yd+nP6oIzTj2DzBqMw2Hk8wErONwSGj763Mc8iZS1UO2ZI7TUHE4Xu9JshRLQGrvLou/KEhxa0IHOJOg4nxSWRx/iS+h+9HW5hNGSbS8KtoDk74jbSRlJlcKZMII2N7QqkJusvRXjJqSbJb8Fdu4gv5DDjA8vD/nZs4rQSZ6Muo9PNsqXDQpU5S6pCxto6xy00gDnMvwsIIPLpuj2C4w8tDhIGXGX1DLBcf5pCoRUlxTHSAdaOllTpT+kapdFG6y3HUleRS6Y1Sqd5JsvDX13kRvNAbweP5YHFsfUhcKNsB0jKiG3TI1VlgWR3UAdcB0vxpa2L1kp0p3biKihz7K82l0uXfUY8QQ0tr2G1jn8QH2Tp6wEj2jo56G7pGilka9PntP1AsEkZdoD4TSaqepQ5tHK1y794i+jTIZtCuFs+3F8bI9SYosNUB2lBhoQy9su2qy94tbSRfuw2eF0G9+Sz6Dj6/8km8e8scBEM2Um+9eVrCUqv1WR6yOximt3rLHLJRCCU39olGc2v9allQGPGwAaVsvpdlt0NR1r9RfLXv7KFXIvoO7Jm7oh+lR7aBaHrivn68/sV8o7Kg4diN2xDiYi0zBZF87qNSCxq3MUTsbKeoZa9X46O0XJ6Fr7/qCFe+hyxALH1H8bdby6VcK/1WBnjNNhuZxcAztmGhd283I/CQjedATXpakH0YOjCB7BhT7NvQwJSyMDvseZ+N/Ocwptae1iLIseIYazCnizBLtjnPd7G6/N/EP145Hi+HGeh5Yf2jjFe+B+DpxqvxD9kvtVjLeeC75mOMKYShD57DbEGOvT5LiMbe8XZQjL0+YyjH3mGL/P38zDYNin7eF/pQ/dyDR9jPHTXJ0zd8phD1jfF2bMRbqsLf7xpjSyU9rT0Ufd1nEGVfH7ao3dftqegsKn4buPnwKLx77x7iQnZrX6X5vS5qq4P8hoPwDT1mcsg6fBAdswAfwd5v24uqriCtulX2Q7TnPhFBS25XEdEpjo8WeJIzmhPY1xyoyF7mpe20Ua2MilQa3D6b5d6/bfZosO2yVS3e2itifS8CQ3r2hd693jooyEpr1AZRfHGXDxpc7CQjiNrt8mFCdscwYiNhu7xUYbBh7JAYWD85JgB2DDco+rWLiwp9dVNiIjZ7/R4YjHWYLDR+sEsGDR4cSRYaOejEg4YNusfL9gyzkNVTHKevT2Kbm/DzPI/Cu889Q1zIichXaXRxTIPwiIimQPLQVfFwnQPXxiOYu23aeglOksjmhxPhN0+d5T9Ae/ZRoVuzq7rIWoSfGtweDvAOt4YbqfMkNzYiCdswulIfro04AYmbS68+mVqOxxaiB25CrHK1rzJfO2T27JX+IK2oz0TScNoVNXQSCAhH9JIXgohAxAD24MvvXmjw/fcDtK72e2uUlqggnUGdD9Kmh+hIWrevGknHxGErSAfEQHsAJ3sjTEIc7IGsgJ6DjTAFewwGtCf8wa9RttC9+QWyC3J6M8IuzBnOaDu8YzAq8GhQ5yONwTxhR8PVSD8Ge62gH4OZo6hGGIUKogJZgptNGEKoQFYQzCZcAVRAe1Czid8W12xCbId31J0/yeh78WgbYsjtiHyk8daFRjfYdmuPfqR189MPsyMtiRMtbbWFnDwcsqapyf8tkL3YaQHTgnDAIn9/VlpvN9aXg+nPbZEP1Z8daIT9uVN7DP3Zyc/Qn8dZgu0NLmuIJrQBC7ytH9HmP1xL52jfXK2a7HDjMCWyxdK30/Gt82ybBoeDuYp/pFbahqJrqfu6om+tXWb60fcgPW6H1zGAZmN3kJlgP9cBJ9zGjaBHjRs9cpYVn9MK73hyoaLv0IO3rsBHGlO6WHSjSrPG6MeVPjf9yDLCAuQerWcF0f5sBLl9iFPqmyQkDe0Qeam3AeVLDiNHji49cqbxxWPJ4AhzoXKMb6gl8dFGmTYY7TizrzeekabLzjPWHLSCYLTpWEI43hykJ+i3HXqiXYWXfrCv3mcbrZ7tryN7bEfoo/VbFx5t7+3WJE8fdtvB05NHWkTQn51WEfbqkZYQ9G2nJYxz84Bl3n7/x1bYbMsJILnhgMpH6vFONrru3qtA+r7usYC+o4+1BdnL3fYQdfGxNvzY/d0JhzV7+YntQo5bbmuYBq0hm7wj1q1crWVmCGJ9XEofaeTy8tGNXs7KpB/BBiyhH8VCbFqL1+rPEX5Jv3Vr8ZqX/yOBkzLELmCOlVFGIZOsAC1Cjmt+c5jGtkO2dce3fJua0DeIG6U+wLjVZkGPUfsK8bSI4pVl0G2HDmkhhLrlcJA1Uul2nYV1xV591hIMfJDH5nqEmAfmxjCql/D4zC6ieoHHYh4kNHYYubL/GYFYiGSlCA1j+5UeiarAsjgDl1ZBN75dX5awb3hH5xMZqVgCB8aq8Ecaq5tIdEN2XUsD59f2zxbgb97CtifY9h/xTaDP3XnHLFf6cX/bkYC9lIybkoz8m036NhfRk1zIHDoOtPGtYmQVdaXIRx8X/zMB9E6ImzXwValhXuDTUuOZqyfLiKArtQmoc2mKlB230ZNcCxL0XJoihUheS9KOhd7ZBV73tuRHmld2PHSTSlE53nxABLuBPTPhjmCYulzUI5a1zXq2UgSr2zHEwGm7S4ucrodJkXuaPSvRvuYALWp304Al2eEMsyL3OXtYor3OMO2zSANjghyktQghZStTWNEdaDoVH+VS6VNRLNuxpEulpShW7Hy04J3uHhO92x3iS8Wb2qIRdypMlGthpE5EmvyN7u1tKSZeHfyWr2fMh77fO5oTvANrUqI3XYOM+I5O3cOda+d5Me6BFs/7oh9k9dwBIlk+N+pn0D99nsXylYDY/vek0iIk7q747QHUjdTfRLoN7+9d6kJtI/VzpcbHnUEWTl1c1KJpFKXKrrZpCluT9mhVlm3TFLcwHUO90TJKbLbcL0lg4kgX9k7tMQGmjRzLDV79d5HRy/8xtHkkAs9hXai1CiPn2/pRpXt/7S1kEdPDLkT3Htscs5wZY4V52+CpKxFKSuxau4uIWWyPIpxpbXMVrmVWvMVI0t9W0ggrG9eyHL3PZQfFamdHj/LSjmL+kti+QgX9WKhNQK1UKkX4vtyFvJPi5H0z+KHCwpY6jKTzJ4FfG6+kiUodRtITGSVrkd5nxXwV7khyQMel5HYvycmvtqFRUz7sWomR9ixVgmRUXlZCjKxfpXoS+RPJUnMlzaqUY1hrdrjPaea9hHueu1DZigI0LXWYSY9//fyn0iTjQ1rKvZRyjNy3T0qTtIW8EuJkNTqhaQ95rcRJW+wSSGhrJXbaM6UBh2Ve5KXSiCOTAG5KaG7ie7P8jWoVvDXL3/jXwPfbJP49WYXHJbuIt0n8VGoxE18AXNce4BThwj7Mm+TWzYZmTfKslOHirPyBNC7iyh/I4SP2MZN0uiY3c8+zv/MlMWuxCb/E4UTfpuljoQe/uDGOvJxeaahLLXbiahohaSP1PMLcPopzipymlksthlp2ntYt1AuooqtyH+ScrklDckhXV8twhBuOs5ZgItTqBTY/tCC1esFNDA5OrK+6BYhxVB9mo/BSd3EpXdQjLUB3cRrn9GFahGe6i0vglh7BC/RJ92CRDukRpBBvdA8T44o+zAjyQ3cZUU7ow4xYD3QXl8r9PIIc5nvuAeMcz4c5YV7nLibO5XyYEuNv7rJSOJsPE0M8zV1SjJv5MCHIx9xFRDmYxzFCvcsuVKxr+TAxzK/cZcU5lUdQwjzKPUycO3kEJ8yX3OPEOZLHcgK8sW5ShCv2MCvYD9tlRTthR7BCPbA9Vqz7dRwrxPfqQsU4Xg+QAr2uLUqky/UAoVri6IryVGRdP45K5WWSr603ITj/Urfs+/tznERYn06viqiyKnloqfIojeZOVS7ngReyPexWqnclm5m/+Cc0eqUyGTUoC5IbnTTv0Vj+XOpnqe2f4w0otbR6Dwv+UhmZBX+XWtNZULyPTNN1S62p+275q5cyz8WKzIj1Tm4yO4zNDBa0T3IbsNNhm6Wqx11vngKv1nl4S7XNU/eGHXd967cr+WpOs7h4F43AEP2WyVcj94KT2WLJ0fylCCdz54Qoye/URqVqlUQiteXK19bxliS52QvbOUHXwtNap0WW25LEttWyk1nWWfHfyiye22VacJboTsl3X+27eJBr/W7lEK303aRE6/yxzPZPzrOlQnPbf0hKIcL67bfSoNxsZQFkm+wMAsI+kgJIRNNgOSo0EPlnqorwMq6l0UkUcorQpNuXpubabB/TJH9C199Oh7QOW6nU7Mn0PDRrR+sbWwVwxo4DdCGzTgsKsoo8xHIV5A9s42QgH+AwUXlMj/p4pQTT16tO5nGApQYX4ZuROLw3I5nYIpFFMg3LUdNEK8vD8lYcIHsSGlVrVoCr1uz8CsWqyjIQnSl9o4LOvnpgS6U3CnTudYBPZVnY8r6FtitNSxULZM+0AkxtrIo7+fn4NxzhToaX8/jXzxScx79+5uX8/AsF5udfeCkpGKcgvJOv0D7dojSlDjFpEQiFq8pCgqkmiwioT8cowEqDkxDPx0a3zUOO+dtcZVkGolkWf5UGuScrlEQW2/gOrl1ZTfunSKCduMZ8KSVo+aqoO1T7qzSYWmCSYftvocBHh2XjIts846ZhK8DEVsX8ofAqDUbCGdqjYlU4vSpWHw3IxLbR0mpU+6VFcBLMlves1Ko2TvBMmMPEoQkwm4TQvJfDREW8KeoDFwpMX7gMM8XhFRJcfKFRqi0yaGzqMJMJDJVpIhngM8wHiJK1zI1Yb1AfcqfC9C1t9CUK0AowsdmF2ZnSs+g7kM0KLJUWhQAxmz2BAx5AHe0Ko5mcx2LFCdpdGXkBOcR1KHyIw1wfF8GhrqvSPAeluFM/jwU0x4CjbSjDiKiNKFUntKL8m8vw002fAeW/rOEHnoPs/b4K6Z0fpz+S9kDygIrBUAoEV/8rIobaDzfGcgyuY/ry43a5lFrGs7W9sh6a7MJNXmuKQhOa9GKsBZA26qhtwqgfzjGUfvAcOWp2Ej2HYHeKvn9/cwFh+1u3frwROHlYimw3LDAl9hBlK6IkjhcyUs+2F6NZRRzrhhgXs43dTGR+ptUajVxpLUstLuKVNNd6FuNreCWN0iLmrN1gX5ITFOxVGklp9DaLRFBODDdoQ4iLtUgJNcPXaaEDiyrzk3ZG/zvrqflSTOsBvI1S7z7md1mQw32zQjwzfPH/EIBVeRoy9BODjvpLgc8LjiIEPNfRQ0S81OFh7I3ecy0h4UA91GIEjwoxsFNvBLO9ShMWt9dvlvLVwEL3RvCFzjL9Tw6cYMawqTR9FNF3ZP3VMmx1mO/SGd0GPiLTY813mYygL8mM463S7tzUjwEhmavz+01DjoM7TSIZ+L56n9aKAF9V98xBjpn7z1CneaMUcubuuD/DXzXtoqBeNG3WhrebB3fvJh2iWx/kCm5pHTBwI+uRdRrZfbw5EUastFjfKXVh3dGhTjmfxLsvHAfBkKtIb715+k9c/XHgK1vDJtSiQJdCqA1r8XrCYcZavE5sSdhIMUwPGzZCiSHj7zA3ZjAeQ98ZZ7LKkWR/dSE3qU3jWu9eg0ecg2LvP/aMQ8SOQodrlcj1PtoeImd8mGWdtrZZaRGHz2ONYu/ffrow2JbSrBOqNtFnBJ4ajqID5FRyEDrTKdFRBmZO6gP2kibRsUHyI/UB3amR6ChBWZD6mJ4ESNScgbmOfJy9NEeEnJCMRg5OdzIjas7wvEU+VFfKIjpaYM6fPqw33Q8hKzizjwN3IKkPHXFY/p4+ZTd1D4qMPEtPn3dMgh5iG1C5eJwWHEjDg2sd7RXeN6mtdxCaZtNV/N1XfF4o5MrPWVdEK8ABZqJ9QBB9UepSvFaFaAwp/mYtXp93oqxfALDKHYKnSx4aYkXgKthvQG81zM8OWSX7DaBMJBpiBWgV7TeDNJ1ouB2UHbpUnKY3g/YIh9CJUqIG2QHZQwzYQZkYNdyO8D3GIVPo0qOGWAPcg/iNIU49GmQLeI8yYA55AtIQi8L2MH4runsZFnLyPY7fHr5kpME2ovZAgxaypCQ91Prae6Ty5HehXkJ3R+2C774vcuAgd0SdmiHaCzk5gf7wkYRFuFngoaC7Oq0Q8CxwHCvg9UsXKeL5y3GckHNWFyjmdNVP2ujhYelcSXK5IvtyJ8MbtAMfSpMKumxKll+WLYkraQZX8vStRLlbqRK34rK2EqZsRedrZUiGSpYJlTjVKEmeUcJEnugsnqQpMgnyYzKkIiTLQ8iUhJA0AyF58jyizHmEafPQOfPYEuYRZ8ujT5VHlSePOMkbSYY3wmRV6ExV9ImgqLJAUaaAwud/Ikz+hM78xJL2iTDnE3VSJZqMSpTplPC5lA6MmFqt5ypbJqOfDG6Nl1qto7o0MdVp9gxFkkVRHE9/z17e+/n2cxhVXeoj7OFbLPi9/K5CBhOdYBB3Cj0X7EYrIyMj4/8B8MmOw09VYJ9os5fF3wN8o/LEBBy7uugbGhOZQOPKaFuBdmkc5AxcP3Xw0KcLYymDXR9d0K4LhI0V4RrpjB1eFwkbe/Qko+9zsRFRYkan63EOzVYo2gu9RxeMttrK3BAMJpXU0JhCz4/wi7Tp/f6RadjD/SYD/D3/CZsNYL9Kmx7tXznECdyZtyndO3S2ugXs3Nu8/R08Gyt8Z99G9u7w+cgBO/8Oc98DwEYL8Ay0YfseAj5WjOegQz3gQeDjV+VfXEnUssqocoOTyYkWVzX3t4QG/DmZirzwfdzV3xrDXiiZhpJ/cYXakfn8B8cg+OMP5D84pvUfHDP4D46n8x948aH+g+OJ/AdecJT/4HhK/8Exl//gmNZ/4OeEreKOWfwHA5RQ/8Exl//Ay4r3Hxxz+w+87Hj/wfHk/gO/MQT+g2N+/4GXH+8/OOb2H4xjB/sPXPzk/gOvDVj/wTGt/8DLifMfHHP6D7zMcP/BMZf/wMuK9h8cM/sP/ORw/8Exm//ASwv3Hxxz+Q/8rAT+g2N+/4GfH+k/OOb1HxzkBvsPjpn9B15yAv/BMbv/4HiM/+ATCP7TB/IffKL1H3xi8B98ms5/4MWH+g8+TeQ/8IKj/AefpvQffOLyH3wa9h/wccNWdZ9Y/AkDlFB/wicuf4KXFe9P+MTtT/Cy4/0Jnyb3J/iNIfAnfOL3J3j58f6ET2T3NYJYwf4DFy/8/sYhZqy/4NOwv4CtXeD8B584/QdeZrj/4BOX/8DLivYffGL2H/jJ4f6DT2z+Ay8t3H/wict/4Gcl8B984vcf+PmR/oNPvP6Dg9xg/8EnZv+Bl5zAf/Ap2H9Au0XrORSuN3b1M/qJi1ahj+BOaKLgvQl1bXg2tfZJRQReVZyBayXHp11ygVXlGci2JvD+ahusLM7CpR4At2u7dHsRTsaHx5AHggdJH0DvAofyJpmR+lkErlt8yA01VuqQt36GiSGv/oyifVI5pqNXxem5kiwxD4/b5UPIM7sOwK4OPem/XgJvgrb4ytL0VMF+3hZV181LRbUWrxQftSPDw1m/QkQB29XiIbb/8SGVgTuPHmxDhoFzm5okErl5MAYzmnd16Ek3Is9flB6dutgB2ZBg4FMaM3JXxRm4tDIqCnUxtNn2Enx8D89heYQHOB+ACYRH8f54CdwZthDL0vRUWhaFH9ZJ9mCetNqunjZbTHv0CvKxVxluCaD3Shy0Rr+RsLZ16ElzE6fJ48OTMZgW21ahpzRp/hAJBOBOgIdNK2Uwu4amBiPhA8H86BTjYX6WOlkGHlf2WHciDIzqO2rhVpdnInsYnavVx/YQnKY1gA71YXcK9HTbXOriP8LxGhIkfCSJelqE2Hw9IxiD0/b0AMHZew7QaZmr9FnOtkah5uZCRZQqbJQn0r6lLkqfP5I1bmrR9JzGWcJdtCkSsodscppl3vckoUeCOUhoVQVFKlMHHSSh6SiusLSmznqDJDcdw7aS5kQuxTY1tvOeWTfrIsBf22ddSROXgrYfF35biNt2DHsuxz+p1AetSlNQNfvsfRYnURLcbTvF3rfnumAwnbdbJwReeCdizw9Pceo7Ej7A1exk54gpHokeuodx8jv3LlMagexsfVfghPCVB+Uyye6CvUhOYyrBdZJ5vEjTG3cX5rsZMsvlvpnUIKPfaMwx+u2djclltNWjV01OM3YS72KASfP5DMVv0rzjyZoW/1uQV8ZngsMtM6UZIZ4btwk9382E+KEuCqcFTicFrxHw/Y97jdfbAjHShu2KfGvS3saIjxi5V3JaMGa7xGdRyA7KM/SHb6IG2H79vEP742Uzs1e8vol0u2/URczSUkR+zFY55DaqNUTEyVpmeSuqE0Jz1NIJqrh2lXgwn+3/iETcaZDgdb7qXERPcmEvKXQfHR3F2itO+Y2XqVgF1p2b56hWQvViZ2150It/oiCvhEI//WjQjXhLlYgvZLZqBLFiiCvFtFacrM6LqzaXIv9OYkahti7V2Gq/uAkyV9tGYDOGuZCLKrnJ6r0bs4KxwBW0Qo/fHQOLQmfCOtOS0NG6U5hy/MuLQ4nbVBlrh34WJryaHXRHpW6eKqNbusHNvFNvoxbCcGzQiUAAppbCyD+2Ur/dyhzQop3MhegPK5rvRFkNKE+yyNDzWo4JOjdChw5+zjZd6RBiugaJS2l0EoGGiKoo5QBR9IjQdUYP5mgnA6u8uk4GIJNsRUJZ6rBg2j4KHPxbmHsdFsxq7EZj7nWoMJ395UaptHv7LgC5UZyy34joxzbRsnIaX5KgHVWilQN5Da/aZp15z+a2ufwu5SbJVufVxSEiM5rS9Z0kXmOSOCX+FFZxku+wFq8XybL4LSL0tXhNK0Ve9GJNYv/uUrySkBeCG6XStYC8fg4AT0ArtAHwBL46GwFeDrmUVV4qTlDnDXSiSm+gk9d6dyYq8hV8aedIG8feKEm6blPrdWKMjL8B3IM9qKOdHNhT2Koin8e1zG5zG4k0dDfXI6608kqLA3cl1ZPIn260jBLAZq6HXOltGnoc2K1jLyAqJDR3LN42TdHttRbhAGxdjATyQS5EjsQzbxs0XqXBgQc5rugDUg9DvfG8OGZMVDa3G9fzbKlCiXsCtKN7HPyN3UBHlVR4PfZryOs0F3n44OjB3YkxAr+IfG7TCxIhv4g8quRooTuN9qSc8QDnp82SpN7l8Im8h3IEncFb1eGLAskK9UD/Vp+xoUOE2fm2pyst8/xMJKl6lro4czh9lqFnOj4V0qFJbENd8YNYR7VgaMV6q8wDLrN4oxLSKj1qaHLjb7R8TtQ2P2Uwo9ae0Jwq8PM8sGsO21GJJpB+GmqAPfWSOnzlMGxBqZqUqgwmOIcd0IlEqyhpWI5Mk2epZbyfHK+USZZJJABO4D7m0e4Hot0PZJ0fgNX8Ab97rNVmw2hWKc9vlLMNFYeeIDd9vzypn35r1FzLOAENmD2qInlVVOvBarRVVR7sxySLAUEdPmor1w/q4IC+KUN36LA3O0FecJpWe1RL8cHa1F+JSCkbdSU5QbtWWWt6osFX2bIS7adKpjag+IWTpBhghX6jMaAQjZuifAYY2DGZDx1zRjYI7ZxlFrKa3hAzTVeDNNy0aodfRPRdLZfnZb+C1bWT86j+hcfyF6qei6j+XpWOM+1SvDKatRavE5p0KV5nxsj1xjBYtBavYi8+mUEnW10s/Dg+0lq8xpX8BF9JZWBPiNsMlclKkBzcOWjZBN7FIAcxYVeY+PBwY8MbQr22LqSjlhisRvc1xOEt6PDinQQu3PabPS8iMXPKSi4UmWq6HQEqskimFM2iFmICXWmRGfgiuENbqCHXvweRk/xEZSDfaYc2yeNSiBC0M3Jl9two/gLYGDVK0o5Z4bvhLsoReA/crI7hazBYRMR+1w3Z/bKvMrLNEHRXq1P4nW9quWjI7ml164nslpaTGnhHaySk2shyuXYXHDvgpN3pAeMIRmIjLpY5samvlY00A7p4cZmAWryMxFUv+Wy5rB9lRROrl1zs5ZigobfgnMikd+BGGgC6Aeekp7v/5kfvzCm1T6/aRYcZ0SlMOafAjnxdQJiT3m7t+GC1VoHBpW7SSocOs/u1dXCAYVHknVcLewayNUJZE5TrwQYkfCE4BgsyqfbhyKbSQWTo4N7gJR3SB2FBA3mDlG747mK6uvHvUgRf9WwU/AhdukHi6NgBVVXVBVO/aWL6ew8ZLqrPNFk9PYcMFN5fmpTAlyq8iJ2+8rWM3AeEXjZLUvaWxyT0sKJHclRphNZYqzL80WrlHYcvBJw7MVrgzjf+XWRx/iS+y0tphH3ZKAy7V5zW+ZUZmZnCwxN8EdpNdlRpyr1maL32a8wX+bTVdhSZRd9PM/sfAhdFHgMqVRF9lztVNhPW4vWLMNHTbfK3/NJ6ZRBjwlq8PlpVe10E9OBgiAmZXCmT2NTm9mhCQxJUeMzYK0ctZTZTfrxsvkHmDQ//j5cNfAIZDV3Gdi5UaMi8B7qU0woUPB8I/VfwucUg9N+w04sh6M5gfp4VJx2lSxwULOJSIB7Sl4ley/hSvN4WT4+HOgi9hEc77bV4LZ81BzkMnZXojdpdSj0vbpFSWVFIRrUkKzwwnmuAHRPMFYK+UjpJ08C1ip97L0cM7emf1lcFCO/oFSf1GoY74tw8YFdcv3Z8qxJI5L4Hdq/FhqtlvlFZ6PUhD29DjA24TDFwStYgSj32ZmGkXieZCAzj8DA3xPiAk7XMjVhvQsPVfMy1Hig+bQjbPY6BbtC0y9ImJ/ou41t7VJhFsM7WullSyOV7OWB9HroeQ3rvx2UHw8WfQNOKJsVlVTGsTGzQjVbF33PZtKn0JzKL8IaW0yzqK1pBZrE0vlJ6yqZX/iJXwyvVp212qcgNfI3R4rdSyOXFAdi1XCv9tpCbVLxdileAL8zFXarqQtU6xYC+sHAT7nMZM9iwzWXMa8RGZtZte1I6Qe/s/yGwoVKtXKumVmU1ofwQRB+h0iy/wiRfoMQvjpGo+Ze1KJMB28c0yZ8ol4o7SfblYllDs+h7pl5SGa9kXHwCOlPKHxCNHyg/xzSG3dQVyWLV7jNNY5JRRqSz6DtB/yikRCnFCFuMRrtvQIRdDEebhii3AeXQRMuv95rc+LdQv6AHPYfd+grAPtkddFI19f0hJ3OLLxagVNSyFmMEruMVqZiXDT1O7GLEpR5aynF8orGlNIF4cCktmGZ0KQ0gHF5KeP7x5bKxc5lt7FqxynpN1QmaexhR/IDZ/8BEhtkb5kUQwVbLWyOCs4WOMu6x8SN5/SOMBl4Jujkh458NdnecYRfjvei61kXciYeYQTq77YyYYprbmZDfbqNIyphsxN2ZkecNZR5T7PXlJFv1xy+Cb1Jp94cu0i/jPvip3ZDwM+yWAuUhUPjNRC8R9Hqis5IYjrIdxOjT7FHQqANtBzX+THsUdo5xJziw8Q6EUdjYU2IHOclBsQ/ePWTgchh5RCgHjrV4LRbIC/mv8pSKENFGvBaLZd0UB9Y7awaZQSvgKWQC0TcqyVV2mWSnNgFxcQ71Z5LF6gXYBdzmlL+yTjK5+5WX4lcwvWKsibtlSJUtq04wRWng7jeqfFl1mqkpzbOHZZymFbHk72IWNNfUaLtQ2aYOG+YbpxFze12YPC4RlLbDBVUGJ653cuBqrWqJY6nRBsavMg7CGmG20EbcQq2FmEAN/Li3DYo94XWAunvTLTBddq84aapp3L0kNxvJvaR+rfHcS/KYQHEvacgETxsprirsk6ueyDT0Ft6QEm1mCRP+1OdBuKO9LLS2nVXoH+50cFqaw0YUspgLJ4eMcLeeIgRmIfNtClvpN8pTtpQsOFmGhwf6Jpejeg7M1XdaZLmIwlMX+shrYdMSJjWk0yYuVLY6/vUz4MJ2syRlO3hROtTZ2UM5qkVCq65VHd5Ku1KxLB9FnNsLZCuQg8IjQnp1Lt3aKEc6rqO9YmjN+urMN28UTZiQfCfIDJ5k1OR7RWb0VPz9VoV0E+Jb1WinymyCfeSUkL2So4f2DijIoeTjDSLkwwfrwEE9ZPAOFuTDBP8AwTI0MA4KtMPBqIGgzD0MHghaxUkvy62CzwbcPEe1EjZxV7+2fOhb86R08rcIX6r7TOgoTmrKHexpkgFT3K+TMJvyWDw+a98Vvw1+SdhjSylp+2nvYWFmY8o07idaJBnt5ymFYyv8Ll+pLBLq/fAZU/xBx+fBboDKJfE3sZLv8zWgGYl8lqDyEEGwL+Rz6LsJh9nTSpTRgPoq6kWSG5lZT+2jep2LjYgSE5gOxWtP/Rtp9RuJ/Y1o/xsTNrMChbjXlKLv0m/qoPV7HRol6zGmFtzqdFJDnooMjDQ27LUmw0c8yucxwv8mH7Mp9YnSQr3QfI76MEmXgmxj2Vq8gpLC+bHpcvGONgL1QKLHkqH3EZnN2WhlVKSIBqem2mQm/LAv5dDOGIXku8wXu6gaEjuaapOZkO9vvRB9jnx/zWXar7F/Q5zaoPoV8Xcxywi9Ihq6dlKTwVtmCvJSZzLsF/l4q6Lv0pyJyKjQRIYeG17kY16ILneikxn0d3DKUY8RvWSj9OAOb2d1WA12d7bLEycHQ4w2Di6bH4x6nOlUH63r1mkDoe92JDzOees0gsF7O94Y6lbF4L8dbYw6S7d54DMPA4aoZSX3DkYAogIPWtKPCZzMnHNrwHP4o9oHbUoq4fdqbLD99qBJvR03tzFwp7rLDmKv+lgTVC6LD0I8nhXCxWd5n1ENe17gtemdzKH2XDvtm8R1HWQw9RfkcV6PM2kff/8PKTfC5vyksmsfhP+9lp7YuOJ+DUObLHTfrxniThxcBjEcOYwzBZQ732eFK3M+twHgQxOXAbSnJuMMqI9NqquEKgZs+V221Icn1Q3CUnc6s1IV+ESTz45SaDpw5G0inxnD14kmMOpKrCXk5b4Bg6w42fOXQcaAD7k8ltCeco00o5cI5kSKOE0ysgVAPx1MXP3CxOsAfMLkMSY6kyZzm6ayfcJDGpNUtl+4TWwKIAO334p+Dm5+A+o0JFQ2bPZ6U5oBu3fvN8OZU4ffjFvo0zF+S3yvx3AbgzjEdxlCfYo/zgjEybfLCOqj77FGFCLUo24l6xl6qY0omzGVk7BUA103DkMmdrxwBB2MNMYoLWdZfKb0i9BUn8GKiixe7kQZv0bnfjiRBYWq5+E+7m/SuBkd+myXz56u5HTGgEIoXCbQxVCMA8cHUbisYIqi8JrkiEa41psnkRW3OKQGPVbmU6GNTDDJM2Dd5+U62ilCBiNnpQ0drgCGUj/6TnEK9OA3xQ+zw54UD4Une1lt2CDaN9bARvLbN7lpSR6p4pdJzWmqsptQ/BUt/06SH57kabhD5tA9Egc0kNu2qc2yZ2a0bW6nyI2e2rUQKfpOkRv9x1ZuadF3itzoWhr9RjzNNzS58fNIFBdj7GsNlCZY3eVedwozyPmZwIe3EYCMyi4F0u1D+aQEEdTRXg5ZuYM5zeNES+Be043dFOQEl5skVzHouM4NXgmCcvwGgcNc8h5o4FurIcDFPxHxVlqcuKCHHPzE8IccQqBzzGmNG9x3WkMPD34XwQ+PexfhALxjZimPx0+EERfKZhXeKA0YyF0qpPmC4YO1Fw09YDurbmC7LXQMevL4kBWVMjRdcKgpWoocEgTjN2GnyI2ey9VaZuYsSQHOTj9/JbssZRmM8PZbm1v/Weo34KLQIfKhem2fjKjTtuuNdr3iRcfMSAHYP7ZCi8wkmTxhqP+9+oRfArVI8JqCXycEmIBaKnhNwK8Whk1wDDy37UNs8D1btw7pthQd3jjAeDQY2ji+/j3V6ctw13g880alSQTo2kNGNfU3tT6/WZGNUb7fzMXmq9gQvLl0yMzi97abSGxWYkP1+hLA7CcZfd+oJDOYu5WDhu5+wXPJkss0xNQ/ZA92zgk0wu6hyu0U8XcplNVOeQJTbIRZkoLuQg0a0tTlN2NdPuW10mqbxZUDlfjTVK95lT8R739iGuNgu8ND9iB2hsEm3JabIR5Lqp3WdAapDO96H7JJVaNA2dCATxtCzKpXfPWek9osXenHwohUgdOIQ836Y7dN4TLsR/MXJjCtaCa3kci41grVdBSJjH+t4NhX3Mcb8F5iX5Z0/wDPRtIBIs9E0qgspiwkXgswY28ANqaVe9nJM40EGATLMuI1hTDDyGEjSFJzdE3hS8tx2KAnlQMm8q4FlQpPTwBdZe4S0l1jPgy8Fq92MbHSYg1Lv9+Ft+/PVoK95PvE4Jhryg5s8ivKI4zYpiaJRF66Eiw3gSW1ZtLQZPoG9U/dGcAVBi+4MdAk7oeRwRdXu7SuS6uUoLAj3S5lpcKDmOMuf3RZ/bc+kNDudWt5deUi+Q7rc/viyNXr8X/88tveVQwKXunjHD3CI1fadeMBLdYBJKS1Ehsq5NjbwQk+6x4FaY+1SDArIUZQc0kza/XJDeXcFWbK3d0FuRGoecyN7xjJNist7IngvyTgCVqXAuVuHJxyyQnlTLoUUKvdqvLe+LXP0c9B6ZXc3KVi1E2sxIV+KfNcrIjp1ztRYgMcjfrP+mYp2LnUVSB1McHyKDuRHJmUx1dqr5p4cid7wL3Zk3kMQDgx/Aa4nRj0BpSlIEkc3Ozl34DTOIzHxiVB9cEzpEEdbRI6L6jHKJ7MoGPNwuWZdJvEkGlyrDngdYPbEty6YSw0Jtmcm9uTbo4eHZGzyE1OnbVorCHI1DNuYziSz4w1CJQdxG0GXX6QsfD4DCFuSwZzhJCY0VmUFs/TpsrYV8b0M2Ad5RCg9BupbPYsktTmo6LhOlKZaCiG1q6rvjzoWqZShPqSvNh7NUZkYxNUFq9GEVEbm5eyFiQGbzfkP+xbaoULHLRJ7BWn3FctU7EKHLPdPEe1Enas69cW2aVDDznwxuFo0DXdVz+CewRG427EW6pEDDnl80BXimQHfaNNqbIGhu4BPWZUaqAd4Gjk0vHz/zP3bt1xG0nW6H+xXnHqIO+Z80ZTtM3TEqmmKHu6e83iosWSzG8oUk1Sdnu+P3/W3pEAq7ISJQKFUs9DtyGiMhFI5CUue0fMIm/f1d6EfcRRdXj3ZaxrZkBgdvc+d/fNJsnvU+yHgTeYL1H1NvFr58uZTM4Jb5FbznmqIBI2dVqsisOQ2uaEGDGC3bBsEfSN7E5ziPq572pfwk7ZGTbEnLwnfEXAHUpMbwo6XF16PoFZ5faHiSrQmrTsaVMFmk/UXY6yNUl3PsW+IujDP0caz5siShczCVdslmddVuQJGPX1tv/2xDAVcXZICVMMzCAB7ctYu7EmZtfNfoRc3l6RyrW7nCs97UnUaTlqqrLukJ3mecKOt7hqck40t54n4uf75e/Xd18ejmabAl2Pe58Kk4nPNal34zsPCryxmT7cfbl/v4Q7ZFLO3koHs26r0xx0Q1K92MU9VxuroU32fnn5ODoT3qDUK93tUWj6AEdvDwMi953tUeBPl/+6/vTl00wSP/W2T5Gvb+cUue9tjyI/3j2OTRc/KHDX1x7F/ePyesaV99TbvCJvbsNfbh4P7u8v//z58ubL+N1urfW8iW0+LW8fxsOJqjK9WOttwoiuD9KQOwg3ZxG372lGUatfngXxJsUWNtvP6gZioT5YZLdj8aoDgr2QIn1PXU4b2rUBGxL+7mpk7HRQZulpf6JOCOIMyTpXFOf5wk8xKuqyTzYsnivqDpGRIZnnDo08/2UmOpSGXmQXt9LzhZ4acBiSetaIw/NfY1LIYegd5os5bH2B6slzeHfz5dOk95CWc542/M9ukrzIfcwzkHlwhj0V76/x4b6/fpy0ea/K3Xf2q3Q2bQVuFxipn3Ye4K6TfQj4+OfnneXLfXyLCTBd0VwVeEclc0PELcv87fvflp9G1iLfbP+/Z8mvyLO58McPYh6evUzOVVE3pugMola/+tHt1Q5GxVPrWfFK17eXN7uYFIVYL9jhzgbFylDNraNvCDyrhv51wafq56XcO2nnXxdzZ928lHc/mvnXX2Qnvbx8id218q8LvJtOXkq8B438Ga8Ax+L4vDMDb4DONrLOzCvwDgZEKe7c5kNV+PJ8ufsCv+gkpuF62znPlsfL+4/LsZN4U5oXfT+jv/76sAyI+T93Y3O11YTMvcwmYvGFJ9cWX2k4c4rjm+vl1ZRUwKVEL3Jfk9P+ro7NcJ7f5cfR5I0NSVe62YOQV8vH5fvH5dXBaNrPhqBdV5fTaKHPEPbD/d2nHx5G7pgbcqKXDw9TmGHPEDFju6dptxui5t52UG2fIfJKkvs3l2P1rg2RV3r7fFkoXbOJTMrHNCbGhsDS13RM/rPFfUsoNzIUziKxIMN/le72IDSVuJPRxvmGtOxnomn+HDHvdt8RHu/m3A+GT9Gz5cPnu9uH5eHd7ePyXyO1lOF+/vedsTUB5zxyy4Hc5+FWfZf5zrpnvsquR1/1LWY5CZ/5AnMdjNUXmfWcfOYL7b4/Vl9lpu3yuS+x0+5Zf4HdN9Nh4at76yTU4lrTvSRSnpCLeFOo3VMRr4/RtoQlI71VFWH7bvYm5Ghc14CU0xBdzxNTYLdzDOdKT3sR9Wr5YXl/v7wa7zarSNt1NtFt9iyBlx8+IA/W78uDeVdZ3++3WW7Xtx9Rd2hnsZ/62YuYqPl0fftxniHOne11XPMzZpnOua99zmZ6mTmLZxhfdvah72zPAk+rkr5V7B0KpD9feEyNN19+vbl++G2GDboPE3xe6XK/wr99vPw4p+QPXX/7E/v8/vL24ZLpCx8O7z59un6c43Bk148rXb9f6Xqul9nQN+F5Ob79cDfR91Q0n1PvfH/5WYpTXY9flTWxXhQdjh/ScqwG1bovD4/L+7HB0iGppbdJ0dLni3z3iYUDr+9uke70/TySP3X6Pnf6LV7g1fL35Uhyx9df4CZ3urcXWH6+ez/aVV2Vuutpb6JOQI0MiDoXbOTZoo/HjQxIPhE48mxB0XKmDQS/2+/usQPMZUDmuXEuz36V+7uxcNKBN8gd7W3MJWbyy+XNzcnl7d0DuLFj83AMSC49/3F5c3O71vPeXmUqVmdA/lnBOs9+iUngl4E3mA/98mzxgbyYab9BV7PvN6Xe+uenX+9uJvAKVxrOqatejx26QowX0wZsZRSG1tb4sFwpWu5iHuGK75izwdNJ/nL5eHk9NvFspYN5bZDRmUWGJJqcXqQ2Rtu83uPrFQyLfMP9f1K1ghFij9fKBiWeqJeNEPZ++Xj/5/j0DYMSr/a3R7HlVD8brd4Myi0dTlRzRgv+99H4wq8IPhFqOEbwidVDhgXfpXjIaMEnOYS+Ivt0UNII8XOC7je/jU4mPCh97vLzb9MyCo8R/v7Pk+W/HqdlChqW//7P2+W/HnfIFjTiFb6MTVQ+KPaX+ykul+2ilgrIl+urCWpk32xOZeO3648jred1MV7kDkYPWD8GQ1l07v7YSS5pP4dYxdfr87aPr9631nTmNKOX93+ej2bWbQr0QrqaSK1bH5shYb98+LC8X14dfBpvftcEzt1dfpqYHvVZQnclJXYWd6WjvQh6v7y8+hMo2d2nArt6yF3NJexaLvvLqysmVnt1/fC4vF2OZEhURL68ulqiw5unDvci+IQKlBVpp1affJaIn0ejfGqzdRrE51kC3i8/3f2+nPf7S5/fZAqML5pZkXdiwcxnC/jL9eNvh5c3N79evv/vWYT94/rxt/dPHe5F8Mfl/afr2zl2sNWeZhO1UAfgGb2fkv5jteWcysDFxT+7zo9vP38Ze8KWUr1gf3/wz9e5v9FjuTpIgzC6h+uP+FYsocSUnbtK/tRlnwX0/1F7En+8P2lT3omOpOeIt0OSlU05d02y8hyBJyRZ2RR0apKV5wj45XZsavdN+XIfM4m3ujMJFud76sYjpFxttuOetK7oIYXf6E1yQ5oX7Od918+ocVsbkSExx3zRinSjP+bzhDoZZQvX5Lodbw0/R7Rf7+5ulpe3M3zY3NP+Pu37L/fo5M3dw/XIAmqbwua+Pj/1Nbu4V8v3158ub2YY2dzT/kZ2TdTzcbG/r4g7JQz4HJE/3Nxdjk/Ztiks+9nfyF7fziHk9e0eRUTluN0+eNfD7KI9PN5f336cYQClo/2N4QOj1ruJ2HUxu3CPI8OOm7I9Tgk0Pku0Tqmf4Rv3fe3vMz/eyf2T5W6n+eOduDxvl3s50zsxf76eSc7fr+cTdEPDJSz+8939+D2obzmnnjvWL1gTZZpbsByOIQGFDbeziH03+xDy4/Lx5fLDJVJ/dwy1kWykqtAfl49X0m1PUJtCTHrmS4z0D1YlnuIe3CZeCsrpXsKjfz3eX5appxD5GRRytcWsdN+Py5VI0DgRXnSNR43S2rsPSPV//vjvqTJJ09klurn7OFUiaTq7RP/84/NUiaTpHBKVE/vV3cePK26PrXLJb3c+A9YF+Osfn7+/vr16u3x8fK4ca032I85afPg5wqDB/KJkQ3GMME9N5hfnpRic667yrwm02mgPIt19+fVmybIXI8UqGs4v2hG50odPJKVny7bRcl/ClSCy5wk2D5lwUCho010gDhk57lcMvucJWOlhD8KOVgmKRnNqBV+unnm21GR4Ia3Hutafc+b90UUGd5Duj+WvD10fM8lY+Zw/Lu9+u3z4bdwmstpo/hl2LNkW3tzf8b9/WQ2bfU2yStt9CCi1e8XCeb0Kpf26fGXTfYj36O0IiR693YMQn3+34yZV32J+YV7d3X7Uzo+TZ7XR3kT65e7+6vnb6Gqj/Yg0QaNYbza/WCfLj3eP1wjRT9cstvSxD4EfHpdX/bCMEHKt3b4EO/ny6dfl/RTRVlruQbi7q+Xp/effLm9f3l9e3xL0NWrrH+pgflFZPRtT6Gb5OGYWFu3mF2y9Fu2o0dtsug/x+ppJUFV/ury9uhlh/Nab70vMs7s/VvXpkVIWrfcl5DpH4HmizUEQqAi0klfwsMzI/TXBKm33KmCRdnWEeNJyX8KN8UoVjfYg0ofvL9//N4/JL/fLsUNWabwPEV9+uZfkOWNEe2o0v0jn64URviaM/HwPYnTBynerGLSvSrPaan6hVilQow6nsuHeRDuvkfSeKd1q2z0I+OX6apxe3reYX5hVdOGoD1k23JdoZytwuOfJdHb3x76EKWrBPU+eWQrAlSJN2BXm3BLMyuD88ubi8PTVu9cnF+d/e3PUy/L75f01wCDDA7TecE5n4vfHJwdnf9tNlEyOG+2yK7q6uCC9bkjQ09NXRwcnu0oqeMo9i/q38x0/7otJpRdGCXn408HZjkK+/+1yPI1olJAvD3YeyaspNJdxQh4dHr8+eKV03FVUiZ5JR/sXWDs/j8DS0f4FXnHw7iQv+9mnuKfvvn+187xlzPJbCHpxcHZ2sOsRIOJeXGYP2x6F/uHV6cH5jtISoLxfMX88Ov3p4O1POwr6UYJO+xX1+GTX8ZySyGKciG9+3nXxX3/+fc/r/tXpyY87CnlzN4FYPFrIWVY8RP0W6x0C735U3UgUab+ivv3p9GzXpfTwm6B29ynm315/f/pqVzknQevHCXp+/Pro7fnB6zc7yvq4wpz9FuJenBycnL6dS+gL5v7cr+jv3h2/3FHeL18mJE4cJeTPB2czWC2/X97vxXDZMPRfvzk7evv2+PTk4vD05dHhWLGL5nMa/WcHv8whzYv7y/HJhKq9bf/uf397PnpyVuX9n4fHiVP0qwIXXz9bLBevD/7z4u3hwVhrYKP5nF9/zczcWagdrdbNTrfPhTWTczbhJ2oGE4Ufa8dul32aNfsM0Tem9A8H716dXxz9iKVw8f27H344Ort4c3r66uLt8d9HT/Ctnc3rcy0ednxyfH588Ori8Ozo5fFIdW1rV3uV+u3R2c9HZxfHJz+cXkDROH13fvF6pI7xrC5nfot3Zwf0MRz+5eKXo+/fnh7+5ej84s3Z6fnp4VgddHtf88qdh+jw4M3B98evjs9HWksbzefcwFeOozmkWq2tMWUr2ex1+y7413dHZ3+7+OHVwY8jp++A+P8Ewuhis37FnsT/++nJyM1uQO5JaW+fJ3B9Mr8+evv24Mdpwue2s07jg8Ofji7Ojt4ejdyEKyK9eH/5/rflxSTSfKXLr4RODk4Oj0buXXWZb99PqGQzWtwJ51xV3Pvl1YS8PGPFPfrPo8OLl1MX2ZrEy38t319c7bbMnie07GlHZ2enI83TmtiyoS1Z+vvbCH529Nd3R29nmCMi+v2SrfYu/NnRW6gz3x+cH450tNdkvydS8OJXYC2/lehHJyMt2y2CT8mZOFbsFZVxd7kl+/vF9e2Hu30IXj8E3xycT5sraDizjnlyePry+OTHix9Pz45fvToYKVbRek+yvTvp1M2jsVO11sW8UkKJhFVzdAYfzeuxp9xG871I9+r84EJc7hcvjw/Pj0/HI2629bQPmVcMrTenr0aqOtUu9iDlpFWz2nIPMo13VfbN5pXmp6ODl0dnEzwzKw3nlej4ZOoGvNpyTzKdncrFX47HHsjVLuY0kw4O/3Jy+suro5c/jt2Ah0V7cfn+v2/v/rhZXk2pzzvY9VfQJk9bwvwvdAV4OwAo/4YXe/Pu+1fHb3+a8W2ml3x+/isMLIVVp+BU79f2vuZcHCtzanYRV+fULt9h4BFf/yDZt3x6cnJ0eH7x+vTlyK281sOsO9Pbv52MDGsOivTi8uHP2/FliYe63L5gT3/4YS6x7z58+EZCzznY+x3rYiK/PvjxeKTkbDLvUY9AF2FPFy+PXx+dMJb76ujkx7HKyHA/e5d3pLu81sP8MtL5cnF2+svbi3dv3hydXXx/+m6sDjXcz/zyHh69evX2gg8Y7zaqdLAHCQVlcnLw+mjyDN3sY19yylCcH4xGPFe7mF/K45dHJ+fHPxzje/3t/GjCGip7mF9GzvodhnG9/fzybfgcJtiVw/3MLy+HYbcFtNHFnqSU7/bD2cHrCeNZ9jC/jHBMACvS++8mfvl6P/PKe3r25qeDk4uXZwfHJxdHPx+dnE8w5wc6mdVmOX57ePrz0dlYe3GbaC+urh/e3/2Ogm9T9Lqhrr9i0OPn874Fkph801dYdVMenb09fnuOlj8cHL96dzZynm9/sydb8uIzasqjCtfjxYfL65sv95Pik7u/8LuTg58Pjl+NP3Oe/aZfbi9/v7y+mVRSefIr4uPNOivxkb7lpHwFYNOcL3CDlHrf8AXenB2/xum+nwn2+f760+X9n/+eyXV2dH72t+OxPJ+t78Oq41MKCk5+ibeHBycXsy+Th/eXtxffeq28PT84O5/3NR4v7x/3/Ap1zUW+yMVbmBsnYwFG9T7m1bCekHsC25ocz9zS0bwSnx11rqqpCmGth1mdqK9eAQXy5vT45PztxbuTs6ODw5/G75iDYr64vLm56KqNP1x8ub1fXr7/beqmWX3M9hV68O78p0mbzZZX+vL42w47zYSXyA3me4WceO6bvQCNjpnfgTbHN36NGfX1LS82u7K+46tOVqSe9447alITXq7b8S4Ozs+PXr85n3mD6Pa7i8vHx+Wnz4/fdrPIZzBs/LleSOS/gIX/jV5iZx1++GVmUuAnvFTfZL6pdr/8BnvghlYDnen1wdu/TNbAql3Mq3u9PToBkoig6IvDg/OjH0/HSlntYl4OAqD8o3eeYbkyqH/iZlPv96s5kg4uXp2+HRnZ2PIKV5ePlxc3dw+T6DSTXuEpIPDjwUiy/7b3uH6PlMPYaj5eTuL+T3mZ45Pzo7OTg1dT2ABbXoalsm4vb6bzAqa8zKvj18fnF0f/eXh09HLGRXJz/en68WL5r/fL5dW3Wyknp+cXv5wdTwiybXmV27vHC1SBn3qKTXmRNwdnb49mnl+fL+8flt92cnXMzYufj09fHZyPpjNue5v7u8e793c3F79f391cTqlGPPWl3h7+dPT64OL18dvX4/EFW97ogbkxLz5dP3yaSlCZ9DpHh+/Ojs8ncZu2vc3y/Zf768cdWE5TXubdCZCn882yL7cAm36zqYW9a+5lj61r/8t+m2b45vTV8eEueqF0MKtP7vuDEzAQdznwVqR6cfnr5S1oiLufdLnXr8cojnc85FbFR4DiepbzbZz4F6fnP401ob/+Ehd3j79Ns6LHv8r50dnr45ODka78wXd4XN5/ur69nEQZfpbwG+uUyOWz0/FTqW8457rMPondZOncD9MG8amv57lPDqEEvBtt09RFvniPo//LRFPmuaKfHb15dXw4kle1IfL98vPN9fvL/Yr69vzg5OXBq9Fk8Q1pHx4vb68ubyZSxbcKXK6pHy6+Pzj8C2FQ786Oph1/1T7mXGlTlIxhoV5M1y/qnX5FTzoYSwTdJvsfl9OSHjxX9M35Qc//BNrNWtNZ9aE3b0YT1TeFeXH5+fNEjvp6Z9u//uuj1+P9jJvCflp+upt4SIwQ9s3R2fHpy7H0iIq4n5f313dX15NYHV8RuJyg5wfn78Y6G9nmf4Pj9kmQHT210tEe/Zorks7gyHyWuFPJdGuy7kaae5agO7lYV2Sdwaf6HHF3cqKuiDuD1/Q54u7gJl0Rdme/6HNEPd1hot7tb35O98+uyLerQ/Y5gu7mrFwRdg7v5LME3sUduSrv7v7H54k7MV3Ouqw7pcl5lqDTXYsrgu7qSxwQtNA/zg/OfhybMU7azKoSn4xUMVdEeHF5O0mxzF08y/EwXbgd3CPPEnCSe2FVwB08C0MCFlPs3Zsfzw5e5vUwATO62X7Wqffu/CfAew8nhMwGJCOicnn7eP1+cqys0vPXsih2qRAmnj9D7/L+8nOudLnTeTT6hX46Pweu5v+bAC8aepXfHh8/X9wv/89keNHolzh9c/DXdyPVviHp7z5f/vPLJOVvtNhwvc089vd3N8tvO/Y5B/M84j9KZc5vI/jZwcnbN6NrnwyKfn95+/B5YhmU0cL/DBjx6cnMm9DvgA3f3e59Bxo4ubp03m9+Ong7cTWvdfG/7fzaFG7GI2y982cRA2Z7iwwm3aP4xYzJ03/cC+RG8+JFyRGXrBBP5TZeHf08lgk13M8+5D0+mUfeWj87yuufpunl1dVf//j8UnxzB+//+5flr29BCn18k4FSvcgfvtzS2Tgo8le7mk/qX68/Xt8+nt+d/3H3cHj36fPN8tPy9vH7Px+XD8+Xd0snc0qaK+A+Wyj8fsbn3435hPj1jM+WWrXPffafj7tWCl95dq7k9Mxn49czPvvu9v3l2Nm40mhWSXBo/PWPzyd3V8tD+eUYkTZa70u2o48oNDFVNmm9L9neLm+vlmNmU6X1vmR7d/V5N/H6DmaU8H55+bj8/suHD6PEWmk1tyw4ly4fL1/dPTzIyx5lX+Qo2eq97EHWSYt1s/GeJBs93zYb70myKYuh2n4P8nVK0M8d7ny3ibituz1Iv5uwe5TtfMUlMEqsvuF8EuWK8s8UA7+e8dmbtfu+LkHfZnY5VsvwPVcO7fzscqxU1HuuGN7OKsXdFVbA4d0tmOJHt+/vriSjy/OFqvawBxlFiXq9fHi4/DhmHlfb70G+H+7xh/Fysd0e5Dm+5QufLR8+390+TJGs6GF/Mr5lpPhYAsUTpXzqY49ysnb0yx7V9HJ583i5g8i17vYg/c+X99djdLWi4dwSvXv8MO4UyG3mlUNKB/71j89/f3i8mrB2N9vPKd+Hyy83j+uqyU+Xt1c3Y3THbb3MKevD9cfby8fl1flKtfJni7jReEbJ7r4Ihuu5wvD3cz//4P7+coSDbaXRfJIsb/OCPnj/fvl5wjE/0MEeJPz++vZqhJ9lvd0e5Dnsah2OFUga7kOirpzhaInYcA8SPfnU39zd3IzcS7f1sgdZp0q3L3l+vLu/vrkZoUSULfcgU1ZPDu8+fbp+nDpgm53sT9IdZdyzdKWat6O01e72IP1fURLzrK+IOVba1eZ7kG6sTls0nFuicTrtU5v55Phwg5xhtzijx2kcRcM5Jbq7fDR6jCRsMLMEY3wsucF8Enxc3v12+fDb8yXIDeaT4Pp21Dfgz2d9+pjx589nfPrn38c8/PPvcz77YS7gwtd6mk/mm7sxRgF+Pe+zR7llc4N5JRi5d/ZN5pOC9Jm1ONnh3e2H6xHfZaiH+WT85x+fX4pzYcWz8Obu5vr9iLHb0smskmY9+e31/4xQutbbzSrPytseXj4uP96Nwd/U288qnyhIo4frqdl80twvL68m6HprzfYkzcmXT7+OccZVGs8p2eP9n3nFn95//u3y9u3N3agBq7WfT76H30ZFQPnzGZ9Og2nE4/n7+Z7/ON4v+ji/N/TL44f4ann78XGEMvrUZkY5vlxfjZDgy/XVfM/+/fJ+HPAuN5hPAlINO3fST8vLUWCQSuP5JRu72a63mybPfzXfXd9eLf/13X/83+8yAeG7//hOL8wifdd89+F6eXP18N1//ENEbb57f/fpk4CPru7ef+Hlf+Wf/bx8/3h3jx/Lr//f9rvmH21j08Kb0KhGh0Wr3H/9V/OPrhf+QjcOf29MYxYh2sY2fpGCb1yjF9raxjd2YY1rQmMW2qYmNmERvW1S4xeu1eyvk4Ud8i8UQH3X/EO1jbeL1q0/WHW/61uqtZYaLVVj9ELpsNZSb7TUay0NWurGp0Uy6880Gy3NWkuLlqZxYeGTWWtpN1ratZYOLW3tmY4DrBbBm8Y1atH61PhGL5QyjcIIe1z4xixaZRsVGr2wyjcqNmZhk2pUyhe6RSvtGq3QXTSN1rm5No1auDY22nY/xqNCaDS/nY2NDo1bJKsbHdHIpkan/EzT5kZG5W4MBPatbYxp9CJY3Rjb6IWDLK6xC+VsYyCywwVENpAXPcfYmITWKqyPl1sbLz/4df3GSPu1luG75h+2bWxYOK3WWoaNlmGtZURLVWsZN1rGtZYJLaszKm20TOvzH8vBmlpT1W6ugGLxYEXY6qxSleWzvn4UFoV11ca4ZVzjFsqYxnp8rugbiylilWlsbPyiDY3l1AupcS0mj/aNU9wqYuMwQxxuGfmts9K4kGl9ZSosN1eXaXNtqvXFqbDinK823lyean19Kkw/F6qN3Wbj9cmqMANdrDbenK5qfb4qTEKXqo03Z6xan7IK89C31cabk1atz1qFqehVtfHmvFXrE1djKvrqnNebE1evT1yNqeirs15vTlxdbPyYM74663nLNe0iBeyd7SJhpwyYij5h+2oXDtsatsM2aWxW2Jo09qh2kbTB3tQunA+NxY+jUTL9sRlbbFtKK5nbUYfGO2xx3jfeN+0iJNt49pMaj61OG0xG7rO6CS2e2aYmUIrgmoBukgtNoDhaNQGbaBt8E3gQRNcEdJycb0LIDw+Rj9JN6HqOLV9YNxHbsze+iRqPiL6JpmkX1qsm2kYttDZNxKhE55rocz8RPRurmhjzgMWUf5NwomgfGhwzFD7p/KxkcofJ4seqSa77g+8uQtdNzK+VILLB6LdtFlW1XdeqxXi0OGNaiB1wp5XeQ6NalwdAtXyAio1qQ/5Gqo35oQo9yZXCuDgcnopDjguIH21oeLjKY5XtG2BsnGuU8t1TOXfkJscdEquUR07ptrurVR4XpXX+dEqb7mG6f4TGI6AqKY1neO8bpWXuxUbhfwvlcbeba8pw3jjfKJ6+7MXwNTBtjBFZigWzvqtqKjymvmI2t1W9vq1qUXqqm7Le3Ff1+r6qqfiY6q6sNzdWvb6xaqoBprot682dVa/vrDqwdXVf1ptbq17fWoHF/Ycy1Y2Z9yoH5Ma5+NXjsFHQVRYWP7CqCVgAhVjrm7ZO1CTrG2+aUSyTj3Rlqye3Xj8OTEuxqrPEbJ4HZv08MDQDbHWWmM0DwawfCIamgA01K8JsGgOmsAa4Omxsglu01q63NlTOzSK0WsYzuNAoDmSbYqMcPl7AjsQxDVi3TuODet0ojioMJejDYWGwvqHdLIwulF+zvuaMHVR/zeaSM+tLznDJOd+YtFCtX2+9ueTM+pIzXHIuNM5hZqy33lxyZn3JGS45FxtrF0mtm0hmc8mZ9SVnuORcqn6KTXXGrK8Mw5Xh28aahVLFe2/qM2Z9AltOYK8aZxaxmIJ2cwLb9QlsOYG9rrbenMB2fQJbTmDYf3bh/fqY280JbNcnsOUE9rbaenN7t4VJy6nmXe17816A1e/bwGPULKyPjfKwGg0ObA+bALuEj9gvoG7Bfl1oFxsV2sYVD1+fqpZTNajqwzenql2fqpZTNejGwnKN6603p6pdn6qWUzXUrXkakZ7KoYXGZhYGi1zhvT00nGAbu8BZHKBCclACbiac3iFgeHDKB1rpSjUqJLlbyLS+ACwXQGyrMsVOJgXdI8CST6qTQEeTJXBQzSgBFCgKgE1HRQXZrW5U1F3TiE3eQGR4dbD1NipCqU3GF4KurzXLtRarGzbv9ZtllLGwjYqYKs6rRkUeSPhJTI1bROhHqW38IijdqISd1Ebf4D3dQsfUqGRk/yyEWl/Crh3cNd3mCnbrK9hhSabUWLVQZn3rcZsL2K0vYMcFnGzjcOIWrTcXsFtfwI4LOLnG60VbzGO3uYDd+gJ2XMCp+inc5mHhCr8UV2CqalhucwW69RXouAJTVcNymyvQra9AxxWYqhqW2zws3PpacZiRuq3avm7zsHDrE9gltq4av27zsHDrM83TK9pWlTC/OdX8+lTziq2r5q/fnGt+fa55zdZVbd5vzjW/Ptc8NZq2qqf5zbnm1+cawCr/0G11rvnNuebX55qnq7OtzjW/Odd84RH0bF2da77iFFyfaz6wdXWu+dBtWNE42bCcls3JL1pY1amFZg5rMYmaF/Pm5OBiVbjrHa5w18VCufPrE9fHYd/m5rz16/PWc+OFMr/ppfSb89avz9vAeVv3fYfNeRvW523gvFXVeRs2521Yn7eB87buAw+b8zasz9tghnX8sDlvw/q8DZy3qjrrw+a8DevzNnDequqsD5vzNqzP28B5q6qzPmzO21B4szlvVXXWh4pDe32qBe6Rqjrrw+ZcC+tzLXCP1NUdNmzOtbA+1yLnmq7usHFzrsX1uRY513R1psbNuRbX51rkXNPVmRo351pcn2uRe6SuztS4Odfi+lyLnGu6Otfi5lyL63Mtcq7p6lyLm3Mtrs+1yLmmq3Mtbs61uD7XIueajrU1JvcQGWo1w1QuhAYRHrjIjIIGqn2jdWI4KTTa0DJGuMpAfdYmNdqgA+twhbhRMr7RDBzhN5qRI2kLPbZNiFuFvpfY34XOiMiYhXvSoSmiNvIzq7ubBnqnLZwpsYj4DG/FsRLzWV8ekcvDVu2uuLk84vrySFwedYcJ7xm4EYwy8AFDC9b0HuqFhdlFnd8EzZE0i4jDhyOZtIyVW0T82/r+KkC/dhgiaN8qpnXx0vr6S1x/trpz8B4EQKgSVqE8Fm4RvYjO1wVgjMj60GinaFEiCEnfSvKNdrREcBN2DXyd2jGSaAsx1xd64kJHN2mhsxu0F1NnMU2QyKWHVUSHulFwjSu6xjn3FtaqPO/g88LUUovEgCkmuXGQxzOaildBRNMl3cDK7a7gE4JKqD3CpTGqRqP3RfSp0Z5LB+/nTdfC43txaBhHgM9YezzNWvwNwfSWdyNjrOgvccI3OmDmI3pL09Q512jMhUXb2kYHrq3WN5o2onOFzZnWd7vE3S64xrYLG9c1Ct7DEMKV1TsLMTpmYTEe/JQBqzL4xi8geICZh3hyzE5GHZL8JWJLiFo1OqrG9wbuk2DrG2niRhrrYVUaPdm2DhyM1HB7idmraaEpirUc8iQNyuU1hE0OO5STcTWhu/LYNWDXwp7WCx9ToyMt7RQaHTEjUyy87Wl9B09ucE9Jmxt4Wt/AEzdw2NUeIav11r5TU+Fn4sdgiIKTB4EJ7hhRm0ZTh20hO8x/zHtY0XaRkm10avk+vtGJoxJio5OWPaHR2HUX0ZafZv2kSGH4HTeVkrS+6aY47J9Mm7tuKkLtadg/mSrR9jLc3g47KOXmevuVv+UO1LCXUW6WHRRh91YPOxrlZtlBESNvzbCvUW6WHRRx8tYOuxvlZtlBEStv3bDHUW6WHRTx8tYPOx3l5qxeR+ly9flh2O8oN8sOirB7G4ddj3Kz7KAIvbdp2PsoN7+F+1GetCIWASYDDki5+W/zQKoN8AtVlDQAf1ErJ1fo9FRNTTTPKTggITRATtgMnUTfGp18DoJp+MUQFtMJ2qeDXpmSHGulcMUqV8PwNKUqi7wEwhDbYtq2ushrWJgSDEN8i2kVZqhLquigsshLQAwxLqbu45KbUDr57fg5RZOB+m0BGTOcb6Exrc1L1LQ4PmOJ+1IlmIb4GFN3MslNHn4BCAAefhbAMuokwav86GBjY9qQHTMGmtwiRYiTxEXTGNXSVLClOMVeQcSNUXWYTL7JBRqaXq5VGfDShMopKvReN1DqHfSIBstbnEhGOXEsldIUGw8hPEb5xmlopYU0sfsq2CEBQLCLiCuGJKF1YeVx4xAJjTdZrhaoPkVLg38LOYgM3B70ulKsYjsjOMjUHQ1y8+mbBbHp1kbpaWw0zQSMl1acLvgbZpV3rjHaiCOuFKfYxrQYUPWtoQJPUgU+SRFyZOpGvNzs/YVUMn3UeZNIyq6+GDBxi9bjCq/tYSbomH2IRqfq6xSAJ0U8hzF1mJfcVNk24dfnl9ay+3EDhq0tq9MuuPm1hPLC1mqx7VqcMS3WkrecnpahbExPfBbP6QmvaOTUsAu7sYoLzIkiisSY+rKpoE5UATtRBJIYU99/eJNTyuNDKCx+IIxkZ+eBxJ0dMAZZgrYF7svkEBQCUhJkMsRLyN+8/K0UrNgYiVExdVCK3BRLmHAgBr3wjCejSZa/TXh27JaZSfnMNsSDYMMCJssvYEsbyzUNE4ewjHKTKFAzijgYA2BoBVYtNwkecynbwxnTZnzAdAZGqzOQtVj4GGcxnoAVS1SyYFgrHv4C6spbsBUjXroXw9eJOQgLrMGZBn+B5shrGsrG4sq50BhRLzA9bci+AYN1tDBYQwRe8G8OvWDjp2mer3T3O0fjDb04GNk22cY4HhUhNMb5/ncwHZPfGM/iCCAyyMBoiIsYi9OcN+kRA7gaODBCpQnB41viAi9DGCLWEUbYWRlyH6MMeWuBAwTYz2SMn7GC38P7EmUX0KIlbkxxzmMDShm3llyHLmst99h2EegTgjw6ezQAWoQfo10ELz4DwQnCxm0XQVvahK24aRKl0Ik6D3DfiR8P5mfk6Sm9YO9WC4SUjBJwITfxdhFbzU28XQTsiZqgNSNzGD6YwG8njzBOMIKuMS5xRsbGeAIb0YsngA/D6tkLVqs3XVsvg4MWnQAyizFxcPwt2jY0+OBdd0kwiyaDMvFxCOCLjeGY8FeEZQYoM8F2AnOyY+aE/M0MR5oCBaL3sIQJzcRNQjMpGbGZvBkFvIe7xFCiWw4/5CY8k0+PvntmDP3fYv83eYPUmIRXcETVq/xUAWliBAWlCVSrJdpQNSa5/O7Jd3Kk0DUkihK6URIIaGNbvAFMDtvyWwXVwAEpr2wFqBliY9tuiGzr8sSwrc9y2Db0LSKXg22wH2PWbpwjhcKjBZU/cPbFvPZgzZLtEMFF4GEo0F1ubkTuxpA9Qwlg626XEzcbnGfB5OZYDHph4adKqdu06KtrfXdK8phsu00LPsEFRpJ8DYpAZyyv6BjEEzA7899o0uk8bnB3ao6MWkSMFvdbHM5W6SwJrBHZ+SzWEq7KcSs0MuLzbD3kJTc7GoYMUzRBlIcWWDXCl12EZg+/qZbTAC+K3QZw6kgIq1ok+n3VwmJFBAEBO24jikBXWFPQj2RDMQuflQ6eCqYnuBgSWxxVpnxkYE8wixRkfcjPyHyhMmNVyPQUC6VykTAzyYWBw89qagS8Upm9YtkxloLV/NYaV7Zv4YRZU45roVoSuWjrARq5STckLRM8BdE3cdrBchSIM216TaQvxzUYQR9r0RQ5E0IK3Fr1wmvZPQ1d/3LeARIu46O5U3qqeI5LGBPVNFb0TV7F/irxC8TGGnFSN5bGS4I/gdaxgxIL8OgCAU/LaWzb0m1QwDcVAZm2jhGWm5gYlpo+3tJmdCpAyXIMapuHImYtw8dOt8DL8RhXpCBBcLoIZHCgDHBJcInQHsQMI2GKF4Fql6YSBY+/43Gi6fs3Pv/e0vXvYC5LyAmBLOgUixb/pnYWdKmnFzhURWSptfW9ykhMEjsFdmRSqbArcBVGl/cmuLMhsTEd0j1BmVLyc5+Xn2dAxeaWsnWhV1lsYnXqBXBWsktZlxeYGFEM12Gb55AAgC6aUIS27NEg8qzFQ2MyPGE1dUHZw/gCDEvI7xiWwIfgvoYl2XJC4jOL8hjzXgYTEaEW+RW2wsZauvpMeRAUMF1FiKwdUGpNxaAoMLWKMFmLiFutg4pHpMDVKiJlbR2lLDdp2eGYeEKTaB4XQgdwC3iUnlwVlg49BDQR2BSECRYJnRalMIWOT+CtRYCuXZhQ6KQVoK4qkLqK2Fvr6txL3uxN9qpzZcVk7w31oDNixjrVX+F3yalSnOKcJ5jXujoTzjxhH5VwJ+witjJF4W9sLAHW2K4suC2LNmys1eJ8JPzXDtDFTO+AbaHd8nnOd+a84wNDExdQsCyIX/R+IrIdoNGXjy6OECt+1Po2YdvVR/O0WkT4RmnZQonBxhUWCEwCZN5dAWruyzVUoJSVFc9F3S/Cm9rlc6GbwCIBPoxI4BCm94zftSJBd2W6L+4lTFYOQwF6VlYIiPX1yJs8kTyOBHqYo+qiwgn7G52z2DBhProF1F6ZDwwUOEYGyhCjKrDTimhofLiqEGZlROR4pEOFSgvMJgrj45qfh8IA8N+PQ2MZuaiMSElg5A7l654FW9mhCji1IkAa0YBqB66Lh1uz4qpccUGGzjWK0M5C4VMiqhIQOwwAuUE1hq+IH7qUpdigCLe2oe6/sb0bFwFlBnsQy1mJLPeOefHdwg6zPNRjclT+hNISOpqKZUgkwb5GLHvRpg0Biw1QQN5hgDBKk5+ORz6W2hRmO76vJXQFvgXse3giMYP4f0a9sURCynhmi2gK/8Sod2tLDbPAgCsBetfj3nJTnHw6yeniVPaDM3bLEQRIR9yR4KbAahWUtZEQPNwh0VadXQXOWwnQux7HsJvhVlVAshVR1kNhiAoqWxWwbEWkNSzfWkTKqcz3dG0QUjo2SHpaqBeTqeeD7GYadqBYzYIQcMLbdLGhNY8IEHVQGjaiN/XuLxi+YP6pRRtUVlFbD4Y+bUzCRWl2J5+9LgJHarOmCcyIQribLjElPH0yQGEMa3EF0IncMhdAzJ4YqMFazHgnep08Q4wElxynphL/PfmD+MyW1hr8to5OAZirju4JdCIeO8xqoYVa+h26P3lKLD4GtQAsXXwMPnsYADrAXgv/Cj0M7SKh/0Sfn6WjQN6PniiKgSUEpIGYbTAMaYOxCywLeaLlKKB/S8HwbEvJ8HsQAuSCI+lTYyPf1+H3lLVEZqgCpq/clqhcBaevCqC+cmbbbK7ooAVWXxF9b1M1PYGqoPVVAddXBODD+1Q7ryqAfVUg9pUbzqygKpB9VWD2FVH4g0NQCZ0XsH1FID7cZs4sWl8AKCrAfVUg9xWx+DDoq0OQsrHZwjJh5gnXOTaCz24MqzqLyprOomq7kAm5tuLaMB3Wqfdk0yvEZRsFSQNndejcHVgGYnlZiathT46d+wJriuY55y7PvBbqdGo7Jw/8tHyqhdHFSBxc17DksHm5nGuDoYN8N8hVOWTFLuyHmTGqwldQBWFBkYIw9NErlAVVcBYUWQhD877CWlAFbUGRiGDrTBO5SdeKaoQc3tDhCKcTbVhJWQJfYBKHvOxY3Lnz6YDTW9wzPmU+f6uyS74l7R4nhM1k8uh99rtHOMd5MPAuXfABk0visE70xZYMUnxGAAIdYZsKNjDOCrVwffiEyFgn3uuQTw0EpjSdtAH+e3rj4d4x5MSDSGLoVg1w69Ibn/3t8Mp1xwKnCo8jTD9oMfII+NEVFTsoB/Iw2fChJoi/NsFjFMTPKhu2WkC55U4Mw97yPMCfks0eQCtBA6CMWolU6MbxaHAgfUFBaVzL5QhVhEcFXsrxpRzIya3v23EYEv6Gd4FP1ZHoz7uMhGBonBzVJblWFSwWRV6KU7qqU3i7qpo+AWwcw6KALzqGRXFaOepdCHk5xs7hh+f5tfDYdVQmXiMvjl04vCfQ9It2Q8BilxemDBa4X4TWFgJWdvmCK6O86Nd1gFOFLaMKuowSvkwd3Cw3JVkCpjKnHqZtt8Ik0pOzagSTM/7gmzMKpbusGjQnqJMBcsMFKuGwduHhTOT08l4SZFhGwaDGKU6b1sQcDYP3UpZlgLYg8Sh4x7jwmGWCEbWI7xnlcBBcOjyQgktvV5ZlizUoobcQsh4WrLiyMQ1dt95awZOoBXAJcKa1Ekimhgc1SwJMHtsPTx4o41TmWvocY7+iqLFG7vHyBMflCxSwE0UJ7iNNtznw4Fqc8JhQorriLhFXGtqthBKAEk3dFfNI4DcEzC8CvNHUmPFMZ/pnyH7E32XnqzM+fwdHzVq6i32D1InMjwuUl7Oqa0EPIy9M19Ta/opv63DX93/jR8e8oxdco9/+JVzb/Y16LQdAsrHwLl+ijY1z+RHlJC9UEXKrMIdrPjTfxZYSNAnJhWW6EEnnr0ccWyCzgRahoZXYOLzTwgPT45hXi3jVmF1n8B8hMZppHLHiVpfwmoL0pUjjwtSqqTy8qSUVjQSBAYla3bng5eI+5Dq8gSNQS676bY1WPyDP6IdXpViFWkF+GHe+yi4jNzkjkqQtQxCox98L4AC4Yy4qL6Gm6FJD5DUCaInAbqAEW0ZStO0QCBJ8gjdQdwAEBACNzYEDw08CTD6OIcHRY/+GFqa5f+sFDjRszETUO3HMK/kkiFDYxnmfwfXIByRAfjoBCdBnQiGiF1xo+yuVofr07EtbOuddqaEV1DpFspwLdc9chVynCnadCnoLRqHCr1MFwU4FM0ylUBWKnSo4dirYLR7pCstOFTQ7FSQHV90hKDfzDsvYUafURatEl4s2+y1h71qJbmZbn5xHtrJBlLqonSh1OBFyTD4I4AJLIJ8ssEMz0iF2Zww2cJVyS1H4PLYjPpH7vKhK+DcnNTIbiScAvnQqd1TzGEEBslB7MbUtORI4vHx3ACG8I8awFwKCFuYMNbRkXHc8OZNVP8xcw4goYP8S4eFRxB0TAF1Bx+Bshx6lQPrIWiDvigPCCVRAEdcoJj1aWN3maF0+vXAYtbImExeWSJr3YuwqQbQ4XIWuBQceGVOIlAAUwEXBMagG/zP087uos43muCdgvB0Hg92JZ4BtfX5dJxopll2M/d9Sd8VXUxte8oKwqYSxCXXcLkw5jyu6U0HZVCRhwiVhE+CARQc9XIgO5KxmUhcxNgeOyGLTGdbg5Wh0skFS0+abR/y/2ITc+xRjhTEjfXjKE6SlGW3kppZi9hZFwqqocPXxUA+9hlMSO6ME9dDWUusAw8wy+AeTlTsjbXiiuXDTkUyCsCXITfiAtnE0Y+XK9leub+H7v4X+itknccITewFsiucz5Erl8aKDkwvV82yIG/GyggmrgmTKG9hgK26HggyrSG/1dea83BSvou0wElH7DhqP6Cpj78zByWMq9CwzHHN0LiDAJoyugOOIMHhN/JWw17IjkHiUmGeQLHCyzwiJIxDJkrKmqXRqfieEPaVbWFX5KgRp4AjRRwPf3wT1oruC3oIt1bfdK3hG4XlX6Bm6RAgUZGBFeq+vM89VhQ6sCj6wIsN3wIVRIQSrghGsyPEFhKR2OlU4waogBSvSfH2dvy43u/S3WsIZmW9ABBrDpkh1gY8vAFXR/SJUMvhFFj6YBhqj5InytCfbUOoNBdlYxeFMUarCNlYF3ViRQAwQUO3MrRCOVcE4VtEPs7lUhXOsCtKxIiXX1xnucrNnwkiYAwmihNhGOCMHj37tJ/i67QNFHG4MLXwPYqBTKahotwU3WG0hB6sKO1gV9GBFwq+HwV+bcZXYScEQVklSbNa1/lRZMwWHV5Es67mGNyVIlUVTsGsVqaK+zqNXqbJoCm6pIqVzYAxTRacsKKBKeJ7YwCpsu1SZ3wUZU5FfCX2lOgSV+V0QMhWZj36ACZAq87ugSqotXElVIUuqgi2pyH8c2rgqfElVECZVknlYj3PyJjcsnMtcVbDohRqKdWMFtwLqQHA5/7fXnVHriXjBtuV16q5I/UfaRWLLcEYbLfdKScuUssNual3hZuqCm6lbSStrammYdIWbqQtupibVEuAq56GLFh1U8ooX3EzdmmE/t65wM3XBzdSkWvqBbJsVbqYuuJmaVEs/kHCTN/m1o63wpROJg3BSB2ZbgCJhhHMo2ArDiSAfmMk5jPC/8YkDzyvVeMLmgI/xhM250ruhCzaobodDUrrdXGG6YHNqkjM9YHebpGldYXPqgs2pSc4cnDebS0wXbE5NGuXgvNnc6nXBu9TkNnpbZcvIzW6N8qOl/qt5+WhwoMlH80QfEyAF1B3PP+rOlVXJ1R67D7XBx9cF41KrYR1MVxKO64IUqZXeMs4VVqQuWJGaJEe8Ye1LV1iRumBFamW3fKgKK1IXrEhNsqKvJ2yXm3QVRQJchSgbdbZnJQsB8wqHljq1pt1mF21MOX8H7kqiBOtXdmHPJKwtSJGALSxUKuUs1pTasqYqOcl1wXrUStaUr506upKXXBdERU2G4NBOWMlNrgtKoZbs5Lae+1f1AD2koBB+o2JqDkkawsgZGLt6Jd+By8TolDVuWFG+T1Di4ZllBg8UP7B9nHNFwmLR6i3HVS0HepkEnTS/AdVZ1/KgbyRC11s+kq6spzIxNDl33lWRiHKzo073yYS94EMsM10LPS3npWHyRJVtIHjEhE7t+XFAEvHO9H+zFVapLjNP62HjRtdST5e5p8mL8/V6AnKzY4T3r/dEmWciJGY0IRy+peXeBflWgWpdVhOTBCWrG4+E7ZVMzmV2a71lkdbSW5f5rYV6Vo9j5pvfNI6pyxTaws+phyG1rmwCZbJrsi8GIjRaVw7Wgq6hyVQYiJzoSmJqXVAbtLAX6jEOuSlMBu8lcBF63gLCg+L2NbFz4qTU8TsifF5ROEc2hykiP4lZKI60YaSeyEyJfXshHCVGJgST68hfgp8NkQnJF4XYQ76bgZWJh75mQiPPjRFcLPJAcFWOQLHLmC05lnQlv7YukPtasmhX/am6AtzXBXBfC3C/7k/VFeC+LoD72sg+UI1MyM3QAdsYuAyZshNa02RkXsyIIZvzcOFTdswnnEMcX2I+qKDhzJZgcgJfh/MhEcpHL2krbGMt4WLOghbcHsFdGJWjxIg8MrmBMJScYgo0AQ9pQYWzZATCaBLegudDglqQiFV8FqSxc+4EEPTF2YsDLyelwhXnCa9sf8U4IjZ5envbMh+HLhgJ2mzZzSqEBF0QErQJw64oXUkergsKgTZbEgvpSv5wXXACNIH6vo6/1h0noEi/xMOBmdi6zElcbHbRUk2NWQvxDBcCpOJDmzOxeSSgIerTc8kmYxqa3JuMK11wCLTdontU0pXrggmg7Tbdo5KxXBfofU0gva8HLPNNzMIUt1HMdaY8rlDMSZrDwSqLyxPpzziG7ThfgExk6hICVqQpJTgnYhIepqWHPUWT9z1Ns7RjenqmSgu8cplV6QNZilBL6BUHh8eTBen4oVIWykfCq+EFZphKrshsgoNFcg4gZwGThgEXToLWgplnCa0FYgCBcMAJyuOzICdoO+w905XM7rrgE2jJ7T70kWu1O4qNk5h+UtRrH7njEwAxR0ZlykUSvGyDRnJC9vq3pFoA3QxExnxFAxW0H6YOArOMCARRxFNeKqWYxc5jt+w8lUTwumACaCLwfapb37ay8xSQfW23YFq1rew8BcxeEzYPL0tt76vg7HWBs9dbcp/rCsxeFzB7TaS0T1Uvo64kQNcFtFoTKu3JLIBhW3RQ0RIKbLXehq3WFWy1LrDVmlBpTzTTRsokXcFW6wJbrQmVBqG09hUr2GpdYKtZn/sfPoWqPl4BV+sCXK2JlbZkLiyKrGK6gq3WBbZaEyrt6yhZuUluaWLRqJzb+onNJL4iJrnqMtlIuisQGITZQm9RSjWGoi5w2toNU0d0JcW6LkDLmiDk0FbjJ3JTZ1yty+BXQhERJGYaDl5oIgAz6pcIbCEKCBIxdGVygC0iEtF3njUGN3FyAZwXiJ1ISZCIOJmIGPE+l9hyXSGspFWGiSBCLSWgktddag4AGPkYwhMEZQzAWxAksSTrkZwQigAGZTugIuPcltkYiLUUAKDO2BHqcoRQBJtynLgNHTDYkdcruTYMkzsAJyL5GzR1PMH5elI1iIVB2SBCBiXJHd+/7fC9RI+13d8cS1kl6KCSbAPRgZxPQ2dgh85wjVYckS0JVKGVW6z0tTCpIUZaLgQDht8Q8wmSmHBfIn7vczup/4Vfxfzg0OMxA2HB4EYTjs0CpkGwofyb6XoT0ApKtCmXmStB+SyICt1F7O+l/CedxSfGnJ1q3XWl5Qs0gbW/+GvXXfj+56G/iv1V17uMPuFKXXGxYAROVCqHBVxfE32PuV0tm9VxpqLLCwV4GQGAYqFI+hWT1bYuewZABZKtxWVNLokmB8mMFLUDkpRAW+hGkT/OjItW/NSKWARZH1TxBEFP0G7K7WSl4HHMi0Q8E9ylLV0RslKwPPggAr5lKRqTeVcRuQJodjOZnzC6kkCm2oUnYJMCoEUSKFjqEL2sEsj+GE7GthJzOpuARcRabfDTC3oGSp+xQiIzWRMl1MK7rq0gykD0lqXYdgkrgF2EcYdtyZMUD6ZBImFahgLGnQyZlYxAsCaY+QUfwUpOF9BNW5XXgWtt94nakOvVOXkz4KkME304Qd6KfLIsYcm4lLPi+FbK5YlLVP5Eyguk9VGwbQBlc7Sx0ozLbAvWxyM8NkhFRY+sRrFbpYLS87EJglFSoQn9ewfBI/HKdP0RK8z+KDGfJhMTPRMrnPCzmF8scHflTdd2TYUDx6v+Ec70v+OQYW/nniq/61/DhTzwyOLTtU3dXWYogmURfP8Mgr9hzQdv+r/Zrq1kKEJ/Pj+jXMuFXkUiTBiwSSvMGV0wZzTJD3iDmmpZKfmhC7aEJjkBK6MqgVQEyUk9jAD2VOdPzeBL02VgNtnDKjmkxFmvM+xR3CLiJjOExIWcuQKLjBWJjcDECXZi2vjW5UUXCJ1jeAWeEkn8jNxrsc1/EzwZlqmgyMjuIXIXmcGCJFnlFaOiOjZBaAfRNoFeFlAFAi1G+Z1w9PE3sSxNEzKQCndT97eYn1GOcqF8ksEBJaY6ym61pJLigCAGKCMIjxB1N0gN4B8LzK3Aivj1SUYOOJEXCXkHY7Wkki6YJJrEECyX6vSp1WAsdFqC7okaqHXQO6mRhUtiCzDeie62NjsBoBlJCpiWyapJJQD4jT+DI1UTKm4ylBHZ6JiZghlz6Myn5S/zAmVevSROJ5qPsSMc1ZGl+XwTIt2r+PA01PExg0AjsGEwkzYb0C+B/SeprgF7s7GMbBTMA72lBoyuFIHRBSFA+7TFXKvUgdEFdF8Tfw4oc+2rVErB6AKwroPaYu9VAOu6AKxrAawP2HsVwLouAOua+PMhe68CWNcFYF0Hu8XeqwDWdQFY1wQOo+xvtYOKwVggjTWRwwFRfShfxWesQI11ATXWRLnSgVX7jKHbm5EQihppgotMEisizszMWKbpM1aJWxOOEO7fKD5B33SwOd9ggluH209LAEnosk0pKYSQCBIGsVUxgCS/84Q6It4QmPkLpKmQuvxUgXnBsFJxCkviqZhxxbhSGZSCfIJsUY5JsbYE6TtghVeQvrpA+mpiV/FWlXpsulL4RhdgV03sKvaJ2lepgF11AXbVBK/Gtr5n5tI4OYfsU15dZqlBTrGnZCQ2duY7DilJMBSx6eFcpY8TEaNSmGKhEgiLM70SyK8AZ3UBnNWCjUWiO9enDXnqwHQHAMwIIfrQhhPsbHC5IgjhzJx4vFPJ5WWZJwS1NASe3uKAY3o9QNPkuI7WcZu3dD/niQerJaX8t9iSRRdNEwX3zCvW9lCmicQ96xKVqwtUribKNtZzRstNl5nGDDzZ2HCZMpDO0GGORDnhuCgmkJZEaSr7zzVNXHrNlbglEO3r0/SB+kzQNoe0YyPrzsOAo0PKgyhuBLYr4EP8PfgHMtg0iLhhcLB17PLwcX1CI5L1jk8mpysKgVg64kHRD4w7odp2IJEdWlxIHXmROaP4u8j8hiqVnt4CrqzjcHENXUEr6wKtrAk+jnUQt66glXWBVtYECcd6WkW5qSUVC5jVGePDmnEwCVkyTvkOMWGUWsmdL9iJtnVNlLRg+JzMcwOmIKIkhoZDVB3QMjJXdruhbBRAZk1gMgL+FTaxriCZdYFk1gQmx3oxLl1BMusCyawJTIbxVtuSK0hmXSCZtSCZB876CpJZF0hmTWAy9DqHfFlF+8omVgCZNYHJsZ5RXFeQzLpAMmsCk7Elp4Up6Hm6AmTWBZBZC5B54FRLq1gWclWRLSawwg2SeDpBsoCRki9CRuLQ0MlXKd80bfcnU69IXmCkNSHPIHzXjqsKRloXGGlNzHM0dW00hbW8ZF1SLdnbo4n0/kl+eGaYIc87MsF3q2MTTc6s38AHwWRlpTTFeiGAGvlQq9JEkcbSnsrucU+5/KIlfZW4oY2trIBla4KfkQ+5+pTKoirQ0obo52irCfxMBS5tCri0IfoZ7MlqB5Wy6wVc2hD9jIS21Q4qldcLuLQh+pkh81oHm6vKFHBpQ/RzrCeFNBW4tCng0oZY5FhPCmkqpWxMAV42BCNHW9XATQW9bAr0siEYOQ5Ur6+gl02BXjYEI4P7Wu2gUja9QC8bgpEBCK92UKmcXqCXDXHCsZ5K0qjKTCyAxYZAYfijqx1UZmKBLDYECsMBWNmeTQVZbApksSFQONbdHKaCLDYFstgQKAzfc7UD221hoUsAD0eOaJ1I9Np2ha6pDkCTk40OHqVAFBcS5LquVEFkfgHjSpmKyU1QcHT1qaUqk7tAERuigkFRq3ZQmdwFjNgQFRzr6RVNBUZsChixISo41nNlmgqM2BQwYkPQLuFutQ7IfmHaQ6bvFgxDD+6RdLYMWQgH0uVUjpaOI5dhCvBm56tkM64h+q6iWiS4yodQClosIqKDYz03p9ykpo1TEhWuKLEiX5OIflLemCWRCTvBpWU2igi+NXM8EHgfWCkTsSQen4YCul5ULx0XohbAZUMccqz7pOUmZzYz1VvyRxxhwE4Qdd5JmtSG6iyTqCK3Aq/KJxfrnADmGOrToauEYpgbhqMFf4d8Mhe7oSHsO+YckRwHyxwC8hmRRjqGjisYMVKbGpApgNSGyOUYqhE3ucmwCap50YjLSeqRHkVI1d7ATDAN/YfAJdE2ZRZoYp6AwVVSrw+OnKQzTXo1C3Sb0zALZJDlTBjRTCgzwrqTGABJUgG4qECTFAsbEzAFvakVV00TWSIGtWQjk/eZRBtEk5MuNkgbZHbnlkHlhNAsKsCwSKS7XK68JH2O9JZvpHs2BfbbEMuNbI7VEbUd9AgDwViSl1RfzBbKkB/Qt8yPlZLY0Kor/5nr5EjGRxrTjhHeXMaCNjSgYLGr2CHwtJzUS56libFUOmdnYPgxdTGgLv7e0e2BwGKEV8paqFwwxbYiuRjRZHhbcbwF5g8VOKdlAD12SQ6psEtQPDqGrLXEGehBgEQhdBKF4HM8JtDCR3dBPrWFr9r3f4s50zfcH9JL7PGkUXeiRAqF6H8UoQCEYPpG3iUODpMvSroGKMN8rrSgY6MsyGsKzL7Rwxa+0ZUjq8DUGylvwyxMC5OK9sSJ8YhNTH1G16IPdElIgmuEFfKWFEN/xfBJyQcxBRzfEP0Ot1HFKS83exWAHjqprWKyr0ry3OaohmUYW3Yu1tegoYEG2aWFyDoiJoj0lGIVR6je4g81FRC+KUD4Rqdh885UQPimAOEbYuoHzDu52Q/MUwGnFQWof2Wx9JBNVCw9T5dXl4ZXLD0kChVLb3NoCnC/IdR9wNKTmxMsPVMA6A3x8AOWnqkA6E0BoDfGbLH0Kgh6UyDojbFbLL0Kgt4UCHpj3BZLz1SWZQEON8ZvsfQq6HBToMONCVssvQo63BTocGPiFkuvgg43BTrcmLTF0jOVZVBgto1tt1h6FdC2KUDbxqotll4FtG0K0LaxeoulZyszsUAkG2u2WHoVSLIpIMnG2i2WXgWSbApIsrFui6FmKzOxAAsb67cYary5f0OtACAbG7YYahUAsikAyIZ44iFDrQJANgUA2RBPPGSoVQDIpgAgGwKKWTU7Aey93oFrV3LpSbpVl3oGs0R4kF1PzkAkF0Q0R1izsvuDdx6oQyYlIUNLkH4k/c7zlFY5KUGMOb9eIXKBeTaEMMdUNyYk73jIMYuezCvF1c0KNdcQ9I9gXZ/NLzNIUY4o0vkPn3/svf9QtLKkKRe9LSUt1u2WvNWmgq02BbbaECo9QAQwFWy1KbDVxtnhqtumgq02BbbaECo9UHfbVLDVpsBWG8lbXa+7bSrYalNgqw2x0gN1t00FXG0KcLUhvnmg7rapJK42BSDaCCC6XnfbVBDRpkBEG0njXK+7bSp5nE0BDDVeZnwVsGAqeZxNgUYzXg8X7pabsxbuNgWYzRCbNlC421TAbKYAsxlvhwt3G1+ZyAVOyxAfNVC423Q4rb0X7jYFTMsQdTVQuFtu/tsKd5sCEWYIhgKmq7bv8qbJiWa6jFpP0Len+q6StzTZnAEKCUNhe0rJCxgLcMSZBqnuWP21FKpY3VsQWaaCyDIFIssQYDW0xVYQWaZAZJnQDuf5MRVElikQWSbI4q575XhTZ4AEkehwVpETKj4phNSE2IpcfcJiVRa5KTmLWdWYGXkdscWGxSyJT1i0VlLLAhlhmQjQMOt+ZK1EoOeilP5LuEr5KomniVcdfC61ur8y/ZXtr1x/xQRfQTWJeA35Gz6+Lou5mgJ3ZggjS0wbuUi2HCYqyE81u6TaGRMjCbYm0OYDcSaxfjjo2ahB5FgWN4HpCWwNlgguSlmK7UxyrtazbJsKhM0UEDZDRBqIOhWoktzUZA13uEnDeoRP5dAFN4oUhJ78HtQtWn0xlwuVJ8mttmHqFog4Q4BbApq8NrirhEGiI/QTYVAKrhAmLjpWjA3cZeJYZ1rxBWpMJd1mSm2SumOg3qAf4taSZKtqdSlnsV0SR0cdkwCgQs6KNlEA7wxBZ0nb+otWtIkCpWYIOkv1vGKmglIzBUrNEHSGwjNVCSobToFSMwSdof5BTYIKSs0UKDVDoFhCmozNbDxyk6xQAsOZcjakp2qPAggHOlDx28KhIqXKAQgnglfK2jJ80rLoLUs/QoekI5ruUmJxk19BerFoGWo6SuAFQYjE3JtgtyRmQUKDJIUvW9UA0ygVHxOfmtrS0Vcg4gwRbihCWh25ij5eQOJM3JJr2cTKui8AZoa4qFRPEyY3VS7oQ6IHPMD0SGsh+kAjEyaczvYYGFPMFtB2qH3f8XvgcCDADKhN5h2VuqUti68JLhTkKkl2bFkSgKucAHV61YEHIwINmyR1PQKYkAEZSPyYuWuemR3pd0YiWnqMWSmcPmtUEZacxKBQWWYd9rlOJwxKkwkzIPJKrmH8zbMUpQZiK/u2HROZinxeZiF8cxlDF5rEzAww3hLtP7mKuS2LwsjfpLgTrySrg24SK7XL38geCCAGMmUxdicmvIfhl3LCe/wt5LdMNmapkpXoQnl8FGg4Q3QbkktY0BRVMQsqRlUBhzNEt6V6/h+52RdXVl1BHJMxh1LP3IanKsshF8OzfbJ8oiUbVqwNSio8wHVDKD+J8Mwx4Zwg/5WxK1Xne/q/ZyriNtl8MsDYFwwhOByJewHHj8Q8jCxybghQNDkJlMUmMes1XAaJddsgaHI5h385TMVmT0BdqteKNLGy2RcIPENAHfMl1jqobPYFAs8QUIfsztUOKpt9gcAzBNSh8nXttKgg8EyBwDME1CXf1juomI4FAs8QUZcGAvEVCJ4pIHiGiDqQaasdVDbNAoJnCKlLsL9rr1Cx/QoMniHuDaSxChRabrrMAeYq6SOPJnYFT1qfE3uzsJyUv+jzBbHQsXB9NfdLxQzXUD5BbunyP0ODFwA0lW5RoFjrTRD6ivWgEWyUM1MzdxVZ5ajEIckxkAVIYNeoZ8gF6VgkweXnsyQRS7C5nJ8mNol1gHGeJ0atUTI6Cdga60pqqfMq5v4S1y5s/CThaZZ14H7gTJPItTKuSbkaFliihCLjT67/E3fwsuCkKVCIhqBClAuvGVDJd18HmoRszTkKLGRGmkQxFwB02I3xqrqruMyieVL1L4ZsOLPWF+PvVEiCZPg3/GCKBkT+YLn4uZJs6zSjkOw/f8QoFUxx9KrucyIeKZ8T3mXJPKRMZo6GnDdDC2FbPh50K9Gy8Bljp3h5yeSpNamHGtk4iWfXjN4nKt0an1ZQBvybVNaI3WfE30KXFz5JKhQCFFq5Kj9LsXkSXYmuqquuy4YvFXlAy8WMkdpCgoFHGiXTkeylVD3repCjGjr+gyfQXfi9UjebNW1Yu0GoxuT8hvw5kXQHrwhWsemqduGMI5cdloRi6gDw/YSxb6mfSnWrjoYcVcdDRphfeMg4ZqQ4DbYBlkEA3CPX9MIS9zFXpdRSiEJ11YYIoJdSQCDWSAIAEGaEr8yEkPydC7kSJJ6WmctJ5ew4VLeF35txQTkVgiNZFcB0J0gJTRply7InoMu1UiOUZFXQ1Y1UYkqSmKqVmcp5HOihZ3+Yn8Lfx0zjKGOJSRoBkutkmDF7jbB5E2veSQtJHoBhdvzIoKQ5E7urkDpms5TDgL1EqjiRIfwdSEeen4i2uYwufidrGlqGsKcBZuaoYeyjcJYB9okut015nUUaDPK7RIY8nFWJrGSkz0oyC5Xhptay6GyShAfJNonl0UA6TpwRoAsnYYGn0KCiSPe7ToIkpS0t7ob8bjB/83PJ+GYLfgW8W5LaoGibdH/X5LFPZIazbXJ5/JB/R74vjP2uRexbCG0aDBx+VtxWrfDKWYCn1Vkw1bamWxgt6eboQLVUx1tTxlwKbLUhCloxkWntFK+oQgVu2hAGrUgXrfXQ1X+E35WF7uHQpK6KE1TKw2gtOiqqmQt9JWbyaaeBQu/M3NNWZw0Uyyb7JsA0pwaaRAE13FASE6/BCypqJ9RQqJ0wWhXVTkfKDNROaaFaAhrgk1EtWUapTO5gCti3lSTZrapqYraC+7YF7tsSxq3aOj3JVoDftgB+W+K4VVsv52AryG9bIL8tgdwKRkK1B5MtWLDuqZGYfBoY5JES5nUu9Asj18omYgXEhQR44k7StlOuYFtkbrnuUjDStUlTFQlODJMgaxiZJE8hmYkjB53EbxKUQBPPtHASxKkj+DwXuIBpjSBljFgjyASahNsFq0+LnejpsRLtKtFHwha0GBPLRTANJGBYqiXCi/UmW57M+bKzZVUrzhDPy5T7Ui0f6su4gS0A9JZ4eNXqgblg97CaZKAJOxy/rkjbVuG5K6x8e1u8/ZaKU3KTWMlWXOb0omjJnOPz2dwzZjXFAMdVmOpMZMeACP8m+RwzIFZTuaE7C9RaIxVgvclUdeZF6wm1gO8hc6DNBVtgh0rFFlBoXewos0nGHjs84+Qg9ip+HN5WrZQlKZOp2YLQYMlPqNM9bYXPYAs+gyU9QbV1qpStEBpsQWiwrZwRKAJU2+E2zwhbMBqs5GOPdIz4ZIsONs1lWzAarDAa4EDcZLfbCqPBFowGK6nS27p71lYoDbagNFgle2zdP2srnAZbcBosKQpQ2CvJzuWmyzXOdHekSw3PtqvhiaxYPufv4fpl7Vaps559gJ6KgM9euZzRB//WkihGZ50ak1L05zanI4YVLPXQBFScK55hT5CKZ1ZMKWkrKwh7hZS9RS9SxRbmi8nZigyVW8FTGyeJnSJVWkWmay7Dif2KyhQ8IqLStkl3hlbsMkjSeJIiz8ibIYmbYq5aBlB1Ti4UsioKVU3UTli8Qcrzsn4pK/Bql1GwqE2fhO5pxeBSPKoSkz+hhZwFkCmFjiIsaiJcWbnKmaKWKPlqk4CPCVSk48BqaoS5qThQ+btcQDFJMVOos3x/+VnKu5lqdSeyavXTX5mUihXwWslKZssttuDFWKG+IEIG1T8Wk9DKXiOHh+QB6UpCEuTMBB/IcK54xCCgqyXaBvucn5qbb5S0ySuplRkFYCrJPoEyC+eRyCxpCCwx7UzPAo82EfJ8VsuIAKqcqFaSf2OIWgJNkVdZtcbVUifbgoBjyadRbb0ah9wlBB9GoxDeUSnM6VyOJQmivrECDGB6SJs5CpIoFqwGRu+YLAVREmFuKjAg3CKW8hV7/ZYqAbZC77EFvceSrTMQS7UVeo8t6D2WbJ2BEke2Qu+xBb3HSiGAepkBqyo7fUG7sZLEnxGAyifiXZybAN/z9E2+6esOPGUB7gsQGAYAWpbOxhxBodo+xymrT5Fp4wnrMKFcPQXTxurhihu2UiHAFnwZS57KACrBVioE2ILYYrXo6bYaIpC7hvM2NiuFL9bxfdsLYEiK5DVI3UrNob5+CUsW9tCxFYGL/WZLzQBbqRlgC/6BFf5BWy/FYisMBFswEKzeUhHNVtL624JHYAngH5rTurKqCsS/1aJA2bp5puNKXYe+bnDPm5KM1iy6/FQLgZ+BWkDoSgg/UaiE6wbmeMebKuUrFq0ezgxqK3wCW/AJLGH8gcWnN5B4tpLU3xa4f2tEO6uXcZG7QlyzRhxOnrmcwRDz1FUU0hJm2FqLXCr0VCuMUH8Z5LIUpVihRtQ8Ww3t2Ao7wBbsAGvyEq3vYBV6gC3oAdbYYZW/wg6wBTvAGlkz9Tii3O03hQ5Aq+SU6/JDx7VyN0/L3qIUKs9n8WSbmHl6MsgAkjM/hmodCZdwpCDquwn/tQUlwUq+elRir0pdWagFJ8EaOf6q9VfkZgdge6oE2ePG5cAHsScDFaDLtSyqwjSlretqQaqWBbzzX0MtbZst2A7WDMPZbIXsYAuygxWyQz1niK2QHWxBdrDkLgzkB7MVsoMtyA7Wbkn5YStkB1uQHayVlVUHxctdqebO0jQ5iKzodWiRLFDC1rZLPYfchQKcalVGpZg2ZpPdxJzuCv8U7dLFLmCtgzDMNBtESXJlOVOpBcBJ1QLZvGC6WYaBWKtD4YBEyYfSZi9oGVYSxcPoqU1la1ZwV086Sw+40q6rUiCrzTHXK3F1cI0kYV+FNcqwf2Igs5SPYdglE4lLaYvtxm7ZbioUEFtQQKyV7cZXmTjWdnFYOEAkIzRUB9VdiKnrJQE0FTX6coCioNM/5ZiSw8bgMmJSYgmIFkhUSGXjFwyELmlwFEsZVMeOSZryLYlNpRybQgJQl4EzSOOUE0YjQa6SOsCwfCQOpHP4ieUGcoZUQ9+RQB0EEEPrSLz5MYdj+Ga6Yx0LRoYWjFQE1zHnckayQ9fa3AmgnSKyk5TKSaYCklX5nCxWQ1eWsCemBzmmTIzMaAD4j5K7GM8Itsvo7LoLDiVi3UHGKUhGKIm/xRx9kE2xJXtdwjJ4ArNrS2F1aip5dyS+Ro5iF7NYqmUu6nwpgCNcce3RQApSJhufJKj+p0F3PxWsCdajoIr4N9df+f6KZgE9sYKOki5T32WU+vFYKwwNbViNBUPJSjmDNtbVt0pBA1vwiawVH1wc2A8qKmRBKLJWVMhYPxx5V9zqUaBBtLlV9vUyvh6E6tMS+STQH5NXlGolpQKC1Z1nGIYvI+hIFCBpyLjj0tjCdzWEF2gsYYk8A1TBTtq+NDjoxp5QLahDQpNGSoUgqQ7bDjjkSXBvcww/MpaODMziA2i5TuksYDWnVhKrU+2LPVG1jZKNjj8IT3+NT5epv5TSYHKp5LL8AMUBbCXMlQYmQVqvzZbrIz8p7HSSUJXvsx8woEHsoygcsfNvICEslCnSkkrFouB5WdcOJ820lUoTtmBdWXKbBtIByk2elJJN2JB//5TqKRKbjOxqXPYCTlbEhi3oNWyTk+IEuPSSFqoUqNATnB4supDv9cXh+kJ3mqQvBmT4lA6cAY1W8l3m/BGK1eF8L69NvpNMyWWoVMKzBYHLCoGrrVd2kLvEJWLJCCLC5NydBiEVGGr4xMS3GmD7Yzd5PGu6gZgjC4csYeBEkbydhbOlYh9zRcDVFJlCBJMlEfEnV1H0FLxQIo4c51vbX3E2bnyIQi9wW0z3CsfMFhwzmzlmdcO7wjGzBcfMCsdMtdX6onLX5Hwrm2uvnxviDNLYnugCCixQEDLvB6qAJ4ZRMX6EtVeKVezmbriCtK0Q12xBXLNuS10sWyGu2YK4ZoW4Vmf/2QpxzRbENSvEtTr7z1aIa7Ygrlny0AbYf7ZCXLMFcc1m4lqV/WcradRtwTyzwjyrs/9shXlmC+aZFeZZnf1nK8wzWzDPrDDP6uw/6yvTu+CIWeGI1cl7cnNW8p4teF+WlKsB8p71lYlccLSscLTq5D1bIWnZgqRlhaRVJ+/JzW9B3rMF9cuSyTVA3pOb/zbyni1YZjaIR7qtUg/krmDbAaxQKtcMklz0MaSBsxyJyGlfPZ3a2B+98KpKkYq1HYbZ0baSSNwWLCwbtrCjbYWFZQsWlg1ycNUhSbaSSdwWvClLftJA6hhbySRuC0KTDX6LWlYhNNmC0GSDHDJtXcOoMJpswWiymdFU98pWGE22YDTZnHebm7wpo/a8yYy6qTtrkXANxZzFEaFQYo/BFQXT2i8i5xCnIDR8pUjOyyxSk2MzCtaxcMwUQhQ1/0VBnLJRaq0hC41DfZp1QWPbLQHgVkQZgzlDlyYL8Eq6OIKUFJzEjlfIwwrlQIEPhT8WUhTsKxtlIepqLg65SzuM+hqj40Z1umHMhIugM+HCd0QeT2A6/bCxQzwb2d41UxvoXDU0kIGL8CtymQlHq4M0a7goaK5Z28FbYCdLfB3hY0lRBg8NwDWaKHSMiyW6JsnuhW9Gjp+iu4Rx3JZfkpgp+ajAmWwWI7MFZctG2SPgpqh9M52hPij3XJBkO3KsUTmVGqmxrc/ICJj4dCMGk1ENdJ8x7zWi6wLagSnADba1Gd4FHgsKXzLNtuGklDzbnIk65hoTCkwB0lobpUyuN6GU6RizShKlI5u2EvUex7RSRuhwbOUyW1cpQ2DQ5mAVG2KUupNAV8PwKQfL9JhtlY1/lTpkdkZ80afJr43aY7Je21zUU7NEkhLsv1U5IzlMdC14MK0z2oNVkW2Pv/BtBp7QL2pk7GVQDNcQv0xkzjxC4VG2WSmZap6XxKkByaDYLXLhKbKcyW1SgKsYLhQF9En3CGufmhFYBleA4pmcm4Wn33Lqcj0RsuDIbSUTKl8q6az8BsWZQq4Xse9pEUttjzdJTgONgm/FKcHXs0RSwMsSV8twsmK50cLotkT40g3KtJacJVJ+Uymna1U3bcE+s8I+wwOe3udJQpcnCbPMs+pgjgcDQqkyDY7odjLEZTqgppQsIhbzIXkGaBdNOA6rWLBAMbx/eauJUjFLE2suiw3ma6IJS/y9IsQTKAVO6e5DEa9nSRJg/hn5LYGDisvRST0FfEkA7snWUzRiur+mbjnSea82HHsF3c6SV8aC8QEwvmLEKod0QUSzUQ5p1HOo7WIhc/xBeBDPtWZUHm/VVykXXhFkp9sLStZqlXJOX2y1XhLOgxBA7nXIG7lv18uTe7n5VJ08EdiYOLJeZ3SNUszXQPQM6/cusDUxdZIv07TZgj5nowSznKtqN3KXhbga8kRQK53udtdI5TYcMfQcN5p+SB+EoAXnn9AYu8J3rkO1QgEVdhBrYRPH76TMHYqnkeoKmFAUCgcRNzxas4efPBSyT5C/QDz8ru0KQbL4l5Oqcrahmk7zqmUOQmGXsAgZt0YglqS2HXrAJinSaP6ORBJC+vEn4eWCxiHeeOczQQSLBHVXWhbBMFKUzbqukJ1Lufo410USZJ9leKGlp9AK7B9RBVI7SAGRUo7ItcG7QPc6IgBRpsKpTlAnhd/gB2bUxaKyCV/Dm66wI5KLBkYf4FGTknLoOZASwSuhP3jJSCpDJShrbCNJXMzg4IaO1kCtSupCKqnFiTfmQdvSGOE50eYS1KxYF8kVYp1NhMZ4OMjQ8kTQ2TrOWVfxZQWsxiTBVHloMcY8zZTyIiBmAyMO+ZIgRXTKgEPL/URI1nJpny5d/woMOuS/hqe+YsO/JP4nypxD11F1ZVWEmyRvITMEXSnhoshvOeXkt/7pt0H6zKNYLtNCfyfnFBV9qgppWvOk9ha0VJglml+F7LMWEBWtZ0d+BDmbpjPDFTHPoE4oldoM/lYq1cEnBRPWkthKP2nF2OZNsq2oAbb012opFxmEzMnwLMtAetkzWIxRZX6U7WheDGpAn3BC1cm7CUo1kWLmO1K9bQI3DJ+LylrVVXEJWSeP0WZlCrNAy4rsuGpMHcsQIRPLchWAeobjC4S3mLcTpJlV3CeeyGpke/LLI72wbDGowaq5SjFzNOsfMmUw43FyRUIXju5AgfG1MsHJEYope6QU3HStzwS21FempVoj5VyDy/sT8vfI/oTsEFKEk/uYMnl0pCAnzg4tBSpjrseJ10UkUG4yMIhZbqSUadYhMzrYqlzIsgum4srkQ0IocoA+Gaf6K/bHinKm+5tsvF11T2D5bX46lwqWlCFtC/ug7KuIdJmke0IdiXw4bRmFhQxCqANBUyK4APJK0VDEypWE0lABw8jDraxv+JgFOY0VIoLAMd3T2myWpLHJdz9jMVb8WCqGYnpyPHDTeSFN0mkjn9IzfA6EgGzblsVoQ24QyGMEm08YaqJV86k25kUKtiQ2l9SdHUpJ7VXuMwJPlr+6p78K3pl/DU9/lQqzuErdHzWHjt1qIa3JX7W8m9I8niiMbuUghReBUxDvonTrn34Qnv4qJVthwXBq4oMpLaTSVFpRBWPekgCv4AOrOXV4l+gQ1zFqZPvQrAEklUqj7mxK6LCu0+1E9QW+XYpewX1mBVhkTY6wi/6VCzFp+QiKeHeORv6rpgLuZSy0OC01M2bk2+Hpr7EzmDT5w2LYEURChICWYk44uXQmS/GS+vpGjKPIDmCT2OcD3m3eFcKPoakAwFg+RNocLzYLlHLVRNfwJxwkqGaOKBpsW5IIn6Q7ydqpE/NVAYrrZYxQ3wpjpLr7SjP3EaB9SvOIIrFAMzeR82XkrshaYJmEQMHbUzsVU2dLkygvhGorTCtYKWS6caMLWSdl1paMssX2afNMQd5vbgdURX1momdbCo4FsZaAyqUFgwAUy4eTcCbZ4QEFEYqa8AkkFQ+VeC00UH6fBZg5SmtB8GIo6KTJlzoXa1NaSzCBv7VPP3ByWQ5bYf4y9YKC4Vodtt7+1Z1TS3dvS2od0azWmpzIDMlmZASYB5uSgfbAzZbiOiYG8qySzBIJLKXKtFL45qZvwRzTLQlVtKOVbEr8dJwXLCfBH2iiDlwqNZIirYRNkvIcJf1qc9/luQ/EI80WsN1lQqAshc8TQqxrFbLTjos2p1UxNC6guyZ68syCeWpoVPcrBez6Vk4v3aF0XA5Ww89huz2E5rrsIXSEyB5iZJ8lvCN1m0i+H/o/SmEC1+0hcLTIFqIZXqdfDNWcldZSc29jky1M6iQhW1cP6fCuNtljgE/Kpwu+CwQi5l+FH0uqrwGVJ1lcWYpeMZ8g9XhtupC+4pQTyARmV03nLHIgWLKgFdSe6lHQp4bHriSOGm7zBA8gfLyiED+VsGj7chVMcYg8aMSWYCtZVYyZEGID11EQsy1p1qFt6xJ2eB8qIG12AHPq2Q5xYDrijsnpNFCLm0xE+GyF7MhK71IHoHP0QKsSM5dVA8gGQ4EGKezY6ozxoXZPNhCBiMwO5jpkCFz/gccP/ybkWagoyokfGcURjBBNjSQjMp2PELmxuNuLw1lnZxE/rpcey5ErzB4hpKPIdS2uybs5kYXL9SdiLjsBelLoMoTIGLA+Ys7iQScDvC9CWgud+xQ0n2wWYhX2JrXmkBFDKMBFKus8MHxXnoJnZko56VXORYK3J94QFj+7g01jmLyCDDkW+UBEz7bd3+AFQDUK3Vgas3iYU0Jkhe2vspvMSQ44zBImOYEPVrJzMV2/1IwAZpCvDc2V0RK+RuQmwlSS/TMkZwyGRyhvnp/SdW/E7yC/VDp7frl8U/9XK6Vl8Vd6fvOllsvyY69bj07Y99pWw/iuwr53BfvekUtv65WX5WaXsk3Kl+i82WPSS8ih1WsZ2gBisysJ2UjG7JKaZFu75cySdQY/g2wy2Mm0F7qgpTtJLWzmVyIrl9hSgbmFQs5hZuiFZ1Y2FjLRnB86f09Dd4bkbIs5/5mcKnScip4fQRjnbgI4RVA5B5ycOW1gfhoRST6x+A8F30QXWmtyjXiePYpEPp49imYkD5/+B+Hpr0JpzNq8JJTj8aNY5kMhEackYFPauiyV0rZLIKe07fLBKW3ZWeKESlnRVNrllHDlHFDFHGClImjtm/xkuSkJBaKUCWptV6M5iG6jxTg3NiMdswMX4bnUlXleqZHrVJdC0UmGesPPo+kDe6qb6wgFg3bh+QwUfoGrzTASlTI7Q/xGRvDKWgj5hD8xayqvqP075pO1ktqxHA9djIcoyUgEt3n6yF1mo6LtnfMjSYjV6qewgrw7ty6J7ti0EiUwvos1ZDWnN5qs7rI6RMswnabHM1LxITZa7ChObtGBCOAWHciE3o4i3ld0IJQWykpQ/kF4+iu3JQQCRQuyuleDkN4iq0GlUuGK1A1OUjfoelo6uWskeJndUiGoJ46t6IGt6axJ+GlkKsCV4pQQaulaEQhtkJo+tPExh0Kn9nJXga3NOEAelSCGos0lofKoAMWeRyX/IDz9lRNS7NOUZ18elY2RsMVIiALtqsaj3JX9EgECtQgSDSCkngzpSAscibByHDN0NHdkkIw6J4aMJqPfxdePUkHioDO003XHY6debXU3shgZ0dK1zc6gwHrVDIvDupAQp/U5xAnspufWy0LDtkum5iUtJMrVyKlOaKx84pwQQ9OpzbLs9FUo5/pLL+menbh48yW8DwB9MjJB6ov8NUkpPKWpDcsfyUvJl6R0ltl+XJFLwklxzHq+eblZw0+SXKJ4cmX8FEN8mZRIZ3BWv4V7Qp64q8BoXZGbwkluijqAzFVSU7giNYWT1BRg6Fc3qpg3KhNClzFkPVNIK9EkUVuYpM37Lu+2x1pkEiCWrxI1pa91jkwSDPQ6lO5iZm3mGZP4P3KM5Ph//usTlkDgF7TEGKAI3LhJu2ViEO27bpUmLVf+SgBcog8n5CQi5eDEYnBEEQa8bhM20N3tLCY5J7pL4CyYsFMhXuwXPJmD6z908N2HRn6/fDv2V4lXpXiF6qZEdYttLXgqd5kDDwY8vSG2kSQ7jBZqarPyNVPqsjh2hzDtaxLGQC3AyQ5OSOONZBdI+USFSzezw9rEJOE5d0sU6EuQbAs2+0K5yiyUK6KJ5a/IiGP7fB5Pr1tkIHHMJwLgSsUwlptdDXqeErbLxY3sguJRybED6KAup6NL1A41Ui1QuUbWCEPNjHxO21WF///Ze9Mc15lkWXBDQiLmYWG9/4aZeZBKpzPr1kO96gbu9+ccQqGkQlQMHu422Mq3ztKH9EHtybzltQGjTK9tF6nEnQ1/I4VBKpWRQIHc7+YYhhuiIsLNDPNO5iNvEeHeZ8vhWUkB4S79BIT7igftReZOez07TrrTEUjAC+OvEE/6Epw4hPE0j9/oTr6lS77lpWZtrf/UrP+pWf9Ts/5v1qy700jqWSePNSLKRw+Mn7sTuOlZYTg0z54eDGq9wHLMLdV6g+XMhnQrKMChktpzOm+xstPPGoxjTUmGatP6OrdO4YjKPp1/CfSb4kScKoZRgIrlvdo2AhxsYkV7Q0VUZx4eQwRNxLA56ytPJEzdEE5XSHCrWhX3wbqJxG+X+UDkCm1q4QuaZT5BBBz1/c97+/2qdIR9SOkkdbokdYAaD3+wLlY3dUcYwSSqr13CApetWJv9mMwwV6WsMxOLOvYzxMJD5e5xvTqvVze9KHl2EefJW490J7fTJbdTkWSN+v4EgHUnuNOpn5NryvEdpmWPAMqVlNf6WJnWKgXYjvV8WhPeQNw/ztK6bf0X1I2F1DqPqNfYthMMU0DGcrtN9p+iGKJCT6tUEiEg2VtsAVNCpcsiCdxOmSb8qQW59ahYIzMn1S4OJ45EspeV5ElXDAH1ai2YSOIXcZsHf11xhhtXHfxuMtJFor9LjwtX4umuo+VVGLQt4ztLy6uME6ZkGCAUCzrWHtZ5EZSRZVGcoqrZuhdRbgLUbcQxWXKTFrPkVE4WK/cTsyS9ddzt835VcIR5klg8OyiJBVR7ZoaM1dGa6nXV7Pif9cj14riu5nUlBjOogrx793yQ7hScel5/VLnV+r+2yt2dWlXP+4+qprVyxdxK/GEkGW7oFDXrBX3F2K9yOWfUIyPhbYoUiJ1U3kTtWaXMaiLhlShqejewdSyBZQt155AXLqe8SR04HSGVTxWTGlO4Gre1+C/tzl1S2Hopb6r1n/Lm//P1NL6fHTEkNYcCaWplLJaZ2CKZm+cuHF3Tz1omqo4EnsTrc7PjXisWhTQTUz+H2kQCM48gWYeHfUD9l6I6zIzlhQ4YhMJJoqolkI6FZx0iSFFcsoot/Mly0zhvGL4Jxha2ds8raEFFgGgtHEgFMQIQzgznr/wsNLApUIgQX7KJlFekKARwDVI87E3S1ihTlCMfIVyyHBratU4z4NHi3K61+SowZKGBxtU87xdVXRnX0syjqZZmISKKfajKCyyh1VwsRZDJf9OCwozYuewfvo+VUYwjIgP5WHK9DAFy5bGC345xIv7L9nmVn6zbcY7hwWTWC/wAdMdYCcjV2KfKWv8PV6x7nWr8bnDR+XvF+jfWqUqHde5nKG02ViAzZU9+pj+7O9G7LtG7F1CBWv/7oILulO66lO4qIExRLy/p5rqOiOu6N9wxTKqEzg6rmPOFpDYTRWgmpzNK/ca6QA3+3pSr8snroIcoQzm27aSD6hjU7aKTRp3n6MHNOTHQzr937MpFEZo6uRKOUxmxEI8DqflcOSbsst5vOJ3LlSyWBxGjO5G/LpG/WkMGn1q5XKIAXY/YquLnZdkxzG3RbMb+OqKJs4KlU08qpyvxtZbtQDCoVCCTmCtlnIKKMvcHFtJZv8eaaZHn7L/PY9yelK/i9pTvBWqPq/Jkb5j3q+ucKS3jNa/oJjEmzReD6uvIV8U0QnTPuUzYQa7MRsN+L9d20Zsq1VxX8cc4J5LYJZKIZxSAJtQqnw4oxXHMduGwB0ugNpypUmyKM0jM2OZWGQ99wa4xLeVlRimnRLK0/Dqq0mHS5WC6iFuFNsB52ZstOwVRBjfLn6KcWGRtg2B3RBR016Bo7rjuwtMSM7lKWux5smM6LSGpRp0x9llnJYDj2Vl+dx5jsIgpXcYRImeIeY5PECIUhJlJMkKYddVMc0qixwTN7Go5PTNXy9kUpBYPV8lknJvgtLvZVm0i5Th3mLPHBHRZyHgsRbKEaIYiJsxQezd02Jh7Q1QiQDGF4ju3SkjkDkkYVzPxWPzRmI9DwMwMGf+W8sfAY84mm5v2mU3oJExo+oFlsUgz2W3bDrrmw4FnIg1lUd+kT72uLBtlkLP6Om3FPmZ3AjgbAAAH5SIAgN2g8KHbpZKZnBQMSzqnSrOvm029Wq/qLIndqh1Tg1yJMSDwtBJjoFd7Or2RkQuDkapoTJf1fu/9ab3fr4771XlfCguEq617+TnskhFFyQiI3QQp7kCotDuh0i6h0pdtdllwi4qrzuFTLoYUSmQpwTSn0jBbw2VBLbZUPRBoQQqmVgW1gnKBMhZHwXxLloXxs8HTdGxnTh2BIh8+8BNa3ZkJFWkVKz5Fs4k6sGB2MlGHxHqxSBcwOO24ox08zDzGTlRp4mEFVZ5BhO88eyk2N0mszXx0q3GUUtq5IcUsI8sDn1ndYFNQ4FewjF1xq9qMqsrgLgE3hWEfRfVBPU8ipTK5GlneVkx2VSEJsAwK9mOX5b5kiQw9FdCCx6AqmzAOcSGV9OrUp/nR4U7LkokFETFKdpXj9IJ8ugS4EtXaEEBeRpLjQsLgTCgVRuCLQBBoPAEu8jz7PLJY/FEyU5t91hNUEpOEKL3z5891Cn35iJ/d4ZfKs5nHmiB+rpdWQOFOPCyUVjzBUxvN39b1LRhCk4SMmEBJTJyoBoNcKvEyxkU6S9VH2lvUY5sNHcfKIS8cR2dxgd9WZmdfIfREHMr6WDWxcV42Xbov7iR2uyR26TId5IWqTq6qOTGTuM1aEqVz7SYsLXK1RbDJVL+h3nvVkRXbe7adQhjUtGyfFxoe8Y32exTCjseRuE8Gq8x7G7mKJddjUWm7PWaAUvNlHNMChFraxfHLqdSDxJW2NFqTZ1uhVfcib1m7Nkju3HngHabzMJGH8m46da91KEsoRNkKgsTz0HlumUcXYi8rdgEoUcVBktijHMFEB8LoGfVgTGzrBYqkHszgqNr3jpEBppxJ9s2zG5d66l/LjuiQdBiKQWARa0yiRQCussmTy3OHJht7x6fP8wAyOXLZgvPNHPYQtVMvVMnEadr5mF0xQEvF+kmq/klPj/tXE1S27mur7uXwixIxfswBkIqgs7Mub1PGqh+P52OVsSrnwjDkZK6KxPhnF54yc8boQCpxTrvM92W53mtAIr7a7st+OlnXuLqj8cXurPvT1v1p+/40IXz5Z/v+NKLi7NV2v6pEs0fMOHnqLnlqwNLC9euprtOdPHWXPHV9KdjUQ4AZ06rYNduWjXWdNUesYBxwhPJKb5dxmTik5AOK7XFzPMRV3/IErjzgAnPaCOTsRI2D+zfpjzOyjA2BsMCjWUb7yNXIqT4ScgLanYLYGVFz+JSaIOCVJoJKR1DGgoU5JY/wqkmLI+Q2EXEAeK7Lqvf6rrijrbS4Wa2OuvKUEupOF7tLFxuVlijnWMcRE0avulXTlFdgEpU715WmxbQgRpSoUJKLRh6nDlePJgw2JGWBUKDo6agwTOZN4Du6Get3w33LSZouVybiUMW7wQBoTC6AZpkbS3d8A+2jVdnCp5uIQ0v7uqQVSOefZREpfB7BCYD3Ov9Cg9cgAnY63Z26229I4HqUDZDgK2a2I5xFtdPwMo1jOkLlcyHeY7MMb7YM7xgmxArcgSAAdSnFK+N0hqDXOZiKKcVAKScu7nb6XakdhPlsRkVmGlKxcjP+8URIqWNwPkzkZaXCxKDqHIP3OQf3fDZQhD5j2sFWwBFarq11HgkXPFIfttb9buTgdaSIILFtJ2HsmzqTzcPcRTXPzsQYyoKsm4SyyMGE0DFtbuffdkXtw0i5yFLTsZp+FrYNk1wmCedGBEmiEJNOwIKDCbSsDZfbsY6RDGEkqVu5vepgPY18XgxJQpPIJiTIBZRfFzyE+e/M3QVPz7iwW0hthkaEOPVzbs+yKk0sxVPvHMlje4ZK7LB4glOknR97u86PuiQ6FbcRN4QIzpav27bc7HnkptGkN1w3Y3XnvLpOH5vgMnwDj1V6lbltHktUOaC2cpPvMjYHaFVdb+j35dCln5bu6FF19IhZm2o1vsinCinLnWooqizcbkU9nKa1il6KdIrtTKTTcmukbKpdCZRZ6+GfMu8n0mlW9Y3bFXN59EhJ3KUk9os3NK6CD83b7tT5e0t/Ae5b+gdwfx7D90PLf8HMW/4HZv5fgpk7p4cupwdYckYxD1tv9bYD5eW4Xgfsmpg7YIgxzoEQY10kwZ2yPW9WlocIhs0Eyxi8GJiqWMBJPS3K2JUpW3WMNVawkJ5oJqiMkvWkZBiO7YpsOiXFGcOUU/OgFJwKHbhfbkIJY31vLJW05SN55xHRm9wAQ9tYNXKiN0M79zVuQfenjrue1W1jz6HCgUMD7PUQaG9bxY1BjwHoBk56DJgluYj5+7MIuoWYGYI+MMWnecJLiv1LlR15ag2pJG3FdJE6ISFCtbtCAhz2wSJQaxU5FLO+MSQn2KURRP8QZe/OuaLTieKNPxBYV3RnXdFlXfHGH2Dr/x7+gPM96PI9QLAeVeUC34PufA+6fA+Qum+Qk/UrdBCPO9+DLt8DzOZwKVkHXkjg2EVZufnZv4jXFExeeliHp7KNtM1ndTgN2ZgM+Fwa+PleuvBE5gA0pwrO1L/MAW6lpbuTnec2xuaIikyVHug7cw9sNBJkbhDJpOtyX5ct6dJ31MUZPf0hUqpW2YmuLrgmNOURSQ7lr+AKySwYJS+X8TTpgVSaH0/OaaBT6P9ttspp4Dbw60cmloO11fOjwlug8jfFuXVT+K7RCqJQkIrB2shHepb4hx9iTmAoYfcE2oYmOb7HbiPr2shaPAN6kG1xRgFdRgFvI6MHeGanwt+7iIMzLOoEMvzdyfB3yfC/PfYgAeFk+Ltk+AFQDZ/COCqHONv/K9STDkPDCsPb6sKAD13oJ8Nglxv1ZIBXZobXATRpjd3HkIeo/E65WAkZofC9j9yKsC3lYE6HBVo6eG9DDA3lDCHEKRIBUjzTQE0iQWMqiC8A0RVVNEe+tGBZTSRtis68JAFkZsJIAjCEEwq0pgrRDyqKIVum7pfh+YkcEp5flytd72Uak69+g6B6PZ+rShFxrxSDNxgSj7GCGo1yLpuo1YxijLaCq3n+qjEQzQSiUNAUegC5dUKaGjlW+Tn13UZglgkv7Bu1/sO++Yd98w/75r/KvnHOJL3/CR7v/7vB486FpcuF5Q1H3fc/OOqvZ+fiUBnQvCE62fr/AaLTudx0udy8lRMCm5vubG66bG7e8nps/Sev56x9+qh/5fXY+k9e77+R13OWSX38lW4JLJO6s0zq4890y/jflW5xdlBddlCI8qJUxwjSLc7QqcvQCfCutnDscncI0i3O0anL0Sk2BuuBo1N3jk5djk5QXuwo9vkx8vQm6858qct8CXJX0WOYgaKXs0TqskSi6H7Qhxks287BqMvBqPUZ2S33wMOoOw+jLg8jyGWH3yI49zsToy4TIyAUwjuYxRGHO6UuoKiKeYXMBjFEaxuCYdNHhwfBNpAnYvWPOZKRfJraOSH1KfA96rI4lLtecD7zg3CiLFSFwfKEqWIfyeMX7doJle0/nZgAWCGIwYTsDS99T9z8mJofI04FBp5K3XkqdXkqtfEytIL54TyV+lQ6csTwmynwAJcDRudISGGb5RNK3KDo6QkjLRYUaVGrJyTCRL88uPRYUvJaXc6lqU/NuBGaXfUZzDjnn9TpZISYLxrsK5hwzvqo09yHh8jgcL+C+ebcgDoNb4DgjrKSK5huziGn060FdaBoxq9gtjl7l74020Y8X1ewtzn7lb4E9BnxfL38VyB2LFLE2d2w+VzcvXFV3yWei/CrnY26cPtHjFF4MKBtPc13ue+zqpL2/gpU6HMDrLVOXZ3OvChVjYvLgpVW2NNR8uFJrzlPRGixHzWe56Hkp50PFW/3ddJQK1/aLryBqC72KkPTepHx6NAsMt7afmt0Ri19aerPGM+1DjsFFGpJMsglANn1c1K90kLpAt0cFWZAVAwABUNXkd/6FTqvi+uz83USvak+vV5n0drvs+ih+lyv8vlLs2BbNc5i40ZxdOr1QUwoy74LSu65TS3svCz3JeWPk8/2O3uaLnsanG/Dx2Yytwhzy/1MBM/fTQiKJHh+MSQXx0Y6h9CF4mTnepeP/xhfI/qFVki/HrDuIpA0HqvsgQR6IiA619dH/a+eLzHYicf+LZnnKiGI+kOgJj71enxDl/7xucVeRjbYucLHt8LH93xqIvKl40vGsRk9vn/50DRo4oemrEnN/xef37qf374uKZQVPEq3SS1tUiuG3bMV8r7aJCWGikMVjt7jx3KcRfRCuY0wga3aHrFe2D2HgY5Ap8R26vvktj15i2BxjEozsiURFQHJ5koZ+8WUbbtA4gD7H3+UckSwqqyvUVXsPCWyS8g9oCYPS/Sf+ciQOLeCLrcCuEZET4ytxc4u7fP97OyJcTPUWfh//Ox8l9wuLU8ACEyHXSq/HxhTa2AR/N96YC4EkLB/W/Fs3UEM4DTuuzTuoaUQ3kEGcEweXIK/dgqlGq0Sj8w2coYOy9tgRpvU7fnikNlZcnDc1FDBJmBARpwsWdUk0RaKQkYz4pbE8z1KGyudfX8TUwvQYWGScyzq14HAzVrGsHvlxPNrFZv0erWtfV0qDCAwj6pBdlnuS/lt+zyyU9DvUtDHJhI+yaDm6HTku3TkAREP7xAE+07jvVNQHb48UVS7g1jfKbB36opDJSZKUbJR8w+6hwQH0jsRmcmVpwnDIzXPXA/To50Ki5OK6cxgPnICTsu8U+56xh6uahQZv28DFqCQ1bIA85B77zrkfSjuzdQgvpFey4AZEM7ue/F7pRyUzMa43OBb/+rECCS2h5PYHpRbfjGSHelIHyJty+wzyCsGfaLA86Vo39qHagWoaUkud3QRi4id+IJAcaOdhxDMMqZsKYvJI5YTJWeK0B880uTpjbdl4Rca8ew453qWDXdJZllbVBDMSmsOOdYa8AmWPgJO5SY3lExjqHP/3FMywcbcQU/XG3oKkU/DKVYPKjZnFO2C+THS88g0nMbzMI3n0P17pOdyOZze8ZDeMdLIwaltpOeRaTid4CGd4B57V4/0XCaGE7QdFJTN0EoO7/BcJoaToB1UlF0DKc2DYLn//rlKDKdAO6RACwxdH5cK6H2HZ8psOJnWISHWHjs9q5WIgqZaN3herHUXyjnwUNPnUflo42PqL0X8WnCi1lEeF8Oul1Pr7gdHkdahCmDPkoYqyoASMicukDsPlc+VLt+XZxfwkp0ENPpn8c6LCfFMNoJAAog4GzPVA0AcTVaY9jBJPoCZtnpf5uTLhHDIfKCwYrrHHeOuK4blI7HLZXfPXXUq+q5JshoTtRMFYpclUkIfTqR2SKQ29iIfOVj7nOzrkLIr0u4DzA93g2duZDjh0iFpUqhSRNMsBzPdaSoOKiRCo6516CW4G3AZwHESQoLy4z2mpG2YTTbJ0cR+AfaCEkbnc57S3KOtL33iGbzhdxg/1Vebh1NqHNJihJtTsAKpsZhbdyZ0l2DUYtlCynN01QZGMiYZu6FkZEZ7kFccTsFwSMEQ+bho/mULZShv022XhZqKjgT4JBSBGmU8OorBpEL1Ui387nTERmzei3bj4TvkFjXJEuLBhL94sKg5WcIhWUKcKsM7BMuak5EbkpEDHCl8KMGy5rTVhtTTEIWEd9jn5wWsY9ZDVWHVVxLLLGoBhEMAd0pyKyyScMlHyNnU8rsZ1MDuEgFr+8ENepap8GcWhUkUpgC74wOyMGWbP5uRWibbmn7Tde9T9yl0o6mCZ1JhBvnZxBWELlvTc9KGk1sbklvDyIh+C7WSKjcZNTC5tmycIcFXCcWGRg2gi03pNAyvISkKG1+67PclpuMsfn1zgmZDgmagRoW9y//l3rm1j0JQiFyfWV21MYm+UAPEDcEbJeGGOgfbXmG/IHxS5a5dtIuOdkFKUXjNMjblD7uYP8AV8vb0G4QfGS99j91aK6mqF2cptV7OUl9+UjCN+MG6CXUFARYkbkAj1q18SIk8pui1o/cxiUN9ft9Jt/BKqerFIWmYUlVifkoGScNwKuAwGjhlyyBpbiW6cKAU17tlQ2mOISKivCwEiaNQOP+wXlAWbuZI+RxLJBRfk8AK2Y7OWPhJV9sg5ZPIB+wW9MMQD2ULRcj/YqBCFteoBuxqSWZUiwx83UVxAXJbCgt0JZJsI/RNDudmmFRod5Vl8UfZCp7rRMkAsLCf7Dt/kWy13yoQzZI4jP4od5leDb8ROFmsIVksqIJFSyhbWRuox4ro8hOnowi/FqVkeSyhIB3JKRRO58Ext6NnDOTB7UD+5UEi5CxWS+7BwJ4Mg5JssXjNRry167LXel+2+1KzFUEZ5yL7QcAmXvUPw+2KVLtBhqJNOMy6Z3FKADjOEaAJcYwqwqc9HKTrpQo1DA5CRieHM2yuDjJZchTdbH+hZ0gf3lEOMJRYw2T2r8Im73EDQ1HGK8cTWEJTOGwT04ghKCgfkctLMMZq4NBmM6FQqqaMYpRYOfxC20hKVFDg0FzhL7bFWIV+r/ScxoUdNUlf6qYR9DnoY8dGTKlu6g61JPuEgyaVx5RQ13VI4kgucPh8eUyp71VKwlSybOYrLEdevUa0NATqltCfIPuW009ORxSt67r+QvBF3EXI0dyMFIzSjCFbsfOTHsyxn05fhIBCkHowrvXT9LtgwTRlr8Z0uu5CPwH2r+l3Br2KuHGGuaIlwxxaikQd2lbF3IulgomzxiIuF7+VqWOIDb+s+2Z4i4dvhrdEnsrwdhyLrOsN836VHOdpiCr12AxvB4dca9YXLv4mgCXONTWDmn5Yzbllqsa97nNFNC8V6Ji+sheVGPET0gWZkpsCpjJcnaaSUzplmt/RMMJaNqM08ZAlbHw89Aqzx1x01lF4mlUp+EoEqRz2IKFNObqfPg7zHOvyFlhxnERPK4bS2m2YEwikpLqKd9wIKJxH9zvW1RA5aIUjLxhRaP0MRZyQc5f/qqLFk/Ht531ZyVv86J3+Zbs9YgYXa0t1i77O0YNknSmZvOal5clT/hraffmLZVUw2zm+I/fO7ucLBjXMRbpSYJXTiSDxW8jzl7YwM9obSp6Yic0GxzAd0CzBYgp5Io11vbql9Om/tTsfSE2q97Cmq1Z+awwWOj+iYqwvhALDLSLVCOzEfNfXONKxJhIliXhgeexbbH0JE47qPMzqstOxnnMFas1POanh5KQGVZYQHkXRMxsZ7Uke3wB9+nn4ta7ws1GDf69mpm+ImgflntJRxCK+VspQlL7XV+TqgrzyiVNBZQ3iVCcHNagrgwgt7Hj+7jhp88gOLAljLoKRFUnrIFCukg6+S/ANNk/ItdVf3Va4ykIjdg5G677b7kAg+RskHKLwOpC/GU7+Zkj+psfwMrWiGNXJWVXFinVW4DpYuGnrXGXISy7s8/4zXbwtwZmUoiz+qEGi1InIDErCvGVwAg2Z4TRkBoVSmD+Pfm40TgWSIpsUbpKVv4/8bjEB15aeJWoL0rPUVWPRA9NTBY4022fXQ7HsZAc+OJTDabcMKrFUhugP7KIaj7bn7aLHoreoB3ZWT/KrLV9RbWbBHCJVZsuIW1xCNRIrShQJ5PsG+Y6VbIRKuCx5a0PRO6Mde4kibCiZS9WG9AW5eT+jWaczMyhwAT5VOI6D9IpTxBhUkAALK/xFn6iv4SQnhiQneowvHC1IbTr9hUHaf4sD8hZkNp1MwCAjHrpm4Q2Cuewo9KNpLo94C2lBDcMRyEdrfyBmR8AgH45BPsQgjxGzowVT07Gsh1jW2HXCLxFk+xzLerT5B+Z2BCzr4VjWg3zmt/WlBaPREaCHCNBQHA6/RDAcHTN59PQHaHf0YDg6evHo+Q/Q7ujBgHR03yG6L1iR0bcI6L7D0X0Hybtv2f6A7Tsc23eQvIv9rS7oGbobBOPRsX2H2L49RsmOgO47HN13GN33ZU70YEA6tucgrextYvdgPDoe2hAP7W1E92BAOnLW6PvP4RQMSEdRGiP9NZxGMCAdfWiIPtRjuPEI6EPD0YfGKH/9FCMYkI5LM0b960mOYEQ60scY7a8nGbA+hmN9DLE+Xp9kMCQdNWIMWyPjMm9AjRiOGjFEjehQgHiiOUZAjRiOGjHIdIDqZniDYEg6asQYtkbGJRW2EmQGzQlLtF31rxtPP5lww+lhrXWA9X0YBN93wY1pcSt6jKO1VuYK+z6Yt24Ka5WSsCh8iVSwCBpToY16GdRKBOYi6oijaAxRNFBAiMKXmX/V/u4e8fwGBjDF++lED6EA1QOZCfrZoP31aZAb3w03v8TziH/SKXJepUjADbWrrAAho6engqTm4GlRpm4q/60bjki1zJ/RH4/EzVTyP3rMFLRG2nrWmwepJ4N0s34rYMtVIwMou7OoAGACUL2IxRGcdhFL8ZuZ8Ek3M1ffP7cOiHHSYzSsWh/D9uun40kK1Q1a2mkEc03o9EC7B5HvhltMRDmBcmJwlmLjVcRW0qlP6wa6oN8MGcbO6H3OM6MgPEl+O2vYa5dTzU55q9rtO+bWKNFTcOSNOjb+Qx27uyOXXlbffc/c2ifaC4Qow18uWPsc7WWI9kLXhugOF+2FQlNEDKDM93WSZJWQJXbq25CbREAxTpcoJ4jOu3Oy8+OXCE9fKRyfbnkVD6bHEOMR8GCG48GMJW3wGmKBrkYp++lbgi+CskjnonTD+waluiVJQjQy4XZIL0aABEenGUtS3bGRzAj4NMPxacZSILviIDAg1AxHqBnkx7zFoQGhZjhCzSA9BunpgMM7Aj7NcHyaIT4NinfAuPseBEGDI40MsiGQxYkW1HWZnadcbB7SkK9j2HXT8CjUP7LfEJocGYlhyh75D3dzjlwCQvjJAnUfHkw5Rz4Yy5iYIfx0rCDecJj7sWxCxAv22kc3GLGDxN6ooIRUiLa7YsaNSG0UYluaUtxIhnRxVejs8FMIiGBijMsacsyUWvJddDOOoPeddqSBp0a51xzuDu1Wlr1073R3gbybMD6QnKeQfi8qG0rHEgaArFawqDgU/hAK/w2Ks4Op6EDzQ6B51BEClsHYwVR0wPYhYDt0kKPfMQC2DwdsHwK2v8GBdjAZHaB7CNDdd8iVGAGgezhA9xCgu8eQ8BEAuocDdI+tbSyGhI8A0T0conts2ZvEHghjB3PK4bHH1pyK5dfHDjYZh6WeSSH4DmflDNDU06GpZ9KY3OF2PtNzTE4HHp4GHt7hdj4D8PB04OFJLDCS+IHHshp5YphToJtihSsMQZWa6uHHEgst4b5UvpTdBHChW5B8Leew+ctyKJAwXGx8R6vrKIc+SH/hVzVOx1EMriQMss4hQv+wb6GTB5ZILj94acummM4dpNrQzQ8zRMpzAKmb3BzNP/Cq72xznVVsm8KZrlbSuKisL/zPph1Eh0/Qzuf0wVQ8pXj2OoDEPJLxiXHZoiPJdOjqKXT1iPHZM0BXT4eunkRL5xHjs2eAr54OXz2Fr4ZmU3iH55ydDl89ha8eMb56puecnQ4EPAUCBnE2ukOAAp4OBTwJ6s2oIYd3COasgwFPwYABkw7vEMxZBwOeQvqiNhLe4bmPTAfYnbJWh/ZGeIfnPjId1nZmO72Fu4Bazyk3K/2Aoct6HPWHeFIADRq4I732JQGkSJygrCbvLZ2WeMwdVEEYPnKbDn07hb7FEhR2MRj0Dn07hb6FgFp4h2DQO/TtFPp2xOjbGaBvp0PfTqFvR4y+nTkY9A63OoVMHSUesiUY9A5bOoUeBas8vEMw6B3+cwrjCSW+8A7BoHd4zCk85ijxkC3BoHdgySmwZFzgmSUY8w7FN2VfGZ+EZnmGTtMh36a8GeOT0CzBgHRInUnACTfPBYExd4NgPDqEyix/HUZmCcajQ3tMoT14Got+h+sw0o+bJM4d2S7kQ4N6gmx2zEWSeifDXAHFuwbkX/Y6+VhfdOHsQORf5gFA/wpRyrYYvRDpPB5ycxiuCHxJAYugLWuWFvS4k2bb+sjRl1he6QnWbiGMcLsSrZOVSiY8phmOltB0WY+KAIPziEwokNZl1wcPDYQu0X8um2yCdEqhnUgfQ6RVZK+8YaTYpBFRj7EE7T0KuTOJuE8+X7yNdoRQqlpy1jG9KcGWeIfe5pFqGIrRvHjXdIiYWW3ZCE9Mau0mwMXfAj500ilvpn6xDnkemiZLwoCXBVtaZiQHPJyhVBEpElMzYFAkx9l5IZmElaFn7b7chAqxcQwsqVcmuzZIcuRBvTl95X2uKCPn0SnTgWqmPNZe0CmzBguew7dM4VswEKJpwlYKXFDH/fzQhOWDOSFw3QGHwX6KzK9NkmK5NPqOzqBk4ZG8xu8OJftulkAkL17ygny2yYhcyDd3kyPARKSvMLJ6IkwCXCGlOViubP4EoxcnQihX26ZfQx/MIWM048H0w+ZVva7addWvK+Iu/BnAQX6mOV71l5+l/v8KX9eYwVisq/wNtfPf2u1b8sBCiST81u0bXxfB6i4wncBbtIH5Bauj1tNs/1mE3XTQp0kk04jz/WqU3YGJbMJ0gnhfeksUA0FP8xGWGuAuwoFjR5TGYqraSLDuyh23Gg4cIGUJBbZjQ4zjnvDf0oyVTWs1/Del5MgUoIVFO7hgIbypnSKEfrONZ2Nmyi6onx0lUymb8GZMOcF122E5kHcjhWcmaOUzWs05GC6Ax/DHNh7ioVcz69Emw0MUFygLi1qWTK/L6Ee9EAVjKdRiOyKhgRmHkY5PknT4OFCmvTZTtzvL/xdLq3YmXfG1jStZd2O3On8r81MG+VLN1iVx32QaMMcoSqe2MC7cJu9HC1A6IumyJ7NvNWujQfUa/lT09RtyG8EGadKMutz2PPJgH/QqgdHE9fM259Vqep158Cs+mGDTgfCmjNxGjPOdNQjkHEZuyt8MvMzwDkEk53BnkzCyt1AwwJ1NhzubhJG9yNHPAHc2He5sCncGcn8UIAS4s+lwZ1O+P4DnR0/BfH+A0bPpTaszSr5C9O6rlFsbWWiLW1wlRLCrOEm/1bQjWZTpYGxTbjcvtWy1sheIJsxHVVr3RbhF6OXLYHEUqRlQ8JcyVGX1I0CKNYTOVZXAdw5aINGp/AOm2nFfm6yEF0YEKsHh2Hysw8zLHpQGG/kLchTLbjKpe7qwWCRTHTEjrKJ1O3NDpM18p9vOBK1oKAZBT4c0x0DcHIwX7LLcl/W+bLr0j9jt4AL6hXX6GcD8poP5TcH8Rgz6nQHMbzqY3yRqb7YQwjsDmN90ML8pmB8IHmEXgsnvYH5TML/R47RCAPObDuY323qXRJkBzG86mN8UzG/EqpYzgPlNB/ObgvmNGHU6A5jfdDC/KZjfiF3O1cp5jYCVmHsoRmZJC30yC+mUrmKFH29azENjXOdCr2ZxucqVOMJHaTsaI6oaTYcjnMIRjhgNaa0Xg7ZwkkAohnmtnwbR4iICPfdg0WuV053cCXEaZHMm9QDiSLgk3b34A5qDKE45kowYlTYDjOJ0GMVJyOGKdT9mgFGcDqM4hVEcMZxrBhjF6TCKUxjFEYtezgCjOB1Gcfa/tHJnAFKcDqQ4+x9auTPAKE6HUZzCKCLOC8qfM8AoTodRnAejGKL7ZoBRnA6jOIk4fEH+zgCiOB1EcUrD/CUeCBCK0yEU50EohvjCGSAUp0MozoNQDPGFM0AoTodQnMMGZLyuBQjF6RCK0xCKMcvfWv9rPPrp0I/T0I8xy99a/4u9cxOJQMmY5a82njSxc3IdhmASITVYm1HHIhklWpcdAnMKgflCzldrIYMenlyd5TJKnuIw+JOTDwQdunIKP1lCj1I1XpZaOCE2SrVJxQTJzcFlnd5Gldq/POB0uoA9zLWmQ1TO+ddEDjSvp8NCTuIRS0hImYHi9XT4xTltX4l39kDxejqE4STUD+fP8Cu0b+kEjqxGLQAmbj4XfenbX20dUYVdDWCGPIpQIePGgoyZdDffP7dKTIPWR1pAcwaLhIMITgLzXtgBaqRcQJXcPbJ8nWKC7YexvdIFKIFNIi3hRLn4LXCUoAYO0gJKO8nAFl9el4OAT4TAeVBJFn+UxzRAm++5W0AEIWQq64n/UCsVVpB4vbWD1jZ1oCO+in2KEF7sWHWYxKN4goI00uCdQMchB/bps3sOmzjnX9vwDLZhBxycBhyMBZZmABycDjg4hQ18K48ECtrTQf6mIH+wE48mTwD5mw7yNwX5Y70zOKEEkL/pIH9zCWcUQnxmAPmbDvI3paE9ZhzWBZi/6TB/U5g/klz3z3r0IZhiDvQ3icNDOjv8JYK40AH35rKRHkeWAXJvOuTeJA4PkI8oGgmAe9MB96aAeyPG684VDEiHq5vC1cWykXMH49Hh3ub+Q7FxBrC36WBvU7C3ESOGZwB7mw72Nglig2xPtCEFqLfpUG+TGLY5QvynGmVTdcRcN6QeWU/oViQBCNtcQer4Vp8KNKdUgEI1hr4rQD33oUwTFmfToRrzvLSolk19q9SPFFUu3JVqpsMe/wa+OWNdqlNwueGl//JuJpkC68vxJgDsTQfYmwbYi9fVAK83HV5v7r9oiTPA602H15v7D1riDOB608H15v6LBTYDuN50cL2V/mKBrQCutxxcbwmuh2pKMBNWANdbDq63CL57SdusAK23HFpvERT3Ql1agdTncii6RaBaLJK5AqHP5YBti8CyWEB2BTKfywHRFmFlL8vRCnBoy+HQluHQVggDWQEObTkc2kp/5M5WAENbDoa2CCp7ewbPkbgcCG0ZCC3G9K8AhLYcCG0ZCC2WFF8BCG05ENrKf/ERVwBCWw6EtgRCi1eVFWDQlsOgrdz+WFVWgEFbDoO28h9iCisHo9EhxFYef6wqK0CILYcQW4YQi5XUV4AQWw4htvL6a10KEGLLIcSWIcRieoBaCQAAdpfFtA+NIeThK6kxlsv2cdao5ajEHdwGIbHSTcpnT8WJRScZnNFkiEk9E4JaeLV0SqZQlvxJUMDQZ0sPiD5orNDR+IA4FxZCiJGBMlCjCwkMGXAwAlwk82CUVY9nxQ7lExmu4TMm77xLIfmr/tRSzJyU5vW3C26md+7gdxuX+rvseZd8F2gZRtNBGTLiEppo9t6xKF/LwgntVuhPPYiQYAmF5Xi1b4JkuPXv+wa76VX/G7s1g4i8BXjyMzmnRlJgKK13madTRE71fho9bKgM09mJYEwkz4+P4miXj3qUgFkOEbiECCRvjQJ+rkNqPeaMcjQ+lxMZEVorF5I78buhgH66YiTGkx1X87quWMqbvntueTO4YcwwsNYLqp6JWqLbbL/oMILFzPLFoLl5M3NIJ5a4rfYD2fCcSCflRMGQtctBFdsHun05dOMydOMO83orQDcuh25cQjeOmEywAnjjcvDGJZFCkoOjPgTrqcM3riKiVooC9WXKfkK933XaL9T7hXWnBigUi75Q74mEZaocphSB3pcDSy7JmsF2PPw+wdrs0JJLaMkZw/jV+qSCbjpz5K+kqySEa7dx06g+nKT0hKGGAoxsgIG7CEo/y4Ewl0CYM0bjrxIEIQ7dt4TumzEaf9UgCHEYuSXhqR16ha0AIrccRG4R3UVIcDBaAgWo5eBgS3CwGfMBVg0mjYNWrdr+mnaBoNNyqKZV/5w0gaLTcmCSVf+aNAGWZDksyap/jvMAS7IclmQRGvL6UwYhiMOSLEJDXn/KYDg6LMlqNhzDLINaL7K8VmRKBrDiCssIyNY3CnVC2FlkeS7XXFVUyZhftPm1xTDI1TYZ1z+HVFlCqgC2EfCkVqCRtBy4ZAk+EnvzrUAjaTnoxCIU4sWbbwXYieWwE4tICOA7AjGXFUAnloNOLCkkzZj7sgLsxHLYiSXsxIy5LyvATiyHnVhtHr8kLLv+SwRj3UEnVtOaHpNn1MoVHGMRQZTEOjpjJYAKNysXa36gEmZ88MR000TIVTY2p+xl+5YDYCwBMGbMwFkBAGM5AMYSAGPGDJwVADCWA2AsATBmrJe/Ap2l5fARyxAQMcVGrVcRQSoBLX85Sglhv8txuoFgdGOKDGXASz7hq1Q5oe8bbJAOG7GEjZgx72YF2IjlsBGryyI55t2sAByxHDhiCRwxY97NabXS1a0EQm1mgrovJRAIRyg6/lrTLpf0mym9SOHmQWTCMPyp1bcc/GIJfoHkZVArWAH8Yjn4xRL8Ysa8nBXAL5aDXyzBL2bMKFkB/mI5/MUS/qLkeBMO8BfL4S8W0RSsZT3S7CtAXyyHvlgj/5VPCeAXy8Ev1ih/5FMC+MVy8Isl+MUs8WwO4BfLwS/W+DMjE8AvloNfLIIpKLnylKNfAfpiOfTFMnxFiReUQB9qOYTEOtbZcU4n0IdaDsWwxp8ZmUAgajl4whI8YZY4uA68s5dDICwhEIBoje4QeGcvByNYJsy0Ql3JFeAIlsMRLGkqAagWZToDJMFySIIlJMGs8QoYIAmWQxIs0yoKK/VrBiPSlfqXlfpDg4QVlPqXK/Wv+Uf1ZAVe1ctV3JdV3FNE+lOjJDG+mPWFe+UqRworQ3OpkbzRPkT5yyiKewBlWUlhp25pATuCmQvC5DvmwCdPqWRUf2Z2Nfg1ja8aLoRBDX65GvyaRg+MbxCMfFeCXyrBI9x6kixXUIFfrgK/rAIfsjRXUIBfrgC/VIAHgyIYMkH9fbn6+1oWfMQ3UAnnaGiVfFxCklyI6pfaUk/1xAeUYsYmf2/8GaIBllVDzlNZMwjlRzu/q/Ev1fgBIOkw/nKdDGaWK/Evk/Wp8bYdlPiXK/EvVux5EguqWUGJf7kS/1KJf9Z4ywtK/MuV+JfEeahdFd0hGPCuxr9U44eufXiHYMS7Gv+SPA5kbqI7CAFgOSXqc//kVr8tWLkeUOFpME7e7SChCDKGnwRDZvgvpQMyRiDOpJPrnMMPLOnmUOkN1EG3fLFVTqI5UrP7ykUzybpn+VL7IRvBQNxFZDikxr4U7eDQEFD9lwMpLIEUZuxgsAKQwnIghSVtHky68A7BVuVQCku2smBH7J+yi7tBMKFcpX+p0l9zyPNT61ExRGYfeedi2wLqELIZAjHmTq7qbnAqw7NEFmTydNBG5F+2HHJgCTmA/Er4UIbxc/BTEeIAmJgJURH/RlvCMWx86IdfoFsV9pVEsEodOeXcifOj7tRslwTV7JZY9511i4FsYpGJjQZqsBY4kMKSqNDscXKCrSdRex1q9e1AUfzC2NLbCSi4SsgfTdByuaaevjxRcrOX8Djr4A9L8Ac8zrBr34qjGhqoM2lobPqVHxlNDQMmKPDpVI9htaNH/rHLgSi2QBSzh5xwtUqinflwOMHl71LKFaU0dlKC71dRhZkVWK0sgmyoDgSmt5VSpsQvfQizHUxjC6YxY2rLNpPaRBE4sknxO5EpCu13GrZAkF6862l28DhUDXoRQeSQ1UpYOLMKWj+b9ErQHmkOo6UtG4ESRk2gOFazEELqiLJCP9AFLCRLUo6I/jRZamhwr6mktWWSjatCxAmFejlrDaOGwhW6iWUNBw1yQ0HjbaKQFgQR2T6MvhI/DIbT6XKnzw7u18VOQ65hkGGK0UYhBWCcBwu3GCcoVyBMhZv1sK/GkcW/mGYCk81Th7vPpm8P1FRFiqXmbbVPW+atnT970fpq0+yalWA8HZYK2X/6tKizuXA/QWouV/0QacuVNxvRmsQ6ZGw5XvUJeZIAy4+YsitFoExKqL2BUK+EAvOk65i9gd9587Lfr973HfN+dd2X+7qc96eJGqjLcl/enzbbNWTkpMNvMcf9hvvT5v1p8/401rD7fsyV7OaK9s0Vlg52gEjaDpG00x8wkB0gkrZDJG0hkmJI0z6yXg6PzDwX8AfEJYMeea++MIkS/0ELCjxAliDi5DpQfzl5FP52QKdN4FIMlFLbJY278HmQrljDJEW/DLzZGYgO3HnjpermowPddUB77wLFHcBv14VndLwdVGoLKjVjqNQOoFLbQaW2JLtmjFSy1rNSTxN0e8jESUEViwvkxySpBvQU6fd3TPBVSp+rX5s/VSl69R1drqPcH8HgD8oz1srlNX9o3wW4ARenyT0AQSslBoYsSVAQbFIIWFIYwKiTwsAsJlXTTKEmwYxUjnW0UkyUi5U1XDHNgVWHzOcWVg/uElwoKUPAs5yBa7LZ0HGXoAwBSY+d78NC0/kBldpv3LT6sabDyrZPPyRSAJ11oGsSafPYjGFXNz6FmgMkJvNvsUBqAzIHrkQbL8gV6CMkV0DfaikvlEbbGHWlSmuj7+PuxtS+/NaoZcAL5LQT6yXybMNL3K4o8Jm5BdPEa9pzwpkXqg/IJRAhlDJFDSonWef3R+DbqWWBXUFSBvwd+GGbJm80kkOSRD8XLOEpdID7aRvC1eZSnLBBZQoUUCcil/vVIg80bO41nd8SxIxEx/kMLBOGDN7L7SBRGHrKGpOX2k1xB9Qx6f9tfnBY3MFTzz+pck8bpwt1Xb1p+boXcjtw4VzH+q3IoqecT9B3JL5lmjoEL/d1SZQST2nTCOd8tdyXVD0SpKvdr2q3fWwtLlQUyhFmfbP/pObWrwDluB3KcQvlOPeM75AN1wbmLH+ZjwBg2yRm+5LKFMR/KDSU2rFLX5RAIUhrFYOzbbBwO0cS1yDNJByqh9mBynwOsULdwrFseqNDu2dSx67Q+FFINFwsHoKoV8ueoGoohyOekgkLSY0H5mbbF0eR7sNRVPj9OHSwTlK9hn7KwuFx1dV32BK/zJNKPNSGR0WyCrIHzC2ZRv6hu4hAwNCVcvzQg4jAAUO3gKErBs3sABm6HTJ0CxkKy9bwDu2kTCHAIPtPqmoZB2CIUjWwOldKf1FrEJHf0qnjwsgVFtnwtAsNJ+sPEGg9nTswjYLzLXaiwmepeFI6TXiqzRypMpZJ5F0zLql4is9ZvFda039lF25ITnHFUJadjzoOFhd+9X4lV2rOH5SR5b826eCV2/wQZP2Tav/scnm2oedNGiqLmvT0bFusL8JqOS9KLANtmRm/wJLZd90FKgLRrrigvgMQ7XYg2i0Q7Ypr4TsA0W4Hot0C0a64Fq5WndPhmcrY7H6Ml50fvcvxPKhwsbV1QihKRsVVjmL0wx0kjEgcSmdZQEsX6ax5+866YEV43RUXzffxU9d6xWowOCsq7cLLdh8yCYcWLc4vjouGM2RtLqLK5FoFSzXIIxSSYoCNPe7olKaizhFCY7vUYMdsssHOAZEOWTEvhnvdK6psB1vdkp5ccRl+B9KT2wFNt6CkKy7D70B6cjss6Bbac8Vl+B1IT24HztwCZ65Y/lKtwaRclBmDpfnKx8F8M9tBPDDrapp/37OyHKfFvMrlBblKuy/7fTk0V3333XIqZOiKq5Fqtai331Gv8h5Vghsy2DPY99wmyMizNBXiepYgBwpcnYIc9SdBuobDkamfJfj0ka8BxlvjsZGkRfvvSafcJoUaqBoWSjTvIumOytQFn1b50ZJL/81eNTaL5AUX/4qpl8VhzL4v+WXjoL+oKmuX5b5kclWXTa/6B+sWbQFmV1x+UCsFTPBlucqAJo7nabR6SpgQRk8JE7zN5EqYHJRcCbV6JFfC7OGiquEqzXfOLcvSGl1xZWNfNtsvOwpCf1gi/out5T+yoTjc7hZud8UVlR3gdrfD7W7hdldcUVGrKinyFsapvfP7ib/P/ptNBDo96IuaFwspwwtnbgfO3QLnrvay4OyvT78/cxM+DoXuf/fT3ZIrYO9q8WIVAHu3A/ZuiV8i1gzvECy5Dtm7JX654nKMWikZivKjkjo0mWXUPj+Kmve0BWeQTsnpg6MUt0bIeoGpUHkek14W9OkqpSeRMZQHKN6nnRoZPORzG52fG9P2qJ41KXFhFHDHLOx0s0+bdPOl9wSNU3FuxsG/PcUwtkMnb6GTVywSp1YV8bYKBdjeKZE9Pigg8ZOmLv0nuQVeKOYVy6jtAMW8HYp5C8W8Wgig2gGKeTsU85Yk3opNoHcAY94OxrwFY15x+WUHMObtYMy7atr3l4G7jiwDPF8vG5Iv6y2Ge0AOyQIZZ/TbkOQmzshSivnlvExwQgKHuI/fNBxUeletDnEpZwdY6e2w0ltYaSgvRHcIdPe2QzNvoZlXrKKm1uMANtdJal51JaZieVJi+XYzV54+kHmugsv6j3fLg3T2Vqygplbq65ULF2mrA0hmS4drqJlyukIa3mTwMg0gqCnJlYNpftKuWhGeEiKd9QOKUWWK2OQ68UOT9t1zoSYHDvzDhHChxLAkFMtkG6o2P/UKRJALyIsHcRi/50WMeU+MjfAGSJbnxfilkgGnk4MuiynRZtW87NV2v9rvy3FfTut/Rnh5/dm+Lietub3ixnaQ8i01vjXjKRdgyrfDlG/p8UG2O7xDO1MOpcsHzElYV4Cd7srgnRBeFHVGSvm7HkjfLop1fpUGW5Em5OP7umVOAPY147kXANi3A7BvAdjXfJl7wTLnAOybeHSEJgFQdAcA9u0A7Nu0/1KEb9qB9t920PNNIDnkffNPHdn9fbD+OOD5FvB8zdDgcAfA8+2A55sw8jYjjNgOYOfbwc63YOcwkomKRoG973b48N1t5IcuojvAh2+HD9/dRn6IXtoBPnw7fPgmFpvJmSfMdAfaeduBt7fA2znFu3YA3t4OvL0F3l5Mp1/H+fsOwWh04O1NKDaSEwUKx+7vg8HooNtb0G2g3KPhHEC3t4Nub0nn8eAcDKcAvL0deHtLOg8nnidCcwfY7e2w21vYbdT8oxkRgLe3A2/vYSmGFWEGdwDe3g68vQXehvBxwA/aAXh7O/D2HtJ2gCXLz3DaDDsAb28H3t4CbwN10n7K4ykEw9Fht7ew2wjQowEdYLe3w27vYSFgPK8D7PZ22O09bEB+evpp/jsEw9Eht7eQ22vFgXCA3N4Oub1lmgum2PzZ3f2QAXB7O+D2JgwbmjUBAn4HuO3tcNtbuO0VO3CqVRXc0T+q1bah5DpCxis81ikXWApVv0GvVimeiKhWjN9DnShSXXy/3Bif7a91P4CDbwcH37P/te4HePDt8OB7jr/W/QAQvh0gfAsQvmIdGWs1Z8Sb87iS8RsLbS9gFdL6QU+qdg6V9M0sHCXYE70diagUP60SN1NmwO/fDge+hQNfL9gBtp7sUZHz7bwT6YrhJpPtLD2sz0jJ8pqo8VaG4eg1k+rqNNBNORXLr1Or8eSQlqU/fafd1BX2fMWyKGq9gXtMdQ0rnxtwrycTxxSCkssx9Yahuy9BcbDSmDMjWS3nHWfjHKp9L1sV4iMPW3lOweGT55CPwGX7Myni3wVM2MyFMNtfjgcOjT6YMwECzBSt8B0STxTAZ1Pem3kUFKWaKsipnHbicIHRRAaQmX0QmcgkANi4yye0ki7LEwtErVg3IGBh0SoCKn950c17PTKnDqO/hdFfK87qByD97UD6WyD9F5j/DlD626H091HJC81EdiCTtx2EfgtC/yKCsQMM/XYY+i0M/drxZhFg6LfD0O+l5WjHS3UAot8ORL9lcNvjA0mAod8OQ7+JiOdMB67UP4Vgy3UQ+i0I/Yp9UXcAod8OQr8FoQeSMLpDoJO3Hc59C+cO7Hw0GgKhvO0w6FsY9AL52yAWDjDo22HQtzDoK1Yt2QEGfTsM+pYYHhYqZOLd3wfj0UHQ97bxGC9TgdjcdpDxvW08xsn7QG1uOxz3ltrcioVMdgDk3g7IvQXkXrEr6g7k5rbDW2/hrXeK52UgN7cdUjonQaV37FdqzUIotPYlMhP4kwLYLzaYtqVevzIim2VE4Eg3bUpl4EyEOXYMOEYF+jP2+b/6m9XfcApZ8+Mm2d+k6CZhesSaHzcp/iZVNwmngTU/blL9TZpuEo5ka37cpPmbdN0kHMzW/LhJ9zfB+MbGHSws1vq4x/D3mOpIOCes+XGT6W9CGASohc912lof91j+HjYxwqllzfTZgvQU6rww9CPacUlkrOVTYwbUj2D1rjCXj5kge1n4wt+pycQJmCvC6GBGZaZxy5CSrEITIq70LPGRWSohAvULCzmrwqT8g9qYbFdGH2a7Qjg5wYsofps7U6mGXoQMkeCLeHrKLWNSygkKjTRgSaDnCVm/DrC+yYkGbk5AkGazfOt8GJUeLpnWeUNAQpx9x7YrwcMbnIlpr4R+kUL1Uyc82Qih77hadmWhXKbvzJIxIuBjQgDibQIZMkyscmrCG5oRHqpgIHYp98JOnsu63ivgIG+2CaIDCDNvMh7sstyX9b5sXO2Qk5eVk14d9+W8L5cuHwPSL7OCGe6Y+m/N/ibZr31CGu4YImLNB2ookzIbxYBTCoGW8gNRmKcBJeDfl1nAICHgghYqfu9rH2cgrP+QxqOPmZmKwU5EXIl8eCCAg3yDEatZOzZaAwKqaC5gXfJa5QfHFPEHAFgXZrHJVBrqc6Be1IN8FAAj0Z+EJAsikAEePpcSvKVLNgtllOOrJPzsIhKGARTlQDnk0kJ3X09JsKf769codOjpUWRvrYI04SmY+tYtVS6BcuQWSCPEs6LfGQ3B6bqsK4JAgN+ixxgZA4+e+Z2JQEWwDAObD2u9bL2JmmpfxlXyq0SNtwE6TgNv+q/BmerTxeIE2ANcXjY/+uM3OaIIyXSKtha2sh/Qsrn4ClCWZ/lOH0kBGcJLQLo2zvhW5axEpDC78a9+aJ+MNUCs+a68EpNDAGzmgjBCM5/J4AgL2aIiINZVcrbAbcZlvy9HxHi2z/3Vz6F+vuzn+YBiCuho5As04AUFmq8iLAHBxPW/GFsMR3aynwq3uMRkmJZT+/VR8ZMv2Fq2swHmUGg8mMUQgKPrmsSsI5TDReMhnbyqSbQf3tXOtscqJ8HrWagIbFNU2kzM/xSZ7uZiO+Hka+Sn0XJ02IZl0P69TQM7YYsTuBwDVCsZThT82pSy4wYBTNuUiy+sJsgFyGcbQx5A3DF8xOA3xPMBdyzR+5Xb8U+i3aiYaoOAsESs0JrajgichsFap9ySbqK9EImmLdoZkl3kdfFBIZmoL5lbSVdcwE+h/ay2r7IEr7H2TdQYHSERUtOVN2/yDkid3nycehFrHrcw9UkvcgGffLFfL47rio9Mzet68focIvh91sQG5K8BrDgwBvdY8zQTdUITsPzdeks3aVxgLiazejl+MUrDkqWgiiqfBLJKAUfVPu1X75Z697YMiC/U9DNRHBQTTDpH4BxOJqeYL67ZSFU6UNuCxHWz1udC7cNU4lChgRQHBds4oCiZF7JdICSneTDEBkWYxfndsIJiRJl7NbZ0+X5iWaJRaDaTWYjkTzJDzHy0yXY2sdpNfg2kQTm7Rz0upIjaElcbjCZGmfBLxuRO1LYTD4juoOQiIUmILSz9wPtLES/mZWHcOBk6yNTUSD1AEYjV06gcsLiiSWgiERshpilAC5XzF4yRKuLQOGaleI/YP9hPsVgkghMrP4P7aRILdH9k0AluTCsi8UyyVBMr+01PGLlCrlsQLW0iNkHtatTzF/qSGKorWa/EawWrtJN/hHmJUodatTThF+JaipsMcnWoxVNl8CpHXH21IZos0xU0EQAhmwTXZLj6RPQP/l5dnlwTENJMc6WdH4DLLGIXOxSt+3xJMWZwEtICB7QksLtqXVwkwEJe/OKUlivFxsPWb4opmbIOUqqc2HAp+fw1J4qeYAZgXHfPiJLUtVy/Lol7Ab6MJFZ7L/Aq+oU41ezV40OObbqN+3Lel1zoJ9eKfV3SudUu8/VeTR3kinev9xvafdnvy3Ffzvvy/rR+f9q4P23k+7Lcl/enjfvTxv1p4/60YZ/2WGf86UP49h3bjVnzJCx6fphuB7mLYh4iMR95l1vSEqAsVW2Aj5JY5VdRB/+csGemOOwp/ngjDP2OYT7W/LiJj8oFo98x0seaucnl/dGJ+iOFb4ucUFggAQ8/NssVOPuSr93ALSeKC1uTqPOMdHhkoHkWGYOkbTGqKKjeXIf+IqdjPEMetYEFqNxS6bbNVQksO1DEC9lxPCpjmW48y6Au1ST73U58Q9NZTZPNX6XSu4ky0cInUftbpLIsSjyrbgc6aPLiXMGlKb7x/Zm50FcuLIUhgORR3L5+Jedoiu93ekebXUCzyeEjvl64s33uuwlR4xs2mSywcst7tvuy328Y9+U8/SWZkA8vb9ITuy9r2c/8a1goWReXu635cRN/jhFDYcf1Zmt+3MQfQoTG33FZ1ZofN/EnBKHmd1z3tGbKamBJjhRpL3EbyBJ3koeUrEU59y50iyQmxabN8uZghLP6y5z2kaBA8jsuKFrzfShm3hiTCNsnnUmhNG24d8ZauZwyMuVKFnVjSDjYax79IO5mUShYfCgoBP6OC3zW/LiJj+IEpN9xdew0YzJBQoaplw+jdBqsc3EAd6Xa5lu1qHflIXHEYzAzqpkdID9FZQZwpbhSkarOdYmrTta9mznFm5o9J2g969LKlsvB+5S3EaqRGyeGCac/dL3Ifd7Mflbjn4LnXLi4dcYqfE0bLS3bF1M+9TMJh0eQpaSOAOo8iyQZtUOEp320dWOr2cwFAoyeIYigP84o2p1LYmfxR7Y68FXW93/4InG0uiLKFuseGfz2Yr+uDgwggxd53Wix/fGb+x1V9IUd126sudtvo0TyUZ6qSBuTZdSkxIIneWwrBtNZgzmuYj8bnw5/LJTGjZeEojn7SqdMuTNgqnOLgYtBE6Gzm08fTaEkYwvcOdEtRBUXUXoxaBrpdvLuI3wVY2WQyIdyTUlJ4OCMSxbaPbHOvvivB8WkZIppttZc7aDLzRMd5xG6npE/zsgfpmnA6ELCNTYFSjMFg4QQU3ovF3mavCmmckurdkzB0pkZ+kGkpEzteyfNgGC5cneC4FM1pPUmVgEb7dmtK9w7dTi/Mu7McHJa4M6NEihAQXSGfnQVZTCM9w0ivPG3ImPTUpkbJDblxQQlJacy01KpmcWi/tro2Ny/xcEu5OQzP8JXG3d5KuYM5eMZKXO849VC9tsPYusi93W77Pfl0OXjh/aBl2TyY9lua9WvuGjqjugRZDhDsGByYKMpqA5y9M3++Ei/qZNgghAlzCuK2IJfKZteBs6cYmSnItJ93gZeWmL2YPytz5JOxLIVlIYw+m1HOaRCBF+MsUC1tbivbVtf86yG46/zZM2RxPm2kFF6Bc6iy3xoijI+NX8qRwj+Qpl0PCQSikCD5QcyQVuZLMKaVi31jqt1XlPdBWxY1V2gOpP4ESgFUW4JvjTSZYDxt4YogSKznte2AlSMsT3MsIZ4IrsES9TMZ5THYraKGWLZzHSu3rSRwTKjSy4m+rOSJEmA+6S07st9XXIar/HIyVcfoZEwVHAmDnSirVn5XCa5LudhlbPheKF6NiKISr9QLiNIOx3X8+MSim4V01kriZSSh0yhfeKvHnb1MDQ2tWYi1Ci7eVu+3Opkz8o7vR9JCunEeTFHwKyG2AjCqImWBpyVRmDKPa65Vx9tkgJVUswEP81MoqqaSm2IbAmLqpSvreqpDqWpTHtNmiScUjzJMFRtS3kpHFgVECSrp3YyKsoZZWnYp2lRR35DCaS1TtqIwi/ab5GpNzGRTxX5F/k0bp4grGhKICvOT2CqSPossPOdp7LZuZVkFn44m6D3wpmDsFibLCI6LPMoOtH8qfwQssBKJsjIY1b7U1vQQfAz4TB6PlFeY41LpAWppCzPKpzycpZgD55CZVpiHafdc6l6G0bR0vaWhqad3lCQqMGewsul9z6Ggo/nyWUrKea5W7MsnvjT1Z+ezQ2ZZryJcNxl6rDgIEEBhzr6JV3SgwVCNoH6ld3/V39Ikk2xMPxpxnzHGZnzirVBCtYm5daRVs7r63B00+q+RGyRlVJ1py47ERVAE8NjUPVHBLHpiMJ84uat+aL6Xec1lZaGPUksCNgiGrem20nky2z66q6eKpIy9lg9ktY+87uPZN+VFOvbW7O/SfPhXlO4F6u7W/PjJj6UMA+SEocSgQnJ94vnHlUdeVmzAtLY94vnJtpOYht7a37cxK/4TSs+NNLDm0QH/uaX4KYlOPZ6t+bHTfzklSlJqqHWujU/buJnXNOMi8kP1vy4iZ8P5GoVHDTjX+eJXPt+0W7SNWBr6KNtzf4m3Q/YrgGLbTG8STRgux+wchDBAvekJ1nr4x5+wHYNWKg0hB2JBmz3A7ZrwMZqCtb8uIkfsORvdZz4nwwda33cw49Xcb5aDu2irPlxEz9eu43Xlzp4wPv6fvHchLBfeLfAadnDyQLu1/eL5x42XF/y5wH96/tFu4kRwHIklGit/h7Dj9Zho/Vl+w1IYN8vnptITTP0S7DWxz38aB0are1lKQmYYN8vnptotL6ViQMy2PeL5yb9r80i4IN9v3juMf5c5wNO2PeL5ybzT4hXQAv7fvHcZP25WQTMsO8Xz032n5tFQA/7ftFuMtOfm0XAEPt+8dxE4zXW6LDmx038eCXt633HCZhi3y+em9Q/N4vA5OP7xXOT9udmETC7vl88N+mv4HdrfNzCj9c5/twrAnbX94vnJlpd32AQMxqv049XcpuoOfEUoLXWxz38cDU+1MvCGJhxfL9o91jprzUt8OP4fvHcwwbrSwAc0H2+Xzw3EeGnki5ds/99A8bP94vnJra6vkTRAenn+8VzE1tdX2KBgPfz/eK5SRd3KOSbWDOPeRCjMwF9mtHVr7pTJmEN5+bCRD3KLZBVZRZzUo+JZZ1x0HUS/vduh/Zxv7qniRAr/1vz4yZ+IohZBF3EpyK/tT7u4efBEmh9x/MgYBd9v3juoWU71sex5sdN/ETYWrbbS4QQcIy+Xzw3yX8O4oBm9P3iuQmX7UmednsExQHR6PvFcw9NhFiux5ofN/ETQY4XKVbssebHTfxE2DrFxaI91vy4iR+usqJIsaiONX9xaTkx+slJojJbpCSOgjyFnkDC2kym04dEUq3UVM212wQrqR84akn9pXC7/aTYf+h/WGvNhhQheBcZ7SuFwawk+/lFqWZCEj1CjFQpsVxSJ82W+Uiw4X+QD0ZaKOykn3Vb0VJ/G+zrZKNQ/lFPUP6iyKI9O6oblqyegPr7SJRsP0/Fumqvg/I42Y8qJ/sBS2Vm9ovB8SGnxhrD3qYYVIsynajbKfdHCWRWdXI5fFmU3ZTCB/KhpePPrhoU5WFbtr9VmpIGi0LUA5VoEtT7KP32QehWodoYJ7yac2YhUa8ybUYMn+R92TPJ+/JVk/fNR90XidxsCVZm2Ws/l51IfuEBWz6vTha6AJMqiSmsxtITybx2We7Lel82XT5+MbcoZrLIYikZaxRhAXAmKiSVM3CBC1w0/QSOT1gnQt84hFULIfWatTiMIUjY+pGbPY0ti8b2Ik5jzUcCVkDetb4FEJneG8tkU4EJQE4X2kRnelUqK6PSY7qHHUsHcM78WAl92vwb9/yrw9fdsqfP5aSAfMThSY7oc9nT53LS0j5C4W1rzlaKKcdD1PgUBzt8mZlP5kWhNZYzNeooRwkI1ckoj9CQ1T7nV7+0W+DZhv1qf7gJBdJRV9mGup2LJindhpOo+qhTdP6gKPImciL3fv4KzXdUOxLgdWFHv0Mz4itge2IgP6XoiWpuRm4opJdwJFx21aLWY2VnvxjWPfrVfb+0yc1QmtuamZGvmz9sQdXERBpIvlj1a6SzeMhyKiDZiSSka/RewsfqMlYFjQSWlhNAgE89BuvCry7rKAQzjrDL86l7MEzI4OgeCHR9SliUSJSOcelfUgiZkmgoNuFxV4FuCDtFfcJIQVO7eyHWqnMGo0Y5VVkqHwhvQjm2fkA4kArC5lqI10oiZv4hbmBf49fX1vY53+ZxELVmT7XM4lISZR7eJIhas6fH5ayodcZxfI7ocdnT43J+l+uyxm5o75INxiG2RDLZCtDRuEFDpwA3ohKwHOGgUsLRBhwP0Ua9SH0YonsEYiwC7Sul9kyNfwqVUvcRIybVjQVzgNvkpWPq15n7ojZmFEU3xzRWWYnxd5CnO/Ea0N6kfyZxVFYq1GJefjLHfp/648dT84t5/kukzJrPukbtHHp2Uqve/KBwoFtWNQMe9sshizijZvEGJii0AOewarTtPotlqrnCanT27Lac/9JEs+b/cIdn2OGtUvujw35HyX9JsFnzf7jDK+rwSi9P2O8sWTvLC85VzcQeJ5sCYNJOGchkI462Qi8ojFugiRh4MmDdcpX61JKofGt8LnK3SmF4OUiVwKSbNPnCHrE+gx472NPFDMWeufiUUBmV8C1hzpnPiWZZRaGnWMSYEZOQFb6XEsqtS8cRljUk/vINnRqVBWA8zDpdlqSlGCADSvKey6bLx2P1G2PWxhjr/ljziXhOhKOiNBAAWdDuakQkilI2mXTkT9+XVx+YMQegskYc9HjCVs7aANfb+hvkQLLnVeWs7WTF+Qs1nxxR6Lh5w5N/HX07veX0FRF1jX4UuQrigeiomD3VKmdtUy8gXWs+YealvkT2FyCnFzetZRkqjC+hpfvpq2sAR2HfjiAM2ZMzctHeF0vjWPMjsOTiA2jgolg5bXnqWTpuvdJbr4OoQgB1L3GORvdmRCBAjfDK99VTNHJRijSWwLHmx038jlN0fIhVcKz5cRO/CxQdH3acrM2328EvRIWiSMrsXgh4HPEkBKdHw18Uz5qJlCleX7kofqSVg9UQjjvPGchFx4lYquY0U/bKkgWAThiCiKBP0J0F0KbXjpDXy1ZZEJWNno8ohN4uLB5VxZ5YNQnlx0owDjJpUxif9oOJWuMQ+M1y8+7kdpADzjc03hNvKHgvUJuP5cRzHLI4Di9+fdZ8Eb2Raug8Pg3SzAmNnHQChViDHao7EhsIg0n1xuUWF/zRGb/skpPwol9qrQ/t33vT/d5qF2mf31utPGs6sdrg63An/t50odBoeDtA9Hn56LFfjUlTKPkFM63my8DWfOxOzzVCwNa7ex71FzoHUuuR2QfOH5vpQ2G9z1d4dNav+rIpyC+CPGq+KwHXYi9HWjIGeUZuY9nOBgzoVRS46SkSUSPzteR0ZTTl1vewXrYP/tXRrY6+zcT99VQvm8Cn573U5upxzWXcwu2KKihp5mMeCG38bhBYWqAQyb346qqPcMFTDDKh9CW/qPqoWQ4h/VZvUJgA/LmCAxg9VQowwgaMZ5afIqK3ElklQ63nabJsH/CrQ1kdirOtav6rQ7TYQJ7s7tq/1yG/kRAQXjDi4w6V7z0gSqeDbkFQn+Sptpzy6rksZJeTgLIM/CfJKnJq1OX8nCIep55lokDd3bCfQRUje2hzFrQ5x/5V1nxMje/807UaZK1e/IbySoGsEUbvMbjWNgiQML6ZyZwrucklAe+V3WXJL9Dh7OHOWXDn/AIdzoFlw/eL5yaMjHHgCrcTNiu4zwqYl6nWYDGZCokn1Tr41QYPESWTO1bW8/fz67FArzm2h7LmKxWp8UOq82onE8ljCvLgt2Kn6HaI9aWIxuCdECPTGuHwqo/jpYfAZsO4vkBy1fw/WieuyUh5Qbmx/4/mpV9pq1baF52iHJhHfL9oNxEcNcduVtbsb+LhqFlwVBRQ4ptE8aqHo2bBUfOLbIyamyg9+5eBLmYcjqGqMmGL3HIAYA4eSw9NHK4A59ETv5AI1MpAIpoIrf47PUncFIYiFyrt/NETvxoR5RrrqVvjXVHB3ZH8ZO0S25AEl7EdfhdZWH67ohU8qfd6igfZZoFsc4mROWomAwygfFK4IaRCzlVeRkToRaI//KX17EwsOBeF4G13y+OBG6dEXj55PLjTKo8Hh2u5hlV75sUcDhnp72UZPajNKaMHVrQyeijTbNK48eWpOD/IFIWoGA/PUyt4oeKE5fxK99yY7CHEWZ4QXPGjBGk7qkJ4RzmUHWLnQQ3jsyJxiAnSWSwvik2NSc9qysqo1SnpOa6kp5n0Qj7lyn+mcfKf6WhP4KTDx4YzjxKhOOAwEXqSoPk8Mgiw6ZH1sk8S9Dyadpm10WqN1DayJPW4Es9wSJE+nppf+9v8Q7bfmp/nTD6SffzUQDm46+B39RtfxIJbGeqRSP9VEs/l5ZjpUdlZqOz8Ane35lMMIr3hyinJWrcp3o6iJKU8Cg1gx9Hyzp26ZS0/H6HfDgjcfvEtOK10kD0VPRR+dAJDqfn2eLtrnZdn4VetU2FNXSeqoR6BTmWgtH2XOqmb/7QktM58991MRGLDA2sOEAY3roB/O9H9V4RB9qD03G3begn9ezZmIwyRj9AfSxmk8HKEd+M81valAUjSLOhVlkeY41vmTyZDvRr5G3U5CHzI5Ve/An75SlUMsJt4HoKI5KT5ouk1iSpr/suzf5sKc1kBC2ZzDa5U4WcOs06ePpXHAEe8yJg2MSnLAQe+mpT7Uh7X1TQBQaieHK5r4ufMU9/O0i5h0Ic3PB6/3/C7bfgvEVWE588ez5+F5wekIr4JmvlTLYI6mKY+580TqaV0DIOhvzat6pSLJOeaFRY7NEiaAv192PzQDdC8xQ4yJZ5lBlHIlWeS9eRKKe9M2rvzcTd+CPmXI3EZoho76ko8+FIFq2QG2G09n6cPFsyDJrZts+bHTfwO37XD15cojM1PyQsuZ6Ty3mnmu6h9GT/ISpOKEjwG4XhQjfBVAKUK0IjZkx4yCQwlv7Av1IycmOwCGGvApoufOWFFok+dKm7jY3n5+Fy/R4knkV94EjniSWTPk8gkPbwZs1jzFdNF4JgQEqMbksBpCBSKeb4Gdp56kUmjeHF7sdYr4uXb6Kh+x753xEvF0EZz5e+cYubh8KnWlj2BI4vAEfvGWOuXXR+tzXDG5qDklLqG4B0M4LR50HtTCB2czoDbMVridzhQX6odnieSxRPJsbenNT9u4pfBUf4wqbHmf7H3AZqjgf26+XlqSZbHUOhsY43XD659HDoL/4kf3PNTsvgp+YWfkiN+Svb8lCx+Sn6hQKj5ay0YQjKt+W8vC57VkuVz9CmIPvCH0IzCXuonEd9H8A94w3hMH5qX9qONIDtjIzhXUvRLmkQYYvnEbek1CvgNS0m40rEHKfRc6BBM8jLLLNJM6PZNkVoSufbBP86eZJOHlroXZLyau0kXFGmrnMlIRQwi0aHYBqw2Asci2CPwXFmwx/ozmTlbXOKoNCy2MGpsROhUlovZfah+lSzT1cpvwtQZCt2Zow/3KjbzobqjHujVnu1mJatu+IQqeYJQlnMU8lw/uTxmx7VIU8RBEFNTfVzDwgWOrX5qLqXLQrN/ytSZNBtKP1NNXDinbOijjr2SLj2s9Cs6o9mjHhetJfVkUEjiD8WS0XkcLCTpi7f5XAv86i+XK4in1fXTH183SiR5IlOW01XFGIw2tojIlD2RKYvIBAhdGMJERKbsiUxZRCZsiyHoMyIyZU9kyiIy5dgU1ZofN/Erm4hMObY2tebHTfzKNrWy9ZewI6IyZU9lyqIyIUKLH2zA4MieypRFZcovOPAcUZmypzLlqSP0eNkzIy5T9lymLC4TcfhPUzNrftzEj1j5LEG2aAAo5m8SsZmyZzNlsZmAN92XnPnXPbJ8PZB6slWRkBGeD6CqpjUAtfDKKBk5FCqYS4VwHgAyOS88ZGxil4g1VlDDA7iKT41L33jBY3oSVV5/UUfUOq4YgEtZXtcehQOlRAaxoE1GWvo+9QfVASUfoQCRCRlCnD+zGZMNAStK15do0q2h7ZBtv1Cj+mkQfUFBskU7sedzZfG5kIAPBzmbufMAz3ct2/x5KIFK5CFkIb+q/vKXQIlSOFNow3JPQ4lhpiNov4f8yepn08Qd5hwyBqM+bwFngKpLeUxpS+CLDS3Vjy/m1xHyxeDDE1GnshlPcT/GY6SwWdUuDFDvYt5JCpuUvvtpbRlWrBvp4VS5KUNFeXrm8gCLpyxloZYRBzJOqYnAKRRaskR0wAvmmXeZYzLlxJg/gpzapOZZ35XwiEb9MEUu2NC4qxUJ0NZGC2Og0YXiHRrTi9vi43DomXRZTLqYTZsDC63vF88txh97f8R1y57rlklce6shRlS37Klumbw1BH3RoSBiumXPdMty0nqB7qzDn5lmY0FoCI8ZWKqYe4LpB2PP9skSj8L5khAtSM7ahdJNxcSIJmZMsT+nliHkaEo7b1bm/lMIqMQ4ROULEO+yLDlZtn2mAsZtSTfchjqOyOlWAXQxeJmu3h8SsVj2ZpTYm3A9qCkTpbPMcmYEg8jvDDIQexkBEbcve25fJk+vpZAunyNmX/bMvkyaHvKK4S2iKMYT+zJJem9noojWlz2tL5Oi98JezhGpL3tSXyZB74XvmyNKX/aUvkzi3NtxhI1EjeVab3YcoeU48jeDFVxeE9zLADbrR5boymQh9MR7aYsRpN09gy+TLfcWJgb+ZN8vnlsQvPMSJAYGZd8vnlsQVvMSIgYOZd8v6haF5KkeF99LCgZ98XSrQgrTS3hYIs+w4klPhQSml+CwRJSn4ilPhVyjEWcTSuQXVjw7qZAFNOJ5UyK3sOJ5Q4WEnRHPmxJ5hRVP8Skk0Ix43qiRGps4ZxIdjjIDhjF2curxYyWVnUj51KP3TB+DTTcravYjtCG/Ihu7BjOGAmolH9XGaZVaOFMN8+IavA/SgawsYPhyaYdkPpPqW+4mHarClKTspvkN3TFVMCZoaZS065+p6jCSG/bh9DKYCNHOnSn8v6mdz0LmMVRYwwwVRv5QSReCvotqkb0D7a/7rFOqWcse2Nr2HkZDZSCxZZ3fxT6LCm+F1Hnamnz2cYWhUiMv5rnNsq9FKXMWzEgkRVdzOreWth512xM9BdAiMxT8gqnbA5DyXsnHE0LZgGUfSlsvXeVEW4njGMFqQzGZV+7n+tjcrj/o9LlAqfF8KseOGvnciWba9uSyvFNoM5PtuQDvoZ9O7hT8sHJ9BLUCAcbJRfqyg0q7iXhZVIkysTK5nLGW6aXAUhI3fN5FrgoYNrSJmA/HqOJpZkX2ePVt3gRLcvGcrZIUfcXLeokoW8VTtorc8V7KFCVibBXP2CoyNHspOZSIsFU8YavIz+xFVankaFn29KUi+tKLIJJagw34se/+y+32Vx4/h2n44qlKRVSllzBHrf+pztWDUm9xfFA8LamIlvQSupQc7SWeKVTkqPUiMVJytJl4WkwR76XF2kslB8ea4vkrRYZDLyrzar0AeiwJ0klmXUzhdcHuCFJaNCJIl7R8PkKwtP2CCEPGiTGg1hTPiin5j4RtydF89dyVQsoIuSc/uTZ/i2i6epJJMQeQFllAW6u/hyd/FPPn6GFWqkTcj+K5H8XsOV5+qIj6UTz1o5iXw8vSE1k5FE/LKMfK4eUe0eD3LIdiTg4vS09k5FA8OaEUccJewsoSDX5PFyjFNFlf7hFtKx7FX4rpjr3cIxqmHmBfiqnkvdwjGqce9F6qydfE96jROPU49WKS8y8LW43GqYeWl2oSBy/3iMaph30Xwb5f8PslQn0Xj/ouJmj9Mk5rNE49BruY5PTLOGXrU/4CC6EsH7EQygZSCyF57FwIkaMrGa2ApRRqzvblsxjF47lL/SOPVWo05j0kuxAFjdgzykGUGo15D5wuBpx+GfM1GvMe6lwM6vwy5iOkc/FI52JI55cxHwGdiwc6F4KWXzfRCOdcPM65GM75Zd5EsrvFI5SLIZRf5k2kuls8trhIdTe/zJtIdLd4PHAxPPDLvIk0d4sHzBZp7r7g6kskuVs8fLRIcvcFCV8ixd3isZ1F4M0XIHyJBHeLx2AWCe6+4OBLpLdbPBaySG/3BQZfIrnd4pGNRcjGF43pEqntFg/PK4LnvUhMlwidVzw6rwid9wKXLZHYbvGwtiKx3ReQZolQbcWj2opQbS9yn9ZKGJ7YoYA1DNNwoTwQub0kLxGJUC9wAXF68DwVPbR12aoWwWGYnMZ7WCqxvx0UHEBufF53WVcrhceOiVnHnyIDrLe1chprCOsqHipX+l9bQKQOXDzqrQj1RgOLp/9yiUBvxYPeCuFm5e0MZNLB+EoZBaLD4RN3HamSQN7nZlpTA5HyIIXShrqah0TFc96TDlo8BK5IffhF0U+tF2+RBhv48Ns6IuwGE83w75RyDoxxWSv+mVTTqaZGdJEdC9WlskdsFA+SK4SivZWd1apnZtor4ljKH0kcC8hBcGxTy4yjEgdbeadslmzG8SHqslhohLFARKfQWeVcXdZFshtAwY5iEzRUpcQE6BQyCudf0NWcD4hpRaSQComq8MIuLPsltq4DlRlCHdNCqLB+NImQ7QdQQ18dVdrBW55Nrf5BeghfEYTvpQau1qPqdNPbWURGYfdLw2keu4Jp+npUByG2cBrWdSXzEmAJPGDTFg8OLITtlRcXO7VmQ1WRXD23dMyWpTFgoMSiLg5yGra0YufcInWjEtvHMTDP1aD0Bdmc4oAA79zoiAzVCCqgrUcizkMMiyCGL6tPpF1dPDawCBuIjEPgO6HWpxqYAHNVwhJiXwd2LoWUfZqWybFrD4NjUPMCgC4xyre0S54/lt9lBDJ8+75RMOTBhEVgQmBR909Ow98jWrE9eK9IIRuwwoBLUSKB7OLxb0X4N+AxoCVZ/T2iYMijyopQZaj3B4SUEqHKikeVFaHKoAoV0IJKBCorHlRWCBADKia+RxQMeUxZIT6MoJRoF4wgZcVDygrhYaTXh/eI5oNHlBWiw0gxjX5bttLOBAgXOTCB8S+kScVWCq0fkBBFMWLNSJJzlINIn8eK6fFoZUp1Ir90IRrmHo5WCC3Lk3rW+5HjitBoxaPRCpFlecYICbVe+nvcLGqivAHARCjcHC7WLYyQpZZM2UxlL7upvBC1Oo28/uiZnzyEq8HkNe7ZLZeKwgp3qp1PP8grYT+AllE/UB1iN+jBRCkaaU2W86erSlOSZGjJUwopuqvnERcPpisExpUXiRe1emFDCd5UG2LUNbxIHuWIttDn0th2SCOS5UHJE2lUGwz/0T+/Bqw/0BglQukVj9IrhL7VlOIlIJIcLx4tVwg3gxVigxe9jxQixfHiEWqFyK76lv9jK2mD+Cn56ypIMjZzTdJMmJ+ams3eKuGYB6ileBBZIVSqvuXa2Brw1hXrgNSsTweZFrKPSkYJpU7bsbSNwX4JUDx65FcSIq/qi17DaeXEnTel/rsb5KEADZR5eoB8LSkxIL9UshOJb8td+bRHh/yyRBwXXAEjvrVab1bnZdctVDliOmK5MS/UScAB1TXwi3lfUfuySVp8pHjxcI0qHlBWJJ7+liRZ89ePN3Ww/PWs7idERnrDU5M2DSABpMWCl1DltZUexyWPTytLp7aXVSMCqBUPUCsEXtW3FMPa3ylTySODxrAlcN2+vx6VX6AmK7kY2jaWw4ivZHhEX8ovNYRx1RcyobVmOwtxJPBXL1oeP9Jt3jZlIVqjWVN/Jk54iWbL2IoAtIc9biWXFoSUKo1aHIIydWvRbcrjtOfU9mCzQugYVKTjbkfLm0ebFWLH6otVlFpvwbZMIiV4rZfLozYAVEg1L4GjBf5Bpb9Kb0QU9ypLsXrNnB8fffPLJkFp9a0Kvqtxe0zyiPVGUmqvc5qWBYgaVR7TOfdItcX7aksmEAxsiFwVbne6yqLvY/HwQLlC2Bv966Ick1qJY+nHq/hYFQ+jn9brcF62GUyPdnRtK21Pk4mICKGM52sLtMkI6/Y6dHcdQnHi+1RqOQK0La7xoscxrjqt+KRoWj+VhsaTyvfL3PCqaFN4jYhiyplQnFVXxzWvSjAAd+lHCaBSYwGQ4EqCnd5HAZ0HDal44GAhDJCo8EAdX61M1wFdClQKsaIEBPGL4gLfZxoyWqx3E4WHsAGfOkSuaIOJ+EbIlyY0Eb4yMT8Tf5GIYsnmdrwo307c1fHFxJqKtTf9COGfKBWvhApdBTpxSIbCFmoJx+r0M8tx1GSuaLMX0MIkiqhjJglFVKTvpLtgTYdHdeeaAfwRF/dEwdBKmM7EKlnKMehs/J5ICvVsH1G7EEv9UzsNQ7FtDMKscJdBOBEe6+BdMG1HPX879HDwF6cDGsgYO/TTBLUav/m53RaCqhpEDD8O4URQCSnnXebb3ei8ax3meMfgmfabVT5pdkhmwJjIBIqhkUAx9oxIMTYuQYma2fgi31H5+NFvgsX46Wucz1zzem1dr+kbbPM47YQVZ/tUQcYIn9cnEEefJBywu333PU4/9jx/KCUAeAgLkEb/gcSDCtxLYWaQaZiqr9wEG4OUYDqPCBKCGhgtDetHS/P6i8XpAPA+f+eHKkPxoNsi0O2L7pdaiVQbhvhewGNze6z5WuJkOnvI4nAfuNY6JfpIH6n252ZHT+XIfZYuZgvTOPsmN850lq5MP+3GOWBdELsGV0xN4hMwQO01ngWLPbpKTwjZjJNjzVUX23XLxXpCCXouBk3atfu5Y/l4jRjf9lbkk6+HodFN6qVORRS0ESGkspstL2QFJPUC/B79Jvog3xMP1MRf2iUygZKNRCZotLwVN2lZqT/DIhFuD/XC+Vfi+ztDKds7sDLAy0+zRG9r8lQHDzVPQ+k3udpifJISgEwjLKorhbkbpW2wMEt2GBOikTIK9E8r7fqLLoLB49H6wFN2I281pW3FBNGlq6w7jmUAjpxCXjIlUAhA5KOdVaDIoiCS42FSuZzp66JltLIcob0PSFU9osIlkwxOLDOEgC6EpgpFebWuK6rSYEurSpZ/6EQOz8RPq2LJ4DV6+SJZwcHc0iPr4CHghYDu9gZZFEAcg4KnAUqjGxoOUEltiaXZ01gWdIB8o1GF79dl4Zw5/SqpO/Z8EBtI04JjSRxVnnjsYpreRTXr5W561I0bir2/sQrRccRWbQwVN4QYPzCnbIzXZnlE8R7JXmU18sLKV6sksLFAk1qCFULyKSYJAsEljHx5sxCGu2l7obcPm4eDRZ5mf6llDHfVrNMRFRynZStW6zbTdNZiaXFNeypAxyo2WoiiB6VGuPVKR79ywy2MDrWe8QuwSKL3sUiC34JrHOZmErG42sI2lq1rOEq2dt6FZfHTmlSj/b5QPcy/ErTfXiLdGuH8q8f5V6L2W4upejUC+lcP9K+E7bcXWKRaeQbE3nFDbwr3EIGW+w8yU3eOozE9iCosqrGC42DCMNvx6E/1/WE5AhXEgHdcI9pA9bSBShIATY/C59K/D/phbubroH8d7+nQAZBR6/m6IhW++xpy9SyEmkS9ifEI1nrkKTJpXZDawaBFDvPTaIuFZawBiv+Tpp/A1SO4K+HY7YURY62UX6IiMBeNcZIAnZ85P+uHjt0gtDCpitL8RNT/+PTpP10J2rflY31/Orezn4WsK0/CCHSwpk3Y033aKNcVsMTjObeW/3AlPeK0ilpLt43jDGl1Aj+ROtGBNhjZxCUb+cC6qufXH6rhPR+GX0uJJscvF45HtnLXGpfE8Mqnjr1pSTBNYbpKpGAXGxssSpC2vB+F0OpB7FWuIz3WNlLreS7aRZmPYXiDYxb7M9avTBH7A8bg9TQ+jYWS4Ll4QHw1w444JVFztH553Ho1D40YPaVWFvFb/Up/fqU1j2ZoJfk442dFKQcSZA1+RT+Iptu0Kf/ojl++5JAx4wyQWq8SOItMqCF91cKvCoCywjjAifsNC7iWrQLQ5sHQN1Zg4FTXplw4nn30yyNh7e3FBUet1TT+huUCMf5lBgVMTpX8Iz+UIEz8y1I9Jg3VQgFGbyvZSyzVPw0GqgfYV6Ll20upXq1KGULOSUP0227CiOknvzlx3qGBGOLkKugAEiqrhUmz6sH6VWD9uGxSI6uJ6kH1VV4SLyWPGqHqq0fVV2LkcYCOimFqJRcpTbF7sYIyY8OwmvyjYYJtFMPU6Vvghi42GpSo2L4tms+XGs2dScMBOlMjD+LhCm8TFRZ5UCUWl8f3PSx7I8xVsiiV6neoyTO7lkV4njITbCYHV5ieTiRVL8vokL+udEBXQKjP0BmjQ1CpKFOymLLOP/i9m6Q9Bw8bmRYoOGxkiqwpGcLoWmS3xvzFeUlamMpVQOKgW65iWKYCGAksw8jTMFORfuhrtZk+bEw46Psxo8VuiOcP3cGWZbLIUxxvQdUJfmLjU8D9GzuGz27sGd4PZocu+CRh5Lb4fWFsqL4+QCXVUyxq+aMaWCOGRfUMi1ryX8M6YlhUz7CopEu0HRO8a8SwqJ5hUUmXQEIr3NMihkX1DIsqhsXb44hCTk+wqGRLvD+OoKBfPcGimr/DDMV/akSwqJ5gUcmWQKYgfhxHcwoWLqL295MymcMSJC2fI1qr54iWToWGzEIlTeoBcV3JcqacOJ1XM20MKjEqkYLpoaNcU0kPi/Y6iRHMtS1B3c39DVq+INGmk0Ha9FnCsWJXE9qkTq7Unyi4CjGDJq0Ntk5dPZ6aX6PLH8SnGjFKqmeUVNJD3gdAANSpnlFSSQ95nQ8Ro6R6RkklPaS9sIXUyuwNbAGxP3yY3KRoOm2ylpL/VEi8VzWu7raDYLdXBmhsYzJD8ZZvTiQcYxdpRqOlw6pS60jEc/NgK9P9EwNN5eCuWDPR1ijTfHXhgE7ytdk/Qp/5bPOECHdlyqftLKiGFSaEJ2oFzPwjg1TJBgbfpzKFC7sXZf4tt4/c39k6OGxasqGIqEcfgZx9ZjiISEIfpk0BMYVywzTpkUzt0KIOg0VbrZE1aLvYS7tZnrGpQAFcVFJVpHw6t48Ohh+imU9PnJqIW7id4Ev1JLWa9elpXH/Hx7Dx2qJELu7w/7L3psmS6zjS6IaOhXEAp/1v7Jm7g9K5CErd1a/6Vn3V+SPNlKE4IYniAAI+rH2WVRc0TdNyXr72UpFdVEkVggvLMfSo5S+WKRcKiPaEhGnKegqLmjT4UGRrubszRZN7CSah7VvRpMmIR6X38ZeYaY3spSr2Ekb8wTannthLNbKXalVofkZk1RN7qUb2UhV76QHmrbOijKNbsxuiC+/RpgqTawuM6lIreP+sfpWtLcANCWM42Wck7ro4EGHfzJIR7UUFUf5RRyNLPtMDW1U4JEs1RAflg1gHQxqOg5Bce1byoP5PgSGmoktVKUhg/fRriCaMR5X8xvC4bZiS55lGkz72koAu+QOcBLJ2SZVsRoQIy1TYgta6ikyI4hn8JeY35zW6GOFOzv26QuNQBvi5KbBCeqowUQ9IvOSdsNErCnVxluAwKOkW1S8Agl37iGx6fIcsgg/cnxsjbFyz1esampv4PU/0ttr9PTRG4vq5ef3B2rfMlwtAGhQ//S+YyuRB3X8KdUc/4tNCo1TJC37Gl46Ox6R7we9eD9HS/oxxMBtAmhQ8y4eAd1HzS3z18xiokOKGXnzM0dVd04J2V11bd1N1mV0hoPQZQcGDG8rKTeZPo/Qq1MsaLZ4XEbjT83JIS1GV7afJe7tE0E+N7LtKKh361zEgkl2KZDlUggZi6/dEhgQap6W2MQ+34Vrr1yzH7AEw3vgdHn3dWQw6SNDjVHicceauDM4l4SjUny7+gUAPWzBTGh6ZjgxEm6N8twhmB7JR5utli3DX6fpmHPTaB6H8WM2rFZUvBpwErE3iETT5OODZWS3EKtdcx5zjTtdqzLgndMXenVzQaA0PIgMzjCQoyLYSCIo20nWUnaogJ0v+7ZDS+ldrxvirSrznIed3YjfWyG6spCo+QSXqid1YI7ux2puWYT2xG2tkN1bZtDzlwE/sxhrZjZVURcjGHPu9zvrMy/rVDvzgL8p4b5pnR7FvlpHIzhmQiMq/sqHAD+7OQhDM9uMYgSEACAaFrzjYzzryYu61BxN7Xv6XCgo7pag5Qc66Vf+N4uO80+IZBWTvGQAyFGQJB0DI0rVlN5JFsKj1vTChvqRNdRcHo4hOxChu1baXrVY9PERHrqzNgu2gEhOXKM6kwBgLsINFH7FWltwfI0WeVSKjCbqQicJUagB/YSV5xdBXNSxSSUN0cZzpTn2OxjwzulvXNin80AuZSRB8xBsAiHQKV5F/8K+yrNBm8T0d5W7Z3o2NwZ9ThoF/2/1xm6JWjMI5r8/WPuKj5e90fCTJVpFkEbTDqDH2xFNkFTmylYRX5DdsAbUYf+MCMTFN7dEoI5VqXrYi8a840kIqw7lp1mRMPqU33H6ydpK9eqyDkF74I8YAQ66W1YuRsHlU7mkS78Vw7KrMdkQ97JiYLlVbxN8aYxJQ8Iw1SGx0OV1y90+Y2aSPLK0n8HqQ8afdTePmV0d2HbXrL/r12biOKAqI9Z9wECBmOq+ho7yNYFJxnlLngjG/q3WRd1xJIu4PGgj1xDuukXdcSSLuDxoIOqtMpW3kxix9I/1R6iUcgAKJXMHGRcDDCti3wbLIbhDRpFuIfJK3w7OSiwTKTO9HGuwk5hGxR5CUuRlz1SqLvLc1/1nswvxI6p2ZQ1N/0K+TPY3raLozc0/7ETpRATwr5kmJoIUaSdeVDOr+IA5QT6TrGknX1dZLBuTEua6Rc11JoAbA5bhqnTjXNXKuKwnU/UFfQGe33bScRfr45TvNAi5UTgqt69BFFChOBG+U+oZKMMJLCuL8dDl5ja/wIhK5K1nZT+1z4nHXyOOuTZJ6Z92DeuJx18jjrrIneaC21ROPu0YedyXBuT/oDejsxfm5bZduj6WykhuV/ELj21Wjuo2JU/ZdPgOHU0wcudb1jWtdT1zrGrnWlcTpjtTBsRueajaRa13Ja+7lYdPQTiMqUqGr3EA4zE/3cRpSkaFcybTtDzIGtZ+GVCTnVtJhn5r05K5RI4G2iiKLye5AQqz91Psjj7WSlYpQ59gcJyJrjUTW2qUo+bBSnDwuauSX1jd+aT3xS2vkl1aSRR8nuhO/tEZ+ae3qpQ81WFlH0HRzu5shY3ALnZtwN5SM5voz7aeXvWPuROxgmuu0COIR9RYgYEeoHFZ5OsZ/a4LXSGStb0YO9cRjrZHHWklK7bUeRb3qicdaI4+1kpQKtFjriG3Db5x4rDXyWOvIbyn2E4+1Rh5rJSm1P4AE64nHWiOPtZKU2h90DXWW7x9OVF9kdBqhA4otH3RgAGoVJ1PAkMquoVdOJZUqij1e+uCKl+m7DtDB+OnyO/xOpkTmbB1vhbKTE0ONzNdKGmsHrvBARq8n5muNzNdKGutjZzoxX2tkvlYSTp8702mZiBzVShZof/Dc0dk9iPkO1/USu94hMnh6h52Ya2nZT19EGZ4fhu10+yC9t28FhBrZqXW8RXcno4caCaR1prc2PzFIa2SQVtJB8aTHd39ikNbIIK1yVHh6bycGaY0M0kpaZ3/Q49ZZZqwmwb3iGM/i+2gJQFDtlS4EMBFlbv6T5vrtSkG4ifVfs3a3bfYISlL/5K+AKBJO63wbcfM04iJDtE6NuH5erk5y/jWSOiu5lI/T5knPv0b6ZSX7sdsD2mtegETogYgOSntXV3NhhQ+s5/JLaqI5xXx5dI/dW7+UY7pNNwSnXedVlv19k3FIz7el7kTIrJGQWeUY8BSjz9NoixzKSnbi4zs7qefXSGisZCf29gDBXHsvlfO4BV0vD1j6UJPE5xJC1PTc5qrI0Ime3vmiQKLprV6f2YmQWyNdsq63TdVJnL9GVmMlg7A/SMfr7ObZ34Z3lxwB1awoOEOuQGIOYdcmf6PytuhMXUILl58Oke2Dsm6NnMa63obwSfy/Rg5fFUvvqQi72r+gCBuJTlVUpqcC6jpNEZHxU90H4KGwdDICqJHaUt0I4GHvdnICqJEGUkX0eCrNrItTDfitm/9ujgfKm0pP17kTTGttOsxEVm6KqGVeXZl8PfWT2eqVqANiU1XH72JpLRZUhFBuJH0hE4iCiiS/Gt3seNZxpYsxQ6EOVefkCQ4baTM4+mqEMAdZepPHspOZgUWWg5Gy8JD6tRPJwSLJwURyeEj92onkYJHkYHIzaOeCis6ODepjEXY422mk+uOoxOmoKHNZNbzWzRvDusW2JpaFsR7WexXG4axZ3JNwG9YBKESwikrfUybCZeNJavaKN+2PaL1CfpfM6EwAqSLIPE0AUAlUhQ6ZGNXlcEe0gvlQHaDLaBiQHdEL7ae7rhiO2Gd4ZNeRjFMRrsl9KuJlLbI3LL3MdXYib1gkb5g8Hx7SZHYyfbBIt7D0pgBl6TAXWeRPGCkN/QGcbps/EVSzuIxQZG8LXnEQwqwJzTg9guldJprwwUoustfpU0aZMg7lBfvgwbr4F3HNIt/C0kvcYiepfYusCUtvcYudpPYtMh2MlIP+UIX1s+iaa77R94sTSX/R90lCpA2YSpFkRbAUY5tAB0yIk8BQeSPhayE7MpfYrcbywJrVJ8bCXfDmz3Z5SvKoOVe1DxI/Ec8wpQ8SVCextDV5mOmmOn0mmbdmvU1H5IghxSNVB8hCUAAOoHlS3T5UOp7d8RAo8AMsEddai0QOyy85PTuZEVjkXpjMCJ7e9ol7YZF7YWQ/UAPg+LY394LenbI9+9lDpigqAwzhiualagEGHxiifsSdMIhT1HMCWY8oC4X1ywfP153GeSm/zUsn/wCLrAkjV6Gv82bfTv4BFukNlt8QvnbyD7BISbAsA8m+fkZDfTr+yCFIskhKsDelfztxEixyEiy/ThcnqX+LOHQrb0kFOwHRLQLRjajyp4SAnYDoFoHoJqn/B5U9nZWRzfgRF9VBE0M4PvLHSAcGwrQS4NkcvrecxT+LE5Ag6ymwHqYBfgc8WSo4pCVTnioSRpKAeRZYbVMvuD8WUAIF+p7cg1GAPJgSiXoxqYoqCNGWxoD3dCFbYWYpLGUWzBSdYqx1+et0Zz4QtyccLeyCU/KfM8EUAE4kNgDMBQepQhyG2ENMfcQ1JFoerX0kGMe0n0HEGf50KciCo6GACLQxbMl/Lw/GT7zUID4BqI1EOKvR5lDIXR4SPQhAVoHA3nXINRohV+bN+ad2H7b7sN/fHfen8z5c1+G8rzazv8wipIp/el9t3leb7f5u16dfvTROt+QtPCVh7ER1sEh1sCLB8jnOswdPN7cr5Zw90p2AvvLOEgpymMNONr8klj30waMuynvhR/DOAb0E7puqzOsLS2KRZ2HlpXxjJ5qFRZqFldfg8ESzsEizsDJesth28rGwSDowUgieJ7/TJBxZB1bW6+R3moQj68Bqepv85HLxZ/L7M/n9rZNf5LWYmCtQgThOXCerFItkBqsvCUc7OaVY5BoYiQOPs8eJa2CRa2DVJ+F1zC/ZiWxgkWxgRGU/D9v2Z9j+GbZ//7CNi211Y5L0MGz7L2Fcqhw1WRVXMlVQdPjA/U/S46wFcWtYKWa5XCxCkYTUCkj3plwuRHZOAvEWOQJWX1jedjLosQjmtzpfp4XTYh4h7FbftL51lnSKKt6PZCTZRG6CKfCb5JnBSWvUZERxZnD3DHhvSczxg5/vLbTGV14vIuPNfX9gI3p6jSdovEVovNlb1uKEjLeIjDd7zVqckPEWkfFm9a2Z5Qr0Z+L8M3H+rRNnBM2bO0utM0jBTrB5i7B5s7fd0slZyiLC2+x1t3RCeFtEeJsQ3k87nZOzlEWQswnk/LTTOYGcLYKczV4nWPlO/Rn5f0b+3zvy41rbfK2181p7AtJbBNJbe1trT95lFiHv1l7X2hPm3SLm3eRd9rjTOYHeLYLerflU2B4a5DQVRtS7tdftUvuzXfoz9v/+sR/5D9Z8u3TGBes0ZbLByKDANOP4S8waPQYChupYXm7L2UWfSK1lubW5YADQ4sNllknbhDwauyWegVoV2CSIvznRIcjf7JciFJ+dDverbzgE5OCyhAlIMJYS99jaUJD3oCYBtWGo2wF5ruL1X+dqAp6J0iDESbrjaHKpG0cjNXx8VCjW4ZLR5N9RaUbvBMAbKoHjTiTRgScEpAJ3XFxjCXJ+ksmo9MLZT8HnpFxJJ4sPEIsupROMbNaEsZ8adbcUNlp6RtoCUXRVPZ8jIbksFOQYyOhn/81FWA+Dc7sIrbAUktcb/qIviX5AX4sKHwk6VuTT8tOSJcuw8u6j+N1Cv7IPxGBKpjo2GGeFe0Q2dElbaKEU3hi/isrq9Wn1NimFuiP+absP+3047sN5/9i6Ps331fJ9tXxfLdf78L4aKX/+3X4f+tW+hlQMPtvb5v5EB7JIB7L2urk/0YEs0oFMzojPK+EpVR/5QNZfU/XyMyTMp0q1maZfxVXiu8R7KNVTPsn1sFG+xxJSZH/Az7jAcMRRRJeenRisVbD0djGhgcqSUiTsKoaQQ42rRP1k0EIJaeBcQtIl/pY9X3+SievSRJBycn1jvnLAFQ2H8z5crsVa4FJrB6kKi+wnkzUhHGmPsYN7E2YiXUv2eUeSQ8WlWJa5hl4THlxTnTA/1f0Pch1a30HU5YSabDlyrBQZIACSrOmTUiOyOzDZXzo5npMmpPoy3QPG2CIsnbx2TebDZ0igCjVDSmYl+3wumRXZOCggKHyHmUk2aDcm8vgq/7aPrV8H+W5J7euIdwVBLc5OCa3PWSYhF1eni6CYXZ/puaFLSsuBKWUWby6J6EuXCOL8jWookr6RQgmmKCmU4Neozs6nbZy6MFkDP6+f6zQuwOZ4SM2wEYOjH+lSjanrZ2jur+x9hcoemW4FbO1CHUHOrUWmBwi2KiVUOFF38fjBvp9+/2sHImhVDyPwXU67+l0u32IO+wzMQ82wOszzOixaj4FFlmSNDu3+QrsP+/2FcR/O+3Bdh1Su8cN8H95Xq/fVuJL6YbsP76vV+2r1vlpd3uBFfGt9avdjXgzqUqze372vZvfVFKnoC/fV7L6a3c/W7qs1f7aviSDuZvpb6edEYbRIYbT+Wvo5URgtUhitv5d+ThxGixxG6697mf5nL/NnL/P372UiTdbIeS0AkJ+X3v6baC6aD0WPb3o57fBoM0UZdqhACk3LsBPYbFFUSiH3BMpYpVAq/ZuXYZGCa/0tMDw5vFokxlp/DQxPzFiLzFjr74HhiRprkRprQ34MDzwYO3FjLXJjzT1eH6aVkf9MK3+mlb99WonsayOVukDU6TitnOjXFunXNl5cte3kImyRC23jTYrDTmRoi2RoI7O5IAdyxJGd2NAW2dAmNvQDq9ZObGiLbGiTD/Dj0B9/hv6fof/3D/243IpvD9HDEzVonJbbSIW3Nyq8najwFqnwJir8Out/2IkKb5EKb6LC04sADPL4G6cCTaTC26uZsp2o8Bap8CYqPMVMv02dbZ5mwshRNzLOYV91ZDWcSOoWSeomkvoaR4arnUjqFknqJpI6HQ8+0Q/dThx1ixx1E0f9QT1bZ2loBUGA5D4wvxxSlB+jMff215VFtzErMt1rBB5qJzcki3R0e6Oj24mObpGObuSWj3TWQ9LZ4qrbzaWxOadDGE4FheSGoIBzs7JArXZZDUibGAkjqewV1ybuW+qCUmaY7SHXO7JPt6O6piNLAl00WiTGqnJlq2QXiIQqXS7V0/WeNWOmXCm5iTQNc2DDpYuhQqW5inkLzs4QqlQehNp2LBh0qi9r0iuuGklGJGc0iKVIFS6NLRveaCkm18/qq0IyOUkWMiVVYug0eyheuzCmYjD/mlQj01b/ppJs2p9BlBhZvUJ+b/4k6Pm4s2dxScfiQo1JyiCJdiwj6dRIWjp/qKCuA4nB4jvMKMF1Ru4ZE9/v/nfMbfFb0y88LoXmwUUGtmwUa/8kqKdJLZqf1f1rkqscOGrufTFy9xvJYx/M69zyj4rfPhXo+aOl7J9S7nH8DGbE+O22D/r19XEdzeto/7pan0KlbEv8qso137TKqMNgFFVA7z7OBzwr01YfKxDLVGINY0VesDtpvH08oSIo69jm2fkl9iNurioQQuJUid+Zf6bqe0onJ2nHZIoPaoiQFimJfSp5L/87DRZcjntoipkiOEjk+muwYITwQlSE12isVwAFs0Jy2SHroNoAa0zKHFPCmTeAv1BQVdaW+QY6k2OgUycOM8t0b93BqsJgtj170Q5EyWrd0+yKwqit2Nv+W9UFgW7UaEzbN5MFTmaTyRK0HUoa8+loCmOcU92nSAK0RhtavASTwSy8rOgTi6HQku1XlCTI3j13je6N2ChJcdP2/TUPaQZ1NmlT2/lzzbVI9BHjMNxtnxK2hVK7eYA8anM7hsH0KwSzh6oQHRbLcw9USfT2+TMkTZrHz7iee0iGlEd1/x7Trvw93jGv5tUM++Hs+Vn42vQHGypL4CTDUP6p0vM8ui7R6vU9Nhmmd06r+t71GG14w8NSeP/t2mdZ8ACJaPTrGl2lq/Izer0+s/23skvG73W/RhzOURLFJHryxOk+ebxbFC0xSpDgMY5B6Em1xKJqiVEjBCPkfB911/ESBwrer+WtX+KbqDpciai6oomcrZVHKy5+LKEBlfIqJXGHG2hitH2gDlAlIk+ZUyMlufnoG5TOpdgRiF+UhqEv/Ez+mfRkMV6lIksfEMp5w7J8UHBVRySQFeCQaUqArQ91C2AkMEa7vidLQHwmWnb9GS6hirNrfzb9Gl8NHUNTKqkgpDk3tG0SPzpnZpusuRsRMgsM6HDj0P7tH0xat44oOwGR1GOSv1bWDywdqC36dWsx4qWACgbPuR+dIt6ouWIUUKH23/E3+taF8fJvoYWktN/NHK2BcEmutAnMdoY8CFsqvwa9kjK8pNwlR1zp1SAfX6rokD+vDoLdd+eLb1T0LV7ehfR2h049dq8q6A7WhvFWObtzXziuevAgux8z0sr7D/hrNr82ilFHxtZbavckI2NRRsbWfNvknWRkLMrIGCVVoHB+fj2nzWZUYWkpvWwU20mFpUUVlpbevLraSYalRRmWRk2Vp41iO8mwtCjD0iTD8rBRbOmw2WxRYaRRL2SA3HD8jcNms0WJkUa9EGSCKgK1EX/jMPRalBhp1AuhRsTh3eosp3CYWAveg9oxezxkqUmRXfXnctkWnmBl4QmgLiqYxhBoAPL0xaftRE3IsR2yM5FJ4IFQsAXV6CZjcSh1Uf8Yoj+DhuWoqYy1PbUH7cwxjgd5JADYTJcfx1F2qu7ESMdffDVLj80yXvbxLR2GXotaJo3KJHi0jhVwxt84DL0WxUwalUkwm5xfz2HotShm0ii7MdN5dtVZ2mRi13F5i8pKF57ot0uqzZ0DwLomR2SA6TqWYmqKQMIp3k9U/Wiyb81H+nc7qX60qPrRKOGBnlDbZWf66zcuNydsRGQbwo2gJLaHFgpXQGdX5JmDHbnRvbTA50raQVgWE5WhsUhynZ/WuCwYRV+8K2LfI0oThGASzXlm/ZmSSufRol18/ZkEDJUv8e4WdUoa5UBgqXuKAprrlMjPjNlOmz8cu5S+o6iX60I1uWQgi7Dt3rMDqwq3yiRlZaU3kAOWo162n0moIIT10Krb86zsTAUWmiL8FGcHRmIUR2E72m5v7qo4i7C9C5X9scPkoEU0pUkAb00LcsGOiAo4QAQNqkBlzC60zkMEONZO/NLnmt9jchz38tW2cT5+U1ZpJ2WVFpVVGmVS5oPoezspq7SorNIok0IY0PE3+rb5gTscZVYh2wn1oQ82mItyM32LHcJFxP0F5vaDTqn9TDmb473SiRf5fugUVW5DZt5ay7PA+DZ9BSotirk0CrNAoe/kXNZOWi4tark0KrPMcpb/bycxlxbFXBqVWVihOU3bJzGXFsVcmsRcniKEk5hLi2IujcosiBAbHL/jT5ymuKjl0iibAUDxsTlOpqItKm20ImEjSM7V6APUTkIbLQpttGJvCyHPbmFKkjphbItcVfvMH7jpUJYSRhd+MFxck7soP1p+sqb9Uc1H8EOLOhqNqhhwmzuubSchjRaFNBpVMWY9h7c6e9usb3dwrQKzTiYbGwuFtMSl0Rwwku2TCkDozZdW5Dvovf51Q3E0UWIDVb/zDbnXl3HL5mn5zlvrn0TnLKqBfk96UbqjUYdj1ofo4iTd0aJ0R6MOx4SEyPE3TkMuSnc0qiTAsen4GyfD0BaFFRpFEqY99ISTrkKLugqNKgkUuzv+xmnMRWGFRpUEqGKef+M06KKwQqNIAuKK82+cVqOoq9BIYZ/2ENjX08iIrPdGhvm0h45YD6WoFknpjRRzmHCdf+O0NERWeiPFHBLy59849dPISm/kgs/20E9Pxmot0scbqeBIkh9/48Qeb5E93sgFR2LyOK+f6OMt0scbueDzIefSTvTxFunjjUxdZMbPv1H3rIc08ZVbuln6iSKPW6YXMaLmRrH0aWxsP4RHUxp00hCxxkxXi3zhRu7vbA9d7kQXbpEu3Ej+hVfO+TdOXT/yhRvJv0gnnn/j1PUjX7iR/Dv7Wbm6nfjCLfKFG8m/FLw9/ga1+aFYBctAyeT+0vFkAovQhyyLJu1jKMX5wxCH+oPIvfsREhIULJzAqdO0cVJTtY+v5STykhspoLM/hCw8y6gea+1IftOZjlK0BaD5zqCgsEksvdFQc8Idjh6VJF+PzH5WfA2uvMd23W3XD3/dbRzM5JrOhyS6zrK7L0hrGm0pGnXCm+R0O9yXUB9m0PwB+QDekDyKF4+81kaW6hwPXYNnL/UQthnSLnp3be4Gokw8d57wQUdrGH0P9T4hHjLH9i6aaK9TSBX5so3k1znOtUKdZcEnG3eZMOxix4Pbq1zgesWWpP4wzwkVUu6JsRPOVDiFPDfrb6w/E/JEXzfa9n4oKUp7OrjASTUYpV/qonwWUElklKENZLUJjoWESAGxEslsIQpLShr9TBJ5QDbA1gcyw9zvFJroab+Thnq6/+VQvSD/TO5mUdCZzO/riDkD7IaHPvpq1DjbkgwMjZdzo14So2gLAZFkZE4kcb1IhsSPLe3daWRE/Fn2TXxZzdlRrFDTKrw5Papx756lLiPKo+wJdK1CpWW8HWKbWDtdu4C18QPbIhBgQVaoyVVkkQXZdIHK4IiKpYB+dKYsIMqVy0WdjQAA8GyIS+M+QEX92VhyL6qNMHOBOxpj39EQngs9nJkF/NzQ2zak1fv1mTTKKzMv+pV5qUrPsm9l8qaAXpi6KQA5Zt5nKXyL/jdlNInQmtfVXzChYt/jKa5o7S2zcCJ9t0j6buTXUqOwf+qKP0EWBZfhRXt3Zjv7YEKk0jMQdRCfoea4jlj1+fKSaJHM20hFRObqVELQ2StSYK5wFGFOlC9jF/54JcZYjNdEhlDBuH/BH3haDfgAVHlQo/q6s7jAttcs7YkU2SIpsrX5toM8kSJbJEU2Ehwfd5CiTO4Wyjm7p9+vgOl6dm0mLXffTHYm3zixIyHDzaThbXIzeWqjuMyRSvi4mRTX8n+ymYwUxUaq0uNm8uTQ1iK7qfXytpk80ZtapDe1Xt82kyd6U4v0ptbtbTN5Yje1yG5qvb1tJk8WbS1yT1rvb5vJk0Vbi/yQ1sfbZvJEEGmRINL6fNtMnggiLRJEWl9vm8kTP6RFfkgb6W0zeaKHtEgPaSO/bSZP1mktgvfbKG+byRN2v0Xsfhv1bTN5Au+3CN5vw942gifwfovg/Tba20ZQ0P7//Y1gpAO00d82gic6QIt0gEbk9eNG8GSO1iJYuxF5/bgRPIG1WwRrN0KvkYMvCwrx8TfWFitejo6hTYobrKlUlfJeSEE3RllKLl5aOSBcPBiUrqxqqFHjf9Lwp3O1z26qCO4vU/5fdx0HG8Hecz3sUXi2Di++XP5irPau+sstrNI2APVHmdjCNFpGVpbXz2TxAjWLeVUvELn5zXKfs767SwSit/kiFNROOPQWcehtvgkFtRMOvUUcepvi1o4jCa6dcOgt4tCbvNLgbwPodYxqTjj0FnHobb5Ra9sJh94iDr0RVU7phVMh5AREbxGI3qYIOeXhN04jMILHm8Djvf40+/RIDGon9HiL6PEmM7NuD79xWnwiiLYtjYcHyMbJzKxF5F5b4ia2c/8Qro/pljQ8UoQDVma8DJIOjKJhmPqDcdI+FGcB/o51F4Biv0ZKBP41uZWNs8FVOwH/WgT+NQLUBAWHrkT8jVM3j5i2Jj+x8VCr25g20WoFwQPOO8sfFFhBTA3YG19GYZnqoLCtz26o136ZpIHsw7NfdxYHD/FpIASd7+xylsZ8l5kfwLR7V1p1H/C10n0AVMjbyMCTAsZLn8xML0b+KRzNWMElJQsT3k+m0Mj6MitqET3XCBsD/O04T/NsdW/dbTp+gwWv3Uhhgg3dW8xliKRg82ufkeQg0yhcNJdLsH7dVxz7b+i1dkKvtYhea+uNmNxO6LUW0WuNULQnm+N2Qq+1iF7rSUP/nCvU2eJAkeZKQ502VcqRoWAor62G9hVYyiCFwn4N2zQyFiD6m8alPjMJfsJaMokQsR+qClN9BrgboQ4ns2vg4kz6sOFoKfPFow07XKlcR/U6suuoXUf0QB/5ZxG3os/QEUqPcNAeMXqdgDvgmtv8LPtqKcbe6PZw5RJKAaDaOR1sNLjdBB1pZWaIoTqTiW+w9QP1K4KNMGhw8HU7Od4OWbZ2nvf7Ce7XI9yvE7sHDtQJx6WzhY5mG3gKXM/ycG3Nbf6z0H3InYIk1+/HQ2wM6smSD/3XXrtH9GAnFHABon9sZfvlWESUSLkdi4DCKwLfK1aDIUbeDqOL1n2GDC61ieDytahaAFQF3J3oP/qzZNydIvWrR5BiJ+KQASthUfFWD5FIjyDFTnjeKvbwuIdIpEdEXyc8bz2YrvcToq9HRF8nPG8hx3W8j8N01COirxOet8rTVHKYjnpE9HVC6hZMPw9UaZ2l6UkyF9ACYUo4L/CPhHUGappvG2meTDcw4O2Ji2bJoLLwA+W3SqA6Q1KmzZnZJcJ59V94ONKnP8g08y9ROAGWvJJFtOgAjT9YrGxgYgIW1Jj9W7zqSjEb2SN6sBMLuOq5yNRP8MEe4YOdyLonS8h+Mg3rEYzXiSBbD+7pOsvEOMa0axaSDTeK63IBUEj2YfFdH1hqNKRJmx3RN6EKKQ/JUgFlziy7E8sxOQpYC0Kb+Mpgb0EBqXwSWQCsBAA7R7QeJlJGi8R4FepTIe0oviDcJblT/VRIBTLLjWFfJd2H1Yk4O9DWxB3Hm5eOFqt1ytZjVyfKNZITiQg+oNo8H4+j5ffX1R2ROHS84fhZ9JTE/nBxi6mj6X+76tqfkdWlI/lRQqSsXJ+RpTFAxjRWBPLPolYT9pZLjJGMz4Y/JTTSdFfLVBH5WmIicrATBwhjTAM5NMeOcNiu9Qgd7MQBrgePY51lza1XlYXYAtVRmlVgz3FZERpx0dQt89RBI8QUdD0EJT8kPSFtRL4EPfvokdma6BWwzWTZyMr65VQI6j9qVOZLBxILQl2CMbM4NbAVSYlE+8IzVOja1VTlmz+rVbcgXM38RheV+1b5Wk4iQLITerjaWVi0n6znekQrdkIP0QXOv3FaCiJasRN6uNq5oNdPaMUe0Yqd0MPVHmKlE1qxR7RiJ/Rw9XT+jRNasUe0Yif2cD1gDPoJrtgjXLETe0hxu+NvnKbUCFfsBB8ubPSPz3LYVfaIV+xECILFd0KXd/cFEzGbA+gqp9bp0zBEmTj7ZqrDbmk3t0XG+GgiYBdOqChYL0awIBcNL5ZiJyBAOYN3BV+Y8Zs4ECjldVZQtboWmnaT9P/BZp9SdjA7Fozd2o9xrIKDqUI4rt+kjgkgh1vvzh88u1b+1SUWWH6WwOsYcrRc1tH031sc1kgjLJXd8RkL4KB1LZLeavtZTEzwT8l5K/ioXR9xip9f63dEbHbCLyk7e9iO6SxfEMIOTd9e3RbDlLurqdkJ5WvCv1Pp+02N5jstiiByS17ThhYweuEzYsdNL2RuRPydAdzuIo3Nd2RQ+PX3CK1eU1Sd9xtFhVVvFDlvqcHm6nTe4b6fRUR6vT8EYgrJ8CbnjtKwMTBS7wffGszmppbIsbhZAKVxcgekX1lEMgDY428SnzGKMyAu5OlK7EXS0debiVMrcaj4sfPw65tesFwtByEgqdmtiVYALca69Q8kltOWdBQabPXELenkDoh3nZPgCtUVRUUBJxd7+BuFkzCeEmzv6lxwUuwpM4C9SKaqA5VleC1jPEtIQdn08Jk3P/wScMbPaSjD7R3SawKzFFJ9MTwRG0nHtIwttSPNUnISiKcAqEQdCTqxziNHdog8cqOOafOrOaOczkBlh+fiXTv8yVUqGknEgPhLFxKO2iIlZ5EWE6WmK0nEUBKoEiJaxdVQ2VnZlQfLBfw9dFFJK6CzsZUxyqTwQIqjmhkduIpljbeX/C+k60BjIulyI0tf5z6SgClwOi541H46KfxEvfB7IHd1KXhTcHbu72lYIwwRqx3wb7Ya2n6KSw4002z+t8uH2uQGQ99bVC5AHmyRLQ5/8KVemCunNgRHjVNbokr1otAPyOBLouFtUcBIbb+ksLqk+eu/Qo0fiBphX5/ctWnu65KJz7+Qni2mSPYItCkUMfbZ6m2/pKiLv6XELNoPFsJ6v8gY7L+Y11+Izg5eE18r5baT+P6Znxa/sZw4zjgwEmUA8AM5MWpPNRaAesShd+LFM6b386J+CpQixrwTMJ7J3D3+yPRpBdndQu95gKoGu+7QipxKUSgLnSvxgqYTgXeg2lPbPOBUPFDF4PEcB3QAlvxAGadWTis0B/0g0aroFNEqolNsdTOj00YuEqJT/UVOxGcgvZMTGVzrS32jR4h8J949Q+XqPLOeAr2Ike+yt0wP7K9+Asn3CJLvRLznlB/CtBNKvkeUfJf7ILYV5x8pvvWFPgIjlerrAwy/aneteWnxIp2vacWEWGtoWi13toMubEec/A/CKRdmpk65x4UaTaVDK6TbKxlqUJ5pFAkgM58sMPD4nbdPBj8Dh+79gkOaGxjo+2gD01tnFgzQr8EsWGEvxRZHURc12vQX3GoiusopsyQLaZlEOBsgqTlxufbDvQnOSemUzsPlv5UTL9q/KhU9kg26XBxTeeoU9X9hcKmtibT8x4cZGfV5/HcH3FcDxHCftIc2zuAWnSVCNCkxzyRMkdhR9zX7YiwX3gk4xtIRyDRxaPszxogbDFwY9DAtlqg8ziCrVxcSoOX7RWgGYrF+IP3TaLWA7WtjQQgU5jY3ZXmp+THzs5gPYnXm++HpnIqa6is/HMkfnUyOB4ptP3E/euR+dBI5cnogoPUT+aNH8keXIyG8kY8z34n90SP7o5PKQZwzVc7jb5y22pH90cX+QFryID/QT+yPHtkf3TQDP6V/T/SPHukfXeaB6Sn/e+J/9Mj/6CRzIMQ/mYjpbNsq7jsEYOC85IKt8ELDH5BcqiBOTxED56wgiIFD92SfKzPh/0WCP8Vj8DW6x9vYq/iUTQ2X7hBrBc0g/QpenE27L/2tRhamkarQBAIpTNNhx1NddaoyGBa6vDZpdE2GwJlk4zq3XYFCYORVFAKnVfbeDNVVhrbcby3tBAtDW+w03DIFEHMXiRoeuiK0U5iKffLgfcLIYMhAoDQHBEMSf4loa8u9U6iGKQeW3n2lwD2tsVnaCiuRG+OewhiR8oexqRMOm/BMuWUWRpD+p8rL8ntN976WNjCZYeP+2hYxzansW86p3J9SX2xwxpHAnH3NvpFD1MUSQnmOVi6xH1ZNQlpaJOCyihDqhHxTmQXmn5kLEKrLRbU+7Or5tjkvTxLKt2UO3jULDZ09lpR+KB0mkfabK0QYQf4U2EGunJQBXiux6NCxD0yV1u1opUSQrTU+P0qhs3/lMiJZqZN5lFN9CJDNfrvCSnygDWaN6mc1x0hh+hdcYckaQtQN9DaRPVg4pNANajFiyGYQQ9rnqx4buVD9zTqxn6hQPVKhOnlNjyXdExWqRypUl3ViOYMd+4kK1SMVqpNvhEF7XNVO1ok9UpS6rBNZbDi+seVgCZATuFSvLmxb2SJ3iF6QeDIyYCqLDUiJGwvoMP5QuRfZdULsM6cO4iXH95CKiwyZQk/v6+SZ1yO3qMsz7wE00U+meT2SgLpM85I9VCR4urI/T7bTnPUbushCf3bMe/lAbAAQJYkWILkikMwNFTRVleFnJQnSNYg3qRcO7vc9x9movYhh95NFX49cjS6uBsLD82OfijmRrdFFyHhs/9OYi5yLTqrDY19vpzEX2RFdjlHJHjZ7bavA0oqHlVt5r4l1ljk3Nlu/IFQShmXIICADKA8XAU2UQRD5N+vs6xbjkG4vurD9xL3okXvRSXgAj+yEMOwnP6oeORJdflTMw55aiqdFAbSqtFb/YM4G0a4zwqEZlKPwEtRwmBXPaKrrcOgw3k0kUvSuENEeaksnJkWPTIrefQA/THQnKkWPVIre68s24sSk6JFJ0btG1FNps1/SdZg4Nng4a4XshKLVz7T+e5K4pgaz4rA5pc/rdOqjGhzQemqb5NRIZkXSBuXoA/q5R/pGlzlNag/7nxN/o0f+Ru9aOvu52MGzG5Kn8KCPX0B6hQygSDmgAjEh9oNS68sJmhPMieSEiuj+dByl+3pkhvQ355B+Iob0SAzpIoY8CL/0EzGkR2JIJ8vjSRqun4ghPRJD+ngTbeknYkiPxJAu35D0QBfQaaYtgPPqXrBmbaJ+EiQkVV63rUMIRUuBwJDT5xusaXqGAOEb1c3wX0Wsbe7Cehli7xX+wZSmmbH7Mo4wWlkmsrYQxnYBatAPOkF+9pUiiBSWPjRB9Ic5b5RfGLI78LnAY5jpBA/TKGxUAyZeENmYJULb+AtHu9+Ub0yWqEzmtJnbXzccJ6PxNhmd6DI90mW6vC7oXXB8w7s6jMSLxMMRfOR9UN3LjlK1jPlkHtHclnR5jath0miOB1VtI29f0pF9cw16xtaXlhOCgVW6SbvLT6lWtrxWBqHY5ngf+qxJWxxCyqwoQVY2S0Yaf2FbQrm6km5lzkrYDOF4uPVSdWF6eYhPVjbHW9Aebo9kllimy35DArMl8x9p9M3ELTepby91CHlFSFQYVmtdlVh0EtJ5qaHN6gQoppK5xjWGbfHvtg/YlKjAD7XTkOiX6oHTqyGaLBNFA1QmwhUoxM775M4p+6xp8qfjBDr9tnKibLkfCieFIw5Cbr1kTMHey5y1vjrK/qrAMRiYAkPxs3Yd9euIOwzmgQXq0k+u6ycnq0hUW2Op6ntLGtlcfWjZmg9B38mKpUfuVR/K/c2nueEUfkbyVZcXS5oPCyhPK7s/BWrizj57vpm1/3GZrqwNWqo+tHKSqgUK6Ts7jb01q/tQaZDkHOdgbuDwgivRDwVjWVVxYD74IyhqS/wXFO9OqBmCJ1HToWkxpHWZNuSpU1cgOb5gss4PyW5lGhIHLFMSkO3lq0TfRTAyLypwmhIf5BfG/em8D9d1yFDID7MOv95BXJ6Him/rqTfMX1uAi2zxK95nNoY7gUt6gqUV4jgVlMydSIFwMMIukre+go/IietjvYio9pODSY8MtU4W2JMMpM5yEZX8dKX4wS3cNQnBhpIeJwJhsDPhbR/mKdNq8rfAYZfIV7ynSETrMz+7d/hJCWB3x78jvivkyLFGxAttEEmVS2hPW8Uj0zC2X7dsq++byzpUrujrNuPyP91+ah7tp3R6Q8av5b8wzAYSHMDABtV94hVo3txZF8K0i7pQJfzl1+qv/FpdKkvrVwpMNY+rfyTW9fm2uT/x6nrk1XWS5Erp6eGRT5v7SKzrU1ZX/SGTdWLW9cis66TJPffb0/QamXXdLV4exs+JWdcjs65Pnx4edpo8TawtplHBd6oL+laU+rDxx5gneLuC1jL3bNLpcgy6miZTEvKBfYYDBLZxjXlMybYgwzkp64PZYxG/qqOpaBYdmyaKDH7SdcTp6XtMxrlmvpgl9RP5r0fyXyeT7zGpcyL/9Uj+6yL/5XS2ONPp6mJI37PyNVko+1iwdjHnOOh4MpwNl2knCWhuZnUTs/LXncXZYL24yvYTJbBHSmBfb66y/UQJ7JES2EUJfGDP9nUaoJG810Xee2DP9pMefY+Mur76C3u2r9P4jOy3LvbbA3u2n+hvPdLfuuhvD+zZfqK/9Uh/62u9sGf7if7WI/1tpPTCnh0n8fYRiWEjvTFfdfafy3wdkQw20hvzdZzIYCOSwUZ6Y76Ok/b7iOytkd6Yrzr7tzBfRyRrjfTGfNXZfx3zdURe2JA8PdUPDiu6Tv8dE+qIbLORXlJr40Q2G5FsNtIb93WcyGYjks0GmWMF1N5zAx1G/4hss5HTy6w88mn0R9bWyPllVh4n1taIrK1BCtbTrDxOrK0RWVtDvKyHWXnk0/CNhJ+RPY60c6OeGD8jMn5Gbi9T+ziJhY/IhRm5v0zt48SFGZELM/J4m9pPXJgRuTAjz7epnWf/yVN7pNIM8mIep/YTlWZEKs0gL+Zxaj9RaUak0gzyYh6n9pL/tqk9EnQG2TaPU3sp/9qpPXKBRtF+L535lTotAh9AoDm7JaVcjeZYD/t8mNgwG3vv6DGtdxHMv+4qDv3youU3ymngR/7LKG/V4XFSLB+RqTGI1M75AVM9ymnkR3T3kMr4g6zfOIG7RwR3jzJfNqHjJCA+Ijp6lOUE+jo+pX/dBwe2O64hA8gJ5Ccx/d22EeJmfeCL2BWW7E6FZXNkiVSrdSidD/8v4uDwZeb1KUPL74AQhh9EzpzYr0wyhX9Z1n7JU/5k927bEHEwppwPkV0nacTZSgkyWJl57kwUEr6MAp+IL0DBKplPRBuxduAeyTKUOp0E8JGfpEuj55J7lGGxx+woNuKyEUVqVNQXVCUwYhNFJUSCwdXlMl1Sd5NEXLe4n6OYbUmILPriYUYodL7L1KRa3i6wG00Mncqg/SH8P3ijjdki3DuoMpnXmo4EbKU7VSYtZ8pAGENMGXqxkCmD5UDei3j4qpfRnY8FQ9TK+4WSRuV9cFjxCsAfVtYG8JkIMHXJ4hSfufciPUyTHqY5JwYqquLEoPpBy0dStAvbi5K0PDm2pSLQXbJUZB0k+xUaXyJ6afMbdyghEiBk/aBBxIJBo3Y9AjBSozuLqLMYgABUTwUHONJSSsKR+nT56SSeGNO87GF5+6NicpYvKppVBo24c5ksApokP0MITsq6EFm7oW5KTTH1dlVX0NMme26Fr5IoWyhbkaKDKGLqJbVK+VQ94mR5iX+xdr9ZpAaBpGi7a6yuEVXIL0ykw4s9Q/CiKC740HkteLEE2+sOibD3QZN81AjsqN7r1RRapSdSbLLUMLrfcFZZzVjmLJvllXMRNx+jsqip8Kmb4YJ8742KP6uqRuG79OZFxJuzmT9izv7e8Wc2/A3kzFfAElluux/nTJ4Xh76PaRQSNKj5lJm0JCM2dy4fJbnovZMhxx4Ivn8upHbxHooaR5PL2q1TrHrXyIXemST8+zQAT+F7HsiFXDTkqLMGO13Qi79wEPLyfve58gXxarJPZeGtcjARslvZ7fTp/WM+AGmQzAGFHH7Gu9mf8il4CeO8TU6OPFPprWtsVNDaYBdOODN2ehzshku0cjVJ4xsSsm+U/ZhNw4DfFasObLzOQ7bvKNdjjrJ8tOXBN892kJOovjDTdcjx4NHb8rUir7G7Rkn+srCOmbonjvg8mEOzvyB+ymohKJlaDDCblswZBx2qFNqLkoJRtEBVHl5TuUiOlIvQZA4WQym0vySRscjJV5+W67tiRBqO7P6QVEded/T7U9LY8DhaEvxTzQDlpxS1DT/VSqHD+2JOusQtzPtq7P96Sk6FLFkVEvP8C/fVZJILbIa7/rIZ1n01svMK24kLkn9q96fNCUulrPvZ1n21dV9tXQ1ZnXsJzmzanbPUdD1bTfU+tPuw3Yf9Phz34e69pbJP6zBfLVnz9dp8OOrT+2ocmf6Ftt+FBql/el+NPdK/sK5Py321cl+tXC1ZiyIgfmr3p/ezMSzT75b7ahqZ+u79bPW+GoM4faHez1bvZ6t3S9b7avVuSYZ4urAHefyxdf3uNYpLtauXCEfhh/ez2X01u69m99Xsfjab9+Hdku1+tnZfrd1Xa/eztftqrV2t3u6rtftq7b5au6/W76v1+2r9fm/9vlq/r9bvZ/MFid+9r9bv96a4kM1HuATm+lLHFQdWTiW69VHvT++rOXGbX7ifbdxXu+eSOu5n01zCe7jnknqtTUXxoX96X23ezzbvq91zSb3nkjrvq627Je+5pK772Va9GmrdV1v31e65pGou4U2uK3Su67qawlg/zPfh9d4U3fqh7Q5u91xi91xi91yiWNgP76vlqyU9MNan5T6s96Hdh361r41fzLfUF6i7nzQVkoWts8/wQjndiRdNxkzi/fDk/bpipL+O+iZOp7MbjqnsMJAohXAMYC/loIf+McS+KFvHDcuLZOoQOUqmDhFhwf6hI+T/ureYnyG380llTmd3CvvOXOuOymXxjMKqsLDIYeveAELCHQmfIbU5wAYWs07AEvhd9i/fkhEJp6PWF+E5naUZCHYKvlV26g8lz0j94YaFbCyCoDYZidE38eZEbYE4KaYZdSoF8NniKyDaKgqlPAmhV2lWV64CFI5wYVSOtZpjN6Ilk0aHJgEIV7UCw5JMLYTcNkRMdjgQAJKD3hFA7I0hNN5weX6sX3KlYBGCw3oZd0uZnuUk+2a6SGwMUMvadWTtLzoFFrgXGcIBLubTsgOaErFRWGaYN+BPFW5SJGIjrRE/XNchXURWiYCxERm0g9zRJ30+nWXgAyjjjzbAXPZNlOJENKqCcQyUzDi5KruCeIWLMuxFSTtGZMpFttLZE/HQ5h0SVasnbJ5DwRaUb8/Rk7UolYKAfoqiDY0H34Vy+jRiY7g0E81DYGEzT7j0OTzhQjChSIHsfDsYVZplmnMbmZQl3hMbDXa4uXVGBjcUfGCgvbiomltuJuq7KNvSKS+SfQ+sLZVMaKffXKHxDJItXGLBFhvKKu2MCQJcRauQr1BPxgSg0K7OHwU/LXXv3OTCMzyAvpqW+Up7EDYgZPmkLJcFhlO+QetkA7GJl4WlI9sXy58WJbx3rQcCMxffg6ofQk+U8Z+h1sNHRasal230WtO1kKpl3MUjBk2Nbk96ub1mT8UpZ4LIote1zyo/AmwJ7xeLVpc2CFgYuuFeN3gPxAJGXc18ACOWV24DCGWu7K368KXdbdqSZ8KSohdIfAQqPivtzeBiSNrA5fSOn6lkCDZko4Scmn914Ux3agO6YctzK92FRvg9bWMwoSjd0XaGA5OSJzCYn8i7FT2P0PA3it3xk1kBML8gVRdcEpbq/mp8I8zvakeL4Tlm2dC0qZGD6/pTYt5aY/o7KElCJJPZ93of8m5+SlaDYNpiVIg/9zCMgn+mDQPUGtBhMmXginb10AgqVuw+bN7MxVz1h4dj/65xw4A2KMYNgw513wjDTHejw3L9ruYmroBsLz9s92G/D8d96B2mGLskgh7uFviRcU5BMtU4EPUh+wQQdKZUAyZPU7fnN/lUEbU3Iq9/kKX/JISqs3Je0mRtprkaNs9KibeiCRn8Ld48oK1iWJubtxfqirpkke/9h2DsyLmKyk2dRX5naN6l6xbnXRhAad7thLtyTUOVT7Mt2kfbTSxnnHdZN+I7rpR4UmP4vJt3wpurmxLU6OzKVuZL4cmmT7fQNC4+LS+fbhtpt9PvSdMtjJE03w5a2mvmK1vDKc2t4YS1S5D2sifcBkE18QGw1tm12OlFNp96Sbfn1NswzWoucT1V3YpGBCDemnC5PLKHQKiDEy5eniZczqlSa6pbZMzmnmfRippdqTQhZSYcSWHKqs+vg5no7Dl3V2aCLQv7A8+O7m+0T0mpNZ9VMYMmib9Nn1ThreZ54jV8DkU+WOplpburGqRQNIX2safQmZdPoZCAlHxTXj6D4gE0g6IVNYOOpRlUUjIu0ISznDcHCTBKsljd86WNK9kKNxGfJPHasloQP+VzICuZ3BdB0NInPtwSZztFJj6zsc9oapvabBa/Gd+8UVJVsxzeAmc5yJK2PXPxzzRz4cZ85tKhLlz7nrn8kNMs575q92G7D/t9OK5DPXtEZI+o+DFqf1E31lnbBmwqepkLxLTqzKCO8hTH+VCoLmiw1PemB+iZr0dDqs1dz8G9NurlAEkgWDHhwVT4kxGcOAHDEfignblFeWk7vIYqMt+mKNuMqYtLC5jkatgmlPr5EhAfUcFk1PEitayzVHEYLsgK6z0341uaNKmeo3AevZJiOPVS1OEKTFYZs+xDwoHTG497GrkituxB4TRnlWEMVmoJwo+yknfAGJzcBuREnNuQM+Wa64fAF6MZ48osLulWNKYhEM9qOpc5ofuRal40zMMMhgGhX1nyGq1LsUihbl1G0qzSHo/dHcY031vKWEOmVsuTGLPOUlIIuhsuQaQFawtDmqmyKr19kUKwtqqBR2ZelIo9TLrtzjn9DyjV+aEDIoUU52aRLO+Z6IVq08GK4FbKNjrzIDhZFJjiEdU3sbRkbIErC5Gcc/Qyc6WWP77KJLzfQqVMNoxEi9Eah+O9iSv/HRbEEjqlap4kiHWW1BbAjSgCtZf65ntyCLdqpYaBGyoJheInWSpZbcu6eD4UDcwCLyHh1EfkK5pbpIMCHWw8bEimnnOx+uoukASF4xImBc/VKQ0IYDmYYSL7Nu+jJW81TJxdHNJkoyX+IA8zlcV6ZQ+QyhI2YHwUcg0y6Zl0cCxFb64oP6+bK+bzFXovCcjlS2lpRFGgQYGfJw1fnW2KYuoVgLGLzN2Ny9Y3BWuwuxLO3Nte8vJXEUUQc+nSsjp26mTtHe0qbctjoqNp6UTH5/yBNILeF/lWTI+QM7h2RsPTI1d9HQV5pUfmzo+Ukl19Fh1DCZLVzC1X81oXf7U4R2/wWaRC4xJq1FtkyM97V4KkYYJkP9MqncTPwl+6RqgXPEGNK9rJ+F+5YwaiQ+VSSsk7l8J3LkYdF1alUBrrRM7y89UgM5dTTDKgid2BU0X5msGiptOw/KLBrLPktUEyTjmc7kkxJMQZa2N2cwEjeKRxTTPPiWG+1Ytd13KAd+I5gjJdHG+VrVKGSryHrNNfJx5MrxP+oHnLruptmr9NrBrD32ZL2yGCdqw+Std+YXNdbwkKHf6WVr1eE5z+WEqG2E/b74ZSr4OyQ4S8DBfUZAF0kGky92vCJfw14cf8NXVurZpIdnpLWDujssqIollDolkP6tI66y/H3w21R7cIurKTq3pOUiL6Sr5udeHh0vmZMudqf2yV9QLgvKr4BugExTcg/Sm+AUdW8Q1mPJkTY4mS/mCrV3yD5S9jiyYDZFhdbSK6oh5swrxZ0V0ysHCVtgMeAGUQI7X2NCbsGQuhrlpMuntfTRmzwFZfRLZ1lmY3XHrpdUMSWWH6j3McNJPYVFRELBREtOIyYrAOVOcmUGhKUHtQDQJBR/EOD3yDB48IivjDmN8t7d+T7BdylyZNxVI8K4QXg8SyxB2BfQGheVJuRnegZSYjFZQo9AccTy7yDEZoyar7x3ArTSLZaMnMIILrm/ruUomwEmL+1bQxHUsBpyd57GE7HQt2NN9gqSLGwt1pimpuEsXGTlWscA53mUebZA4LBTc9sszSNy5UqVXLcqPDqYSBo9b0vtuzXxLXSEZK4hp5eC3qaHdJXCPUlLsDPBk60aJw2oV3kT7zRX0Ul7iG+idqFfYZXqHQ3S9CU6miywALf8GoSu6DedA6HqmyAglpuMh/VVyiNNag0NWT3rXOqqkVeNJzum3p5exZECUBUJVavq1UVjt5iIVNm3P4SfPtvlnAm3GGf5aqsc/xEIbMyhKO6WEXJMskWk2Fb4lWU4m+ujl64dwBlchyCRi7vrknNAA002LffQeRGC1Jirq4zrkKNlLfS/yMq5OrnINzKklqHTGwAEivly3/zX06Kc5r6+ZJVQAcP6UxEAB4UjJLIT3ReltS04sqCqrGsB8heOrMZ/iR1skpIR50+MbQUWqevc99lk2ymM/YggQzSSSe+xy1l3T78KdzdW/hJUsS5HC5VHEXJAlby24cIsFO87+VlDTiW5KIWf9avqCb6/vhD+bwO5a+H39OaX2IonJbi9crCT80KHu5Hw6tT4h5gW6i6cdXL4+7eutv4sM6Lant7RGVtoxFckzrHF53gfrp3GGTu86Y7ZoJiiZ8D4kA0uzAcc0y2Ysa22WeTcM5PXsuTl2S5Q364sCGoLrkxJZ3xOBW8ILtrYIXxG0KXujSyr/F7KEwpnrSP9PaTgsr5iUqOctZwVdWwetY6mOfKIIDouG13k7sLhud1cjA1qXgo+7BTaX8Jd91VQY90zxvo7RsxzDfdtojKuYNyt89yJ3oJMdocvEEqHyU6mT334U1rb5aQ+vyjXJmnka4jPKTlwQTtx4+YGt6aw27PLV8Llt5ee5VF1MnbXc6i6RzH/Xk+RxfODnqtAAjMQ7JKy6cc7cWt19qJPjQcbUsrO0zmeaeRcbtg3d/RT04WvuIv7q+o5eYcLD5Jkqr09qzuVGibfYzgB1qjS7rY/jY5J37unLcfBdtC196cLiu4PAyl2h3/OIbK3k/KTjMlCMz36d58itvwepR1xUSMn3OtM78FQe2nfwCBtZjv7LjaKwaX8mvqJY4qE74pLyrs5yxhkvhNJ85TCo3mTrc6mfDroTg8ibhfkX5wLmbBP5krqlYvUVK3ioDAJl17ognZdBtS+xofNvP1AZzXE0DUKW3B1Nung1E7KMGMe702CAtfSVaojrjoNbik4ywzkoTaPnYQ9Ooe2yFKPvMWyEqT0e0lLp3DMoQSEbI57WGYLmwBcz1RUYpe/sF+JQ/I9SF/Bn7l2DiiEKRo+U3QWOdVhljuo4w6hlyE3PbKaC2PBtXFIhi7RTOw1ikr65lYxvaoNaY2+hj5LwdW7zmA/l2wnodNoa6e5H8viqqq3qBZ3oQm5jRG1uK0+WGk137hB3DItZ3LaS89o5h/agCibsQ+oNzg/SOrzxHIwqfKa20yyEwqhZsHoK8Oz+9K8mjevlWsSPF3rNKXOqdlsZGnXNCrtX2ofIbbJfGYjS2mV6lQJGBpdpCFXa+cC9uTM7uUGNhqRZzmKk+qwZkfVYlviJhJ2BOWcfcn1q6PpWlWusqZV6f1vtT8zvjEEK097WuRWXR0d60q3W2ebdQ1E2TmSzl+uJyUorAZpV0NWkXxdOTypxJZYx3NzzWJvvQA/jmmU1UYhRizzF3pmzsIBpRmASrMUFIcwqjjxsj2rMwTm7d3A8IKA3Fx9gV1msJVfDC1C8VmS2bb6WQWzHeHqQu+P4Ldlcaziy0MCZrwyPg7mZPnB6kPj1piMoAqPieCZ1QoSuCFGwnIWm7/UtYtGUct/1LspxR5LEAIILWGBgbaD/cCyWk6ZjgCtK4bK4KJ0rfgepg8r/J4eCrM8REQnsTkNbZ4UvA73k1s6DjjlzoiYTBUfVJOXMb9xyqVQSrbqP8U788K/F8koi2Xn5NrBLc40NJLJr5fHK9VJsx+aBimUeSvrG+XRAU8PDrseMmn5KxxR7c0nRaKbB2y67IohNRk5aRnb0tVFkZlIdCpxLdkY+PR2ifMTwTZ7TkIOBZqirE8fZP5zuj//N3xjvK2w5q1RYEcuebb3IfRTJw+o6i+2MsOlh5K+p5SDBlXLCt0ybwlcr0jC14xImydBfQ5sOgytLERSkiF+C5ZFzMh6naLJOZ91kMvvm060sdaUT53UEt3UKE0fEZ+3ZYxfBknae7RVzR7ocyx+QSy0MZkDbpI3HhpkUI+SZaw5GNIWOlEr7ArJ4B/YNUqamINMmSxqTC/Kh57C/vjp29M6Tyvx4v7i3amzoBT4oKjJGDmYf6awfA7Q+baKIS+3XNGHVL6pcbgop9fLzqiSsaxX4HlXtJGToSTk9qvyOq/Q6p/VKeELmQ8Bv9xPOOGr2DeruPOFielTdMZsSkA0nZlV+1N1bNzAMmTG7OQatXwi7v6jl5LpPJR5Qql9xojgU3LS1t7kQ/EhttZM+laV+MWqBwrfhsyKZu7FgaJEY55NBRlok1lQETRUvnvfugo7Bv47CmuAcdvB4ot/H5tbfDhJmZwGMZDvBGFty+mjsGDVQmfgSp9svwAqnM7B6Ozj1ZnqvLzvjF/lFZpeomRJj43a3O93mAMXTlQhx5ap4B6YXanIozBXwimZzgmLl5vcKc8E1yo02UWL/CDzSeiC+YmRnxYq1RNDXGJviO7VnHWquCa+S+xb5L3RFNuKwQTTlNj4Ih3OlR8IVooqUjE4DVc7rOcRaiyfFM3Y0rE4t4ipApnegcOgQzbbvTLQHhNuYTgbKwSHhYYT6Ra7GphlqORYKxUhcvamiPk1gCcn5sbs6FhV2HEJ6wDxTCs2213LIufirUQhlxg20h7CZKCsJu4jYWSSxtbXM1GS7xuv1mkdItQ4TRvi685RBkuO9XrWJrv2iQfK+CW3bbEEtuGQSx5LWayHujXYF7nTtwJxxTySJ+KtQRFM0dbgmwl8Mt8QsM59VRHG7ZGQLVLQXrqCPWyVQP5jootw0hjYZfwfFH48YfjRt/hAXL8Ud+OK8rMNvdtQlI16fEPk7yHoSw16cqS8wNfqTjpsCPQ9vvfh3yvU+meGjYN7+UukdUKR/UHH8ERXaFmI69qqqAOYBpEQROSAQpo3S8nxxXsjt306e5949QIpecKGI3VUzX8B7JooTW84KxPFmYRjKzSL0O21rPO9ApFuOnCgpu3N5bc7wWjdK/HjyGkdQsfwRs3dLqve69+fT8FY1QpOXchmet5jJPS2D7q+cdjidXHUyRNLAqrvrYdhYG06xWDoD33AOsLYdn1XKlAsuVq+CeW7kKZonVLkLLMpP4/eJjJNoVibKGfgBn9V3Bmc3X3NqmB2kZkLxBreypGgjYrkgfgygDijT29VUmkkvKJ1e9myTpqsAUvRqpD4XWRmFDPzQdfj1GDDa7gs0HEzM/LQCTKauUWCrlOouFA6GMEGh3VomxZLXNiLH2K70k4XFQQe/8kh43lXFVO+dVMYY/pXdWzg5DTgh8SEW33w8ZQ84+3nAyffgKjk2uUk3NU00UThfXGJs67sHntq5b3q97VSyFbAGXLOhSz+0CSo3Jgk+YDt24inoJaI++c1DkdYvdYdWXWuT9ZQpL1+AhoOddujBfVjFJehZz7Goatt7uPQU3Z1nGWvbsEmzuFZjBRtbzTGt5dgk2cRpUddle15Y5ngbZGqlaMz5UiNZm3v6CZBR5nkkADducK8+MFAoSCH+xJD3gPyYEB2SMPBEFUYHcnKt1keA5fWoRg9ufh35gfjvmxqZT2HU7jP38U9XGcQmviSR2rVY9sePADuNawd+dJAgMMTO+pHqiM8GgzcAjKIdnJQ6DfGve9twqS3klrNTyC5ql2pwqYmNXxATRKkzLqFf1PL1XwcXwBmT9gmG17l5k6kGM7P8CwyrMMd44LM8V5fkLfdVkl9n6Iw5LLlvqNw61on3LuvpItysXOQVysQ3AcggOH6ZJXLv+BYH1G2slG7HWf8OuPAHZ1u4BuJj3AGKx/lsALBT1q3oALJWyegAdRL96QNws0iTiEfDDs+r9W1s8O+AH8bEDfsrYG7G1q2NIazhy4ipb2IXyKRtTha9pel2z+ptZ1zIJHQcVI6HfJpQPcUZOEpSoR9ufqgBJaCbxPhfGOWVPEnjS3IE/gv0AY1EVJBaFe44AShf6FL9Omj7qTXvpzRxpxBZAH8thQXu7/bvJ49Z6pNdi80g7u7s8h4vf19KcliPhsudw0VicL1vdxUp2XSHhylVsXruehEnKS8xrz87o1o6EQ/RXl2/qvLCMbqVkatmbZbONcQTR199g615Ypry1LPfy3iyDjKp3KX85DeBad7zA8Eo5eGZTvbCMEan3ChtZLywD/eCF5bXrOk6a8cLyvVsYO2xSqd5HUfvGC0enkzHyS21ZPiecq3w3LYgywXlbjz95JIJp3fFZ1WvL9O3VI6LhVVveQ4YYbJVQr9WyZn8dECpSQRky9yoo84iVXdneTYRdHIgqKIOx4wXlZtcENNrVNOtXFXm1q4rcriIytyuqIvNQZeTxlUWLDirDHVSe6sjuoPJVHk1ESd7lUb53AJkVkI+LAT2v4vG68IT/dX30uyrqbInedmiXKQPEhDDNMP7nBdJo0jJoufJYMR6XH/GoITUMg3BtTeYe7eBs+4Zk7Ocfbe9H2qaL1L0dgcmTzMhst4Nt8McihZhjeV3tQEkX341M2w/P3/fdyOrXdmR9LTjRXmbQjOOxOjyu/dhm2l3VUJBG9KR454oAwBvzNcVrkJWAGZotfZI5QaNsmIUpdu2sA4DkwscBW+PrvuM+yj1DnjaSo12z9rbFQe6YiGbg2kU+W55MS20n0zw4R0za5R1b5CtN8CdRqfJeIPtwR+VXYZjcPq698HfeabLhhWHs4ZUxI9CEITsIaJnVrNy7B+9cwLQozE2mBpPfcY6jXMuDR+y0uFbybyvCgQipDBdg2sprgcykIB5zTRvZE0gKxrChVOYK+FaF87C/VbF4tmvpaNvCpnO9yJojxy4WU2tMIYHCdS2DqIOqWMxD5Zxwb14sTjtAcy6Ack5XgIatyr2KjLZjNfJPlF0ic0zF4tSuYjFpVCoW61MxNEvdxWI6talY7J8Sp93GLhYnhXttmwCbynpWdwl5fqFSojvNGNovowhx2i+P/tfALhOU1Jt7B6sH7mULoZ5misQtELMl9peYb0d6zr4aG7TSVBzGfnv9NQws0hDkJZHFxRpVHW2M/ihLSxAiaKDeN3sN0/ESrpjh1l/iNeyavlIi0XRn0AGmkCR/bJuxi3Mk4bArIN20ftP6hm92QOyRDzzkszet2eHqGwgPForaiO9aJkgUeuTYnJe9865UELRd+nZyFpAsKfkrtpYaCqum91tVnIReEj5b9X1hy+s1n8NvzKHYxJywfk+b4LLt66saspClXIzJkcmsG1+lH7b7sN+HQ4df7yDuPGl1U0DMPaalxqnSFe1xBr1uCmxojxXIsbFXdJQnvAOVyLmN4pjkQkrV0nBvuJElhT68EonvTZZM+701vJJcHK6qSJpr4bnxXJMeDnV9keZnaYV7vEoHK++0S7t8muKOXZys9lUojKY+Y77JAs30jxQn4TtzKk5G054x82txcp70yaOlzqBnzXNxcp4EyqPPzZDPzVNx8mR0M6LRzaBpzWNxkmfrTl2JsN6dg0bcbPdksLzPmEYaW5BHWL5cL5bv9HnAxIjg3nUTYtLyCQFj3pF+gAUvZby2Is+6FHmwkRVJCfOyA31Bfx9KFfjqmpc0eXR3WkmTuSRPb+aSPHaBJYEskyaPXespsMyeCYMaq6c22rh2WmCEug4PpQIkxINqbcmCwkxX4ikUfixihvrhug5Lug6FTe55pznGdxYjGg4Nmgc9lj5n+1P6/FP6/FP6/L9R+oxGYmP2t9Ln7P8ppc/ofjbmeCt9zvEfVvqMzm1jztfS55z/lqXPaMw25notfer0/2Olz2gdN9arRMBKf0qff0qf/39Kn9FncKxXPYKV/5Q+/8NKn9HPcaxXrYNV/gelz39qwXNW8TBLLH0Wanz9A6XPU73zvypyMhJSDPiP1Tuj6eWQ6eVjvXPVP/XOf0G9M/qKDpqEPtU7l/2pd57qndFZdaz2Wu9c7T+/3hmdYgdtXx/rnav/J9U7o8XtoF/tY71zjX+Teme01R1rvtY71/xT7/xT7/yX1Tujg/NY67Xeudb/nXpndKaetJl+rHf66T/1zn9ivXNGZ+9Jn+3HeudMh+LZjN7ck0bbBbznU71zunV3I9dxauaQUaqaAhpILFe6j2ob7tS8yZJcDAu5oIXpGySUmB4o4GqPT/sSg53R/HvK/PtcmtTJ/3ZpcqVjaXJGs/Aps/Cn0uRMB9PRGX29p3y9n0qTMx1cR2d02540uX4qTc50MB2d0Rd70uX6qTSps39Kk/+epckZHcon7cafSpM6+6c0+ac0+ac0+Z9fmtRo/8vksF5Kkzr7n1Ca1JP8fvCcXkqTOvsfVJrUA/3l+fNbaVKn/+1Kk7qtvzxGeStN+un/t0qTuum/PGR9KU3qbNta4FytKHVELURfnVdtXkIYzeXLe/cCkalAhKjLZZ7N5csxgBW55Uu+vI5dPLrWZCRgXMjcrjJStS1k3uoWMq91l5HqXkTRH1y/P82tZL62aCS0/bx4dGW4i2e4qWO19cvHLjq2vvXLobJEwTAJuEi/vF7y5TNfGMpetUipDXYJacH/ePjmbyuZ10vIHE/pFSZ5MvWd4HEh811Z5F/tWtK6SknMLaiUVG4ZcyaAl7SSv7pF3HNkeykg6qzSYZZdITF7lA6bV5U18NIlosVu4Ok6iZ2l7RKSL/XQm1WHYa4XTEsLlTVa2dLmeW+s76oG0gvSLK9bHpQK69I2T8MHVHEbG+Tih0+Mkk7i9EpjcGmb57sY5QL0lXqKeoGDyQCJkcvMejDJd1UG+d5VGYS90q5k4O1J5Jwi0rvMuF/hoF8oExA87+WNXZuSg6LXhhPDiCXR6a8deo7bv9xeyoE6+6cc+A+XA9Vwf2nnV61dnf5TDvyby4Fq9r+8phdpXZ38Uw6M5UC1y19a8VVGV6f/s8uBesa/tMmbYK7O/qeUA/U0vx++vInj6uy/QTlQN/KX+36VwdXpP+XAP+XAf0k5UN3vL921vJUDdfr/RjlQz/qXtqmv5UCd/lMO/GeWA0vcPBZ7LQeWU8GqxB1LkYpsPQuw6jTmnIziACsANLxFGE3HWxZAss9nnLvyFjFHooJ5fqTWq/xtl3DWLD7InxezIM2rkVrHKfTy5adUmYJPDT5J6OO0UG6uTty2pCcSubIyh2U8b6M0eZrDu4WJcsw4U5bdDtxukLHG48ASkhlmmArJRYYoUq4ZlbLq/AWioPEHyX0dkL9u1L1On+23y0SoXHa3u3mh4fn0J9cqgupoltsL5gRuSpI70SDVjZWVl5rLCyH0nmEZAH5Wee7mKlwaE3oaG7Wm4rrtQy5EidhvYIITC2dIjyVaARammdEgwpyjZQubTdUUXQxneTH067H2ZdWGrKskb0TVWmgNyTQRujQCPt2y1/qQnGNxABOO6i/YnFaWIdDmlV0rp73ZRU648s2nVX+qngOxKhsNyqm1L78/Wf7i2VSzYR6Dd0qzHL5utIbcf/FslQsj/tbczx5hpV7WttKZtbojcHaTPvSG5fY6sArXws2/ZSWB4s/s9ZhOZIaNHmhDT4ldUfMOq6U+w0jU72r9NPYzfK/pXlgP5nN4ci0xMdfq8qdspiffTsR4g+163qZ3BFVcviNYPar2BGl0d39HxUm/R4cfDrpJl0jdvAyLcVOdHQKBVWeHgB8R7DjUwzsbvNT+02f32+saaVkuqIky+YPdwOCMmqu/8sHJAyYpkGX3gWw8W2Qlpo6jGAddWblEjAdVxNLcZvO8Gl9v6o3lX0wnKARzXmoS8cbQnZzE0G0mxxAcFKYmJEwSrKUhLbj0fTgRqRP8rKy5SbaL6khecYPiFBuxpOGO9MhOr7m7xeJLwRrm5kRMbyb2JJqtyuibaHqOIjSV1+toiJJYAUOvYySngckVCzEQ4jvOt5Xpe4bJnIBU22P6wWcxTx1ofsi5aHqcUgPntJ8z+zX/PrNCJg9Q79n4qbrfYc5sRE57Wb7Jle7QxXuyG0XLNICvlOtyptM0Q8Os7qJ0LnsJrZBkH03NdQ4VKnaXpNeOSZYDQ/Mtje2V+SzT3ykrF36/pe6Bmos6WPaEY2Lckosm6nxVOwcv0XdnzJogmYkonG1Y2+btMljx6ZB3s663WlbfP1Bz3d+t6j2ZWevrbipbj/FOrRrL+K7t3p19DsRDVE3maNM6yv3pdY91XEuQythsPdO8i5s0difejuYzdOGsaUwrF98VQs5sPr1ipzTX9QtrLw+5sdw5GSy1vK/W2l6dc/N5BdtJuy7Rza5DPRCeuM/rd4f6YSpynd2fcr2BMQSQfbvNBm+ndNq67eUgz9L9fosGEK1avUvKwHHuLyg07tjTZz4Fl8isVZWEI/UM5Ahy349ZioII/ELhCkJzlcKwQIdtqb8wWeqrsewBsUMuvs7yq3pX/K2533ZRN4OPaCk+jeDPlu3DyulO9gOc6GG0WWrafaD4IszDfN1Y1TzCQ/ZDehnVazCVKk97PHvVDAmARq3X/VYuRLxfGNbtT/m22bxao/WpehG/K9M8OgyscX86fQosxomRz6aVmr9g6bozy9fvqsjPMEVl95zlNuy3YHyBVZ9eXcD69aqsX83gyzMNKVa5D+9b0FTEHLaCCR32+3Dch/M+hDwIAjO+KX7W+KawWSqNj+uf1vvQ7kMGENwZaUHT4bi/MO/DdR3m+2rqmjrcM0ZRmKF7yFfj7pCD3+334X01dhy+npbvq5X7auVq3VbuZyv3s5X72cp9tXJfrdxX45SuJy5X12s13Yf3s9X7avW+mlArzH7WuyXrfbU67k/vlqz3s9l9NbuvZndL2n01u5/N2v1nwsAwjXRfze6r2X21drdku6/W7mdrV49s2iqjAINU+PWF+9nU6fXd+2rtvlq/r3aPitbvq/X72fr9bP1+tn73yX6/t3tctX6/t3HNYL4q8Lvjvtq4rzbuPjnuZxv31cZ9tXE/27ifbd7PNu+rzWuuavNuyXk/27yvpnlYX7ivNu+rzftq6+4lay9zpSke4P3eM0lbdn96X23dz3bPJO2eSdq6rtbvuUThvR+W+7Deh3YftvvwWmN6GvfhvL/g7+0ruxDrdKW/4HjLpR/WHaCCyUQeNVwFlswJK5G9xlyLbGqYgJHnDvKDDDFNmDGVG5iXRWTUPgjnaVPTkJL/uuNYsioU7sJkeE6qjFNSJVZsikSPR/pp9unfP3IQpvr14f4RWrCgwY9Q4nKwYPn1of9IJS4fE84xvVMPHiy/Ptw/QqARZozzj5xw5zVmUyuzqZhKzj9yEG369eH+kao7qQ8/clBt+vXh/hECvVHFrXP7MP36jVParMa0WW16mqd2PeG8axwdVe5G2E0fPKh1+utHYoet4xVxXk8dtsYOW6VygTTBgO1f/JFTh62xw1ZCDTHFHYdOPXXYGjusqcM+0RPs1GEtdlha0nMeO96JnTpstLGfJuAZ+topxW2nDhsN3KfJFAO8+dMrtlOHjVbl08RMABMDNcr4iu3UY6MJ9zQlest8aNhTj40ex5PmueOn0psx/sKpu0a33WmaX8fZ1GzaqbtGY9lJ/1SGD+cfOXXX6Lk6Td11Pswlduqu0ad0NnVXIDhOP9JO3TXag86m+dUe+nw7dddo9zhp+Vd6Tj+jwSw6/sipu0abwCmbQJRdzz9y6q7RdG/KdA+R+PlxTt01mt9NOsUxD3VyLJzt1F2ju9yUfRwKvOfHOfXY6OE2abBWAH4//8ipx0ZTtkmDNeYHOvCrX49z6rHRlG229eZmqNOMp2BPq4pkW46UrW16aAX8p0KrZM3tDOHFSDdDMCcYWXXWsxhZ1Q/NNBVZEVgjY8O8LmPDKgNAGBvWLz/cGY3hZk9vzoZ+urrjsnul+xNNc2dDJif5aHBy1qO1C7MOqKG8DWexHTUWd2o0cR3wbADNbZvDTtgb4RGXfWOVx7RsDgmEks0hEuFuc9jHF/IhuthN+dT1bOc+1DdUOxMTgtztNBXRwOmp27e+dpcwESaq9G0AvFTPGmt5DQpKLSou1S5HS+I4VTclW08gmF2mQVklNedVuKOndS9+IF/d5DWOV0bEn6GYJvRVV1Y8U5QUWW6AKZdboLbL7pR2uy4Pk8qGgLJ8logRJCSeZVbBZFTupetyGVt5KcvyFFTCLHkaZKG97gq61sbpYiuBFFkmhILJMNTXmcpS69WN16ItZ8+E9KCRehY2FLuePO5DKQ994XOiid7sPhWvh7d9moqj2daUnVYvD7NoF0OS5eqyCXhzqhxTP3S4zWxWlGGZsIcRJkAvRqt45OORwjXBk8BIM5oVusJst+15ifpQyfR71XlAoj6J0Lc296doa2PBEZnu9iG6CK3ePeeHitenza/ZIbptTdpPPW0au2OixYCShNKoTliUmWMhOEgUAOx8BMtBMclB7F7BK3KEHPR43TMhmmjOq4XUX1mxSJTYnb3sWRHOyXxCo/E1s4veLl3Ej/TdV+I6J2stVEkXMFbxaSn1QfQxUB7VaKErik5jjUI4kEvuSh96u9f+BSKInlhTpleDQDqLLtE6Kx00m75HL8vRGnN7ZzLZRBNLIqtxk5hryaDjBHBzaCphHUiLEUzOx9K7wOjHrFoRa++5e3nXdRJGpq8w/TIzLS2JsBLYeLEQTpAjSqylE79WxxfxNzpmTToaldwfCCg8zTGDbIi0ulb5Yaa+rrxtrfsmmxTKsRHyuX4PR7Gkeld1sHFiXmJPw6134XaRCGSlyEdll70tH73vkXZ1ua8ni1EHnXqAZDnuG2TNlJ3+pdWVlRQTCJOv0sEsfJUooxfBGHve0nQ530BRgeoBY9PbLaypCzO7FbJR7dMbx4KDYo++h3KufRbwqZg6qtJdeuONKDGZmNa6XzO/YOwyHV/QG8/9+43HQIp2OgV99Dy3bvgo2FzC6RMcnwi9JvoNA92at9AovihiRzJJFCrj6rnkphBVSGisIPaw0Gatsn4K8YdGlDyQct53RtmiZpehUGXTciqWvjgrUuA5Dc3KGBtL7HvAVKtKR/5deqbrC5UOzwjfkPPUUS+I3sqh9WL0Nl50w3XyL+hTRJ7sF46zLGR48Bnm1DxNnKn6GJlpnKYBhEJHEcpUKUCid4lgI3RSszNXqkZLcGD0+Vo/yb6GR3TnmTSaeUwEjdO2K3rTzPGqRT7Haa2PZi5z1NdUwzhtu6IpyqTbyHOqYZy2XdGhZNIDoiDpeBwZ47Ttir4RU74RQIydf+S07YoGC1MOCvkp6ThO267oEDDlEIAo5dywp21XdAiYcggA2ud8J6dEQRTbn1TCL7k/hHPzlCiI6vlT6vmPm+KTev6M6vlzltet6Ek9f0b1/DnrW9jCs1wgFxkntGgfnC0LOU8a4X1UQrMqeR5YMtonwVYb21dC8TCtGnmF2E3YpxP4UfcXc2UcJAlQbIs/7ZswHVX7J5XfH0MenmU4ufKe6oFF0TIPPqIeAwiLQp0Ufx7wIvxxuO5x6gKJUhFmATx9LNJrmx7CCFLlQ9ina5VHnQJrGlUs+enX88QxO9tr/OK69s/xC6di4pL/3kjm68HiPEIx6sfwhWc9ACWahzEFYepkmM8dyfTmawsZFoxfUH72qAWQVC5PgARXZxHlHcBgq5DYkYt5AFPqDlkBbmCsiSSCkXDYSYfceYNRGAGvHd2AMLIkCzKvUGASr2PTFXc85Onq0yQd5y+OUJTpntStzkD8naeX02wZta4nVaNBEmvY/Xz9xmmyjELTk6LMANoZ0kZx68uzeP1peSwATAfkFcDgJjVj/XSShglM6+QwZKIbWcnLgNp2yjQQr4aEFKFr6H2FyDPoZ+AXvm41TsmU883YtR3bbJ2m5CgBPKkIm4EmsYn9d/yR05QcVWQn5U65l7bPyrH6sk4zclRInVJIpdrSaW1Ypxgi6ndOSlFme1r+1ymGiPKVU/KVmADOd3KKIaLe46QGooSmOjSG44+cYoiomzgpSJjBvzs/zmlURBHDKRFDe1r+dTpzQ0LkC6NoMDrRUReBr+zTmCTZN7F5z6D/DcIqsZfqn/5Neov6dFP6dE+LLs+Sbs+JCd8zCvBgf+xXBSyzS3encmUjkhIZ5UGUfkaik4dfNxNGz0oaPQ853JUOo2dFRbOVNHoeyqjrpGi2oqLZkmQZk7HHH8FpkEBF3MxcbLHRYlMlzPXY5n2ACW5KAo6rqUj/UlOB7Ovtk760wVeUMFuSMLN+jl9XOozHFTXJFvXFCgWavgfBOkmSrShJtigvBvGF0wZlnRTJVlQkW8md4I4Rxjopkq2oSLaS6ijn+Wmlw1hcUQhrJY3Ffh7QKx2WqBUFcxaFZLI9VA91mrzk5ApZdasv9OZJsJJdIYuMEEWGiQBEqokTSUWq/PhRdgrwpSJyEfLXJAFht6pUO4gOisJmJfWgkGMInI19wO8Tiw/z8mKWslPiQdltYmFE38aNYBFE0hdHdUuxF1LwViNWmkEeI6bU9w+UNO5PKZSCWkMhy2/xU5Emv2R5VpTlWVkTwzjvdHSa3Fzk7tJmvzINhdoDFRrAu/hV9nHOiLj0yPIwQYSCglL1C7JYoiEzrmJr6LkRuwG/zCaQ1guboBD9zya4vjDuT8VDnmoCRYRsgqKCBSdhRodEcKs0lE2BPiHTFNfxw0pjuBjIryjos7Jmw4fauE4rgdLL3SziP6HelV3Uf14iOc5GKzuVR0jnUkxJ1TSFn57KazW0sX7FuMtBy9IDj6E1034O1D+39n/VxEatB6Cxi6R1sFWEbowLT+KqVwt2HX61YFwKspaC8TDpSkvoqwW/G07FMRpSlN1DTy34X7abus653Sikx3b5X2vCeTfhug4lbXBozbiEZS1h8wzZ0mlyfLiKFu4xpWxYEWXsvD+V/DLLQ7U7h6NKZATLq/6atSiut1+3FRfFrCAVwI0DukenubuWZWNl9kFkNpgxSuCmftKsm0U78r4r0klR22wsHPOuIG+KwiPIURAU/LrBuOJmBcDzIarJjsRhPhdZ9rsFvd24Sn4ALP3vt+DXXcU1XJop9gBV0elfzcYNM/Kp/2vNFgOErGh9Pg3eU4QQxTKWxDJIij3+yNzQAmCLL9a20h1Y5zi8KGBJsaGxecWtnrjXdW4VHeNoteY+KrAPyhyINf+ANFA9a8Kl6mZopx0SLGkfgUSmSgJSXsmldTJI2vqtnPrYh8WuT22u63Dt8kA2pqX8sNyH7k/61ZgxUsqKlNbTgnTIfK6oVrGK4oH1MBrKaaMQpSMWyfmUpDgFwuW0T4h8/kUSO3QSThhHndWgHPNHdqqUw0EaDjlLNAMKVMDjskujItooeDekgWif9KWCsSJ1fpHHPR6yLDpbmRNt214WArTGfQt4FUMAFHKYG1HN9WcKicLyESiMyI5+3UicR8kFR0ddnxoTF+vEHl+RPb4I+H7K9uhsc2FPQips/gzqL4LzyoqY14iMWgCV0jmDQjVQluHqamQxsn60yLQuHLvK/JFyRlUZRGRVmnfb1QhDjblaxOZ0ztLPDt5L1fAzTgBMMVXyNF1CqSmZZLpLppUq1XNdNyFrrE0CAZqIb/p96mQUSr/mRj2VoYpX0eFXq8aZWqh5cH7OI+a03YpA9kVQOqRaGsUR42+cJtOIY1/EpGeUgo/7vhOOfUUc+xKOHVyl89OcJpGIY1/EpGewnI4/csKxr4hjX8Sko47QPsXiRviEYl8Rxb6qMnVIpHcozsQfOaTqVkSxLyLSc3tI1up0Je8dpUlq3o0l7VbiJaTx5EKAqBFLpngwqS+1sck/702RLKJYjCHFqho5lBAQampVr2mUrDBOex/uVD8JlWn+LSvbcpxDtpq6bdBBqELcTZb6pZkBaVQFrFK2AL2zaRDDYKzLxCyTlJ59+8a9qEHGnTirzuCi3yHyvEJgNokfTv91KtIURuC5SdoVAxgEt+uwEFzylbqJBIElgkCD2OEnp6+OcpoZI0FgEeyPB60dqIr4G6esS+QHrKp5IJ/LwuvED1iRH7CI9Sf4qoFFGX+DswT2pxMvkjPwVgG37mCezFoZVjqIkHWse2xzvKlGiXW+KY/98E46ZA2+bi1OL2QQAHB1nKJ0Vor0gnpWQvlASlW2sjHrD9BE62lX03AnyoBmnD8lM1ekLqyqOSo/zFHV4yCv/mhV7uTYVo/Jq/AJC6AHwt8MEiXVw3gQGxXjg9eIlfpreY5MiGWa8nI/v/0TE2JFJsQiqyFjr3r+kdOkF5kQyzTp5Yf56sSEWJEJsUyTXn7IuvF024JOLE4WzlVEhvbi9b1B2WRhSJfDmKkY4gn4vfZDSbKzxoxSLMuQ5IsxWQNGmaCRUJbAug73CLpXgA64GOjh6xQswJBY2ui46GAR/A9U/kagH/GslHbE/verKeL8Ij4H+sn5pfA0sHxAXjoGc23pZmQSK5HWUKdGTcyUt0NvA+4Fphzqbjps9yHG6ChfE2DkiizyPjLItucbbH/3DcaZkbQSRL+nVLJp2mSRGSICmK2QkiU6EsXg5Z/w1jp2QyxJYhQPh3h5cdjlIZsUBEA5RooCR0tgg59MnsMBd7Ai9WWZIrJajwCd5cwY5HEQChOyPmqn3I28VGqfnE8m5W4azTrrUtal0FKgCZdNxW46z7b9PWaL7LP6V/gZ2TWLTBmussd52bbdBHJhJj+B6ktGNod61fVDzDm0VblZtq5QJFFpRK4iUkeCqmh31aPlpg9Z6ojVHDfO3JKn2yDKU7nbxn7QhemlHpQpfCrN5w5lH8qepnFp7iGL3LZzLZHx3LwZQ3OwB2zuX1EQgTyaYggdyZoUNYyt80WYHTL4jc9CHMTiOMAuUa6vALS2nfJ3r1MC5RXKEBlfW/Y/yvQg/YwvHdwVOUzL/j/2vnRHeiU39oUahdyXB/P7X0QEU6qmqPa1YY8N+Pw5kyP1p9KSC5OMRetWjUvYOs2aBCK4dvStJYRJSCPT7nj93N5Uio8k43bkKuXebhUOyKYqTsymi69P13gVfGGzUIWQvKANTAAliqRjMpe2P5udK6c1293UsEUQx0HJ+wAPn0cf78OvmaRWIQESKc7qbLedIfUFwP5ixQFa2AKTYx8vwxLTGAM3Qp06TymKAfUiX46eLcCuP6a9WH6OWcYRCFvkmrB3jyMMRjNoihKskq3vQ8dCOl+d2rtykIBwCXUgZzV1r2bjAQllol5Nl6aQWL9yMSkvUMk1YvjRSBaXfTTvCmhQ0r+pLc2aEL4qVSDgbCE1Lg4sDnbIhFLKAb+g4YSZqVJHYGHzS8GADUgm9QI6jxW7dwnS8OyUECeEPPt1bJtFj6RB4CkkZRDeJwclCupSreG/kCU0rsL3w2Mk2qMkZFIiCAc2ZxMCkc+9NClxlm6SXhN9sVx60awLYHWXQBeuQroJ709SHxPqo5S7ZTQs8s1Aej/Z301tlAD9mdJS2vRm0beS2hOxxHJc2dQYIjOfliyFn2aQBpP60VqSzpH9wbyP0phEZbxtd8xqVZJ1U2nN7oWrgD6h6Q3hDVLiOJ1hRwFOLNfU32SrSRSbzXwdVI7Fj0nPbtxdIWh7yWbwdD17U6OvjVse/dLRNAXqeqB4dIARE0SsHiscFk5btVMahhvTbyVNybFigpZUMxZYpY2agngoOasDYcSPn666IVeETVpI5wevTG93zXPUVBNSeygSrWBBF+mmZ3E0mFTu5++y8sP47pAGYaL38S59JN4Vib/Q+XW6yGik3FC/Q46RyiUhlMtYLbbv3/uLG2NamcBvS+QXGXyiGeE5P4gYRwHUQmKOXZWlNlX61xTSL5NBpvOdM39CJo2WSOfoDmky2xNTd9fuob8UlcVbJaRcNLnKqrWeqV+UNmh0I2+AMKnYk2CI6UFonVSI8QPuyB5k6zn6J+P7dW5+1STkvHPQkPnTnjUOz43dXejSlx29MWcpt2w9nw4FF272DksxD2HXrlAEBRr2N+Fi4eTVmKBm1ah+JpXc+JScaaigYPErAONR/OopuZv0WkRt8b3373vHysScAisrVIwnAJQDmduEctWR8DjBQ2zuqOGy8X3nCmNZ6ayEnD4RstvzgHdX6Qtb6SjyjnjA2/OANzm9ub9g43QadbBO8XQVy1juBdBESr3rtDKUeCJbwu2Zw5ssYKzZYbkgIg5vTxzeJOC+5oB6lIH1nN1NTivz9NHX59mpSHOYsjiW0MrPxW0Mi1WgcVUCwskLI1qOoCuWWTBmVVKhnCITSdxlo0gPYX5/l55ou8nFJKA6QGPui2fLctmkcDDKc8ShdrFqucNnvZ3C4FfkSwA7gdAKviouwSkHlKRKAysIUMukBNsQwgRAIao0FwKuWjmJrnDIDiEgYRW/sQSIf5C78SqfD+xXBPJGad0U9eyIaro91XSTgdl6rHO9R4RU86TNLdJmf0FJ7hElTT0Zcg+DqofR+4hypp7PuMnuA7sqvkY00j0hcA+N9Beuxh5R7cRz7/ZYfwGD94gGrieq7bH/AAbvEQ1cT9faomu9Ce/sGeURPVVqz/wXunhHXKntuVKbvKfXaSiiSm1PldpTgcCLBsKOqFLbU6X2bH8hlHdEldqeKrVn/wuhvCOq1PZUqT2VqxovwXFEldqeKrVJe3qtNURMqe2ZUpusJ3JW1mc+imMRUWp7otSe6q1vkOCIKLU9UWqv9Oe4iYhS2xOlNklPr7NAxJPanie1V/mzy0c8qe15UnvVP3vairqrJyzt1f7saSvqrp4ltJdyum9Q6xV1V8/I2Wv8/XGi7uq5KnvNv19s1F89V2Wv9feLjTqsJ6vstf9+sVGH9TSSvW1+fSlNRzSS7WkkWzQSyCSG4JSIRrI9jWSTE0JjsPAaUYf1NJK9bX59qfXwNBF14IFZsu8q0t1Mg8mkH+3N1jqUAwo2BaoE2/NQtngo/Q1DrNNMWfZ9MH6YdxpRHGNv6o6LdLGIkFNBEF6ZPEj7hvhe/MARnQVVjTA82v1XmfK+Ke4eF9B8ixte5J33IVowISUDRmphYbP2uBM/+sSJefu8LIkggEQYe6ELKwtUyC3q3SDDOrhdBVogW6Vy3ThMSGpO8NMft+PHMZky3A9FoafOku1t1QEIcOr9IAOuj0YTM+ZaAE7vLHUAXAFcM0L/ToJnZkw8s9U3MrQ+cfpxi36WEDmnv+GBefrRi7++ITdxdZhwjTo05wvpbNwd6nEnfqoRO2fkeBvHs1f5XUkwUty0n6728ZD07NwvwNNYYwzEzUVFJCodUXuFdfiUt+r0j3v7PYOVJCoPNt7Pe7Oz/xX3dt8RwJVV0IHfN2e/9uvmNDPOcEKy04+LZH8R5c1muDux03zEQuEn1pfbr30sC5oECKAuRnGsQXj1pMkBaUM7UwhJu9dc2Dewc4Tc7LO72s/+uk1NvjHg2k4/LlL9RTg5YnQ9YU5fZzv9Jm5JGdRuOuerG9Q4aO2LY7kTnk2EIbKfAazCrv3rVjh1wjE5mLLs9OMi3V9EIfIKo0o7/bjI8BeZ7+GtnX1cY/prSCSzRaKudvZxjeWvwWkAJUewAB738Qw4vg/aNcgbQY4pmHftLHVDEvIXHKWT+Up0R6YrmX/bbZ6vSpNLZLIXLOT972c/Ism6INUByiHN/340ILMfkNkYryEY104/LuKHS7bhEs7udrobx9tIxxQ5oU8YV8gCNTjSWzYT5uXICCNR00XwQb3duMWdCTzOfkiNk5L8uEs/HuXxm0LrZzuL+XOVw3kCrmgtO3QvjnelX9MsRgQoJUIE3BMPfEmQOyJsNocTT/YDVYyFF6yRnX5cxA9UEQxe9F/t9OMifqCKBADBn/ibRiM1+5EqEsAL6slOPy7ih6rA732HNBM7/biIH6sCv/cYQW+n/UWKH3DyTewxgt5OPy7iR1yRUM0M0Sd2+nERP+KKRtwO9zp2+nERPyCKgvv9MmwD5Pn3wXMR9dj9EhaUqMcW32MNaL1fwoIAaP198FwEvQ+1iUBOxc5mM42T5seX2LlqafXQkokev2QRNOBReROgB2c3YUFwB9YwZ9V3UO1t9vm4Vz8wBOgGqzJ+YGPHoJL3w2w+liqWcHoTWkcPos0N5lNOVDgEprsmT+DnTM4BZVSTcwCy3zQcqLn7lGiw3/91v4qa08tsULbN8KgS0WnwA0+fQZxUzrwnbXBYWfhslN7XgWdmYAOnua+BIfDc9dhPfN+SkOgjhrPbaX+R6kc0ceV5xHB2O/24iB/RwqJD1CW+SDSiqx/RwqKPGItupx8X8SNagGnQleOLRCO6+hFN+HNG+Ty+SDSiqx/RgkwDWh5fJBrR1Y9ogaJR/okvEq1B1Q+1qqGWw8yunX5cxPf/arvGl+Wj7q89dlYWBB2bVUg4R2VuTEBGBwpLx7Rdg7VVV8hPlBpUlsbZonGTPShWMZ4BYfVDQkhlTFThXQZI5e+D5yIaEvmlNwdI5e+D5yIaEjFS2U4/LuKHhJDKI0Yq2+nHRfyQEIj3Rb7VTj8u4oeEgLajvPTmQLP9++C5iIZELHZopx8X8UNC2FVoBMYXiYZE80NCwNK4mmVnH9fwI0Kq7W+bsEC0/fugXYMQpddNWKDZ/n3wXCNz1R9IhLec/TWi3tp9b+1/b4ICyfbvg+ci6q3lZYro1yaIaUHyhLpMtdHgjgPcOTGBqqlsU8CG7tqzGD0eXApCHUs2KBauSGW0D3K8pRaTFC+i9G1RruHeSftQ4bqExAKJVVAsmutuIYMn4YfQbl4sqGchoeWMDMw9AyKhngkr2ZJZy0QTNYMgE+SfCT4X0QibID4wWcG89cFNCsFeSHNgU0zwwSAOceQfsm4lXi3z74aWND2qYFyAVFWZ+RU5jFe+X/xZJvzsAxu5DPaAcDwG9OIVAIgyaY2hiG+tx7f2k0q3SeVlm8bTMjI3BA6UzeQw30ywZB2ZAyjT8Fvseim/pXWU39JFpEDoSfwRbMWJqodA2cF+CVdEp3hCcjYVB4gpZKQKxG8e2NpSRSWPwtCMT71Pq1Jjrz8e30+H8gR4gfHY6cdF/HQoLBA6RDxehpBkhb2wnC9OjgOFF48cLN8m9PNItdtki0pn+qhxExfdl6m9FsrnUTGQYidkkfIVIyfBN5yMOVdpsyT5CIxICrci7yjmKpAnSyqyexEmZXqykpGYwuMRe1ibvokJ0o5yrpRHNeHXPIiXVKtdrX61JBX7eK9+hRA8imSF8OPM/1XQxMYUCsW8/x2U4uPB/apGtFVGeSd+8PUNTYwQiRcOUYi3TLrxNyKRQl5MKf8XghPtzn49CdX54hqFnSXkmeZaZrpdZO6KCduw5MAlg+0g1/dt3t1YKrs4rVVLC2ZiQqPRSy+sN6ekQu9bArzpFUtIOHWOCE7WDEwk9DIKCYSBZatNKHxtx5FcXIdmS9HGEOW6A4yY1hgIbdIDlqoqVajndigjZDNxBSrMHnOlAnQRN0aL3cY1C/t3LkWElROwzmCb6yOUqrH4ZBbiOvnlEGnuRJJBQwo9ItPCmJYdHyY2hkSdsFQxMci+Mu3YTN2uDAqbPLK1VqnFYxstTlQL69f5tzAl1v1Rmfo0CZ8nZ4PZTpFptag1iVQWuwD1Kk+TNhOFGi65231SxVo/mznffBaWTJr8nua295EH70FHiS8nPYKXOUepx0MdUT7ig2Vn3fO7Nw/tSmKstJ32Fxk+zBvalbSXrc2I4rzh4zwC7l5jxQCj933wXIOF9zkjFTc7+7iGDx+E0YP4Qhg+BBi974PnItqTtJctlvwMiG20AQ8CHbguXarxd2W6NrL9Fle/SmhlV5V1koa0I2Eb+4VfdzT+KNDbad4IIg6zMuDktIogn/DIluLvKBKdQCojywVkHZV3aNog72UyrRzO1OOnjhMYgUYuwCRtghXVSojYh5vUG6LSTnrX+rHhALtyKY6V/TPpVrEW3b+lGIMpcPA8SfFcKwHzIKACwrVIYClCwZ0OScmBKTsYTViz3M16N5uaj7fs13eBIkPwgZ18XMKvlIJEjhhBbacfF/GLFPGNs4V4aDv7uIafGgSJHLFAuZ32F5l+ahAkcsQC5Xb6cRE/NczyrmtjZx/X8FODIJEjVjm104+L+LlBkMgR43ft9OMifm4QJHLEYvh2mqMekS7pDdAPzdKN+slEClCjjCgG/NFiXjzTdr1QubNIfe8kqUY6qa4x4mLX9POF5OmxYw7seex0ljKzbZmxKkl0YmVNHTufye0w0yHRpG0UhVS54eUFZj2XkqpcWdzmFgUe9CIi8048Teg+Ud0QSb9MU3Cezpk3YE3ZVS1xSTEDyMOqMvDKlZEzJ5LaZIiCgid1CHFZOm1XuRpJFYNHsQ9tfOtFGwWw4Yo2b2k+36ufIaY0qIGPIP3Wv1fuADjVk/SIyGOQkJ0Rbk0SuvhAxpEgee6zygMjMv3EIpl/7GP2Zz2SQtfZjo6tn5gfz7ayv/t12X2E2oB98es2z/Kj7Mt4CGWBWzoNLx8SvIeHTUY2oUvqNoSgoVkGmeUQaS3YF89PLY9swPSzmCwFRuyzZ6e1vq3rxWKzl7E/H1Q+ZGS1Pv25OVh+uiM+FhKmbX5290M7gNR+HzzXkDFWeZl3hbjl/qj9KKaFXhSyK+CjHjEajp1pxnBc8fiUjBo4qUi3S1sV5oCw22aIDUH+yc0zfFeq7OAA/0KLQDAs65kzDcXUoDnVPlBxMgstRDI58xNPKSoTIla3FIPRt8dlm6fBKjetx8vx07igwq/DZ9VDXsZYZfqpG/9+zXLzJTP154CQU5ek/qsoLnQxYFpoW0zT2eO2SQzWduzEzO2NgnijGE1RdjY0CsBTS6TOJqNOujP//Sg2ouvRz5DbnhxucJ3WjqZHpvqG3jTwVvifef0Z8xYg85v5TWU3Tnczn+tsTWiFoqY5UrezF/jrhbe/Zg2e5fCmvuc2yS/eCcqNsuBL6wtJIgVMpnfopobN65yndPvtUo0eG1Zsl19SV/9rDlpHYY1ehbzZedCWmEc4Zuiw18wiSx0APUYjBHhQS92ueUROkX0ZMj7LR9oUO3qNM/SPqcVo/mw5K7DjsdPz56jRYAoU1Xy6cu5KtOBjy/QHmz9ZyNlRZdkQ7qZzsLGLLG+7Z8/+61WNv+dDruvMYC/NLhBjkH9Z/jFNSFN8xmbdhlZXajxdFlkonlMpAHRvalY0vt/MbJRx/ulPjgvRs2AxpzEO+R/1fuYqUMfXy8f3K2RBZ5NSzUx0c038TFbamQ1A5yLdfIF/RuY3skSMgKiLR2lYDimlLYBkkkJXSZehYz9pC3TWLl3LtCwLQe5yZVoAkJMqCQGV1fWQk90EmyWmGUaxfHlh5rydQzwHqILUyERH7edFFfG5+5VjwEA+CT54u/CS6F+58lJqMtvA19osgY9sw7r+tnNuZHNcsmWWQVjEqPOFQ/ChDE5j1mxqPrqZD3PW/HMhjHZCywcsZCIUZFnjrrqsaAN1ByqE9O7kO5gmGoemeMty3OREaQJnWJDQRkT8Q3q4TJZSiuS1RUOn2sXQSS2Z4PJtOiGSkkjFFAvXxqXdwRiWHHcqZg6v+mXP8uvZFVXNFJfwePrg2O8EwiW5JWQxgaiJ+lqFqSmictnRWpOfAoYWfgRHHzflYynzAkGyKELxBCSO74PnInJ5raHtuJ3mEM8/UiHpPxzyCSHCPLONVEiO26LqNomLEFMTKR8RksW1HtnXbFlQfEVzfUWflw8qBsKiJyuObYnTgo0tkR2Jj3DfwNwixrvyp7huGcrSZUugIjMry1hoatr8g8WxDkubWNlo5EtmY59ZZ0tmI8vaTdfrP53S81DHtIloUGIuM0lE5i1R5pLR2MdN1qK3Yo+Tq2bHetKYm7U5TgD0W5ICPuuQUsDnTCQFfPuDeR/lhE19Iirgl0sAH4I9mY594tSX3Ox5MsxnMxVWzEQYE6FSzLj3MqTkSHnnuu7mvpocutZUtPuoiW0fUpPAg4kuzH3x7IUq1SCif+i+9KOo48UoViadrKQu24gDqQWJrHHkp9MREqgU0cnas/dn7XL78FbMobdat2hHULdBWpwqNzQFSJ9WWctE5ixrlEALmZl+sMepNLPMn8HKnfJR7pRYyafWZAVtxKxT5eafOUwshdWHZlo+lbEMM9Jcz9nbpq3d3LmWYTeqVbyyysJiAdUneXYuG1nI0QFrgLPTZH2oI0UpG8TNGm0T1YqmFa1SexPFB4zAerWo82JWienTLKeQmBmH9ECS3y0HAJSZyj4SLyqxM9hNEtrqNnqRLKiSjSnN9H82W5eETla55keKMZ3FnmmPWylfc5VQMkoj/DrbNsAa9yz+flq9FESR42jVpHSwqCdClyq/mlq8XpWYnB2TIM9iHSZ9OpWB9OtMx25aOfJZ8jQ1F4r17SOmJGEgyvaygIN7aBRE6jT4YuyAmhXfDXw/+PAIHBpvA0yJle23moR/MEh0I5CJXorxFuUe2APRl+3P9jR36y6Bn/zTW7GTnQJKVtvUpxy0/kaOBh8C3QqsrWn/QFMi5F63/sWRiU8MYG0mZM0q72J3lbMcvxmm8x00He33UYW3PDrvo0uPn/Pe52Dhq+NlS8r30aJnM0Uj3owUjboqmt2exRSN7A/mfZQyWKkeRaNGl3aG1m0/VvPtd3Zbtjmol4ULcZTM3H7nJd4fJHHDui5PV1Nvl2uJpiFZSchcYv3aZnH7BMrq15ZKbhFYGSWe2Ko5mSjokkfEvor7u+/LJGKX42pyeZpQfN7cInR63ke5T2eqMG37KfM0ARSZq1q1OrM8TdQkGeqZhNt++yV2IgLCMK7jab6moZ0qboWTNU0Ei3m2X7CKWY/jO+diFp0p2QRnHUJqKC0pPfBafhoTB1hkpcQtWdjCWBEJjWq6SzeGYsu6b0qO6yh/5OOda7Ett3bfTr2EGzR6rhOrQLwF5iiz3M2pH59d7DroqYtmi+x17b38eo8m3L1flvRpW36QeghUQVCnhBBCeRatSrd9LFIkDPm6Ja5Xt5eNd6ha12SWh/ke7sfNd8dUtvrJAKCUX02TKBNPWj4TAojcwGMT1Sl4xU3FkOxPJQ8XoJhiJS5suTYBMOh/evG0MMlDqKShF18+k6EYkROdWX9KrFiT8kIMtSjkmjnZmHhmkRg7/+Dxtv1OTAzR8gap4ml21xsbV395gTIH1art40c+hb6BciZvDukvri4E2nXqK+LvehVifv2w/3IU9nr9C4r7J2AK0pBFfT+4EHDnc6GgKf8AKTswVp9RmN98iYaKuDkepNybcQozjMfMQ10JoFoGWdBgvobrjXTKJvxZufEoKqFSyn9fUp6zfEGeZDOVjrnVhKqd6h27NgdmEmCinvmujssfJ+8z4dn5eR2Uvls/8129LJwK8/WU9hdaq2yN7sfrc9vELKYsGc1BFKvT/OYJEf6y0tTFfq5UFkZG9guETXGgSfxYXYe5VYiJ45aNHe+zscEjdCqItrNnzWaxZkF6j75zjliz2bNms1izL4K1dvoSrFXyk6vbLV17byn45Ig4A5naTZsSglK+thaFlcLnoxZ/l/TTAAUmvMmTNmcIJz92I9q1y33igvMNW3YATTr2vUyBJPqKcdptx/GN+rGq8wE02ZWMOSJPQG3RO5dbJIlXo87PdQKCsEmrC2bhco5xsS3E3HalwScnwEorC0oHct/LvNUkkfr8IVWpYXXBfjJ0xcfLq/7lWaTUw0gpBw6D3wfPRfofgsF22rKI3RSD4Y2kbenWKweywmqm+2cSMStYWKaqt3BXc1gpI10qkAlzA7dNgBJxqf0QiEmQRZknhQGsrukHzxNApLpNP5g0WcoGQ1tcspFY+Hq1mEtawdB+pAUIjymDukAaZaIdPybVYGBrO/lQZPxLIRi9jQhiiCMr0yotSa57af0wZOAeQhYIeIzFqQ3gwnX9xmYKH69HqZCR6ykEJy6JWq/m5Y/QNKPs6yjHAcpHuTDRYM2i5uN7d/+95byMIkg4uQSMguwZ2VmM7B0nLnSWG6lGqd7MAovC7CNlnNLl4GRiiZWmOCzPZ4tpDlRwHYlp9C+N2jyrzVqUER3KPB+oYDNV3MYsHeHrQ3K3mEsyRd0UA3A1+tAVjtfAV4W+m53dQsqdFY/1jn0ARRKRXST1ZksqaT1Mk3qxuiV9aCVf5QOSyklvGchVO7l90lv16MXmGwV7HV0nV6b0FmI5y29VicQSjbxMNfykuri3ocdCadpWbMEOUErJJ6G/uNnoQlD7+Ct7Un0mQx6/2rBBb74brCPYh2LgowIs+dc9j39JwuSgBLhJMELh7+Qk25DioIrAlYUpdGIyFVg+1m6MyEzqUSL4YT6UqMjFyB8OYdvs67FBaxScmeIEqJQsd0imD/kjLBQXIq0e9iP2jL9eCWO0Egur2GnCy5qJGCL9wxGBSKsfjKYen9OYLF3aeRFArFXF2PbQWclZ5QfLZabZDGcOIvpiaNZZsluqGF+70kXeKqO0Oq9dqdmRdvNKszDN/mDeRzlFtXl5bZYrUIPgiAVqQczjgzMZj5YXVJdO36KPw7ZQtxi6fKfqL2lzBZGI5Lg048+z1VKY1AWYXJasLEMoPM/KMms7fV7MnJcJ6dpX+DrWtWG3P5j3UXZLbfj3UVPXi3m8DC/SkKm4gEJuhMTSWY5nyuaLgLJVUepCoNMwcqOqQyNp8gqZErZQdDQT5yz0I3vgrrLXfMjSfABwo8NByN9SgHXLXvIhS/JB/trB2MiXiwhKiFN7s8HHqkKph86F0q2iB0UZl0bNhCImj5ZMkH0qj4DKqz1k6TlQ3iZAcZzTJ47XDHGaE3gnAkwKNaE4Lc9+vXJTPUJrXqfX1SJe9rF6e62HLPtJvp8A/qbTInoJhIPAY1henErriKyqubiZO1VVlgHVAYPHWZahW9p9jlO+KlVLNJIVWqJZlFKS57i6deL5zjlaQ0n4+5IAZw4WSjVWq2onDITYh+hZDImG4LzHpQo9p/FX56GH8dsqkIKrRz6OFCqB05ucwSuEKyeXWWzgVJhC4pxyIB9Igywu60i17KxwsbGCyh/bKi5gpUisFOF+4DQugwoD4lNYyWD2SxCXc36cSSlnXTOZjpKeLxelpbF+i5KE5lAOHCEB0t+6FuFmp8ldQyYOiKt6nj7Vl73SR6ZqB9Sdw10wz3b7FEpDFUNrTeQsyinEKcFUuoGpt9l6ZMZb4qxJmx3VFS1iiH4MSE06EFc9VDB6Mg13LWdQLtIixjQTHSoQR01NpPguTBKCICGqUM0WZe15OfL20U6UtfeZvbkLUZC1y1VD3FeMZQf5hns9k3e60w/8blSQV9i0mt1JLgSmNe+Ba6/01xeYfxXRdfq/uYievexKNu/VlyJ6jmRXspddyZRQeS2i6/Q/RfR/iuj/+SJ69io9WSo9SAuGfS5S6clepSdLpQd5jLD3l6M9jtWDARcqPM+cvLBlbf0szsbcbbBE1L8z8kVlm/ErN8+tDfiiBOcBxdVOQD0YrAJtrjQSkyzd+L2LmyeUaBXuMwJPWQzmy+G9MxhnBqMz6Uzpl6opbF9JeCXw1GSOUyRpkVoQ2hCqqTQ+PQzsb/t9lJk3b0hgb/DXG1d+klYJ0WcrJxg8sWACG9f2btqPV6Z+JAE2gWyTig2zwkzVqYOypNPZQSnSbkfndVROiAzbCa3I4xGiezGlLDElSPvHtx/wNrIXU8rlz1JnjsSUshdTyhJTqilW7srm4wtLn2KEz2U8z2VFAazEetXNyJwMWTkzMCklWCQLPawTC8DLxMw+bM41bSIlDZ9BDLVaiRkEebarvtSYbM1MgggKgYLJYWRtS9zgn9rGny5qnHkASx6cxNA52a+R421GprzCBxp5LxutZEp9qmnFITJGl+GcSmJnshKIvHPYYqCKsnYXoRV6AzwLmshQxnOcCAWmzqtYvLH2sJtnEoupX4UoZdveO39yKhdfc4xD9249n+k6p3Km69zPbJ30p+M+P++jy6zVbLbO93RNvi0TTjRLMTNYtpptorM5SPHguFrzanHtxPJWk0L4R5DpxbmyxLne6u86/X+3/p69Dlk2w+eXSqad5iy8lUpDf7qI+CpkVtsiawTUIRWA9iPCUFrbzN4aw0pWtCEYxPIl0owqXyICE5WeVeyLlb9JAaBTk0qaqazfVH3WMYkGURFpeX1me45fz73+Kmnq9D8lzX/7fh2/Xh+zjRXDLOw229iziYQOcmVlH92YDVhkDXAeakrUJ/q5cSkoFt+0bSIAprJMQU4G5AjEhVEz8B1HXbKAOCsqwkRsFted7q+YeKutEHyTinhI0OUkazlfYNoMygUFTZvH5xUOIdkuwnmZFhsD80ddl8++kp5w92Ncin2AId3zMqQ7oA5boRQpu8yHsotXxd9n616P0xTgZOOaqNs1T1+5+yzg07hOz/ugChfjmqYZX2ua7oaM0I8qc8+dS83FzHFzlTYOtflyu5v9h383bH+YCYLka8mV66A193k6RqAnNMfvVf6yLicyBd4i8/CPPujjb2nq1RLD4e30f3LquiesxsfbsCL/c+r6D0xYlY61XN5qubRDKvlj87GL9zKAWTKAr3ACnv6fgBN4qcEsqcE3IWedPjQk1ebaupfgofxd+WG2C/whMWHxlzKyxD0SjYUqbcA8Eu5owkmbyKLNmH/b2jookFNpbdHs02h3w+U6MZDPv9fwygmSvKRaL7JRJSSHvKTKnmHNev/BublMeQ/sXh5vzwf60lh8BWNEGovZayxmaSzilYRF9nq0n8gyVozehaAe8yh/NZNpAU21VvOP5Fxduch/Aaapla7NqVIlEMKVJ6klcIFqzcR3Mu+RNJ8f7DQ9h7M2DXL8lRiMra6IYmWzijWyZ8tx5HFdRZ6omDkFqN3TMipdGwGUhn+QI+A9axsAZLsyHHh2RuhpDQNJE6RCcCwKhpZEbAd8vFo38LFaFJAZ3TxFCdbYcvkcBh3mmNvLhGYEIl6sGfEqu9nKM6SQj5CaewrcOBSfij2zkMC7Gf4XftRdSxEY/TXZIisoMIaAFGIyM2RKZlVysxJrmAIKT4SBNJPlv2VSCpUM/DSyE82oW1iJJjWqsNvYU1uUTsoW9nBMW+udbF2ECxoR8JuYGCLBN32Nda/Tph6rwmvF61YqNu/RonCAeSK+dGvKj7Yc8hcd4CuX2czNQ+v3UW2TMPNS1waLl8nSJNHH9nW0p3M3Ysdxba0KLtSs99/ev9b7fXTcR+fdFHYEra1rPYax32pL5bS+SCTkSOU0e5XTXN+NQOxkMc6eNpoo3GQV9JUmn6YAOH6Mc2iRGrXOi73jIZBUNd0/CccJPyOQRalnsFcDR2lfyiwmoh8xJ+txZ4UylSkBoq6x96lPW4Q2mdfK9DVW+AYQllaP0Q5+YvYznqqE0yQ+JD2hedYFTNSDhSNAqSZjbOwRlAttczARVj/7wC0gf8+gO5UTAWKG3ynZMdS9Mjuq5JMwvaRx3ifxNVl2uoV9iImhqoIzJXBMZZDNcjer1V+ySvIM72lTL4adlj47OvVrjw7i94JSsAXvL0zo1IMhBiOYkjZ8LSwKAMciEcBxISew3Zk0NQckBRj/xs2NfEZBIl/EP/O7yHEUU9i3ipkc66lNpoLCU5Asew3dXNef6LRIQzd7Dd0sDV1G/WFwuQ9FirU0AvUQZ5okIr7JWif2vONLspLhlaPcIXYcUsoAlmcwAKTMNUUD8HfipeOqVALn6BFyAKgwe2upjN/xJQ04WEaqJvpvxqdsPp7dB9ZS5n0TfddpbZMKWVdwTioCFR3WFYtwZideuTqb6sDuVbs6Sm7a6iM8ZbJ6y7Jqy6wWQwDjuK2wICaUQfsyF5BsRZcsLbl6IgiMJ+XFyxFZydiKKDLAx5MHOLnsXCaRzKELOUt/XBIXN4q8DZQ/JcwGsvUSPbucmsw4JZlDYJq9n/kIKV+VlKEfN7heIUIXewaYiSpGUvtpVTFPNnIQOtCghAIqzracVyzsB7E2qtbSyVwhw5khXQf8mVZ4KPDycXCSu1ho0A3FNZDLMF7RIphUydfJyR7+AVM1KbpisbqSJ7e2ZKxv8uHwErX6ww9cyz8ewizLGfSlYvfJWvXJ5o77qwmuWfe1/EuTUcXzKt4Qlp92tpdqaktXtiZLqz9V4Twrh8Mw3F6uiu74zy40X5aPPFebutLdzHezXH+rzKyOtrvZz02CrHhuR/2Lt7PuX1v3r+3714Qy5T/b96/teh9t91HlZR/gGS+PnSWPXV+cF3Ikj529PHaWPHZ9K5i0s40b0yDSNR9ltGxqErQHqwdUyr21gGCilpoRbmv1iwYhsjlzrFJIWcQ9NoIJO3HQ4ANO2q+AGbEJPmqXoCzzo9U4q48Yywt4Zwl4IyKP31UVHhlo9f2jfTv2/UxhTCVacNSc4hDPL2YPM1wZrmbV3z7uxm/cpAQOdHJ8N1GFxiuBZymBo0wRZulaPyrPuLduZS1twOsh9awrt0mtU2YMejU5WuBerCAGfDynYixRSpogvd+TrNvmz2SOAbQtwm4+3aDIRbYK6XJF5msEyKjohVVyMLOMjvkHFMtTXQi/LsB0hsbMaWYukfxnWTSBx4bbS57n9jdAOZI8z17yPFO+/BWZKkF07rTmD5fQKeIyMAbadiOIEneX2FVriBpp8qgAQWkN1b47EbDBEQdSJVOjQCVpqlrXhpssKe3Q+hV6d9tmr9QO6Hk2YyszfadwvBlFeVKama18yMrLym0SFTn77X023D2fVXXJ7FE76CL0w1SoZK/EtBAPDDfVbvxhwF20+e6H74udrm255yH3oiJmm290aKGoyeHIxh9uqVi62Tba7doYDOPtIrvbmLqFjJGtzaRjsXoHhFvTpjXbVnsfrfCZbRXmGq39KuMaMu2AW1/bdvDT+OmFEGE9xG4CuV3Y7WWySVimm4DDentGl91CDjNeIkKonwQBMYK6voEiqMvazo/arnf3fm1UqQKnjaqaxP7jMketFlNYvi7bGCvgfZiGq/3BdTEWRs7Rde6RCHD7A+7cdLRIgQY9rgiqxaPsw1RrKe3+g343h5qPkem3BfIRqC8MSZ0WImQeBFC35Qt8GyUfSW8Wy/8sX+B+YpCBp7msqIAoSn15YU3TxqhI/1cVISWYEyL1KqVtIW4kz20yVsysSELli1BKCT+k7OVZamRG/m0VfYSyxlyhqCm8qPrMuxsUqF7PXZS3TMiyTEAXjl/X0XXGpvii6UjYbt90naYCiOXdx9GTJ4GH37u1L5ZOVioSGTrKN13qqNmEB4xzo/o8qotSAse70PfB+/wiyRxKy0z6UouhaSUu5psGozhsKcUkvCD3niLR5CXmFKt3J4opnaDgSdIQMeDYcpMxC4nYMroRY9Cs9/l2N/vPncz5/hR+P9bTn9B+nv4H2p+920buUtYpL/mMfrBVCNjItqKlzbdQZ6UfHvM7zQq7eBLO3AuC3PyGBEeNSz2T9YqZrcO2dVCoKPvofSNx0xVKYa5hLiWBxl4loTSNP0IzUGn4QvSJbxnsoE32F/qSAijirURlJ8JkXw60xTIEwMEImiRVz3ZJeUoCmEcHEzNP0c7sPUiyPEhAZw+jU56uAhYzEVAYlknR+4B5Kb6epAh4tvHor6Ip7pStVs6q+Wg2R0p3cF/uB3ih2iBQKG+eubRzbq4CEiA/1ei3qsl3cnZFx9D7A6faCj7l1HA4iapwg+vlRk1HzqeNpZ+2nu/J7ynoxbGRuQpcHHV2GiaeHZCmDcKeG+dxbQvx6MpgAtH7EO7HNmojwkcm5Kk1m5eZizSuN6AAdA4w2Od1E41WvpJ+bIuTIoQKEZ43Gq1I5wDomIz1+WoW+lOzUk1BxnQxS6EEQ+HKQt4cYpVCrCqLxnD9RRxQ5SfNJvUwHxYe2TuYZDmYvHFAerQX8jYgWTYgrxyQ3v/FHBBvMZLlIQJl6JBh0aPth/fTyPSZQGEikpnLPZCZy96aIneTmQvVpXOP0qfeFCJTVx+pobBe0QO97eyl+PNIfzmD5kiKP3sp/jy0BsBcPnqrkRR/9lL8eUiB9kXmOkda/Nlr8echpVawxqMOGInxZy/Gn0f7y140R2L82YvxZ6ntQwQ7fidRNcnr52dKvUNzqLVPf9xH1Fm9OHym1HuhAnf4WqPe6uXhM6XeEbyEvTVSh89eHT5T6h3lzrBIPoxZeaI9gnaThK2aKpOEJhkuAPKtmhwwD8urgIwa2UwW/Id/8LgtPwCmpJqh5hh9p0hwPnvB+Tw1AMCkCi8SDQAvOJ+nBsCIxc9zpDifveJ8pno8ds6to7zvr1EPbAUIUCJkEOZwjei533wUCp58Ej4DlbKRVcA76lwryxhwpC75ke/x4vWZQvQMkMLPHonXZy9en028nsr0wYCc/TwVwIDX+oKAm0b2DLEbCQ94riZUf+XTg1fG5+KaIoQ4SEh0xhowWX3cnR+kVFt/MzDPMxqlXqA9S6D9xX8vz2iQeqn1PP8yQc8zGqReVz1TyfzNwFxnpVlYLMMMKB5NLIGHE5oNKIHKhDFUlpUaJAYUmcoPUAmc0YTxo18A2XhYT2Uq1OkD258hstdZzyv9ZdOXVzR4vXx6XjZ4X1iXPJ1tw9ctHaRKHOyphlWoNHSapfIITZAo8T7OeuAQaXtYs3HcUXyprN6WcrAoUApQKgji9V38Yrwm8jsAg+pK6NYDlkS+mxJNJ++rX8Uu3OBxRYoopZ9/SLC3bRbrnFZSzkqY4DKZjjAmkchtF44W6DlU7gfKGOJo8Oi+js5k91sGAzw7Wu5mvZvtbnY1H1/Lz5ISqn+dUFY0S3pB90zB8QIQQvzJ61feRXn5tn8lYATvlCZkO3r3vcvRD4WqfoiQ3xIqeF3rTsWIYwMkj1hr2QAaOx3vLFRlv+RSuO0fJ18Drrxqn8gXKKGAfErj7gBJms7egelN+AWIFVJAQqKFEpkX+xWpHGb/LRvTyuF0Wk/g0S5MPTKOi3sdCmHnax9dCmsSSsiMdTXZKfDPiirsys3wjVhzX82V4oyNF4nPS2EaqjdR8mxFS4sXcc8Scce7j3tCFKZ5efNs8ubrJYbgaXX7RAU0JseWzZuUAOV8CFUlUj7xLaClMkgbLChX0HcCzXY3Ozw4ngVKL4udJYv9PmSi1cXrYmeKRb+ucitaXby+dJa+dHlxGcor2rF4PehMbefXJSqSg85eDjpTq/d93dhRvOb1ffNWvLZeJpF9Sragq5B2koyLv9qBaZSb22BeNFXTA8VnJGq12hfbQSsJpar6leW+HSqZDUBesC8J/g9LbSFROs1mallqC0iMLQf5LriA5cXbyMeWUlJYlD+CyMwlnjjlQVmGZb0pgbuugzsypsxeeDhTHbSgGBjGdVIeLvLaBOcDo4Tyh2yMYvkCFAcaJ9MN00lCp2mRPehfgMtPhn1pmJFjbRcEisqKgO3o3xRsIjDuHtVjL2WaTcp0v0wdux2dJMiNiCBsmL7UxNG7aKa7H3XkevmYdgPqJCNGL5X3Ua8rptPAKExs4HLI0gbkVYFLQF5SqeVYmCWmUshvF+UZGdMDtJkXvkbKw5lsTAPYZKPyg/tsva+Y6hJQKCoOIF8l+d5arTSIAMe40vvUr0H3VA2LGR0BBEclPCuzzEI7HEJuB+MTWCRqqWq3CkCi+rN0jgheZZEOVclsmmG0rJIhCABFiQaPbGYaFZNzKgEuHpXUlo62628BSbdmIxOb3PFm2desXmP/TGIOEOouuPtGf+Ei+Hvrj4S6F7fNWysSIEFht+rHtLRD5PKIixa5BI+IrVzMc9k+0DGJpmAFZ4yZVFuGnMOgHa4kPC2RnpoVKYAWw76pEeK0zqHJMhlSuzeDuRYjOm/mkqV/nI+zwS/e8s1QbsJHoLnknoXfSOLI6N0OlqxARdjzbq67uU8TuoNXM6v5ePl+Jafka8GIjV8+mY3sIkAtYjLpn3xlK9sx6JShIjFEJtWQ6SiFcmuZxKckBOCYXicm58eN+TV8/72G7yPKBvEMbU62ifnmS3RhHWKOdY6siUT+qaq4skgtsN/ehkmhVbaQfVhpuIdYNBPntm9lqxewhjMNzlJNY+BQRZDeljUNmGIqGnbkdanrjXI+QYDkzKpoyF24VqXMkpVK6ZjfFhPGuBALhNYcItZVlVsKySSsFXaaQBXZLPI8lyr1DMp6PKNNr0abqddaMIzinnHk0PL5AJy2aJtDCjAjcNL5x6klcCLGX6msijif20PaPouXexViWVfq+Virq25AnPm0Y53jkYka9kBA9lThwmbcalh4s5Q7lChENQrT5UzHAojg11SuTxTh4zZE6z+PqpylzQlH71K/poUzHmMSrmRH7Q8eb9hHhxLA5ZgJI7t91tPjCZRMVoR69ttI0uI4AXlCBKCq4olmNk+wPAFlH1LMpceXl3X/NOoFvMlMbGBIHB4bwhGtd40a9mKqLiOrDzLaDmu8mYhH+YWI1y7ZAhO4ka6UDUy+VEeH3eCNa18yQUKLI6xi4zas1Cz+h0gfDO1SuTitCeNYFHsFd0J4bZuIBJEvU1MzZu3JHIA1y92sd7PdzX43x92cd3PdzX01y/1rzO92GifcP2aF4ue06DYDRbK+88Uw0k4jAPy0/nNP3BghlkqWeQZh/1+TOAaKpmsVEzSJUwIymK6LF/ktFOzFOI6kxnRWXgT1R+gciPVmWgJ0AdEABqjVlBkkrQLOk2BPxggDTKgdDJlq6bmZmcb+GZSBKMJ3g0lE0hG2/AR6Yy2Vu0YZiidBOROadp8BQWBbFphum11WouiABJz2Jd1pQLRukG6EP7xoNeovrASOsQXqb7XK4mMYkru3g+RGJVWQM+5ihrxHLrOJeZQg4Ecn5R38t0moAtleWYwT8b0M49SmmGSTGWC9HtpjTBQVCLNmqx6P8yHKHboOSU6rHXQ3hs6gawh9XZc8O/bP5AsDMWRq7QOTiyB5fANBrPYwxDdsR5YwXAzMur2LRfwfsusG1zPlMvztzvqQP0D8JqolbM4tcO3b49yvsOLjyuywE4NWdiDigsZTE5HY9J5uQwpi/WVIMfYxieiSVNlmimJuD11e78VASLne163GCzzobP5u5RPxfOM3QJiZhPHDNKLfUrOJp/dTZLaCf1T6MOR/6fqYW4klmKFiybki4DLFges8Ou/mupv7ajKc1z/TJk1Hy92sd7PdzX43BbbCgl4JB2u82P1r9f41ua6oef9au3+t3b/W7l9r96+1+9na/WyMjfQUsq9DcCn2pFc1LV5MvEgtHK862obrNHeKrf8chl2RCJsEX+lWVH+pSGdOJYpgtnYbxwAz5zNp7KMlA1tQRUEg+Sv2oeK2dp7YjTJYAg9IuERMj0p8gHCucUvop+Xh849ikEKgASlmABqq9oVsH/fDIL0oKqjVxiM+pMYcwKAaYFQiSNo3kwTTrqNCZQmgtdOJlrPME8hEHFK4MGJEFdW2rm6Pw0RqFqh3kH5VljpVoegSP+hp2v6bTcJFGr9zUfPxoYv/0My3UGotXC3rF/cMcX2j5omc1fERpCvFIgFXzUE2IOqvyAmookZFRKS6dLBgl98/G2A+kJGvJnZGREuCrTbIii3Qa2Tz8STVP0nTk8SIAzvN9A69qgrJkgTQVE6R3FAu6XdRx5VhEyDbhRWOZZ1w4U8vzdlK+YFpUoZSnxUKn9Rg7iUGt2g0fWjbkJDUcfsSoK2KiU+ZZRAqWeqQKAATMzQlzj6FVrzAe6ECeJkvMAOdltqE6hfYH6qCd3aBAGfyPZBoKNsXzGBdGMQf3ay8Kvn45Sg3sJSnEYWnkAg+Ohepl5OIZGlygY9EcXCKkyCXipgL7xyYMcgdVqW5r+Z1dJJwoCb/lv9sysXV576LF0QvSRv6l/K+nZZA0tFGWUcRcx4TAmRZlnJIyOoMM7S19AgwwJqxWrH9GIIbE8FLR0sKSqBSi7IIkyF5PRDONC/BmayjF2lEwmakPwvCaUfXqdAIwsnikelY7nYJwiH5J5E3lgarcHwNC+4yW54i7wMUBosyvjpK5ujmqx+iAvkMSvHi8YUy4mWOOH1VTD1eaQktEMZ4BvVFOb+2j3JZOZRncx9inlOin8N4hxCjUdqPqR5tyjCSxA4GK4s5btLzpOcJ/vHSbqWZbix2L5PVL1R3t4qYSxqxEMFYQuVdTXnoFDnrFtpUmE0OtVywx6s2/ychVbdMT/XzWTBT3nHhWEcvMuAz68udBkatPLca07/w9ZdCYklBZaZ4YfNiwuYvCok6LWXE4wgF/hkXhtapg1i1NCpP2I/0EjYvoiePvM8cOKROz+wR8eBLS0hTMtBUrouSa2oyicMBAAc4bkYKkks8+ng6v0s0+fEXcp1O/69RIyxeMLzk/JcaYclBtap4ie8iie83IUGd/kdI8B8hwf9GIcHiNeOLacbTG/LTp++Tp/4n3HkGBWV81G8G2J6kv2GnQfPPAu4dm4/f9eGjtN7fpD5KDqADxau1F6m1YxaK8Ac6DZrOp6f8lXuaLPEDRrdooyThqigLxaXBKgVAo4apJ68AXvL4S2CiXBLg/6sEJoqX0S7Z4ogYqa3Tt2r2ptOB0tuhajb6zgEvpmng0YLVnG8VzR1CGovX0i5ZlYAZc5h1GiEG5fjzPFum23GrczmjguCXqZbuECk93uHgnqKQSUGJ8oJBOJEne9yhX83z/otMbqe1PknKnvewmeaWkTByTZIiw0N0ocMSd3WUj8JoN9UyEYl53wjQ7b6xweN9P27WL85UawaXIEz76/Tk+ju/9NWul7ll5Ljyr/u73yuvvD7gmxQ4hJyXCbhfdH9ePLpQ27iAdBR2RNOWHvNnmYobO1LKj7DEiyQXyg4XLBDxlQufHFw/W3hJtuf2g5stkptQQCv7gEf4DhoDSw6ExmKSfS7G9LSvwEa7AP8xqVldsNVh83HPfsaWMjJWRHRqf8cBvL54XeQiXWQiHz/FLGO/rhHNvV4WuVCSFhVqwGr8CCwBaKt4EdtClVYa3dE4wF8jgO0WL+xaiiap+TJJlQBZVbxKaik2n7zkMkoUwHut0CIxUKBz4osE0KrixR6LiT2+qOGVGmCrildOLFJOHDHBv9QoWPWihkWihi9+taUGGM/ipf1KVbJrvWRGeJobb4Tktp1TcnW2O8416NW6hGaPYhbSYUoo5XkEZwfDw8IUlxIB49BiAQCV4jAlhVj/G5Tf4wZyMZdYp+EoqNJWyH60baU1ydgdplNVWUYAHvE0haUAr43eEHZ0SDoRFWgKMX+ekZnXNCxUR3t1sdDp/2YXi+IV2ooU2t5cLEqk0Fa8QluRCNubi4VO/+Ni8Y+LxX/exaJ40bdS519WAKVG64SXXCt1/aW6rtP/d1XXi1eXK/VPQ2Wd/kd9/N++X8f362t/Girr9P+AAnLx+lul/WmoXCL9reL1t0orf+kZlhaFHF7dqkjd6k3cqLQoPPaiVEWiVG9CFDr9jxBF8TpcRTpcL/z10qLYwKtTFVOneuGv6/S/kL9evPJVkbYVGIth7qHdWREkYbRD3KnfVBPINo8P9+yEnqHoscH8FMBH9oXEToPNOj6Tkckw1snj/vwaJf2fMWKGR2nRXsar4hRqs6wXXk9p0VbGy7kUybkAUhPeSI+2Ml7bpHRtZfD5wotEM4uX8Sgm4wF644Lks79INLN4jYtCtYY3fmjp0cTiBR6KBB6gAx8JZZRI4aF4hYcihYeGSj5R/P4i0TDzKgyFigooRUQk5RKJMBQvwlAkwjBnnMGNRBiKF2EoXa54fbw8TNRbvQpDoaRCRhUsIseXSIaheBmGMqy7xlovJZJhKF6GoQyxmpAljwaOTpPXjfn9oqHd80WlVomoAo20+w4Waz2zF/RMrma/m0PTx+MG/VCgXEOGwlt8g+VffYN+mFEKAlFM1B14EglSdBiaS2D/JoQ/IkFkkpFKDT13i1eZKMP8ZmMBYJ1GEYrgQlA55ydxBwOU5ienR67OS1CUITWWWFxMZ7mGba6+TOcP2SkbepyLAbdnePFTyzRKPBO4qsfv+2E+/hzmkXxF8fIVRfIV++UdRaPci1eUYWtSLCxSIvWK4tUrCnUj3nQVdLbIJ69LVwEeDNUIByJCp2E9GfAEwKbGp1S53ypQhjGTAmHCWBUdCxPW9vN1+zlkigwPEwSgSt0tRkIWxQtZFIpSMEwfoBX5a2T5dEN1lDkybOUQxLF4tLPtLQFEb8S60cOFsn2Q8usk8GGXOejXTupdpjIfmyCM98+gw/As9o8yKqmoHj1GrxfQKLP8JROh0/8qmYjilTnK/HMJn9ES7tU0yhTlGdK/0ZCO1DSKV9MoUtN4I7+WGS3hXvSiUMEig7YfDqpI9aJ41Ysi1YtEsx8w0P1FouHtZS8KNSxyjzmkJZK9KF72olBYIgMzHT9NtIZ7MYoiMQqWQDcwCu4ikRhF8WIURWIUM3bzKSuKOL1EQlk2Dl7C1kgioXiJhCINhBULVJUVdVfP0C9i6IPnH99I1F09Q7+QbQ8turCPRAT94gn6hZT4ldJPA+7z8TBRZ/Us+rK09Zovy0jEoi+eRV9IiSepNVrPIhZ98Sz6QkY8AHnxNY5mKOZeTXIbnCIysrslsVj2rXLQGlY+JCtZaWGxLgrjGoGsARJtRLUClt5ZfEDZvKv2D5LuObSGdDyB1BNGgGgnrmjkV7Uug21snBcWNyDrMiQY2Hw8vx9nZPO/b6giBYDiFQDKUQCIZ+NIAKB4AYCyy597oR2NM8+BL6SVvwZJOxpnnoledvtzH7OjceZ5x2X3P/cxOxponj9btpaF9ZKf2NFI81zXQu4lED3xjUQDzdM1C9mFKIOH8+iOBponJBayzRC99Cvc/bpEtCZ4flolMQxo1P2pvqfWFPTU6qlklXSNt7mrpqCnVs/wqEkrwqrhZ6kp6KnVswcqQfhvn6WmoKdWj9uvxK+/vo+gn1aPeK9JYmArFu2vKein1cPCa7J+GocvNQX9tHqocyUU93UiqinoqNXDd6vguy8TUY3Qu9Wjd2vaf01ENQVdtXqQbCXs9G0iqjnqqx6pWoVUfZuIaoRUrR6pWrN11jgYqznqrB5ZWIUdfJvNao56q4cJVsEEgVmN76QdOy969JBhTw4gwPIsIdORjrWz49pRrKCEpKJxetvly9cvD77jpdNYBR6nkEnIKVtLG3eD0DbsmVa33zZLLxA4qFDFhL3c1UiaY7GTbGVWDfrkzqx8CsDBIkFhDyXe47iMuYDoEvShgJZIUQYwy6k0L7L+Mgsd81UdfDbGA1BVz5kw2kVfesHzWfRRTQzNXq+/HbR2ooy95PxJSh1bFXG08nWe7AaiV8e+LyDDyUdAUT2QsxJCCc5XlErUWZZRactKFHzbMkQ0fDo9UQCUo5epaLEo0Z1SFmI1FprLCJND1YM4q0CceDMRgficPiUy+RCc5qT9Cb5UIdgLXw+4gHM32OXobpjf0el1tTZbjzv0k58AmIgt47ExL+2eZqJXYFrJURIct2LJkErFdyZKkDcpgveLRETdZAH8oDNH+5KuEYO+a02wSwlpe9yzn2uzMkE7zj/WHE22HlxZhZ4Elz5+8Giy9aDHWpTv3XFurpZotvXIxEpA4Sgp3AjobDfGW6OOtLxZlzRLVPUBImCTogd6xKbyoqxi1hBrPkNIJYIeVw9orEUJ3BQjomuJZm6PMKyGMExxCKnTlZS0bfKLUwyUxrL3lSu+pNTUk9pvUTUqW40PyNIZCK2ovFU9dLEWaWSnl6Upwi5Wj12sRYXK9LKqROjF6tGLlVBE9PxwzorQi9WjFyuRiPCXi/tPFL548GKVxTuWpPhhoiHlwYu17D/HZQRerB68WOvfQyoCL1YPXqz1zyEVgRerBy/W+vcoiNCL1aMXKwF5r9838iWuHsNXiZ97/b416qweclerddY466HTF+ZD83ilDXBmrmBS6LSRn9FL0iKjSZ7zj4o0k4zZLhY2GVJLbOloJfKAvirL1TfuWq3RWPAIrWoIrTjdVSOAVvUArUoE0psee40sMasHLVXCcMiAnJ9efBReo5HgkTtVyB1IuoTfrEUjwaNqqlA1oLnFF4mGgkfVVKFq0Cso4OWvEY0ED6qpAtUAhxDfSD00GzKFMfw/cGnojL+a7MbFvqMQo4FSl4QjtniGkV1c9cicKmQOlHDiO4kGlIepVIOp5Jfta4RTqR6nUoVTgbpIfJGoy3ssSTWwSH5ZzHj6Brss0h2zjfFGySUmFYu8MJrUl5jQQwmUnqjIM35VaiEMFC60HkdShSMBpji+t2gseRxJJSgkg3obXyQaTB5IUgUkgWJReBE7bdW6aya8aT+FDvWJpmjbYvCvCfBCxHUzkW2UfjHGzTyEFX+bHqpSBVVB1jUqg9QIqlI9VKUKqoLoO37WaLx6qEoVVAUqAfFFoqXLY1WqsCrlxUesRliV6rEqVXYjLSwc1AipUj1SpRJ28p7iiaAq1UNVav9L3L1GUJXqoSpVUBWI3MRvNRoQHqpS+995ogiqUj1UpRJ2gu1/JERYI6RK9UiValCU8jL1RIYh1aNJ6ih/Jpsiw5DqER91/J0nigxDqody1GHWOS8RfWQYUj1aow7DL75MeZFhSPWQi0r8RO4rxeMmwlxUj7moQwsDKAFRmjZCXVSPuqhCXUBeKX6cqMN61EWVK8gLpKGOqL96WEQ1WETsO1IjWET1sIg6/6oW1cjeo3p0QjV0AvP4Oftn4dljrXCR/QqXXdpYk9cHzdpKQw5aazZLgWgVgaWZZAkI1ZeyCvG28kiBqAG1HcenPaT1qscrVOEVqOsTTJ8RXqF6vEIVXgFPFF4jGhcerlDN/CPGVNcIrVA9WqEaWiHmk9UIrFA9WKEKrAA2bNiPokHhsQp1Wljzcg3VrMxVLmPLxJSevj0gWCYmghKseJ6IOfK2wOELXg9FY8sHImerfB+kzMJowuMhqvAQL1jqGsEhqodDVMEhoJkWTgARHKJ6OEQltoFbwqCMVyM4RPVwiCo4BBTb4huJ1gkPh6hLUU19WbEiPET1eIgqPARda8OLROPB4yHq0jpRX9aJdckOVGmqVToXFroVJvx/ThtU8qcPHcXOhDIjBHzSOgnSVhlydQYBn+Tr7elhaNVjLSqBE5kKrAGxVqerUZjvePnioH8l2KXii/zwli4OjVrX4c4X2qyS9dKJHKNrLkSYxtVXvm/UD2gBOqC4F7/IaER7QEddGtHtrZdHy5xHdFT5Irwwomtki1A9KqIKFQEyapjt2emLsInSBVLqxRYT6iGTmQA5sjtXrMtJJxUahOMzuSsB+Q9H/U15lEUVygJpoPDt8DS3k+B34X+BxaPU6ZbmKQiVX4z3m+cuIgU0UYxVqooCUZXIB2dI451mT6GfUPWIjkp0xhsnvEaAjuoBHVWuBSDexM+M0yf1fG2vbwrJF9g5JQMcVtkMUx2kXEPyF5ekxBtrDxWpgorgtcZ3J3ZRM5UqYnbS6SYgkuQuAQFqgkMP8kM9LjBTJ12hIPywwKl73IqfyAQ4ofxfFKvy9JE/YP2NNcy7aHSFOo332UhyvMpHzPpAW0XyJEDDZdAarWgkqcEgDvKQlipIC6QG4zc2jvI6RIjN2FzCvUefeoiHCQHpaTzMYu4OQGGS95vpQMPaL/UJjSacRKc9qtSU2xGJth19aupKsUJKlwJSgdM29V1KMZMJTIk3CVBTnUtl3kzT9uPLXkwqSKahNDaiFzolkKiJCWHpzn+BH+vSIUJsnc4td1MZQhaUrFtkPSjHhEwwsIAQHhoUzkXpppsCG0CtJqELyim5xfgXU14FNRu3mMvTJhu67Z9VpCg6aa+qX1tkvuFfSCEbQTNdsGQ2kVka5f2bkCdu1kypkTnMVR8icQnii8UK1eWRIQGrYb+QodRoPyFJUQDh8uSv6Q+IlUsoq9OM4vwBn3mz2e+j93XJC7ej627uqznvXyPl3Jrlbt6/NtvVZUTo5lPMcf/B/Wvz/rV5/9qSX8NzuPhVdWtVXS/Vjwi9VT16q+4/QTEReqt69FYVeusFAaazTzD4kjzb+JEOXalf8zFY8aKmaHIBt28JqE8aymH5Pe7MLdWNEK8XXJlOSlFhrx84idEmg5r9xH/wfpYpXvdPN30mpbiXSrn+HppHlbWklRlalxvoe38XQWTdPKysSTh4vqD9dFqPgp0HqTNt2hPMtM1LAsuIQVDNEAJ402x1W5qD80MB0GqJe2DxS6J0PMethYo0cAEM44MSVBFAA1oYVMLBbxfQS+vnEcY2j3ZrhK5tsJECspzOVlkqbMmGYO2R41+XWOUE3E6iaBLYAjF3Gdjn2GwM6rlJunqZ/OqA7H7ndIv93pTKaDs+EWDuy1E7lyPzkI+0+jKabyL4RlY8eBFmtpOOql2FArqmfhoMUfRrlyPgANQPDKU+pP9LiO/Mu4ARA4+Y6VMG1/Mscn+iWGYjq4MzOfSWDLJDOYep+RivY+npsWIlqS9AY4zYIV6skHFPXnKRSp8199WkBPV+BPrNgw4bIYQUcUTh4vEpj08TPjZvpUgQIHHepyg4llFKgtPDS4LRy6zWh2nwA9xieOtlyrqpHoV9E9gv/YfkaeizboYG2LKkZpEA3loyfyMu8ptSVjg75rF1onSF/g56vQRuQWlXyhnTPJ+gNJcp+I9pQjLtu6pf4TEGrcz1s9xNfbL1tSJPRwsfCvsaPnq2vlapvoh/i34GyTCo/leGPCD+HhH/8lP5FpB2qks9Ejp/FH+ErPLm71c5ZCQKWTV5CIzJXpoorNIkIQ+SCGXQBwLGlOx6+FeJojpDiuv0/aI+PhCi/F2MP+n0wwQkHdHwOTVsl/VrELGWCSNOho16x5vC9piEEYnqIWnXrnvhVlfylDlRYx5Px8EA8cypwWCfWhqZ1CyRw8GYsl7Rwa7nwrjs1Nvnb3UKvQ/6sUmGmPuExU6AgGVJBBJHd+XPYuHa/PyDFhN72xUKlR7ZUUrO056BFo66cc6QvJsiSwUEBAUeEYW+DaWVab9QmiwUdHRfTd0CJFOaRo+a6/oFeSvgdxsF8XW0yeWMzXIfrebLUpo8DECwa03GariuDDDY5Henj5D5PTyKus3DiVsSvaS9zPPUeLwExBUiVlHfUpK+KeShiEjjajU5sKpsVbiqQSvmW0386IVrpWujW5/Ea7E5lHH+omxsO9+vUzy10ITmcy9lABsWLG1I+Dwft/vHHXzc8fK448pCj+NhmgyoiiSBHLzE28umOCEZnTSPZPo8Rivwv+1Z8sh8WFiW/ZgRWjuqMquavCRkLhcBfuhWttCXA/osHM/s9EWWsY1o07H9nrd5nHaTJDXYfVFIaqe5luPrSfqi6BtDCGEus+PJux0PL67Om+6wkymJ4+K0yrb3MC4eYSMEhz+AdZVY2349IuUZMhWUETHYB06NvXico+JTzvX8wtM/LVEoEJUOv/DlUwVTBc7sQCs3kxiTAFo1uSAoXXEOx0wuy8H2s+TR3n/WMI00qsdTbyQdRW+zJazzqF9d69fc9dgS4hEV5tR2whz4YsmqqtYT3NSz4KyZLzusdYIbDI18nLcU0mwS+Xg29xPS0IKXHXS2n0WhXjqoMAQFCrJcEouKaZB6StzeLapLKrqhamca9g6yoa73ZTiIWKUzOsK/7xzDkKA8cVCdVxwEFaE0zw9Y8IMXUCQKttXJMxGcBUVoi5ga3xrjZgZen2AQLN8tsAvZULwNu8VWPAv/CktWtHyUvot5CiFrwV4Al+4l+e4TquR0chSMRKQgDWEg3mqh1xovNqrZF9MjektpLduYSUfOme51/IL0G8yC1Vf70i2dfUIhg4O72zqPlwc0YznLUEpPH/P+gpNBFdVP8/UB50ko4w2bqGmh06Z9N3535sfl26BPyMTAptIfXRP1CbUNOfaTKLCe8/qcyCTY56R9etMMyiVXUPaHD3bzdI1G7gX008LvybPqTyflBNkAJkbGtG82qUjTTXvf5rRy5nFY7Jq/arV5vORpEzkU0zSTY7916wXR7gsz7S7JBIZsmmMHKYX1q9qUTqkSF9D8Xs8OAfMwde7kOzH1MnUxm/XpQw1CQoWvjH9XnpbSREtJ+aXz52PHhS3YlRj7q+9PE8/76vtXj9ceDmYMv/t+oazO3ffvHk+KCLrdV9/Xp2rtj74PK48hekl6jgLskfQ55FiwrIvZKGCwmLP0uy7hPDyzvtEeWfNY41KUTQHvfK4zIO5RoBiUDqmnkz++i88fkLWD+SbAOrZ8bIcSPjm3iI3Ls1gf2nPZMg0WjETYMcMrwqcbXjJp+My+2svp5jRLvLwi9ClQSdIXQK2QlkS0e5CHHVtcuulwg7fYaOhlVunsDkNrO47q1cwTsklflDFb4b6uiE4LVcnSaBOpJmu46aHQ2TzDqYnhBOO4uFMfMx/oTqhTp2xTQT8hHY0P+YNzWnC3UrGJXK5bJ9C5gxqbFMY+s8IsZ1aw2Rhd/UwKcCnf0hu/pgJWt1m9o2eJjX9WDzj+C2dFjfThRbGap2m1LFIhXIY/wzMkddYscC7nG4W2Z0qclDaUr+8JaPNlwjnNAwi5nmHPjNnbQlrYA9piWO3p4QRENUmOrcU4Hf7c9vx8Uj10v+Y8lC/smR9iEs1TlpooS6hsLBhh+0fuZ/ZvFsXvbp+3120PiH2S8AT1cmldKO7wsRL4aUywpWYllHJyPLbuD+I/IRTDR8B3fdy3336IuJTe9h/5FFOQpmYKBmOJcQlSJkzBwLTF/BCXzQLNOjbkawb/OVKSUr4EVY0jaluiZV8xy2IAl/krR94ROQZLquDvWj0GFU2WYNuCVygjaAvPmZHzOw13Vj0mGpzpMeptehknMwf/kGreS81kV6E7qjwIzJeU/YAVlLIflCSWlyCmppntmMLdwkQjA/amASiTVExXSBidBRoRrlIdELhk3gJTPmOkdRIIaSldl0/eAvuDbAzFZNkKaypdsamxxMRJQnp3UNp1KkoqRzVQ6QrEgFopaJu3WWyAvqDlJTazuYzYEHwVc3CE+CC3x3a0peuopmlGVDIa1lEOvlyUNdCNMWtgKzNl+05T8riPvuu3kXIkaC/YOp22kMsiZ8B3B9P1+8oJb0052BwrRkXyjit7veQZYN2umRepTwXOZqhZxOZkWW73EzdzM2cOExCD7AzRgA1C0h0gYm5TKR1FC20o9NKHmCq6GtSpkadHZ2aGWotJ5uLL5s3z6pocEWCcFb+ZpVoLSo8mVUls0baAxbLmHLsowyyNXUSbrGxhrMiRrzR7Q6mevSPzKXpDtqIXivq0X1sMMHTtVWH6KLTwqpe3G9D47GmDzt/UVcVbY/eFO8tacpOa5t3C+mQq9ThS21YeW8CuWA/jYZto5jovszKlJYcNmuPRft2a/W6OuznVfHwDv7/LEoBfsZmATiuk7QIZIMcAk1hmlvIijxdhOuoRpFwKDYQVRFG46i3Y7EPXA5mpospLJaOOZhqDFy2Y4YaZDK+u5uMJ/I5GRhAvKBg7m01yio7zvSkjB9sPrXKzWuYdUEgOlnpSdOg2XbGV9Nqr2ZnT2wmji4tcNucn2T+at9CQx3NFVtSs7+jJTFs2jloSEieLx5S24hZPVoK5PwJhz+Rs5jHBCKYtHwnr7Ouja0BVm3PSKPc7iJ490zucBu73W2CfZYT669mL3JTOsxOVQhDZyxNj6934B/fDI7zN6k6P9+A3BHLEAMgynEh4mo7kI81jZl/0peslP4b9uaZKZLkV4iTMN4zjyYGd8itrlnmF1CmNzZie4GL72bTryyb3Z75jSkdOhkDI2g3JtD12657U2sgkfQMW6azNguejdeJ68IGaWWDBn/KnKOi6vg+leASQSuqljbCJlo4mG6KATglw+zxQVSuZZpNMputLzWdN1NNfm5w7sJKHc0xEf22e/tpIZX11FtDpk6BkDqUsxXsoS6nSCpdZWWSdFNWed6KSsQ6e16qpmKoVDO5+RPPH/E4uWrmhcHBnGsQIDAOp+nZ5QTTuY0hKIg4DatXoSoW1X6kk0F5U2vdY1xkrLfqMNzknXY4OdGOXmj/XjcIwl6lGlUJ4dNgIboKxZTlFzCHleaZJuG9Bdlree9D+z/1cC2JY56iMFmh2tGg7T8/ite4mhZ3ppqwtmZr5bpa7We9mU/Px6X30TwZyoQddgFHU6fPpSz25aQYktf3KTSMot5BqwVrt+uSMLdv+TkDfaWdOD4jDpYbBSErVzTy/EstNxe0xv/oDtOEs5ZsYAQz+SDk52Sxvh8HarRBarPWPcjYVyi7WeWGNNr20e7P+w3kUu1MaEqxjn0FQq6TvFbSyA3COEyggD/m6/kDOEYAH8HDT6UAgIpy/rFoSC/OMnB9lirRPE5uD0xcYutj3nXdz3c2rs6yU7mZ+6Qs+miaT/NWCrUXs8+bZ541McviH4uP7KwQooeap502+OVjEI/KwTjOu6cx3IXPyWQgwK22eCMHAv17Y/T1+zYc44qgTGBIBZiKOevMc9VYNuhNDju30gTxOK0oii/4pX9SSST80zE+J1mmLQisM8NoX0PZLfUORnBC1DH36Y8/kufBNXPj1IubQIi5881z4RmJ7Rr4ivkg9Gy9kCrWMTlsPgBkaUiLlwmCJDU3F+2cJOHrJuhTz9EEaXq6fZZwiDq0NZThPbMqkk0ISHpChs+1tFWPkBayNcBhYAMABbaeom9YjxePZ+41U/LxelBV0mnm1EwL2Cz1fgZ7K5JPSk6WRMDSJ2mnMSSE937hY8ebbB94kvDn9m7xIVq3Yka1Mf55uqB0EPI+I1usGNOkGrBfWdouseppn9jcx+9cL4bpFzP7mmf2NNP28XgjXOi3wNTNNqIPe7/Mq3XDqxIvphMYOSitVZgSx0eYhSR20QfVEZEObQZOxeq8sh8LH/fo5jZIAZaXYb65FMgLNywg0eZ/QDC6C99UjEknzl2yFUuKZTKpK+DEFV2vqPWSWDy6TY0G8jqtRr7aqMrktiB/UkJhexmSltZTl2r7MJHgLb7QvT2U6W9u+mr6YlV182PpZzEaJ6yfX+rKUUG/HaZnuK3WkY9DSiVzhT3Su4Z0omNXtKA087WiVPDOjD86AjSuopUQAozJPYGCmWANmc8ouGhtDgk9Os91NbreBL1v8Z+thM9m8ikNrxtgYcB5234/numlp/f5+jDN/fT/MeNoRjhF8NaHI9zouZgXbpF9fEhHOJNJLmDaofhWWDBQpgXVu22IkyK+vawBjOJ3q74AV+Pri92dOZZ+v+PXFlYdNjK6uL2Nx1DwURwWAv/qBNq7sB21cR7+6RGOBCCHV3SXyYqaOH9QcU/6/usTbFx93c+rj+y/uJTeaJDfWiyCDTgt5BMzvMvVWqQUgR7WPrCp/se79pfaqdW1BfOtItgp2gw2+6oSbZdty/ilq2Y1QfUKbralVj1BcrXr9Qirx4GLE0dejf3ttkNYUGrxIPLRIHKR5cZAmcZD1IvHQIsed5nU9mnQ91ovEQ4t0PZrX9WjS9Vglpv3odLBML/q8w9IPD9HpILDJYiHUlSRsrcjf6zStYjlX0tb+QyLGovmBNfvdHFq9H0/gV1uJiqwXFrtOfxsOCfN4gQtUTG4al4Yp0A6cHAlOuHC1R8pKbuqZGoKc+OsxD1IKF6HmbVZ0owq+AQTl1Ae1XarcwLMCW0lJ4QtDrz5R2epVXbVw158X/5WgdmWfe1+V2R1sqhZ9E61Z7iZpdGo2HX28Wx+ESGtlvXBQdZpu0HheLrZdhnnHw4KWwdSFhPIC/ywjV2oEsMEkj9Wg82GILdpyrWcG3+utNOmtrBd6q07/EWwCwtBoevhn1PlfE2t6nZcmnZf1Qqttkc5L8zovTUIu64VWq9Oi0w4+LtgYnU8psww+xVCJArc+WJbLi2za8QRDeAWXJgWX1V5mIZ4+N3D/7CZikoX8/+gN+AmZSi4FG44w8IzUX5pXf2lSf0GOIn6KaEL26i9N6i8AYcYXiSZkr/7S5FS0Xui9Ol3lIn2E0gX2UeqchZd51YXHUshURB/kMgyEUmGtbf6uGrC8BJqZYGREMg3xTpC3J1YXcwvztsiWNxqxs1up1N4uKMFsBLMpwY5SK5P/eSEfGeXUvYRNk4SNKsPRe2BOjuzwLaYpoglMj238bALlM5AgbD5+zM9zkrpZ7W0URVkdr3XTpHUDJktYBYi0bprXumnSuln9bThFk4LXummyZVovXN4Wid00L3bThkZuiq2ZWyR207zYTRsanDl2M26R2E3zYjdNYjerv4wruR+xx45mWJk1vrj52vMew1D5r0sFDCzHW/yW6kBSn8jL7Gu+PNkf9+nHv/R01gtJuUV6Os3r6TTp6cDDJb5IlIHwejpNejqrvwwenp6Gwp/rUPQu3jS5hcwhUbZgkwWafvpP5cpenqVBL8bTJMYDclF8B/Og5MolP2azGHSjVV5YxGhX5iHSgbVlQulAjdMMRw4rE/wEqZHltMELIwgdtEfNcCRFETBOdAHBr0iJT26lYOayeFaMryKvyBONIUmcUeRqSoov6j4SPLL4BwP3s4aQRdyV5btJy2tOSJwl7Wi7j/a7Oe7mtPvPCLOvf7avJrfv+4m68ppGTZpGQKHH3yKamLymUZOm0Zpvg3CfQYha0UMRSMJy0AW6+e93thbzg/K936z3CtY7gvZvAnzjHqKN51P7SVACSmu+jMZIQal5BaU2NQkiMRnNXxJYahQPZK4ZkSV8yTbVbTiWEq3hJj8ZYP0EwBakGDfgSI9b8FOoBJgIcQufI5pCvSpSo8QRosRID65FqkjNqyI1ShyR6hIVQCNVpOZVkRoljlDFQ6HKAwYiUaTmRZGaRJHI8YiqcZEqUvOqSI0SR22GAk8tEkVqXhSpTRtVsR9VixycmlcsatNG1Xy5SLTce8mitqynx3JDLZIsal6yqFF/iPn1QFCuRZJFzUsWNUkW5fQSAUWSRc1LFjVJFiH47OPKyHxdJOqrXrKoUX4IKSbioPwloq7qBYuaBIuAQA/7e+Tg1LyqUFuWnIilxFpk4dS84k+jeg/3qoEEW4sEf5oX/GkS/MkvLuwtEvxpXvCnLfVWbM8DIbAWKf40r/jTpPgD+GlYQY18kJpX6GmUwHnFTkc+SM2r5jTzQUpQayiPNxKp5jSvmtOkmoNdUdjjIx+k5sVt2ra48WUSiHyQmpeladu6608H/ddfIuqsXjKmSTIGmMFwpYlckJoX0mgUxcB2sM3P7o+vG3VWr6PRKIoBiFCkkNkiHY3mdTTaVl9dL0HPtgq5DDBUIm5DlVVExddWQLkLCKFIrgIYFclnUNeoFdMLpoMeFXMft+ZGQE/pr5WjR/5K3SthdClhvK0cPVLC6F4Jo6fy18rRI4Ol7iUnetKE/SKnYaeRLS5fSsOF2F3kncvGVwBMvPUjkqbyPYojm2nXrcJdpnttvwgJFMChk+XDm6R7OYWeNMpeQAw9fRem6Yla9rwLqQpWJ4utrEEvsvmVzjZwctaNs6iq+yauJhWrr9ID92QMl2W9H/fd/H1rQ/ji+aTTtyAXc5vMq92CXD2Z+7Ak0jh/5yrrdvrmIvauBhukzEXecQa2e2J2TzZnxPs8nebmDLtvbr5+JBe1fwiO66d+u46gCIBzhPWQrVeY0AJh2zDPeIzEbRQkGgkGZ5ILMAUojV66KwT8Z26dSDcrIjV3K8BVlhyzElyAg3KbtgRXQlIYiXLizVBFzIt4s/XImXdP2+6y11orru30yF6rezZ0l73Wm/Rnj/y1uufOdvlrAQASrfk98tfqnrDZyUp8tfTpkcFW90zGLibj2vHK0iODre5pd10GWygdxxeJJitPP+tZVtnxRqhH/lrdE7c6aU2cBiAj93gjwXLdPROqZ43q/TJp5mDB7p6W1EVLgnBYfJFgwe6eH9JleQQ5zbCX5Ki/eipFl0VRIcrxGXH3yKKoey5Al0XRevFm6pFFUfdw/E6QOic1lGncJSKDou5h7b1Yb32Z00rUWz0mvBfrrXF1p0emQt3jr7tMhdaLaVMvUXf18Ocu95+1XyakCP7cPfy5y/1np5cRHLn/dA+k7URT5p1eRjBPC+3W2pe7VuE0THHAZdkhIHmkMK01rdev1NFm9RmacjBfM7nNTtlJrDUbsL7AeKt7sGcX2HO/IPh6BPbsHuzZZTW0U5y/6RHes3u8Z5fVkAjT0UWioeFhnF0wzv1iA9UjGGf3MM4unOZ+sYHqkddQ9/jKTqwklvxwyongld3DK7vglfsFaNgjr6Hu0YpdXkOQK4+m8shrqHvMYK82NF7GF0+L8zBktziLKW4u2SyK4ZuoGCq/w3T4r2ma4Cb4IhQlAr2AGlcj/1AfsTeKnBgnTmzLTmGPW78MTMEsoyMJfIpPMKsCLKGzSUKXvhER9YSrkRQJwITYBqBdVjI14bkmDijenlLxGJS8MDYDxoGEwLdUNtcR2UTejSTORC1ZMYTWT+fLqD/ERpASYdpY2F1TI2lTTvMwHJBnzRTVETqrTlBfSI7vaC1rWRCItFSW7yQgUTnzcalVRtYbr5QJEdQfNBM/rUISWXNI2JPit+v627kv4bMtobzFZr6b5W7Wu9lMNCfv3O+j427Ou7nUfHRIP80Kf7pfXEh6hD/tHn/ahT/dL+ginZYjaGWvBn5DmlbLeOorHcYydNSsWjMNXEPek7ilYxvFAY4Jivw7OqB0WDH/kzWAqF+wPkoPSQUhH01YoIgqPwIGBr8JRdXwFyj0bG55IIMlL0GB+QT1g2ClfD3Rl0SeTJBhrUbfMdAOIX0CcTZpoeWrKffweeH4aEgqHN8uEmQtn0nBzXa4W3mTYl8e8qTdo2s7kbIkNUbbgbrMM7E0EuxkMnhtCsnQ+xSkKig4jnfVEVNQOWoQdMEWgUPA/+ZK7ek0H9tTD9ntBIBCjTxixndD7MrNkXeGkSOWMSBk3Pujbg+i0qSYFu5RclVdku9AB8ENgKcf9+MXOcITKXscLS1Cp5IDmKybghxSe1PBUz9JmyvikcShpw/FVqGxhDLR3aMiu1CR+8WUSKfvojVxXBSUp4rBBZ0q6ib8FtIe00S26IaKeZX6zeT6ZIi9XM0ReiZ0j2fswjPuF/icTnfTg+GqlU2ACy5/VeLFQL1x/i+mHI3NPmlDhUtcYm5N06l9fRRIhwbfspUN6BXqDMwssjl5y9QRAGJI2lvc3pMOfMRJE+G3/cgHFkkzCeySyDDjVckblyRDLrYSTh6TEinQw8MWLK11NAsTYw1LXOZahA6qmQxbjHqkCLRAAAo5RbHbJvFIWCyXMWQQpCOdKPFY7f1MyjsQv0Qcf6IWjlSrB0GEJn0iPdPN2mKiCgQNU3gRrYVIVG3xtfYRAeOLQm5SD5mlP6q4gL+CP7Xlq6yjcMrzFFUisSbvIoVXKTXqNzNB7XaQPE+CI3lPOsgJfPJgvw6Oq8VXptPrOnj9DsUSnvkWj6XtwtLuF+iWTk+iCPYPUR2rtC87uNthQtA/ZsJ6Mclky+oihLLSM98E8lGRcH33IN0ukO5+gXPZaZJfJ0M2TT5yX4P++GRai+nnmk1UWftsm5A4b9b6mKg90rcTOEtphygoaP2ISWFMUFwEMg0aB0PK8AizOL6hacFhfWQR2pGmwbQkpY5D5wYJhXoeW3ErVaoZSuYpaSqoukrok7Qu6ctzcCeTuKFWKqX4GPm2w46k3BR1TUh2pvoIpUcZ8WJcFsaNk6ED5T2mSZ0QNr8lwlqZg05Ut5RiHzUqNbgTYCPUC8XmU7qfJjyTmGOsIvdiFRl8bzgr3VyspxJRwQp3iZVIdJRwEgXkdDqW2t8yMVnQbBulbqXuVc+/0EOiq5pS6zKNe8iV4pspTEb1RGf7UeXrnEtxkWFqq9PkI2CpISUWrnqSzGfmgtoy4ESQoJqMoJUInJpUVOX8zTkBIc3UA0HHgPKzjNilj4Gz+zyktJWwE9IEB2ztojwwzq4qsYpscrZ0waTKDPrD1jedS9gKdAgVYqy7lHz+NQeK3mAG50BXz6WdW8v1q7mPehQF7e1vAe/RF+JQs6O7kZ2cqdA17ua8m5zoqbPHeFdNUqGtma+/1dBBlnlTXc/+oN3NfjfH3Zx38/61fv/auH+NZFtrlrt5/9q4f23cvzbuXxv2a495xu8+hMff42Vf3g72DHI5RUJuSz7YMjQ4BlG3Ky9wbCr8UKyabJivuhD+c8KemV7CHr+9EbJ9v2CieotSOx5+3gU/3y+YKJ3mIpf3j3bUP1UkcEVOlIrhTqU3IXex96V3A3RVBHqjbkU+WlKZW4ajR4+ogqJtDNAoGW+Ld2niDUHqmmyjIjsUbF2nzUoFwUwiJ61otgEzi5ONKG1tibp/4hvA07qGyeZXqZRqWH3YnyHG0TbqyDRlFu4O6tKI5ZzBMy8O7ZPMzIUeuUi0A1ck412PX8lfBRGLxHIj3A2ONxK8Jv3HkmB6+1x3E9HHP9hkQnZACfdsd7PffzDu5jz3e5SeeHSHukLdA/u7gP37pY7eI2B/98D+LmD/fqlf9x4l6zw4vwucv99Ks5G9avcA+y571f1WOO2mbqIyeGSqfdlgwW+9k22nZC0qwnfdXIRjeb5tlkcHI5zV4zHtQfxdIP79Vovs9btSaioy2BpvOgYgTumHH8FYK5dTiaaH0aKrFBkqVOW1IBirWRQKenpAJ9S/gBYcYQl7RA/onh7QiZMv2DHHzxjl4T22vgtbj31luEmO7GG7x8x34t8LQoLIurdHmPnuMfOd+PeSuN+OLhIlxz1mvhP/3ncKSz4RYr57xHwn+r0o+glea4SY7x4x34WYTy9mxj1CzHePmO9Ev0MyPYJY6eyxGtNS0PMXzFZ6ALC+ulxGOscmbaY2kQuUTmM1hDoKWA9UI6GcN/YVXeKfLLA8btiPOsLgC4jqYbeOrGi7h853wuD7eulLEXK+e+R8Jwq+EGMb3kj/siq9qkxfwOTeZVBaCAtCnvl+YV96El+vTkaDUrbDDo1WX2XRLrw8CAPdw/S7YPr7DSoQ2d52j7TvQtrvt9q6Th/JOiZjfy7FbIUL2cxBivZ3CPO6KhNI+oiVXatVJPCdmSFoWbELJTgkEz9/iWnnIxqdpUpNwzWZUWXL7uLvlMkVIHyYevUlMiwjr816yBGe7lU6l/2nc/fCYwq9aWGyTMF6kveEbZfSvGIiSUB2/ux21KsVzCP43KwOLMreUOKOe7aa09Uk+YB6xIoXeHSLXo+DJCKoVU3xP1OZxA72q3WARXmTlG0XovDxI8LwiP4uRP9+K+mOSy1/7aM/dJShJTyWaUOWSQIvpR13n7KNLZbp1CfoTbePBZjNURuqP1IHhvBYk5ASFn8R0Cs/B5IqcopHhleDST6Og/A50jJMRwidppHDnenqSeQ/+sogO5yTU0piV2Q0Cdp5sLW7Zy10sgJKehFy0elqqS+G07hxJtXq6fnj9Hwp1CmTKIHHZEOgqAQHJZdsUgXkvEpmm4Lb3O62egS3F0X2SXKfTE1kCqMqq4Dts0SP4A5ZjaqyiXuSG4dlFUo/8hRXDY41j7rsyjJNAqKqczOINAkrEzKcIUUG/1YiYFBJngyZEaYv+SNgSGQJ13JQa8hRgr6fP815SKdzCVBlRxvjfvrpDVXouHfeRxmrSDxj0lCAXGdr9rs51Hx8aL+Ak7mB2lwkyq2z+orAijGfDwZ1MUAcBgdCTwjldfa+6VWRuueGdDI1sGkJgyhRQ2gCMzSrIgslvZ9kKqJ5HxXRo9cOCuKSo8SyGRR68Sqecesuajq2Y9x11UsKA8RDza95ViNC1XnqaNR04P6Py1VXwrVzscOtLZZ6sUpAmWPYv1BtDS9JeuVNajGZJZvK9DHmtGrFOLTWOaZKbJJjEvLA1XQ3ILgq+8YBR2htSoFjZRcl0oyjise2tqzoY9Qvo90FdTjUhNwANolXZpv56yZxMWwHO2fvwsobxT7Q5GSif1ZSmqbNXiQ3b819NaW6/JBL7J6q00m7eQ+JxeRhhYdpb1Z9sGYJ4NLgkEaEC/YUALcadR6JaNt4DKJdafiCMobsWEsiLe/pctw9D6iT1PMeb/M0Ma+08mapk7v72770icWBpnQjq64TNsqsIfOcInIJ9Sr+MTCb6oEp9xiF43lHnSSikl70Rew0yyrCVwBTWrKlMGsxlRiOB2jVM3Ft5qwo6DSNReY2pHq3fsxNzsYitqWsBXeS0crpZZzosw1PSUcrpbzWSSSDxl613iLkZG/GMJGEBDLsXDzB+NOQQJ2Mv8DksUxodj3ud60c0xiWgjmaII8/JKbYbZFFRIdpHmXon8FAhyAmYhsgaTFmtX9qE3qj4ZfJxmJqp/wzVy45glSq2fBFddqP1PMWqtRsetcsf5qqwKMXmdRjGhp2+oNCWSGaTBXJeO+HZEL39LFOMlhJL7opOs18bOWnq58uLED7AEMA+ElDRVCO8yBxzkxMOW7iciimYnBkidk9F62TV/a+49Npye1nYcmJFsBCQJNf2Of2D57/TpfcHGXd5qRZdGtW763LciQFMOcwMeLZbp3cNYG6o03lvCTAwZu+MjgqNg97k5gQypaE7DLNMFoE8PWmnb9uV2+VVkh6rU94vqfT9alMQHmByUV0uu7pdH0q3CsvMLmITtc9na4v5QJKHEpEbLru2XR9WSrgZc6K6HTd0+n60nKCKT8q2UV0uu7pdH1pxi/r5SLR9tzT6frSFFxeEEURoa57Ql1fGrw1FqLvEaGue0JdXxpxL4SrHhHquifU9aXUVX3ZFUSMuu4ZdX2pw9b6cidRh/WMur7UYbEshheJOqxn1HWy41AsjgiTPSLUdU+o6/K0h9pNeCMRo657Rl3f6rAvcjw9otR1T6nrpMfBiiSiB/aIUdc9o66LUddyimPziFHXPaOub+uvL8iYiFPXPaeukx/HZFzFDs9fI+qunlLXt3XXl4paxKnrnlPX5U0NkchAWbFHnLruOXV9W299WX531Fs9+22I/TY3bqR6BsaIyG/Dk99GUm9t8VQyIvLb8OS3kUybJBYOGhH5bXjy2yDNDGZXdQHk5K8R9NbhmWmDlC+ytALb8JGCzjo8S2wkS37Gai0jBZ11eDLXIJeJIX1A9Rkp6KzD058GqUwAGESI6hGxn4ZnPw0ymQr2y/HnDTrr8OynkdRZX3BBI2I/Dc9+GvmvWGBE5KfhyU8j57+W8RGRn4YnPw2Rn94wvSMiPw1Pfhr5z1hgROyn4dlPI/8ZC4yI/jQ8/WnkP2OBEdGf/h93b7sbOa5lC75L/rl3gEIdkZIoqdHo//MMF4NE2A5nBioc4QrbmVnduO8+ICWutfmxGcqscxp3Bgc4GeWwKUoiN/fH2mu5vP3JmdUXUPi2XK39yeXtT85MLYfC1dqfXN7+5EzTF3C19ieXtz850/QFXK39yeXtT67V/uRq7U8ub39ytukKuFr7k8vbn9wqidEpuDdXa39yefuTC61MgZ9p9DnWfIzacs27n9zW/VQ/91yt+cnlzU9ubX7Sjqxa75PLe5+c3RZrPb5xtrZY84YktzYkeaL+wf3em+L91hZr3pDk7LpYFWY1V2tIcnlDkrObda27eq7WkOTyhiTXb72l9dbD9esQxXv26tDHa37zZIE+0Yww1YT25qBvF+owvpo2+QKDT1JPq55IHyjoNji1xyL7WDqfXt7q5PrNy6g7gK7W6uTyVicX+pa8SGhNQsXVWp1c3urkQtuSR1JW90Gt08nlnU6uX822QnHnaq1OLm91cmsvUxBgqg5S2wl5e4pb21PURVxrT3F5e4pb+08U6SHX1zZC3lThVsryTuHaczXKcpf3P7h+3QgK157raxshb1pwoXvAdgrDnRtqdjvvOHDDulwV+jkXeZgj/0LYGGNMOQcxu3nZ4Dl9IGz0nbhLqJUENQ8Ph1mzOoHtet1gthtj/4HtxjpSx+VNB25YXW9bpwXcvo6K5naljB4TOVATwNubPqD5LRBRLitvR7/VmTwzh/fuh1CMDL2TVDMPWG87gmV35R/1Jb6VXW0JwuW+5Gm33/WouFVaciXQDmzH28eeHwd+HNePxdPIt/fQIudav+3NBpQMvSu+fIN8XfDXw1sTBCUh++7fzyqP5iVZNvmzwD7Wea6Z333xw+dAq68stx/Daj8U4NH69bCWjsdtJr7WG+ipt5UUOKGtWWfimTPyrKDLQetuaPCFOZJTe4bisKB9GW+9uAdZh7cfgOwrcDTgiMMDWctIgQQjlDH9jLywRPkccus1NOnH1q+jHsPaFTHPkns4ZEbdvNGYezjFHIAnvkVinZsvPQdAY6QcHv229E0j4bIr2fb2Nh3fZl9Izroc9eqG1dl1ytFfQ726HPXqhlXpwdbltNavzaY6FuBIHg+zdVusb2tlvA74JPOb7z0Zg3auMYHG1a9Q4xGp0+/W8zB6IYDp93nJoUguB166AKK03pTVZ7ZW+/vAPhJBVCVV4SpL1htZ9Qrk2UH+Ouhh+SW1Eqf4Ms8YXqqvka/YoKXQEXI5vNNtxMxWST6M3YbzMmP/W0RLr5WNgJBwQfps3grY3g2zoWMvrIcxcPZuMsirtQgzC45TPrMcM+o2xmarZBJGs83Ml4CDyqNfqQG4M9ttZh6FFrwyzyqxTseDTCjgu0p8/N4HTE2oyniM/vb4gmpjeK4rQXEfeLangnTU5UhVt1FB98qxsn4dWjLd1nodmL1XpfINH+Oiakgga4+Vj7UA3w+xVdXv0VW+00PrV4bREXrEnsJ0CPU3X+qZA9VRoBDtwpoJmKjQurqVWT27TRDVNUPYyp2HEQXh3d8DUWlQcfvd2aBL6Y+oUH8NZ8K05FUql+Ni3biG/ZOy62vk1i5Hr7oNvdrX9V3Wr8OEpnVveRzRymAazyoXxZwXLmFvKdeuU//Qt7amMTL2mj4u5mAlfETr7cEUCt9FTcnlYFm3gmU98319zoFLO7Qb92Ep23WTeWDG1tC01rKD4nkndSlWZb7Qlx14Wu3stiUfJHtDc0dQKZxWNaXf1lZg39o4zqu4rQv31P/uOXU9y/KqX7F5DZ75KjDE9usdD+G8zBEILkf2upUW24MT63ccpep8C0xA9Hd2q4NPa++VDTpqK4pvihK/3tZv6gjDsN17+LUA+/H/F2Q6vSe53rpXuVuZm7xG/OphhnbK0I3dm/g8/G8PAYoR+pNCT54v3oUGbd8Itwr6eS2WtS87qMh5/Mx6tc2OrJTNffzVYFL6cHiE3t0+dCTYOTithUS9y5HNbkM2T0psW0M2uxzZ7DZk86QEjzVks8uRzW5cD7ReOWrXr1eL26+oztDNvGwCNRS5WCUP7LyZL4+PWbU5AwgFkhWr0fLRaog2Q6Ad+t4CWmo1ZL7tKxgy73AHFIR3twIUwKwM8gEc1gf3JmyagOcKGqSr0QuKF6vRC9ZztXQrQmkYNh2MYN/c72NxlObYbRdw2AqX6/rluDXeWbPh59bG1W7jHvPMAKsiu2dAC2y9c5DqtGF+YW0bD6AMu3q063P1m2w90ELPYx8s/CbYOa1wwCBIs/JFTBtXmY+dV1lzt2nZrJbRu34moFGCPPbv/qkuAXTlhZl9X5gNTdS+U2hYAawbRmN1Bf1RM62uYPjj/KnlYHXnTIuEcP06+kaBFbEPIuhjRP8E7uaNF8SG1qTV7/bZ5ZUfcdh6lfvffUfReqkAA9p81zngA6a5CgNyOTDeOdsiPFy//idPeKpOeFkxTsWE82N3o61XyBXXr//JE55rE5475QnnR7xbQzyl5Wj9Oh4aq2kxG5h47qOKsdeZCvC0330J1wbzHZg7govkz0obVMemrbU+tNEHYS4vzjgGxKjvNRzD6edtvAuijT4eWEk6vLc9z6spj9ISoePMhOfk6T9C3+f2036VCQ5YwfC7QfVkGPt4mozBlIVfGIMhCueG33X9Fn+EA9uDvm0QvYgfh/Vj8VhzL2TtS+gUAsf1a7Oh/mKj+ooGctOmYhBaqEJPeOhXWJXCvC8RGjaClI5vUo7IQK90XGlJcnkDgnNrUnpWDqlaA4LLGxCcW4/LWckshq9j9nZrUNnsog0t5aJTLElKjb8HpaBwi94VdGPkWrXdvNTTFjlS3rn1GFa6I7avN9gSWTRDI77H+oMmYDCrNqIThJl8+uvUgljf6p8X2DGXQ9PdBk1X6AzXr4vgNBgfj8meg8qQ99DCsgimg60spE7r1+TWRJ40L/C7EvB7uF74VMw1P2KnNT+psBW6Gpe+y/HSbuXS7xS2QjfV0uk5xNZtENtFKaNMtgplW2OMIBCBZkSfIFopftdHE96of9YhxTmtsYgF20LI//kG0+q6y4G2bgPaKhyC29db9LxKFY6/uQ26ucqGu351IgKR1Qpihv8WdJT7iK4fg2RrKOv2QRHPf1q7Kr0lcBESugRFK48JN11Q8/H5ThN6B0IIZNamr/ALQxjT/4L1v+vh8oU5yZG6LuA1zTQrtdTwNTh3VtmEkJcIjD8Bk+5zre53z5u1peS8nrz1GOnAuuM/ListTzGZ3OwGsKZGaL9+W+hV8NCVR+0cGDjkUbvq0I6hSSZoXvuTWB66noh7Azr73qjwsZhxbo03uKjSrLJ+HdNWURg5znxdISFSwMxr811CBttnrFe5Pg9MXUJif22yibdQTDa3+gHAaY3Cjbh+zRodjD1TV5s2ppu3k82D71GuY6fwSoIbSEisl07dag2r/LMrk4I5sNStwFKjsB6uX8enCt3pwvBulMH9qjW1tgIO4bgKhHTdZKIatZeeGrfegyBiGFpo5vDTuS/chRzD6lYMq1EIFtevV4G/kURaq5vgG39W58DrN/eBTtvnrELM8rtdOXfWNLg1njjxd1cwWbkcD+tWPKxR+A3Xr1sTCtp4PsvOqf3UhHJwrVvBtX7F1ydk5BlQK3T5PreApl6ZQlfV1rAIV8neQPQTOv/mDXW9soeGPMM6ZVNukRy/61b8btBcqM6zVvvN8btuxe8aRZF6/Tr06UXGt5DDhjUwq/UKd7iKHHqGSb96N17Ufj0GffonaCivnZhraWRtCvbNIoGdyxqlZ8PlgGG3AoaN0rPhaoBhlwOG3abAMSlIo/D16tyb1WGeNwJBb0ym1SWeAnFauDUXgghrQhu/ncv3l9vjFWtsFKnX9euwzoK4fFg/gXVmHqKoZQhTfF8PmddX5gPv66/ktMF5D9jOjfYtLK++CC9zELNbQcxG6YVYv95lJ7AZAwe034E792VuaVdEtFEoI10NEe1yRLRbEdFGEaR1NUS0yxHRbllNllU2TQ0S7XJItFsh0UZh8Fu/HtZeymU7df0DW/0FH4auFU9/RC6ralWo4HnTE7L6cHCKmeSGZMVVB0eithEW+zMzCWJVQSrArnILrZnk1iggrRVdnfVL1mNDAcev+GU7hlYpDX8cyhJtKAXDW/FPSq/G5kBvt6x2xiqYuSWKOvh0eyCa9Vda1YDNvGW+R7vyL4Y3vT67TffB2NUFH5Zxy+P5puQ1kWdiHm8a3ZbH86WPVfS33565Dfqx4Z4Co9ea0fPEv2tGz+dm14yeL/IugVHH33yQHXKhRd90oTbggixD4L5xMcHj8+dFSSCHsbtVGCZY/FqCdBljgtRTH8ReydC05Htyw7Ma5q1K4OXfVlfOH2oh6dlv9TJP8rMmPR2Snr7uESR2R4f8Z+di/rOLNGA+0gmPzcc8ayLUBzghERqToCY+Ml9zWR/ZaJeYBI2PZoDWclBKDsiO0J6+Pq4uxHA+RVo8tdz2L03hpvXrMs4Mj2SJWsi+14uYDCIx/I1szu0qiR0KXQKeYawSZuatAW5tDTBKn9H29YagW1t4kVPyyphmhbb0VS9pTXn4bJRZdSADem4MFLKDKR9hfhyE9gFNtmr7NtSPhoUAiTUC8xzCFGcmUgKq4wIpsbo1/Ry9mkANtUZlvpdYAiWCPFJFVNzlnQ5uaSpdrV9X0C7EuIS/nfz0dbRL3hoxdduxVXf916/XIo8B53IoZQTuhLDCx63ZvB8EHXNgK/B9rVseYXKScXmVxxz7jXXDehHzfk3Tzdtb8G++D/U831Ya4iHP5z0F7fSNOnPlKFh3tCf9XDeyC9R93ca3vAQb3AecVshh9lOIPtc8hifnsMHqbPWlsOB8o/BKotwZh0/TxuVsumBmA8lAF64zRXSMWWnkgtPnfyF7/FPeVTJ1m1Z1HT6yfh0jxehyB7/Tx6UEiywhme9DbBPyVL97lsdQGxu9mpVPVHcxeect/OZ9e45p7615FzboXZbB4pT3sExrD4uxdSdwqvWwTHkPy9StIUZf99vWr8Pq8ozeoTLvi9wo6q/0hStTvTeDZqWy826lsX18PKF8PHoGu2GNTZbI/OLRc6up8YfetFKvbmqsPr1vQmP3715XN2x2n9xYN7tnP/IXCb36rguWM6gA+VJYiNUDh6o1ISYY5vJ59vmjGFoazlOtF2fKe3GmtRfHBwT15zlWCdOCBQ60D8yME78DFTL/XFbtsTlEbj6i6bfmYOurrhVo85R3+kyrLpNROvXWr30abxWrCu6R18QN15y8Wt561WnFovnLho/FdV1+3fW8Unrqplp70JS3B01re5DHONb36Ry7rvtA4xryNqPA4IXn6/lv7Lie18NGl+XLCj6FurrPG9OTW0nbp+1osX7lerIFv34D/9P20awfi9nP+eyXlv7h+jWc6BqWsYpgXAcMVAUbYDAAJjRPeso7nabQtqQpKq7fIsQIv/a7G2cRbDDE2CyZZ3qWSVwTovGSqXjKG6YmE1V1a8KM67dC5TsginxSY+U5G63YQPS+jFn5NEy/ajqvXfcBZrk14Ev/q6+Xl6a8LWsyq/0dFNNZa8ua8rasyfQt/cf16zvOxjjFbal5G1PeyDWFpixFMXL9Ei98dZw8o9A/5YXnBnPtBjNKq95U6wab8m6wae0GM0o32Pq1sGQuAMq8wtvPGrWthez/+e3T6fLteHs/Pv3fl6fjj0//9r/+16dPv/3Xp8+n9T/76bcwt0//9l//+7c4k0//9l+fxvUn1q7/GjttH0YTPyzbB7d91cev+tltH5btd4aujx+G7cOMD2P8MG8fli5+MPFD/PMl/tWy/ZXXi9w+9PHDED/E3zHxd4yNH6b4YbuoV9jaPsRftvHP7XY7XkBh+xB/Z4gDjvF3xjjyGEeOD8rTEm4f4lTjvY/xifnuzvVDfPIuXt33hoQPU7/91TRtX83L9mGJT2OJ4yx2expLv81nGeJP5u12vPuKTw6f4vvtLD7128S9SG/8FC/gvcf4aRjxiT+Lo3AJmTn+zHbx92x8s6bHDHqsvj7eu6dPigsR9+FwH74ZbPvUW3yKs59wR1MfZz9hVlN8T2aa4njTjE9LHHnu8CmuGYPn7iV24idcd8HTWEZ8G+/D9y3ET/HFeiRP/BQ3jEdp4BN+b8Eoca/4QjA+8fcmfJrxKV7DdBM+4WfxPnxmHZ8cPuH3LL61+Da+Be/9x0/xiVusCGtGXGO08dMc78Ms+AvM3mDONi55izVkbdzn1vb4WVz/1vb427gVrJ3iKP3CT/FvYbXsgDsfcL8D7nfAyEM0FXYY8G3c9nZw8fdGzBk2xcKoBOLy7VM0soHRa/3k8XLbp6nHp/gXDk/NLfxZfAY+sPy3//rf//s3HBrhP/0p0iXnw9A+H2CmsH0WW9oS7vMpPhczxTvywh5xH5m4U2aMgj3jweF4v/E+hg6fhil9ftV7+z38T95hSGTV79EYjOnWtVAd84ccznhkf304mOK4JuqjJbPzsWJ9NJ7MnTqYSV6lu3PUz/Ecj8+Zp3a0KV4lb/0Q35nnRklXgotbfYp/vsBQ0o0Qh8CIQwXLZMTScXHrCUMuzHc8dsWCmXEwLGbAJxheYYJhKC2NIgwMN3CPDQezvG2f8KlXn/5vvpM1MF2JF+oFGJTlhiM3bvzqqOnqHSdtufGRRBtZHy4bz2nLJI6njJIPY39tmJe35Gl5RkZl1cazb+LxiqOqW72w+jVM+j6Muv07HIJj35hzOmVPKvUrt+5b4MW0evW9jnTHYAP4qk30Eq01PFrmxmV/y96d8UyZyqWxFbbtUR9yzoZTz5Bdww350lq06ckVb/QnPcrhfCxdH61fECNEg+Lo2Rjd6I7pErZGu38R3yCaiYa2jEsQfOiBReIG0vmje0enjm5bxVmDO7bLfao+hNTo+WyPcihGZycJOOLPTMdTArPDnQ10iugoDfH33EBrvejz/CO1Brr522edk7UfcO2ab2Hgnzn9CLkka9VoRrWfticGn9W4jqsWsUuPGIeHqf4SbeI+zG33oe7u8aSOgUx5LLVdNutP0ewE1aay7x355Nv02zB7IpwpO29sp2/WMiuxIwfB1MPPZBx27PVK7gDxdzUKxaa+FyvujQb/RgxIA/OrMVv1xf6eHe2DZnV2LpTCHfGNIdqpbNLbrA5o08VmjbrY+GJUT8ZTAAlbM6l3m8TI+kYbi7vttRFH3ZGxY3K+er6yPce16qHY0WWvQDVE8dhgoGV6ePEM0vXgK/NcvGKkun7oXOlPdMmWo3oY7Bvu3/9xSj0ho62flqdpP5th+jzM/efS/I2qaUVCjeFd9LuZQ1ti9kYGVyOCq1F/yWJO6Tvo1OWD5LJIN2KWMf1Ru1ifPMRh0R+ivln6zGWedB93W4EOZ+8y0lmHRcSGb4TzffeSBkeqdzHGXLrX9FaHS6yRr9VpzkWeD1ii9VxsjL3ovYkYH76dSAgj7q9G9kORCiqNV5b2MfhEHxAJL0TsDoceE2ONJFhvX06ZY6guk11nSZ85hpPqwxgchM6pYXti+o1R1/AQXbERH+KDmHq4BoYRNNyAEenmBQdz16VvojqzNL4Oohnag0P8Nzr1zPSLLh1Pj9d3jWeyU3hW3yxikxhpVMezqdMxaQFEzCXGAAVOFXyq3o3xw7ZskSgepu13ZuwzO034FIcc49o2I8ooE/bZ1OFnKFhMFgl3vPveqLZzzLxlzWbAWxaecHSAo1MHDxbBCE4SlLjoyvqqbXqQpCUTGFDhotIdHVg4yBzO6l3mntCo+lYsNG2HX3U8YzNj0nAsdhiTMU+SacMhNoiBQG00lydYxl9JAboun5Sab46JZrMY1cC5IXOVNXuJkvAYn5woRdRKk8g2V0qT08CTKH47OcawKF4s+L0FJQsUH2dTZKVF8YKFN5yUdsCaHQzPM5xdoqiDsyEv6lQf4jh2U/pul1/Jy05jkd8dVSvcGsdlh6AaGhgcSTsrRsIlcE7diMkhPKvrvI+5mT6+AyRdHU7NzvIT81XxZyPW2Ygi8jIyLkGWlt6NiAGyzG3IZqlPdSlejrkXcinDZGtFDU9l5GZVu7L4/Hk64L1aRXWYz9b2n/vJfu5693keh8/TNH6euznNjY3aZIFGQRVXohewzQV2oEc1lRXWRZ3f589/fn/9fju9H2+ny+vHe+oNjLRbRGfE0nIy0drYBznYoJplOGjbv3HRbGs23k/ugUSzF/dVNC7IIRYeioHfAIMKbx8HIXJ+2CoIfXCsRx8AERDqbSY69CJSiFuJBgA2AR5N/GrGSY/DH6kjhBT0dOIH/AQVfPh+MLRYDAglkMKNjhsMh80tSB9zXoRJFe5e7/ISbB9RHwJTFb+K9YkWyip6fEO0k0O0WkN8GkO8dwRQAxZIXCFDDOyHUfVMhwhMGCIeZ5jxk/jnEdQxzFiL8VoxQGnCv+IMFyzhGNbswYHFZOMYz4oxLuwaRKxwXFuZ2/jLBI3FX467gLXzuB/pCVeAZfF34kv5RYRZXGNNqNkQPwDVgZTyFE1E/CpG1A7jxPc1MTMUHfu4iRC1zPHRzfH5zHHnLvHsrIDY4ttBRR+B6hJfClIRRLzFuyihbyztmg5nwT3sG457mDPi4boefxuPdtPBtgFWYOD8mY7pKzgNotzVwU3lqYXwzQAthxy9PNMM3BF4Uag2GQO3xSB5I9xjJm9w5wbpGbgtSWqHDjWuUcX/8W+JBMRcanCQuL4NsabG4S+A0uP5YBz+AmeYQBbiuVg8F2twfOFsgqE3MPDVYNsSvYiwm+hFyxng7duFZyQPyR6fHD4B7wjoTI8VK3CRPFh5svJoxZvp8T76kScwvkU8Buyb6RHWMM2K48UMmB8CF4MTxovkxk/YMwNxm5gVThczYFY4XwS+c3D41uHbCd/izeAEMThCDI4OMzA1Qtd8LJ30EYVK4kpraZVRVFqRyMQzkEhUfItd1kanOuTTHXaZw7NyyLE7rE5PLBM/TfiEa8xwpGb8Ld50NT2ElVhJFJkJdkPiaPEzImrxzidYxwmrU8R18Phk+I2/ZSAOCzINHIVQMPqEGA/PasKbnkbMD6tuGjEyVp1AAeM5iwgUlqaaHsDqnCaMMmEGeFsCXzzhLvEGJ6y/acZfEIeMXctoeOJbrSQoJqziiclBrOJp4Xi4N+z9GWfUDCswwwoIJDTsgcBy4uyppkhggWfDUQgWwHhYibOAPZV40Rm7bMapMcOiz3iXM2zJjPd2D72NVB9WncBxY9UtqKB3SJh3hKYB99GJGhn+Is5KYsDjrvXUfvjEb4njZl2fgKBahZ9wR9b6kT6NVuBu/R8F7zu4cBbG9yLEkZIGEkBUygDMhA8i07tVTDlmgCdugKs3M74ViHOMvBt7ziIJ4S1INeNJSpQDotGdGHUEl7Znqh4xLSBAFhFigmBnngwo5I7fEk+N+LeWksTsB+bdMKsBsxIo+bi77UDMNlZEHUOPkdEpMCBdVkfYYxRi7ZE4q6LuEe6PGLmOuq/g76Plj0WmBJM/Rttu4VEEHdn1E87zoF0RPyGJwEwDU78iARiv5rCyHVY2vILAMB4/YTyUTkRGi1kMwAcdnpXDvTmsK5GGZll1wvywjxAZJkVXJq5xjWqHAv+Wpfw4lwJ2HT6xpwG/h7U7Ye1OWLGTXt46PBwuT9cksTiK0v4nM9HhjhXGOxm8dcTjUzKmqGF+Mh3e07j0xaAi/YU6fHzUI/wqdmGJmABrDPGYsHsWdmDrHmnM/u39cEvymg2MM1ya7fL1Ya++JTGtYetgqFmtEh0erlnCtZ/VWlh8MCwpNmDHh4frt2M6slpkH5kQMOUx1ajjHR7e/H/Kq7hOQzfDPbdISgg3YDtilKtcbw9Pp8f30/VyuP0lrzf1vBwTmzGAur+6Hx+Pr+kNeCJapVTKvA6fF506VEls6ajwINsMtj6Zw8M5fW+DVQuROG43B0IfNVusgwqWGSu5Jni4zCHNldK0OJ+wc7fTRp9YWnQ1KiIIeVYmOIuEItxuJMxY2irhAcnZ2mgx8PN8S6Y5zVoLjI3HbG26yBPmWUEz6N1Z69Wvt2QCvplamQCy6zCoIz+NukV7fLy+vB4up3Sh2FGtW7dKXn6029Pp8iU1DbNmgBDZ2S0npQ36kVmbQUd1D/cGyrfEom4zRJFbjrY+aALE9wxPCiiHYVscNZa5CIJHiQRFk7iuohdQAWYjmV/J2EfwYzz/mfSOxyhzF4j6ZJYZWZEOWRF05RqDyFfkWhFtMgspsnfIREicPzNNzD4h58TcCrsAmGUhcpNxIiNVRGmMT0WsJ+I6xnC1eI0RFNariKAQDyHKQOe99Njhj47seh3oB9PThddNz1QHUx8e//j9W94ZpjYa7eoMOzz+cXx6O/75cbw8JkfSIjCtXLUIlbC25LtlFgw1yw5+7L1D+o/L9fv5+PQlPRg7lfxhYPZSR9uLYRNLsAgz5Z8UX6EtpsuNKVYqV2XTROLqL5kPpb83PGvU/cQjnugN4KiT6IyGPUymkp7IOvwRtw7LQUIGNppxw406MFjMIO1FdPpJu+U4lOEyLJdVaULEPm94AH+8/f7v/zin6PW+U/EMk95CcXj84/30crx+vKcQvUUcGDTuok+v9uRZs6jaydw61ufz58fpdqzOyQxObHRUYGOaccfG/fPj9Hbybnvy5Kz+5Lb6SX202zX1w2a10RPeDzzRsijL6onIq/UtTyxzGQYdX4S6gm1Z7PdTGqJ5fkAGMwY9wMnIeM9IcgNTAChB7GSPtzrHMwzV5qT0W5YBewTmLMIhkZykWGFzcEihlCfSXjLBpD+Qp8Pr+/GWPGLlAcciPHIs/aJ7Zk+pedfWzB5CgsPTU+Y2ej1h5RCCo8RCV+tAeHo6fjte3s+nt/fjJX0MvsmRK2NGBqqfo826sxGfCmfcK1YoDmoF5VUdsdjXnpbwF4KFbajDOUXMqjwUQ/Q7x5g8HlEfmVBrnWZWY4og3QKzYAHusraRTQlzTHernVRAW4uw4PD09Of316ePmw/0D49/fD8+vF0f/zi+v96u79fHa/IUgtK0cEaYXRzM3jd/S9+R6MH1D6RmYyTqt7UCbsfH67fjLd8Rg5gyyCfMlrndNeMs3vY1MZWTpKigWcvcfiN19fSUnr9GC9gElg3RmApYE0GRLKsznGkUzsVLrUz35fSeh6z9ovZP7WEmODxds/yL54HU/S3dP3r6dshCBOv0NpemLQgjpbc5Ws1ku1hddTH2naK7yVI3E1kL0siEQFodbL1NJl0my113GE6ZA6CfK6Hipi1Ilm1hqj6X3Ih7GmFlAVQ8yNqgx9v76S193rOaJwby08WKM4orJb5OwE8W+BULdkdRZG5OMOvrdSrBR9xfwDII7jBWYze8q3LJ09s1TTL72ukdh5WAn+qgz5lfY1SDRi8EIKkCagxcwMRCWvwQPa7ojpXLEgVP9jgxYRTzRHHpIifDPBHZ+6JTCVPG/LAB4kMy4xEVVkGKCY68eMfEPOHMNyL0rWwm1CXrOB5iYhDMSBY8/IxtR3R/UckU2aQa412FnUCgCUS8iWwS6vY2X6FpvbtWO2btrZFp/3I4pc0Gvd5skK8b4yoPvA6SIrxJ315+Km9JumNSu8ABZBzjAYrWKzQIC/gtc5UlgpXYOmbdF+TpDKoEFpXXXuTpskp4/cayqo3aILurt/nwJUsKWUmo5Ncq1uCMFQWsgiXyAGdtJT+h/nXfGKc+1cyN0NM2rYG+Hg/JSeQ6td8mvvUhLlMH+DRwg0SNtvf9wp0oGrSBg+j0DOL5dEhv3Ogzli18xCYQN6Dv3vPpj3RtLWpoJDDgP23/5D3rJA6HcxYGmUld6fsiyXMS8XjVHu2oxUkWrUFcskAfVtmYBNwdrwDHU5+nijUw6B161QrAURCtVoCGtghKeeyIkoQAXCGHUgVDEbJUY5USUJ/Gcj5/Pl6eXq+ny/vb54/L7Xh4/FqUoxdRHxcnvjh/7sR35/P18ZCHMvpWJ1Kms7r1PZ+v34sYZBo097gZoPuxsulZlbkKTT6iuwYdLzVkI7GGRBgSP5ch6dT5pQ6xUysh2PvRV6mPeL0kT25SiWN4JEcnjVhXbjnhFM8Vf4f4PkOLox8L5+vly9vpKV2GVg0KBdkn/GSed4Igs/GEb8fDUxIC6CEHO04KnBOcqSGaJdEbBgc7D2HZzhRPskpQK1imS7yUdNmI5G66bJUgWXq8OBeFTytwogym94TV57dr4ow6nSEnb0bj1IV9R3meBWTJ20aAOEHZJe8kXXkB2l3KWyQgtLlkvx/+yrmoVIYd1ipY4f6nsnqL6ERgk8lUvZQewNDIGrw8nL58XD9Sz2dQWSKb1bCXHNJhvSj0LxjtS+p9q0sKDEBxI7HfKdu97Kkl6pWE1XGH5wANkRuMYTbi7bI/Fe2khV0gaT8bMdFtGQ0cEFAxLGJPZHRravYlek1lv2NhaLBV5vjESEohOw/pbLGsVCJGZI8fKZXxqdZ1B8SIwZkie+jw9pATsegXEfkG9myxB4ydX7ijaveW6Mqq9NpXe6Jgh2mRKx1OsvsI9Ys7fUj422ofEkxdzWqw90f0+bQdWPblsAen6dSKnhnAnCqOrojB2Z2C07p6FgEpXu06qfWVVE4qwd1PI0+/hPVg0VPBw4CdFDwW1IRy8G4A/8Qo9T4G2F/RqYC/YI8BaTX6iosvSqwVhJHAzQNXRFx/BclOuC666SRWXeDS9ZPikqLG28VcPMrN4MS8DuzO9i9bguM+Lxgc4BJh/eiqL6KQrpIytDgUQHAQExCkTgBjQnw1+2gRGkfKDn4Eg0Mm/qQ8duLTqPEaAKNfEBzwjMKpFU8kkhdEgNKvMRRU+AhwDMaDsUJDEH+HJyRCsBwj3CQUKDzwQrsGShUuHgvYJ1N88uJcjSDLglAAiFfBLLBdqyWGA9YAUAMAexWDBaGKU+UIYIIEJ/Uv8AbgLwQLwM6O/6ryTqVrv+oN4G+xfasaPPAahF8guuJpOeg10A9kvYId6+gmb2r6CNhMs4u92mtOL6TWdY6R/1b/+c6u8xHzG4Grlb3msKFACu/vIW97Tnu7yelN4We1HnJ2INcUk4RfhTOAOQPhV8H7YYrwF/q7K13dwjtjjrbmp7X7sXle4Wqiz5rd0DV/rt1TXYkqiaapeXt3uqErSU+s0xmd6NU+ZqGoQ8pCfEvRFHYHAwciGo5QQ5N+JDuaK33M1e5lpA3u9DGze5k1Bvql/FkJ3d3fi1zrO6afy3xXre8Yo1Q7kOkF/3yPMe7oTrcxak0in1TpNsbTqPYdI8soeozxrO4oYlW973afcMU3F/2/zXqt6OuFDy9qTZV+Afr6AHgTtVzv+sXP7nT9snN3b5cue3MrHblCxavSX1uNMdgP20jtXN+/pvCJUW0yRBK20YBFWGxczGzoYzb1b7HAwNdon72E1PZ4Tq1S2eXte/ogJqOVTeDu8JwVNfBRh9yEa2TlBZV0c6Zp2sO+e7gkSfVhlFjEjksFbVbyzWIfRFOPkAlBC/YPbhrnPog4RG8gfTn4qfSBRDL5p5EkQqtiLM8MMk+QB0HYI9oU0Z2op5ovf71/zXBhk55BzdY7D1qSPTQX4F/fD2ldRO3pE2G5zj15eE16Kma19xYh9MAKL6GldEPpKIl8LptR9UT06ynF+bVzFYIyle9VkJ32+v56fU0z1Wqqemy0Qry+HtPcihNlc7/3K10jSGMD7kUHkwRvIi1ahhJVwn95/FeOekLTGv304X6ejoen8+lyzPTI7JB0RVQpBsQMdd2E9SpZZXdRyw37RC3WQbOeqUEV4emxjKPtQi4GUYF88FjY/MQ4h+1Ws0kfvDLT8+kxr+fbadAbIu4OlrcA9DpZPoJBIhxJJhftuH5mMzuCMB4EcJY/q5DW0Rj3c8MQ4X7+R7r8eh2Q0ipscbzUrqg4B1i4kQURhs2wcJXDSCSzW1QYfkZZd/es+lGl89oY8/V6Pj3+lbkMwh6B5mqGb9yDTafHQ7yDGwnXSvvw1ZoqfARkC9knyXODh704LRhI2jLIE6wYrbPk9Zw+jUU9kcVBQpACXYAWLYG/yuPh8evxdnw7pohKlxwGsCvLzp6R19fb9fV2OrynlmJWUaMJfU/rudyu3/IlOKiDbtWG6lC3tHFOZTaJZnFbf7GmgCZ1+CgwSnoxgSovqOvsKAtEJ7OPl2ChANBs5PXjRWulYkBI8jY/CAdAQErUjGMenanx+DsxgsG6E82BzAgzDwyDKlhemctta6IzH8ssLPxmab6bWVgYQZFJZT23Ha/9Qv70b2RNkaEaWXgi7yUzn8x3gsHxXqW4Uh+uMlEiUhG14GZVmHWw3VVhjLe7KsxGyHYmsMIxiDxctf0UUhSUTJM1XjJJ1fJcxMSwAly6tzJ/Veaq7lR2BS8dM0UtVjiR2WHFVrCu4chHzpKZmIYw1OF2PKTO6qiyKABt4Jweity+rD9IwEBqe4tctnvAyPVLJjJiKm/Lrobe20sMO5IDpZeZCbhhFpwDd07Q28uX2+ExG3KSQ9LQlfFMfcjrxyVnrFHF7rrMiamPeEtj+UkVgaNQAGrSKHLH7SbE1YoiZTyOFp4mouaIc2WkYwZLClsp6k+s4dck1Wkhae9gx+bafmXGltlZBA0I0JJcK/dh/Flzz90Ofz1ezx8vmRyuWBGABohS2k/eyo41dMtgiZNKNYKDuvFepWge391ceTu1GxG1quKWBDCz/Z6Y9b73/L+djt9/fzq9fH45/Ph8Pl6yLEBDHW9PFuB2O33LuEsa0UkrsE4G0QVgURjZ/o0PBM4XPBBkyXDSq15rDZbSwDUWAJP45+wstHkcxhbDAltRw01EuER05CrkaR0yCzU5AymVUwEU7KXZx+9J8nqU/elSlsB3mVKulsbbAMKyvC0zm4xI6HaRoq9oja8VTJVCKMqaAmSHbysgO9Fmy4JkjTqLblfFxWIGUdLtMhomxI2fUFYSYkdZqam+0R6Pl5wWw6og7bhgGvx0b4+nTHNTHY6LNt5UfcSs68E6teE7IhXr46Qi8WOvN9Rv02LNHlzhzcLO2x9pXD+popQ1ks7aeBl8Xi1BCfLSJVt49ZHfjrfMW511b7W1r+IaVS5z+pKx5jYEruMzYSESVqNZj3l7+3jJ+k51zesGI+LbX5fHdKoJwS8J7dCWVE22waSD+YABOKyg4DsQtoUNCo1F9tfl8evtesl6D3xqQgthYCFFLpV0eo1sqb+Wl0Q7vF9vqRsv2eEsD4idubVk6Q3dLD1AnAQUsvjpaKlegePJEm+9TFjFrFQ8Imo6VqizlnjPCMakXirwnvGvdglRxV+u9D+UMM/45w0lqQLmWfaQ4wyGPFOChCwLjrU8lUAONJ0A1DYEjo5Hujiqaxiosndd1pqruCMksYVWQgV3VFVIqCGQ2DNPBBKPfuZjiEqqYe4ruCPqHdzJvfBnwP9gzlKfIOulVFQJyNcvEDSMLxpp/vfL9XsSz4nj/lNPECLFaAR8AAERqCZmpoi66LXcMybXl9NjagrVoAP4JcoHMZ1kGszA4SKHc1bS6BbNExkYccz6Mfz+fnj8mnZ0jipjAgTwIC8HXLdrTPz9+JKSe4+D4FCAjI01AC5ZvO4EUwQofLSIFAYEAh5GDlX2uZj0lEy6FtYkcOsymulFQrswGbKHkdsK9yZhYVjeuR/deJB5S7QaMjf42Vq8a3dYJtZJJAe/kwkUAxwG0pY9Uka7d9THe7oojdAJbtWnzVwpY0pg0r0VXA9tYcNar+fj/evn58PpnFXWui5BV1W05e8/i+Pl/VQ260+qM05m0OZwGem7UyXnG9tL31WiKaFVoed8MhCDMYJf49MIVDcqEIYnLZopresrmJuywYZ+TVwAYu+zmYLJmoprMONOhQiUoy9dASxjwpKKCAdpBVJLQKtr4JCSZ1ijyFXVuu+8mevt9H7IGRfNqDYZO+pDIrUCpJ/dCDhbF0tPt2FQz6L207jeTv9ZLqhBhlO2W+hh0TMpDRSXSAQPaletsvf6FZlctVwCtrJmlWukLftqpYAt+5TVBE6n2p9fAVfWS4KwtATfM+eEHNZWBtbu4vPz+eMtMfHe7ZOnCKB7eykLMernh78y02bHMTmh+jJI3Dv26fJ+vH1LOVLt6EwyfIWgfOfwt4xSxI4J8ejc11B3d4Z+vB2fTu/ZBhbkMU7kmHYWMD7er8ULNFbkbz6hCG8hFGttV2YtmsMXL9JYwWjFxsUZCUl2Zli48f1P7K5w2fiOMxZuuyTXZtiVkZbtv1D+tj20Ql6C8RwOBrMzv/Hxfn05vKdRiZ2Nygc2NqgY41h58DGr/OGgPRQ8CiyElGgvSQicoemqM/p2OJ0LRqROLuoJp68FWZx0CGKepCTMRP+okcrxCPNroowIZ1vFr2/X01Ou6qImCZt7+vsh2869UflHRaeSftD7AYPKxPPbJQtjVfJn1lAa5Tg/sBe0OR8LhKpk0jasQRFuBPKBvYTF/mKZPpoaHAM7xrOwzwl31Ivk9K+9SkZb8P/6T41URobqn1SPfF/2/kcKpjeLriK0q7z68B9f399fU9dSzRa0XMuH/4gs2//+j4d0S+jMfY0twfE+fzve3k7XSzGu2qHTHvfPp4fPj+fT8fL++fF6ec6HHZy+wkZ6T+oreviP99vh8vZ6zWohVqdwbz3WTP1oGFS/Pxo0QPNKngIB9JMS0VklVJtHVnNR5fTQmIC0tKCbbdd9aux8jVqQn9WXEr7Tjyp7N2LEeEiMoAITBFjsHP87nWotlONM5SsygOlFm6SAO+oMdv6BnK+ZLVOV33Zxmfshr8/PqbOpSjM4Ig22iTMIl8VyFqqa9/LqCes/UkiytSqwWXSrNIAgcuASYO+lSZOumLL+Ux/0djulLYS2wb+7vc36SG+pF2RUNQTkPhY4/FXYaQksFRmMQS+T+6mk/o2q5Lb+BNQNVDInahlBd91NzFPFv+0Evz8c3rJU/aTC95gALKZQH/o9TaX3MizsBYKukmNgkbDEuZOHu0C+w1uucKMhNwYURvwr1BiBHoyTq1DJoF6BFg6SkhfQoWi5gWEXpOQVehPRjSRKeRWgOYnKET3QX+tBwSDJxHYSevwNs1wrKxIyKanSK+QduEYt8yLozitIoSp1gS09TVGsQ2O+ADuTsrzSvN5I1YV1nnZnTWqCkY0Ggw7ZCSP+w8eXpQejupeEfQF2qQ1cQD6nSe/XHtI3qQ6bpZjUltkWQRY7i9FeEuF9sTemEkG36XJEAXyGmQBJhMjV7Ym0w53WtAfdIrtByUwQD3Rug5lbA1nWnXpJ69VP/3msJIKEZcXZUQb61VFTB+FOzxLeEY1lRX8G1JIFo6RO21UppsDh3FG0BJAioX3Ez3Bo3EFewoaJdcMmnQqNEW1YXU8H31bbZiot/KTrEe0wBCrDDWBPuSDVwbe4D1LpiNYXupWwxYIip5rnBokAQA2yjlMhlKHzXaFYtqIZhZ8IroZVZiRjWY4l9B02m1Vk1M9H0n3oGMzfmg19D8fDLdc8Uy2bKJDmlb47ntLx8fCR+q26gjAdohI5zca/iJxGUx+pYQvaV8reY/6i7k9wURNhzIa3GtUXYUYk7hK0pdwj3A94ggPXUXmSC0IaPY/0cHy8ZnhEp/bXA9wd0cb6iFlHthoq7l0FKfq/V8XQUSmTZBbxleB4Kfi/7czf5jnJn7GzFO+Xorikap7gOzXi3uPzNQ089YQHoJBjcS/wNndwYZKzJHf9KQUcd4NY++VxhD7W4jgiH2QJAox7qHVAFQA/0CKXzI6gFo8bq9Z9kON1BHNQraOJm7qE8NTUaWjGRBuCoDdAiIbN3xu6XS2mwR6jVIk92KtDpeYxS7Tth6HWGX6JVCTXb43BDVF0Zxll1hoS+C0yUTWuX8bsVQQi0uJUZKjRl+BYJENToZOi8vDygOS30VesbOUvp8ulaEhQdTqlA0MXhU6IyY529ZoZkbvetDDp2OyH49fDOUm/Lb2WhcHJGA8kbcBvpxR77bki7lt+oYOtc8E8HL+e0nzspGYLccgzQy16egSKEMgaXZr64Zi9YKcGmhYwDeDrSxRZtHk82nscPgJy3zMga6FAKtM9n455Y5vVSxoN+eaHo9fxyMB1esoQGA8d+bKOmClWz2r7A7XkHFP6tFcN1/Sc4nxHVd0Kp+VYAZLTPIt0osiesB0dP4OP3yAAezhejs+nTIDLqhqOzTLOsZRZcWrfjbYYlZGTOpNraKdvz4FWoqeH1bIX798zv25RQ2w025J5A44K+cVJSsx6PGlu+8oxSSIGhgzYhIIGgYhdvGFSBZA8sVHVfzj+db1kRX2nRjJCG7dRcDilu3NWXz1IpwWJZaMa/3D6ckoJAsys8kShBYM6E0waSM4L/KyqkELmXIbs+FRVMyBbBSCV2JxSFwU/EzwOLFK49HG0WxDXB5OBYVVIxRB3Bn21mYyOjXAnXOX9+v79+rZiIvzXJVZttgIDJN7nnaTW6XzO4Y6LWtmkOWyatNPlkCqwziJK/7QQkcvtQ+7RCpbsE2KuXnQLxlFGbHShI053orap2bkjilZM8JDvpIA0yo2uE+KtT6BCGWAFVhEeqXHdzgxkGPb9r9dMwU9SU8zk0p13FhUzT0qi8q2tcXnCGsVnB65SfNheU0WRJpYPFmxZQRpfIR9igLRLCTpkd5ABQ1y+Edlq9/8/siyxmubfwUnix3vMdZHMKLIUfFBMU+Lm4i3tem+vh7/O10Outz3JK5nsBSQPb6+RyCgSRVLok4vPhKXgBXbUOn353ONA4HhcFjsb/sV1KzeTvJhZFY5HGgjJQZxVqIRDv17KKlXqlahIShlRJHSIta5l2lFfNLHaYwDxFHnCiVVeHq6gZBdHKgwdD1Jh6HAsdgh6kXqQx+fAT/g9CtzUKoP8JGRTWQDigVtmnh1KQJPeofJwen85JCgzvVoHLrdosEgvaEoTNA7ZOX3v/PMTyXqc1cAGtZ9Y+VCGTMcbJUeg496u9DF/WqL7QwBHR5QzKRtIz9Dr93Y+vGRoDau7Cw1N9YfzNS3Z+nZDLdXMPtJGMdgPmKdfnK6E2emECw/XpwxPKUCntclUEZZCTxMdI61Vc73+8cfx+FqgRCc1JN6FrLpe06aDbkwEYBe6Mzvdhev1fEz1+hLXk7KTw1SOSKvKSwtzNvU0XeSuoyYFDFHnimlrM625YU66YUyizr82jb3PLNnCs96EA1qCzborQ76/vd9Sg2eM3tUZge2jTh6PMf/8/vrgmwyOt7fj21vRDjV2yQqq7IJGm9XD9XbLBXqtmmzMKT8tCAaiTzAKLUh4FggEepxxi+GnxiYMk0vVClTTbZiHKCt9rpFtDVf58+OYRklWdjKRVBPgxXtr7FZ0AamYvjh6rs5mgCgppZcaF/W83GmqV3ClSLHOfa2rD9e8jXdQ+wkKwIRo7kWrZoSZEX3bbtUUDZqoUbBaQRQdmQ5YVUNloqGJ8ZCjieVxnq8xEMnAV4olOLgldQkw4ABZYsJti9IRwlDBtF8rjOjdDeF2DreM3tn0ahsCMUkil9pIY6/jJ5tlUZ8Yehhjw6I6ZG6ENNtZ8A6LTEKcfQktQKE0AiEbhL/ASCKXwVcqtNfIV1MzdQJuUKkfEnhAyAtDa+pzUvmnzc5aYToV+jJT4+D6yAn31YQ8FjisPh9UTCyQMo9s0DT6NSWPWjM1IRONZZiaOF2luGpUhE9Ri9TuiI/RH2G6lFgnlnebkd8dGTIipiqJMoGYwrcCO1XGlPekyWBs2aEh0FbMujMtV8Sod+XK8LcVLj2J2SrN/YCGicHoIcftcMkBnbPOGhlXZyN1dDsekqBoUqUodnVyPdxOx+e0+dKaSa3d/L1OFMxHBz/X5xgczWSOygQjXdT6T0zbYz0W7FhUnSGPQ+SCIU42mhbiWMBqVdJbFTgWIC4jGqRCEUJWq5hIir9DQdGY7KKgKHREY9LljjQoISpzxc3ZK+8JCleCp4TQJ2yTgaUROVsshn+WDNc+FL1Q16BQIHRrhBQgKbSqRFcVcAkQmYJ6CstMiNXhSLkjAUe2SxykDmw+QoBtubdd8oS1muqiki9EdeNLbPRux+gv8+dUzHO5L+Lih9CuWL1Ey7Hbv/L0xbNsYBY/nr6k8hm9GkxiIVtBQR9fIfYMipQWpxo7RVi0IbFxFZRBCJIgAdKdoo/n5ww/280yyp4Ql00zzq0aa2ApPTHHDws5zX5epECIrdJnwb4TwgX0bTDKbi+HqEWMV/V8anhv+kCYqfCGKv1qv+Ahsb+UsMq211QRYKh6Uny7tdIk4WE/72cRycBOvZrvBV+pJgFR9cywDoWPxooCgWw/77cR4INrtHw5i6yL9Nuqgg4s46L8L3jYa3IPldrHHXlR1k1wDQHmA3dbo/0oWINMyGpowJZ+leZ2vVDODKeCj0ah/1FCoGyjNLNd5/BS1EUnCQ2YyZoL3NidVFEyctnv04k23k+gojZbpLpz+Dwlb1XVxFGwbxKzo+qE6Jd8vV7PvoMpRV2J3im4P7FJSyGqiMmA+qVO56csptUF4HQRkTBOulpNQ0nO0uHR3ZyP0zkjK1FFuOB0kH65ScAmXIwGOfPDx+UpY4qZVNYGXPn+iJnnprcU/sSY+ZB62nfXkCnJsd5eER+tAPzjBYguhWY/VxX+VQN9VaBepQhRXVibwHBabgEJY/eTni5MY+hFI2AXvbvR0vDUxaOP1ytbroE4QIN1/En0PZDdhBi20CGLrh+kHZAdh6JDyfhchrLkZY4RLOiYMc6Cn8SWDLR3R/cR8QzcTRf/nFoR8c9h+ufo7TAAptwtusMj7CKiZhb45RSk6Yi1YOIUfqJUggDWCP4pvIL/lghW9oET2cEqIDrAEMWTf8jxUBPCZPiW/njVv8f+qvryhGvi94g3GbmH6XHXPPOK701fueYXVzxf6anWvNKK31nL+eEJzahuzYSTUzsSoyzwWSmvJ7vsCbzgp3i8dYbhZhkryqaXGo13mZquk20TbY42aTLLkUSb8DIBEIT/DCoYZjJgX37Cp675z6UOCFF5aGWyA2XtRXsO6lGk6GjE0H+lgpeS8m8hiAr0awNhSEPpbCJfG/+SLBiwzaDKjx8gxRjR5QvlroUmo83nYkCA6RmLo6kSCDdUNrBhhVrhWAm0BdyLW4PI6EoDA5JUkqsdC6njEcqghq8RrxZPSZYQCTHBaxS6Tz0+6Y7qX+/HGoxDCnBRTRlxyB3fPg8WRMPyJ5zf1pSjEbIIXLLBoogdxXGR9/GlkHbS5pkZHH7V9SJKukih5dWEtP0enYkCGz1wvaDJGKZvnMqDoNbwINYLat9ylZDbn9EPVw7MDWJTBu40RsKMVFcTC9KEG+oRrn/Jr4GW8yO1DkZy+iITs0GR7i6ex0SF0VpVxbDVsPN4yGL8URXzbjVEBxXhjBOq0ZXWmM7j1+PnQo7YzJKrasFRMZoy7lSHzdAO+tPK0Q4leqF+jaecacROaghqASO2jWLc4+H8+HHOVZRHFY7XfkXrWBmUyqeEf220BNM3d6oyESibQOoPgiZk6Okmd9wGgDrAeaong9lnUekxrrl+TSVaOnes3BuRoEP5ZGw+nJwOqLdq7szSL8e9x2mhOSqPz+ykOgOVBvn43Ni9Hs/aOZ4fJe8Vu63ZHmFJukLqAdGgiGCjFk4QzVzxHERHt6s5qMycwF7j2xo1FB27RuNFfFOJDRxVcYJdKS0/Zo5PvkPUQ6VwNCKgbKwLRoiyJymU4M+RrFh0DuXELOr8U/ihnkljwTvvcBYKjnHfIyoXECPQGyDeEZXbskc6gQmxckfeERzSyHGMeqJzvdWUD0w1rojbB0LY8vWpXaQAhat01jEE1EbKev1UBG9j4TQkNh5TVLVTqW3K8iVzQFT1jIwdcZMLgENM11VSPwV4gZgFuKZN0gyiBapV0/8Gfj2RBxH6m/iWtbY2v5TIR5bZimo+olKZIvrAVNLPAl8gxLBqOUpUjYgqqPXYTAymGmb38nhM/AdJxiy4cmIJFMfVUiHG6REv8OQY0eddZaosOXiiWaHN4Xf3OHhYBoE1nFpb7PF4fvjrI0McDUYW28mYt+yNBvywT7fD6VLV8uilxAG7QbqKeLh4TvGpcD2Lx07xBR3Pv06rdDt71XCJl7/kFycbjnz7UzoNMqg0JpTTvSZCRzQzgPCMMba3riKVQFguaw6Ijot8PPJ+8QZJ69WVzxsBsqTz4cqs5JLJx1p5NAaNvvqjKRdnnyhB8SbncvU0Rz7ebtds1UvpFLqZQB/tGjivjkrRlIy3GRmKRW8pWEe95dp8UmkTCBhHTYj+Z+acNbPqKt0wOMTIb4slvlMYxzqpJlPFLc/icrmm/BpO9YOiZ9VikyzIumqUkchZxoO+xdGVd1JQ9ayGSdyp3r27xsLE1t/xCtqskxAHE17BPrKsxBe2+NQkrRLJswpJBZtMa2jCX1XMfjxcrhevxpImd1QhhoImpD5o2nGr9lCIfgj4xliC+cqjWoD0MFHhw7ZkBW0R/LR4GyK5XXkHgmMTjovwqVCF0LU1Hw+vGZ+xSr61i8/48fB6eDidT+95J80kyQNmxNb9WOn2bScctwuk5Wy1wY1KkLHbAnhl7Cux79mcL9B4iBjpCXNvTHwH2BETo0gWaBrGM97SP96vr9fz9UtGtK9iNiIZfHvUzy+nt5ecod12qcA2tvNmWnYcQ6+FDtGoar8yB9cJqm+E2O3beMzett4SbchcKhJ3rM8SqceaY+vSrzmwrNOy2/u0qhHHou4Wv/o1iep/tvz0f5PmM0vExJpha/0dpWfMSlYAGZbi25/TaFYWR6YwNKh6OLsohx6DMEZKCKgy1zJd1srvIZhnvNYoPj+Wyhx+Eag3hbfY4FpYx0wPGJ1uECyD0UQL2EyJM6lkPKxBlb2BDvOTSskR7jY88YSwuT9Tv0ImTWJ15F8cmVCwuuAqAfpo2TCNW3zLKRPvUhbXx8mODaM2h7GvJib04mk5xIqY0JdjyIG82kjsN7p6JpgAKs3R63E6/0WYeB7WORUWDOR27IhRx/x4fTy8fjm8vpwux7fHw5qZ+H66PF2/5+KniyzPGni1947V9+OXa7o+jVskwthyAeyDCTwePr58TVW2BquWaRscqwV3ueTP/AQpcZyytLxxxqiLk3tnWy0xx9tHGA0iKggBI04aIBoBfF5cdUBezkj5WzRR9AB89QSuEX1AI0NlKzKg4IwE254ZqE+DnM/A4BBAM8zXDACVDagnDpjpiBBuxEN0xGEiTHQsbLCJgtQf5BSlwDKr0lWB+SJ9iXy6FIZHMrySsmQiuJU9O57O//PldPmfL4cfJf/fpHIktFgj/ZgFvL3T+7H//+CnIf4XOmKxyIFj8ad9OTJgJ8pj4IqIk/8/1uf713h6xxSqMKnKoIRDx2dBvmZBpUShLyJgSdTd8BCPefluGVWS3X0+5/H2fnr24umZcpwq67lP30CMm6GDer1uuW+4UuJdihP/hGfz9XD5kt71MOtn4q+2J62XyTpUVNm1Fnv1OlLm1HX3RrqDD/JjZrazH3SgCYs4+m75ekhDiHmSlEAwNYZZQ2q3DGWtSv4mv69etgKvFPmITz0OV7dTSvrx6zEF4dhBZzhmc2drJfsRaykNO0xSSL2Rs9g36yxvMWvTRgqGZSJTpiZFOwudu7x1RZ3L6zUjX7ZGx4z9y3oVImKuPc26ALqVKm9ypB1vIgybjWY0Q9PENvrRMrSvKnBQgCmqkIJqU4TAvlWamLgcuzKZNnQNu3C9vmXoRjUGaT+GfBynaon/rNjA4/lwekmzpGq8y/6wVtdVGLGEKwySvk8CBXbmXv2ob+mAqtWujF4b8KXIdaotYih7xPqEMuRbulpVpUSQnEQeDHW87Pwz87+ICEa1I+rMTs9Z8s6Ms5bzcQiMO9O43+Ph8pFyI+q5M3SaxfYXbcjkcJ7Gu9w87NL6F3aRUSZEh8GHyeeelJpW++99/8fDLet01wvy/wTNnFWVPVkZtCZwsFzFmYrXoTQc5CfQeUmioaIGT3msGL2S/g2B7XYD0INhx2S8FpsgY1RIXg9ZIy0TD5IDiBV6fMKbpnIeJYQJoCHzDxjXpTIddTWYYRY4uzI5K8Rt2C9HCakZOUzue6ZNqsR0+Bl649hxhuyErPC6LPkSvGU0LZHUDoAkh2ZeR2gSVFMbuh/r4stFcPVChQ7vROkC/D5YXyD6IVpj+4kgwKzU0KtODhmVQIBJrRsL6YxWlTzc8ynDfA3SJ+wWnolIuu1F9IThXw4/vh1vOVWtJ2uSgcHOzrB1yIz8SPW3kLFiU7N4zCX7gGgGJafozCwNU/UAfTbwF+fcoRM6WETGARcatyeIIdH5NcOMYt9Ickl0BQ+I4Z3h8Mxao+gCxNzM/ntm36ksbWuQvtg8h/4KJIWi44gUZC2ZCNA7DOuc3W7lZZHxVtgzZpmGmj1r4oZrqKGF+6myDChmV0vgVZRia1J3olDQCCn8wnm8ZnpRo+yojO33EXEWDeEQ5zsjskVnjBnx2h2JiciyNZUvW51dZjHkTo6rDMjQGRarp0whEFVQTrB9xapgm+CAj3cDbChPcUKgGfQ7Fh7QgPvTKwPJZXG+SUxY40y5vh2fzx9vX6vYY9N3wsHBZhErzO5t5AsXugZumjRRJFVtKuqAO4Y9XZ6vCUrFyNeN5BP6bdHfDLEXg5KpGSuU5OqVsxyrioaD4Yy7IHrB6KyF4KiESrsufRwhX027WWupI0NZhU2hwpdQZUQg/yFymWgyr3fvoz2pVYLyT6y+zKyRTEs0zrkFToxcVlXY9caylOsi2G4+jXHDzgTeslkGdravXE4cMUDLUkKax4B4ZTTHGXJGm/rHLdOQVzXaxCE8zw3X6uPtPUOdGKkGNVB6PGctzwEIiGB+xbGUnI7ISIOHVPqJOpPjdjMZP5JRBVR3iUxug54yhSvhzH2aUaPrx52GMD82hVLhJ3K0LLZy1sSYj+6R5IOA44VqHHVrJY+CnoS7Ph0fk/ZBFY0PaiLHPi0C9HUGUn+JrJIy6Yn9RhHpes5PeDWl2RBrebyez4fX3CpYqyPKGqo0j9dz3qFt1CxZK3VfVFOmBNAC1sgRrYtJ1za6iiPIv4L2R+4BB1LMPRQUoAJqnVOVkB00+vUCNxbJlaJBpO4Vloxgp0B7FpVdBMMJudnYFIAAwuBwBEJLSmVRyrMqmkV64rLJgH3dUkiLvCuYy8hUB37PMR+E6+Ioln3UwJZUmwyYEqELgJOlRsW6m4CVbSkVGjWCsAWZKd2HGjUpu78qNasaMaigA23TshGKzxYJBjElu4xgBoG/0Is8LcJH8vlUyYnIVsOCM35GIBXGk4JlQHUjVSREzKgVyjYMEgVAjNCxSZt8QyzaVgXQ8BdVKTT+Lc4DzH7C05jwTBl9TQgxJjyNqQHZC0YsO49nNVu1kAK11z2WMGZW5e50Iem4RpjkdegjaIiBrZcpVBgnUZX5BFSXGWoSRjtBIOFC6/AJu4yonVt46qMprb0+avj7xBfqpGtHNmK7s6IaRk1ep1vkPIH/BW8+mnsRCZuR+Z8aGA7cPoyP4pmzMD7CoUH9QhEVtfMru/mnK2ZScE3TYPITu1b28kXTsMJkTzVzWlKd1LmcaXYx+6VmbEnqxeIHcgqCZ7nGrlyaYsmGvJcDmea0ZNIkEUhz67w8nC5Z3c+opdiytFLraoyJP7Yu5h2LogwiktszTyXaer2cdn3JqujqtGM8pA2T5WpGFeqepwGVAV+y4tZk71YXmi1p15eXVDDVNiB8rfA3DJTWtCdV4J0kpyR1IOFl64G+nN7fszXVqUQaTCYjtCWDLVD2zPwSacg0fQtHH6cT2MfSNz0IVBFJVCPL5A5b/vLycSnBh6PaY9UOV+JoRQFFxTG0Q7uX18NjWmTtdBjVHgXUbcjsIaroRQq6Ch0CcvWTAR/BN6VdN7Z2dRYlYbp2ZwQ8F2jkGphYAHhtA9vg5/B+Kvs4jVVp34alOFxt14B0bZfI+a9ViPnMAw7jk9GvITTir3Q65xtWXXQAHABbwLBV7FKC+csgYmhkoNbJZAzyar8kTj7juMYaddDry+v5mNtnO+tArq0Mqw+Wbn7fgKtNFS0K0d/CAySCHxB81sFIqgn/D89ULiXm/CoaOwSKD03THW4oWQm93ncl6tdxirEHJk61TOhWMiOgr66SrKD3hZlgOGG1nHA9mq85sfy2IBSQVMMNcpftgWVcFmrWK8cf12bWuE7eJKLCvXe0su3rW2tNJuOz6SR7D6AzFPLB4l0qYqry0UT4TfwJCPrEU+P6YB9v32iEvr683o5vb/mhoeYVYasZ83YmM9oJj3Pbx14vnrmZqguHYC1GB61Rc2FgI3WycRsLITyY/NhV3oMQZyP3IapG81yMgoxjS0lCTLZIjhtJ2PBpZpUYVvyuFxbHPh+/pShVzxwsn8Z2S7Mo9rPuMOy83OXxUIqceLEzuf7Bx+uGnRCaMO7xcsjM76wC9kFzbBpy0n7Y4y1NOPjMpzIm3DNrGwXI6+Xx43Y7Xt4zWUOVOZeeV4TdVQSjC3HokJVs3dnTyVuhrKNI700BEKgJ5rlenk9fPm45NYTvzFbrhEhVFDKWzUvkNtSn2+9F3ohBZYqmIgOwk3C/GnWjU9Q67JSGknK8n9QR0ht0R1bXCbQa7r6RDIui1rtguHAXBVUj2G4wgRmuAkU9BbdYhUWxxlZUA5gJ3hswd/YNEgN/t7eX9JxXZadA/WThg0XCosbg5cJzo3YYIZkXyWMa42ZvSGWRjYcHKzAkq1ka5EnxKi+HH29/vTxcz1lJWfJCf0IEYrtub0k5jJ97WYtOVbqPQmIdNjPBo7Y7dj/w8ykLxa1T2WvaxdvL5fiY5Zdkyxt8egANyPaHTcBt4ww9Wtob2KCZVgZ1lxogDDILItcIQIsK2i7FcUqQ4VJTbmUZlOqruLmhTFdWcdS4uZp6iYI2RCaYrcYms4oBiAqfEC4LG4ILUbNU8RRYxBZl97oK0i3shLz2pxnBfYekdU+S4Qqq8JMlK0VMJo4IDOMbYwY51sVLJlwQ4JK3FIl9vpyRoTJPScGOXjHOTMQ3DyD/aAoKY50HxrTS1utgWY5P3bnQvWfcFu8WG44MCvEDliZuFHkgrIWYe4hn4RCfnsAhAYOZd1IIzoG4F0vtZpYEcO4WoGC84mj2uJULyeYKn0DcymzWAMF73JUVzoHYqIAzAkkWwUIQQcrk8oHZqBkQUnqLtg8QM1ZgiUL6GZoiRJwJy0o1mpGRMPMj2BE1uQYgL7DxDGDn/1JZrbI1yoHXSRpRuII1c0ogO88PFAMhFC9h7sIAV3giCEtG7kew7uMu63wSaIxBbNcB4yA5JmDaKXqd4/4SYJ6MqmusFOSiAHcEdrPkncC3FYg6aaUIA5R8ElkjQHI6C9EocbjAnvCYgVUVzTwQ1h7B3yIafJC7cc1oaTOYud52p0WxNXbnxrjn09v78eIlRh+uP2q97cbahDsanCo8xUnrsTvc366el6RUqQTGzrmLoxBuMZzmp8wraUztz++vmwJ52a3n13aS7dibqslGPn7xmZts5DkZeXdWJh357Xh5SkG5tpuSDGUF9Nce+eIzV+WjmOXaEAXrnxm28hxmKaxl3bATTZ8MW3kIsyRxjhvwJ4f9eHqtjrwkI+/kelhHzugF1HC36LwrUQdjEcjLzq5W3T7MpA6sN5L8tVGtadVe8oROzgz4073+18vb8fHj/fQtTbzoOIgpnvKCObbnEVZhhCUPbDNj8RYsaFprXtSKPwmFI9mvNuw1y8H1uvBTsxJ+eXu/fRQe/KLC6Pb188dhrxn4X2yDdZSIG47nRvQ+twUSF3NcVsBbkMSNhEvxA9pEiUeKH4BGgmcD+w8/BAckGaziB9LuxA9oBwX0k1Cl+AFQJJYX4geiNLYP0fXpLaLC2NkTfwc4Jvgh0CoZ4mEH8rqBXXExYAEojOK/YPMzhsEUqny4J2PxbK1jKhE+OGLMHjwzPfz3nsIrlDTC28Ntmh7X6JE36XENPAUDyWHTI6Zjd1ePN9zDFeiRtAQC1wBQZgAeMyycQ9jEUJt96BkZwJNn+ylVrhBV4NGbAehnaAca0ByaAfcBI+4hJHFZY1YjctojYY9EImEG8CF9Sg2fkKTFDBx7ItlsTQeqY2zC7BXCaUYuePszsg4iv44s5lzLhtyzUR+Z2rpToR7ki93CDXXIl5yxRsXINXFjYaRUP9CozG1x1wDQzSo9Y1TEXU3lqPXCqRKHno7lZkbsjE2DXUZKy2iWovGgmhgshRQaocYEBu1oC8hUzMitebb5+8o141UO+D2a8eughRLIoL0nwZndrB++H05JrmpWOUuAO46Q4saIWaJRZSmy5CWl0AjKRrYh5rJeJ8/a6c+jDc4Lg2WoJJUjZahIyLLYUZF3FZjftktUuFm6eqVDOpB6NSLzIiB5DWpAsyDxTAGsFl3UOsWjr/MXS1EGYJzdsuyO8d6PPzITqaKtACq0fQtK6AnTPjIWRaeukGmk0W+uFT9oFkHoeLqd2Yr32yGv0jR2jWmdC++3tHu8V7VumG6G4YzLBTk+FxcLeqtmpCe7jgYU7g3N5lAuTAHBEupNTKABH4LHNrYQbZdvx9t7HlrrAimtzXf945QxNaiGUI9To8PEOLVrUMWFa2YLSaUMa4HydSw+E6XtidyeTpecDtUMamcwJHIM8FvtIuRrRj/m2XrVAJKgo6GxZV7zZ9epjGY78c+vSV5wUHVNDH1lmtltyoVuLVyLmpR5/BCd0VLT3PQdvRy4OdhZVdFZarJVxcn5CYFnTaa8heVuI7hf/8oOh1l9lAiuBN6J8XDLc8ka/UdVYqdtzW+3oi7qc+LqGUFAZ4trpMkLc73dPl4zxlGV+r8mOh/F3xuj5xVIo+N8/zup6K5vyX0Paj86udLYyWZJ19TCY75lLQyLyr+5N1X1cc7q5rrseaytxg/sCqNmmyjREVaB8jtKYFUNM9iOqFKmzDj1I0Wo+Ske67BhBmi9BV0EScAHaxyrw9RAJhkesi8wLwarBDdieq4rxuk8S4i0Q/1MiI3hcWDF2pENlfi9qbU5PjyB7uvhljye0apnEWbUtyBAYdRUZFs3IXFIdLLPiBj4eBbs9XsXznDHk+Y/gGqFKWnTkI6+fjvmXTidKj03FGSKJLiLpIPqVTLOYG2z7uUMbsSmt8NbKjLmVDJxWYVtRPq3Y9Ye5pU2tBcwsjIK/HAjwRPG/seO2tei6pfvy3TnF6oXlxa17+0nrvLw8fycV5YEUh6P5n64GIZL1+eg8lYTkFJWV0kOwyilhu9iuZ0A2rGBBAoT/PPjePvrrQLkHySQf4SrtXRlZrExerOImzC2G8BGf27gaqW1TwbeWRKPAz8d3g/n69vbOnKhmGu7KYXaE922swwdL6RVdHubrLed6Qk5aq0+2vfJqDvLz3JUpfAqNQKsG3/yNb7eru/Xx+v52+m6akHpjz2t+aOsM/7k+9UvMMkLoOPdVRqG9AukvK6LLnWSY9sqAnSo5tZ5e4kUpRSSYB9k+aCE5+8uKZSQfVlmICwK8Joqay64AFxDn2N9fMUCMzLM/TQiW7igYLDntbzfDpe31+st32oJeAJn3Y4Ri+yi2F4T/eKpxjKn5wxuxydPlJsJ9BqnMyKoq4fc0Myw9PyEEyLC2Jr+OuaVoWX0VnOywbX43m7Hp5RaoBeCiZ8WZNtGU1rBTySuLkW6y4IL8oYL3FvUh2IuCt0V/HukSari3tVizMAMItLYhMIBvgdxrMggXX9C11xE1Q6zniFmToTNp8yOiAS7xSeyeMB/aOjx3K5vGQ5OhctAmhHiGIJ4BGGixaNp6THevqUbt1MNa6vB+OPlwx8yKWJlUpEigPD0sZ5fiSMEwrRjsEx6T5Rdxj3xxtrYllY6dfY+PMM8uUdqODLC4ScRWTzllkJwofXYN2ihFqk8wWcmWMz4M6agsBwRTc+kOgAltRSBBpkxwD8QiW/SqtdaAgc1WCtR6xaZzfg0wYtXxzYvzAKyGzXjLmvM9PX6diqyYEPiW7Yf37DXsf14e7+mqix20fOHDZDAR1b9UjfOLoBA1k+n8ni0dvTT4eWQqZA5tZgU1QD0gTIySrX3VegKGJ2a1QcSiaFRqxXECsbTZowHNCz1jLMNBPmGYCtaIabZq9VWqmcI+iu4hVxwLBcLMiug5alsRSYBQVIFLBggZNDlqHEDSlQ9sZIDbQLQ42ilBPrJ9jzAutJiDNwupKbCXzhdN92/vM/naw4PTnSHOsDOxnmfM+pHfcjEja1V3bt6q8IdzjO86jaDWZOP7A67WCmrXGuWuMckVgX7N1/Il9shM2S6TgwbZNkWa7EurFGTlvFCWe1OR2sKgiqXXrI5fKnE2Otq4Q2zjAFP/5mvK4k4d/O+RMJTljAUGchPC7lSSQOHguLGgplX8LdTNW5sV2OBhUNN9lSSMXHc6mQrsoWinZgXjmPffwIZpc6gU1PC+WlM8Xh4Op8uGY2SymiNJkeiQKNBxPOIjkos8MGgDeBZoWoBGuVA+5ujxh0S77AnluLP7EJnVYiHDWyHowAeebcEiQ0cAtFkhDS/kLStNBRR6wdgoGrzkN6vHN9BziuuluMh5EPAh9XD9qfjw8eXXAfUWl36rrWbj4+njFzbt4HpBcKleDiN4qMf/SXNLqiYBMiHx4NYcEBHOk/gai1jA3r/tYOqdihVjqLKAZTw/FYOFnSWDTqQZLt/v7gShgOZW0TT3YI7MfQiyMWO2ThXHv7yb5xONs751KyY1IZHR6NDlHzPioWhPZw8vdXEniPzgVIoMYFQuBqpIOvK6of8G37fmE/tVqXoDNxMZ/ZFONvQbsjudJZ3iiWL/CkXFmgsRhLnuDKbL/+G3+vTqd3oLG8UFeadlI/byLVxRfdTz4yEYQSAPcYdiN8rgKA/N5McF7lIx6PnEWFr9oBWgHufO35fRnabTa4hqNvfv2OZuoaTXFqm1nQfDxm74iC5mMmLtpjdj+F8yHhwJqd5L0B1i0OE9OrtQ+ScM2BOaiaYqAwEiIBWWLZualfJko29Tpk2F3djhNJf624yLY/JJU2K9Hoqto+dOYOu6b1eInleg44uRCc6UnfxcSHYlnKPgO8gpdujMNTDsQJniiSNyx9Pu2C83sWf318bIGvbzUlRtyLxe3cJrxdZe1Jfjm9veYJHoiiFemXUZtx/iefb4SUfOi0BMrLZfeauQ58uYfq349urr2hmF0lajAWsffdpl1zk7Xj75rvHU/Us2y1JvzE2hXO7LXx6mUB59HQKXeOH219Px3Oa3vKuvbyipX+023ytV/x2uOWK551gc/JjwyHZqSa3jp0UFlXAIcFboB2JfF2CjhElJ3i+jBpoeCRFY8vU+cmlBANqipbdRTrT1jpiCvjSc+GM4PFY6fnSXUL+kZwf7MQT9RA6g9z93El37MvH+/OcvfkEzYGX46adKbcw7LfT8Xtq45N28SGd/L5BM9s3OLUYSg0FhOUlelQacBQZRHf2TxvrGu+nl15T+9dEXrTlxivUn4tKE0d2mpZILEf+8/vrf769P1Xss/SPqvO999qePl7PFZJzM1jNWSR9VYOj6en4fMj6JxcVMV2R8gWzAL6KyRGyjoHpKKbNAJhEsUDwGsXe75g+gsuAIvcyceWRAKgJXRQFBSJJijRrkhUuALOCMlfmgkpCV1bKjWBQ5Leko2ETeQYcTcoIgo4G6sXkRCRFDdvUKb8rWs7ZYYAEpXCkUNNHE4wddam2bdnkTlRDDtroomzbYCnC6evh8nTO8XFLgqRCfz2rIfd2UbhQ3mCmi/TFhnmyd8EMRhc3HqzIVw4kaIv0W8hgUpYQjHzgxIl/BdFJSq2DBSz+FcTXKYkGao24o+KSHyOeirsurjGKIoJSHFrDJBGL16JuLT7EaxX8YjXSnXj1+OgEjCWyicU5k2gszpkUHLGCLxjHhvghpvlqvOTACizoh61yXVVJfxjQAk9KiIzguuLP8LdMIJMJi3V3wX+Fbq8KySGjIMlwxdQ0mbAYQtII1dLVSE3XjBDRLjUpZwrXM9VNQlqK2Qu1NBJz42/7msmjecPP8Pxq6XRDPVYYYkPJbmQ6BTpD1GSRlAebh1Rzw++RVZkcHwh+BN2HSO1nFDYBLUTcEExyKxX3fLy85RQ1y6TD1uj8t5yr5+PtsZDF8VQRssMY628nP1UYNu9p6FXNFBiifeKzcXQPm04zRBJyN+O47Ie9kdVzXlmxuprbv0AikjSGCFX+TxSLjD3R/xJZQR7hGOX/GwKDYfUUOCiPT1azlsBrUc+lVU4rFEVMp7YgkVnG6WDYp+P59HC8Hd6PKdhsVAkBCTZDhoBvFk1PhJjhE9sYUSpgu36Di8NP8eWUy0J3KpxpV0bhfPqWNdyoXPeVViiSllYiixZ/9XbhTBVGV83G3mfOYfsgOH+3J1xVfGEHIFEJ5PMdyjDG6CwgmDwJFy/X99PzFoKmhljqDH9y8ZB07H6Eme92Ixm2y4dYoHFlmbmjlWD3qalAO5oXVK/l2ylE5sVUaqfNgV9v15CObN2MlTcDP293MTFcKWXg7KzKtRJX+EhVICxr5r8HvZOxSKQ6lVNFMqVm9mOITjO5hBeekTy/UM1AkYDENgLKTFJYundIZTrHs6Dhep3fD7nmjNp6iAiMz45+r94x+XR8OVxS1Kbtf0X1++mYpeln1cKA8hjU1WYkfcPYsAWvx0uucqYuK7KJzQ0/9PV2ut5O7xnyyxh93D1sL2Lcor7T6b3qAGCMunjL0/H1PWlxNVaX+yzKXSJEG1sr73b6lmF5rc4XNoAMr4XaC2NmKQ9VtWIQPMuNab493k4P6Zub9XLtUCaoBl1IJo6eTVltJhj0HpR1qJKyoVc7idsAp3W0rPvO6C3udLr/HhMERmlxh7d6DDj19Eizg7opmibn7fSlEFyyuk0QsU5VUE7IvgMDLITdscop3U7wlJBLZwTRcIHj1D1f7dv74eU1dd9lILwAMME0SC9ku/YWht/ePQNQvgh1fIO1CEC27EJ93PfD49cCcKdCR3ZJgvtBc0lL2+vUb83t4odK11uvG7P2SCWTjFO7t5qdDdtQh5yo2C1SsSO+7hntIGDTsRuj0P33fjqcM3kY49TXs0u9BjXsnJ9p0DXxhj3OCGrjmdcj3FEgzboKtTgrzw0/D3oZ0UMQtZ7tMdMFjP5n1RcEtaooYbe9QnQNO5L7Dkt6R/4Tk5Ik/mfqsOJHNhSU+VQ/fzm8pqZSkpSbTmCngWKa+fx2BhqpqJMuI0ZyTxxPCxxDwGKR7RJCGaSlJbtOa1V5RopjjodQSeRMJ4RFeQ6gi4OtMaJdpsxRbTxb9Rl9yWS8zazyJC1Uk8RKGRoVsdOLT9imRn5WUV94vn2FjknQjI17jHa8dArDEAvgE9C/AjpJgPhcISfqY0KOMkEiO0kNHZAlo7VSZPBaLsnplotn2QbQo3E6hIGuqe2yRpCWeVcLOAnGkch+DkRRYF8bqqVT6I8wmaUMyVGTbU7yP/7x72uR85QdZ6PKrSiqIo0a6umWam/43KVei208zbdcwdEnlu5Fv6JVqaG9ug2eeRcq91FJbtkYNINbDuqUKYaG2inKqihs5vVMUnVCFImMzLUqoqDgRLWRlSyCAUSljVWrrBql33Ue5PZqT0R7B709Hm6ZxK/KoT2IEmPrpfghM+pr9aWIlCcK7Dh1RFoToOZ2FFGyBsr1SUwGemEbnIK4k1K61snmC+F13junw4DJUIPOIxvTtlAGF5zZ1POe+oZleKsoFZpBPYf34YYwagYPTjCutcyKvDkou+PN9kIbSPfi/cWL1LqnQUkStKSy25l0Pr39kTW7qepyoskLrm+jBfTkY8DsDUzqS99FW/50+pb3W9lJZ11rFVgT/O2idg1CQAFBsEBcgPQLm4/s2a7CKzfB6ZX6gnC0SLwDPEGDPTv+oIyye93mtCzi9oNsgY0qvKl5QF0znXtVfr4sAUGRECQPUIRkNyV2EVF5gPzM2YuSsE0q6tXU8yp1JaGKB/NM95DpSNFmORe1haQ1vGLGUdAmQG8SAo3sXMmSn3U9uwRNA/yIANTR1pX9iESSQP9DglgbyeLre167ndV4bCEPQMPHv35kbtliJeEQGUGB00ErbSyu33PwAXNa8Ibq0ATykDbCANnaL5r32YOEChMb66mkPWZzz4AB5CbVA4zwxD4fbrdDmtYwohLwaRn5uCpdMlRdmeeGtfBXKi7kIVgJXHFKb+T+eRTGrfTMCaL9T1SwcXZnoiAMmyXmVBTxTifcj1lIRujeaGuoW6abYVU2E8rQwEnKTyh2mEebxCOIBhCoBtMPdK4qiGKaJEAMJSoYBobcZG6PubgVwh7GyGKwJRhnrPAUlsWxGvhNv3Ja0NAhLNY2ale3UjRk7FQ0FRP99PPh4DbcTn+V6+316yErzk9d4osvO1uFbrk4SW/0ag6aK0GnhtJEgzXp6Zah+JzaQWf5CBoRuh8v2SC6cB0OMICAmcSLCMz6Na5JwnLU+/j30Dj74c6eo/bw/pjUUIdeRgukrsPd33t9Bcdcr0sL7ODag08lwNelQ9Rm0eNeFEDZXj+m1nvYB7MRWWMXAePAwRmwYNhub1v2evG7IBtZCCDqmHjhvT2S6+UaEBvZf23N3r7Iddg9AJtB3ghA2HZnRcdfJ6fPVLNXu7Bpt+tr2uumJ8OYIkGjAdXBsl5eAg6qV82Ee2yDlrERI20NSXkpSqVn35dXiG1O2WPu1Mh2H5fNx+3wcDrn+sS96CmTadEaWHlilYjBP6HrjUDdXzsT5FQ7zuKipAODahnSlOyeiu0SUz5Hiq8jAKOikJBhRwDWMUCEdRONk3DqETAZ0XsI/QXhKbHORoOB58Y6l2gcEG0AqEyI/iRUxsgRTjFtobdKhDJCCPj4op2TwVEjqb6+uc+HxzQvtBhZXOiQheuo341eAGd2dvjxWp9fj7dNGfbz8+F0/sgEWToplSqUaMGgK1Rn91/043L4djidi6XamSG5Gp45GlbGve1XvNrl+v18fMp4C83SyQbzruPT/KkLHB7/OF6KQoMZJbs6twyiVLFQ93bN43p/HI+vBw+/zGAFEvDAHRxXfW5puBUatvuWh1kqCV8Mj9hcGT1XtHChkC1CoBlOjeiZquROrJ40Px5SP8+3M9xDnMGsib4w8LxGrDlom7qK+oup8PzJNi14RwC5CSkKYclLuBqbhsgzwjqITAmRZafxcG7nUwZIVxm3ahx9RdqsepXHND7Su/IbLKXHx69JbtgHwH8HwOLHy2pCLR7ET9G9aQ+YQaCM3sID2FgDtn98fs5rJdaqq3cpT2fkzhBViNZgm+1xHkX6XLL4cdR7lPDIHDyDPn2I4RNqk/rRhysfPt6vz+ePt69F/ctM0rjNaP7ph315qOPzc0Zr7zqdT3S7ISHijGT0lqmpXiNEBFm9WcAimCYGPVpXoZv8NMMSxWsiOQQbAahYNLLIOEUrA4MGEU+8nzkmcElRFy0cgChLRR21g48m0vlIxgoSDAS9Fqli0IQkNNFI9iPVzhS/aInFMl8EigjfUjBdPFe2R/Z4VEz9MgmOqqxolIQrwM4bdKCNE3w5JPEFhYcumnY8pcwzVofyNuCwx9P719Scj7ouWqmewZ7weFyjK5uak3DOKVnYF4edZFJs2Lfz4fUtc4105M1o4DLkmAgS9VcQEJZ8J4IjHZl+q/N0rPPLbLpqgE1H2Ta9U+V4Pob/TtzBThUARkfboqeptyEz5jar8+DegbTpJux8zPJ9o1qh3ZWNO55PX06Zl++MnqrHCaLDm44vOa7OqKzouxo5/IB5BW1ympPEejkhHY3K+fHlNcsDTKp7OqOJbQAesNcxn2vckZVWfiW7Ugtg7KiqcIFipUPCF0QO4GMHYSCdEMFFQrTjDlmLQKGWTk/KKd3DOkI1FiAsUCy6OE1QuoPfcAa/KZujK5qIFfRkFKf9rcqubZaBKVTyHQD2y/5/NDNbgEt6ipfhkNqlmLg+wj+/vx4eH4+vdVI606UUUnAZcabdcbHiNR5OlxRxZE2Xcqng4KwI/zSHfjxcHo/nbOyEjY4IjmlfXp9jFzI7NqneUu5GSNHsHJvB++v1fC4pm4xJaOhYItjJmI8L1YZO+Obg+rhKCbo59Jfr7XQ+H7LBk6ozskNuJz4Ng2/0eY+BLqJ2E8kCIixlJ117fp3iCqab0leNlFoNr7yrAz6/Zk4NWLvLhPOwZ/5wX4oIVwx6hTcvW/iWLWiT3iXDwp/c4xXyQWPTNcyuhZ/Z5GkzvsrqEQ2xDpRYh8s1hHXyNUYvKF+yZidy0siHGOaCEOTyiTJ2IMUJ+1pERnjmhhzT9528F+X+CiJAY5PtPvCKP2EOs6PBqWr26LwBOBvRpsiQsUumwHfISE6mLmABKUbRynJdHm9/veYIOrvc67wM3Gu6X7iOmqP8rMrhtQ++wmEr2hYqCLTtv6Vl6UHH/CEcjyu2RMVaxOIClrcHKetbDdKJ6Nz+rI8D2zdnMwJjTAVNI+vj7B1y+WwNVKpK5IxyB6dDxteoZ+Pigl//hcIOJIOYS4mPXSZVcAPkSEWUTT3sDvGsSFBUvMCRBShdAt3fXi6/oIqgN7MQl6fXa2b/R1lOdzFId9FnpubeQnVstBPbKmKbDOMoFyCZU+BRo6uNHD+IZgWjXuSQi7D80SKlGr+KD3KMNYoxpt9cjHdcDCSw33F3EIpHjm2ONwnA6CJKoqjmCdFJlB1wwLBZreuZgmN2htlWJNmoUUcFNoqYoqVuwdXAY2e7+M5sh3akTvTqk/8NpQ3Av0SRg8RbcAstKbiQRusRDDJBByVB21NJwvET2++AlJ2YoGOBBMXbRlpuW8qfD+/vPlYPRdC82TzxPoUq6M6u7HiNLGuhCsNxCWPBlus0Lk8sPbmsuJiQzMOsOzwWUZviC6y9NgQNtRcoX0dfPJnaw8jKlmqfMm6W56q4DaxSTrR52efr7bHwBxsd7Nh8guxuB+2dR/Ln9HSTSiiBNINtABHDkK+301umg6A2fI5gdmh6DXHUlFLbdjptVKdDBb3ybYYdGHSSmX1lxTBkyh826b2LpK5Y9OTs5T1vaJ9E99kn0R9S4WMXfRDRzvcQAIobZ6j0kJH6ZiSMHUXwpmcb5vt8S7UpTTeIUHGg0OhOoig/bErLpu+E6GOMkVWGJGzG8eTBoW6z8nX9+t9Ot+slz5N7dSp1xSDnNuvQKzFuuqZHda80XfXX01sme+HUzQH3jZW3klkWqUFR52JNq0LkWpV/bRQ01hnnhBOTgNVgDtUR76yb12sKthC2+xPEz21faYKDxh0Si6iyElOBhUXUK9pcrWhFRKTcWAp/fpy+Hc75Cpt11uhBxygfb7fPp8u3w/n09Pn1dn2/Pl7TLOS0qAnpobG+PBY2wSgn5HZxOSBHYBZWONnWi/PcwDVzFTJVEWvRQiF7nYeBpH0uaNPp9WIcuups6jJCExwxGlY93D4RrclmLRSwqjqeQKfA5ou2LVxXNHCBsUMqdVaauoAzhD6nlF1lHMKy2lw6JNU2MFIV17jWqdknOIZQpRa6oMQZIr+kiweH9XW6PFx/PB5eD48FIlXAZ/nCBYD8jjHwo1e0Z4wTNcNPE9KY3d7DyY+b+Yhq14FYp7HFHuFQTXpKvoe+fCN8D8h47BKrOnqZqgKf7NRTZyJeZ9RPybfHw2v6aEe1d2pPUatafCoKTfWpvB4fT4dz6ozZUef0ah2rb++eT+Dta95TrVcvi+3YHjfXONOrooJDSE93xHFzoLhR9bzYn0pm0knH5uMKhUdkdL0Umtp51h3It/dMP81alcCpmfN5ez+95DxsRk+Goto6s+2VZU5YtEYzUw5F8KefGpigA0JEFkK7m5/YJ4q2Z+aZhIo3PlUloEkOR9KHjOAhUdNuBYzfsnc+qOl2HNNIRTGtxmN0YbiutwGGq6btIGrXA0MAg8sCy2/LZBaCAdGVZEWXIpKWja2csShPancfsMQMS6icJ6n4gTRohCUlpa0q2IeQC8uoSFLyQ9EpGq2vgGbFlCSgWTZ3vJibRNklnmECvoVsZb5WiGzGT+Bwy0wkwHtdGd3VMowDMpGYuxlrDa3UvK324lcA1fzUl9ke4T5RloZZIaHMkL36NJs4tZfDe271F1USDcMj9Qy64xFwRcd7gq4Dc6rMn1qdL/v445CDhtXwg8xDJOUnJEcoxOlb0V8tPffVLgD2oQEcHMGs8Lu5rNjbSIvBHTvoUtLHH4eX14w4yky6TnWBegRFH+FJDe7p7XJZRkGHCbZcn22of/v3fzyklT8dZ9fK4f14PBZSGKqrjKaHQgOn1LepKc1UFWR2yWqs88xmqlLSFPLu1HCHG0jt9VE4WPjErQVdB0rO2AbG/8djhuE2g7qwAFONoFRlxK+Hy5csMpg7zYi0hzp/5DQ8s9qCEPkA1KFyyRerViRySDoeeQ3gbRsBabxsZk/ULgMg3SNEvD5q2oBirFP5pnDM4iyNdnFsIAF+HB8/P10vGQu1ZE1YKGG5U3bAD/rxnmXMVWjolD7wxoCZg65XmeIBKeqaLAbyEw7ZBrxwvXLqTqorXPAxEEFMPoY7V8lFUHT8Oz2PrfhfH/Tr4eOtoJc2uvYR/Q8i4BsJ2XX8HETiFtWxNLpE8vHHKQN0WT20bcVyPwJHWNb1rGa2B2osozYt/N+y1a0V7fhLZwZW1YCk17SYxoivJWPzqBrt9ukchsr0B6QQIDL01u7MmP94PeVi47POxdawnH6cFF6jL1JiSuCQIeDIM71gcjAWQa8t0UAilzk0mu7WaR4PT+dTai4HWWYjnq7vdiYbw8ApfYrKHUMmqXgdIWYDEDjd0CGdTEiPlZQ7gkmztUVfT3nX7KCyo4pOqUZU6of8K71zXdinggbo8xtt8QMdf3hShEyzzeiK8nMeikqBrwrXG8mMkHurc6nNZUw3tXyjddrn7EGpXjW4VW3xeBK0fiMKe71efIn6cE4PJNUkC3e7ciXhZbds3TVDAUxq4DADJEeexBoTYo8mGadTx6xXzmANKufWwpx533plQXo54/RUX9g2YlY+bNUK61fNDbydVE6SCH3RB8rPHTU0bp8773ne16m5zpbkgB/odkkXpO3Nr1BdH3+831Kwf4Pu6N4419eSf2eaJYvW1vG04xzgcP/Xv/8jg882ACf6DJ8Pj4enLEWuPTH44egRBis1QyF2CzeEvJ8PBZG4GYwq/USrKbq6ydKzoxjogW3pgSy5NnBI9IjiUzgUfDu9Sl5C58Yl5VhC+g3TTCEe0SoyiYf7Wj9Ai4agYEQv0TIgmVEHWpbwSvLwCdgk3jSpjyYcFXOZmGTCRKZJWP+dmP8Giox8fSIdmUEa9Qf9+fot16xOuWIQuo0VTk5t3IJWT28vZrs/UsFgvzE60YC/Sj71UbdRKMlPSDSxaTB+gHdbtjxH/6RI/glXUAXsVEC7PX1XJsOJlK+Q1UpnsoX1EWlgnJ+9npiNz/Hh8PjH9XlVCD2cM+iP5EHnFomLddeKENd4OfzIxx8l7BuH8gLDt2/8l8OPDYCbDO+cpNHBJt4enoK/Mo0GZ3E935Pnj5GX7IqSto28+zVE009d8eN2zvC/oySHKJG+jnFHCc61Fd3hT8PMlaT6Gs+5UFKv1g7YpQEQDmLFuJDBkVFB2TdAy+DypokWxhqAMAEhwgZDxbXnlkTtU4jFIJklwETVulMFYFR2zdfAJAlwCPgEAQiqwICaQGvBEE0gCvLrEhCUQVIygrLmwZExfA06z3h8/XzHEWMCOz/GTANTNXxVf0+IDp9K+TnJl4u/LYAWSYlNiMuzMGjUtN32oDIUks5cgfoJvDOBT9c7cp4P5/NDzvhmVdcfHffsrzdUDmIjBWAHbmrYpXMaSfZ6KpGpEgL5MjtAWuRC1ZiYwk4tbbu+yFvYyoqyAF6IHi+yKJeayRJTiAIzyd4XGFkyxsjNitVTKzrrpJfPhxS8oAZOxJPDaMJ/IOuY0BYTpXEmWxu2Pk0X+8jkXq9FvNf6eB/nLExV8T/W8Dnq6bIwYkYWMKlpzX+RQalO7Hh8ynemtaomejO+PGZMxF4iSqaUy/7oT40M+vPxe5qeHlUDvkuG8fl0PGd5neku+YnslxZ6lYQ7sftZf/enHJim0rmKc72RRvEDZjkGlWqmpUsVxvnr7f34ki1MnbHpv3Fhns6ZI9mpXDW8sENHXaNK/3y6+EPhz4/j5TFD9EqlnRkg5B6Ixjte/inLuDmdN2/Wy1Y+xHlLOb2HhNObefyKvIJgf9eTuuslspSkTrTEw6XSj4yHP+kYx+16RR+ARFATrt9XYP3aqGlludeBunkdpD5g1trVd+peqPT4e8W51tBZ8VWvHDfzOD+dRckLSmZUJWNdpZyy7JHyfj7dsjNYJbWINoS9ZYQLxgIsuIxKcCBc8tgjIvIbMTMWIwiB90GNQAA5bXGvqH0JAgwCuYSyu0D7IRKD2y6ELCB3LJMjSKAhwyMRR/Cs58xVyZhi2ZjK/FeHT2ygIN1GY3umnJEq1sBS6A0NNHBVyYsZXw0JvgRH1B2Fon26RJbUNQJKp9fNnjMyNdtosLSdHsjkUKJJ3cTWLI0T/EdG9KWjm2KqD8QLrZwfdwmQTJGcIb458v0a1JGM4c/A+4IS2ojHT8IGETNUlqTk9mV/CQJ8/MyhJ8MhW+wgy+J0KNTz+ZBSt6gLNlMM+NeF69o0MxCIzIZh57r4rEGrjucxxTc5xehwjq+N9AZk1FsA8idL/UKWUCowoxjaEzZck8ERYtHE7ArRZv3YOR/SA2E2OhYwrk0KbVG2qhEinH0y9eL53kqhKJtQdpE3ZCkzivWxr/n8p0TjCuQkFQ4wf8Ffl+zaMjzqrHqb3WlCaMeQBMPsuNPe1jSxxCMkda3bCQkK47ohnWuX0jZxq9c8WequOV2AOlymNvleTp6w9P7X3su+2815ZwY9aBXXRxOVmMm0b061aaQ+9qSWnEhPP+j8YmG8//ly+FFqtU4q5rIZfZ2vSWDfq1JkIg2HR4W6F4pbFRYnwJt65MIgHhyrT9rUHq+X99v1nBV4+5TZEaHETl6+5/NHDnwYdWMY7W08sYVXakdGYtg7QG65seL16X2XgYI83TOD3DPx8nCwRYSXtIMAa1xxo+e+HKXmALLwX0J39uoQmxldSjNqRIRViYY1NAE7HWccHs/h8vTl+F5LFizTJB8W4gE7pjeSpSpERp/7X/c3tzl8P6Qe+iI2TV3PAImw2puS080adtRZZKCoQVVV4jIQ3noDIBIGz2ks7mwOhozYJNwaIjjjShP58XJ9tZJtfno5htjOKoClxQEY257q1/nr+/H05WvymmcVQgsSKTNOuu2+ns/X7+mLc42Mxp7EURiyOOb02mrr0Yax0iKtnhQneIEkYWzrKxnzFscAmcxNuruanpqNNiscQeu/KFogdYIlIFJO8ckiaGAMgrUKwxA/YFtj7WJxsW13u7USLILWJRR/8EQQU8Zor49T7WMg3sdIp48l39J6iF0YY1MUw+JbGuLkhzh5QWGXd4eio1VU2QGEin8VHVEAloZYLUNgCRj0aPABsXJsFERJ1yDZFA8yZp1iloP6YGhSjddCS2p84FACQpFLqFXk7AUie4XfAWQXSz7+cnyqoE6d4gxR7CvpENDFXKHviwchxNdn0h/lDceVXELRYbvAiHRsukXALbOZdG6KAJPVXqGxwRIs6ZgkCwv8QDZoISFnkZCS1VZyc3J7wnPE7KWOBxFRbBRmbw8SYcTZCXHvCnKK2LsZPyOXFrMuGG8kITssABEJY8VjozsiT0U0tcAMOTxT6N2ZCWfrJHjuKxXnqj/XqkfDeU1iH/weYx8o3s0do6CsRJb5fWSswUlAyS1EC0JrpeQKkclaJIHQIJGg28rTBtJ1tovYt4SLkFSTRDERQINRoJjVic4U/AW1YBbk4QCbMSJJiyo+sBJomhGdokaoqOFv80o55W0zZUEiBfipxkzA0lyGTAmfkEUUfIzIW4G00zLbWBEOIPtClXgT10Au1SKtYbFDRX23mr3EfQzkzkE8MTCDRUATqzR4MyNBqwBDyWoOgjuq7+TgZ6bfiIChjgGF3MMnPRy/3ryy3C0NyifZDEY7OlYKoQIa3oKBX2/HL7frR14gVamTrWHWUu/IfL7+v8y923IjOZIE+i/1MvuwVpX3y2xPf8kxk6XIlJRTJJOdJEtV8/XHkiTcA5cAIXX3nPOwszJ1CchEAoG4eLgvr6MdWJc6kvejJbt5sdkIO10WMJTMgW925y/W5hgcckA1+gmD+EIEL/QYBUtYiOAFVjUOAPRVANP4otbXczrCVZAQ1lAenejKvQ+LtZ16NSyDpypcO0MfZc5kRxF74brgYhZXqhNkXyt58aodjCUyNJRELGF8hVEQysR6/sY7TqVOcx0D7swXR45AZckE17fh6Q6O5yo+VDrrJiowHe4OfHtsB57V2w+lcWhjIQkiEYA5UUCDmpxxLkPuvXGn4WAbrwlHD6UR7By0ogk3OCQRLEBF6CGEa0KZBQEDZNMNa6twVplUYhNHk/mJt6AzSBeQENOabiFdOxY0Agk60RQCpwdNEhkaQFi1DToQLC8KwdCoKwHXiaeIfX7iug0JHLNSAreB+KFGF6S67m+bTDjX1UbzDGvNtpE6kvJbR9/MFztf3Mi2YjD95CXCgKowlvJBKnod3gGi6ERcdBsbnWTjOqTdXaCmcQrjQZY+WRROrLltqNPtB+2ecjcopkU2qMJCCaK6EGWTOAQELDAjTZ845CcHfGLontDDpahVLAt1XcpAtrkR5AFf4ATnVSIJx3Xc93lxENhq6YUKihBOBCQnthFG+6HV/kKcaiE5UzbexxJnPqLouk7rMCHq1H/BYDVWXhA9CpWuzvyyjHYtpWhVcpaoQ+syYKtgTDcPGco/uuRtFFT1c4IIJXAw/Qyg2dY8s+YGBVgilO9zgStI2Ik8nde1RhU7l8mAuq5kUBJ3K35i2klgvnDL4uYNp4k8kj8p3gpjQrxuKIWDVKXgiQuma/DFhEkCd1eDp/qrUjMIGNCcR9ZxyRwJP5d99XhLUX4DjEgkZFCM6aiBLtQ4mF7x+SeYLJEpDexgtLoIoVtBJgxYBpP+4sbnT1TZwO8Ejo6wJN1rXub9Zj68TE4pRIImxAp3gVZgbdjx8MMZs7LGrO21TRrz5XSwTbOkKTFflY4sm4YBdBEeFsgOHs5rezGtyvKapGrwcvp12LjId5WnPoZ8v+ysHvFGDRyp/GXsCpmYzX9K4pkTbS702/+2xrEwOyxRFDzPLCRFuF7TWfJQhhIE1PDqw4yx+l14cXmYO1XMPMZr+HI5bDxmqlKFDEqyREp4JlEP3Ccadg4FeVGqvQvRwPyyuDLYZaOD9F20jCADMhUlEVr6aBmR4YZXkOv0nK/D5Cxp+UiILjzM0eqQ1xUsmBMxAbggVsNpQPRH2Yccqd0CN0pEXOJ1PIy3nmnb1KjebAzu9DrOb4PtGnYCu9GjWgW8bVGBHIgI2ACkFeS6rMvBxhC8S9wreGllWlvgItXc7f0VfIxdnklYVAkL0iTGoveBj8u4mU4u4V3VS9Z+AFb6Iu3Oc9LCjdDOXq/6+1tDZwKJJNQbUZ3Oa0SRtUh1p77i+YpN3U778bC+oxfZd+LUfAFVbAkXDlXpvAZhUtqcPya7ha4rSzmTwQCwx9UVeU6Z6XlaRV79qeRym43BUmpNYcZEH2adap53o61b2IlOhS+o47JQy+6EOlGVYZ3nl91U1MncC8xliVCi5reCssDDSTZvdvNsV+VyEhNo4R6v+Zka3ygok2zHzbQfdpfDKtvgdBxUEtxrEmq0ozW/FTDeCfNdG12Hy3m+4qYWB95T5I1sZGPRPgTcqxJxxuu888WRiO8qCf81Vp8SgjW3CPIZD6fxMOGd5BYqjRkmJqDmHgGX4MNZ7lbx2elY6WQPYGniP6IOam6VJtk2OeKWnezHK0FLTOJzbo8m2RbtZhst1lUSOGlsa4nSFoVN6oA2WWSSom7e58XZ5RInaRzbkvQe/FRtsh2al2FrgyEz0Xb4pcJHb9LNwbxslnE4j6FLtpYaaMxUhrREkxS7V0Crcyr1BHDiEQ1O8jYvzvbq5dcw1hqvRPavOvBy2ixnl4eyk1w9gPQQlVNzPyfqga3TXGXN7WmkxTYlw5JtU9zRbbLFvk3zMi+TvY9raa0pP1ClL9N1YHdUaSRNioqg+ZpfJlEC9HU8r1Ldnjsg9dMIOqQsF79NIoXXOtFl2r5Nr7ZrXUvbYuoIgqiOX6dNNsjrRE7TQifPJHhISsofcg3bRGM8PTvRhs4VHok2ptfBdV8icUtKA8ir2/IoS1Fud+jHWOjXoW1bl9e6WCzhUmrG4HU3Pzs0pUWrc6Q/qnGsqtcg2NebQl9nBxyui1R4uAIBzKp1rMOrw8leFDqxgOSm00O6eZl2O4v3Mi/FPhFC9yhlZYSVlYFuLcZGEi/Gcqr+LMtg17qqXhcGcvHBlD6PCZ5fp3i5ODtD5ZUG6JjQYGS4CMIjQO4OT1NmPpw3y7i1+zcqeROiKJ6bCL0hlhQpf16Tfapb4Vwiea+erjQKlRXAZSVrehUl73UPKeO9D47jXqhdovA/Cl1K922wKS10ukVzAOsAIDjCwv427F5s46r2wBnjCjIDUSNq9J7htd3HJafs9J4NUypHOUvwRFWqUV8ncYRlapVDuhHcn9HH3tm5yrxSe01qgQOJfMx1SNtVLVWFadPw7vPURvT+rlO43SxFpwPw9DzmOtTpbfhurWpdyH5X8MKSM4FcLr3vj3ypcfozUd0lExqALihxPfjmTlZaJYSOv+jxaF/bq4qkeh3p0rVvDnwv19UMgMvJe51A/m2we4nU0hB1A3JkX0HH5lG/Ef8PLxLHmDD2LyYiMh/CK5WDydeXexeKBFAJLjo/V09AmOhZQCm45LMLnREUkVh26v1y84OScagTk3h9UR4OFJECeH1R7GU5iRj5AJuwZDMkJptgRLbARraHy09Wq0Rcf6/K6Ntgu9SVKrUGbBxA1kRAGT9PAJ8C2AcEQQadHf7EAtAUhCy5lfPga43D1pUzfHg7+nloNsYTOZcX/h3qpauvSENuohgtCYlMYjfx9X0cbkxZ3l/pDMzyUYwShc8iEJ0LzKn5fiDqsDhtgHAk+5Kuq/o2Dv4tpoZpMcmcdaTzm3VN1GqrOjsURf0tOvbR8UfVayPJH30bh+X8PDr4+SLTtYJc4E54VJsnsFQjSF4WvNDBNyOMNrAUmX4XjovTXa5D2dE1aX4wtjHEMgz4lGg4YoNQRV3gynEmwk/50wGKa0+ZBBR/m1yVt0zVP2W3b1HroBwvH9SLPA0pi8sucDJLg6PokLhrUBsXrSMAFpWRhZpencJ9Uenn8S9Ga/g4C/URbc62Xo29SuN/Cei9wRSAh824FS2h5+DRlHB0AtHwsgFwuezuYwoCMHN0dWWFbsCd8kZeqBSHleiy08ebd65klk7hl2TA5p1zYxZFpiJFqohvcx3oaMf7K+5BRB9VgE1eG8u+9AqV5Iycx4Bh472FGwfbcs/9hqfdzyvyYr44WN6IrAsZz30m8yJCVv82zy4SWqW8TsgSduYsdOzGhJBIDiqWgrrgFSwRMqYR4ce32eFWLDKrjIpur46CS4AwUiMo9N1Ef715PWByzZFFFCq66c0/DjTRgxjQ/GO01ZttQA5HtMwbDw6qIWyiN1YbMqS1iTIYvhCHS0Mt2n4R+lAJukcRRQQjov021HSLYIRttWhlZTAuW23ZYIt+llCDLcSeRDMBngoInoK9UaJxNtQki1u9AKgoAltbt5fDUdzmKtAupWawjnhwmsCKWpeH60TwET0FDk1Mr+bFIrQjb7ODv1HLGXDhaj2H+TZfTuP3cTxOh9fpcB6XH542SdWKeiS2s9mVCfbY5stSWbeE+CGA9qCk1wkxQDBIjlRmQ4Bgl4z/AQsfaDSP3nvvoyvqU+tZ/9jHPJ/tmEINVsxdEZHJljrx+Ak+F6OdHI22IeU/lsyp6yHTK14PskDGdzTl4HoJqAYKcgOhw6EX366JKfZV+sQ4EUW8dYX/x9nQlVpTqz07LOgN8kCTfxX/tl+H19FhTmvVbPijwb6t/+NAH1SlAPG9vb7x+ATfzpvj+n+uDpzK0X4nEtBG/ec/h+12+ddq//55dCAVRalSREVzuOfz8WkZ/+0rymYWJXdGKCoGe2CtzufjfLBx2ys3l+pewTkwhskkVcVp1JH8gS+q63uETnD4PHqn8NHWOgU3qlp4fzTaP799++Myns7b56/T/G07b07flvFlXNa2wG/Dcfo27Y7fhsv5bRXm3AyOvHap3t6P9sR5GQ4nb4/lle1u+ogGrGhw4F/Ht9FRRWxUYswi10sYjgyiKqgce83p92+n8bwydZ5cXcVGlVGI0fVPv68fwh0rojcUfbgVO/l0BU8+XRk33XHr/jOKz9Pv4+FiyzzUeposPpBQpvSEKXVZ0OhLX0V6vMG6zw3Ga+O3b9Pv3367/eaEXzl76HOfSdjl3bwZdlfj3GdZ5n2vQi0mRpc5NIE/9uf2ws3EpD39Z4j97jN4g6ndO/HBVrf61fUWdShDyljeo9Wfe89/v3/3dpSauY3vqDWGGHbTj8A5+Iwaz/T7fvj5tB3Ow+sy7J9O03+8gWs9/R596fnlxRtKd6PiQx28kfRTHx8pbJEaVYYibtKPw+m0gol9s/4IGxD3Eqffj8t8njfzbjVO//znb+uH/7X+/K/fpt9/DLvL+pl+/z/l91+/fvWe6JMXwh/vx6/v4/Np3nwfz1/XK2xepv9c2568KfRKenQHLuPViXnaT4en89syX17fjhffiumcn9EXMKOfp/04B4bVi6rRYU+r2vXyVWnvLSNQnNhSeKP+z//zRb1D/p8vq+Tz77992zmWQFcN/9Tk4Tvg/y6nVVx7P/5r2O6nw/+Zo/Cv07hZxrP6cHqZ8MMPd94EF6bX5/7cBlXmDq5Lz3VZf/i/8/x9PPzruEw/hvP49H38pT/cZ3o/ww932QYXpv0/z9j/K68iG6n+nGsVeqT38C7Sp/7cbeZPfft/Pvy/KHW6qdQpxsOP/3kgwf7J1zhvd9Pz03r6/uUb2lLtj3806roIngVUAa5xC6idPt85/EzG7jp+wDf8nD933p2eNoN/S38mKXIb7ce4TC+//BE/Z3qtEa/BiPLEeugZH3+1Qv7DPjoAj5yU67BPP/2BP7frb8MFFvVzZkizgv4G/ZwveTlsp82kBYyfu2ouh9PwMj6FfOfyc8fUXEf+qj56wkdfX4x83bKqM6wbmPhaOOMHN3GpqnPGB3/3sxI6O/2DkbyhKhUhkbi2DuBV+KhfWLItA82iaa0o03ZNCL5MDhC718kuMtQFah2ow2Ed1jv9GwGBGEMMTg4IXc8T9ygLu0XgnBVJUfv167wxIeP1Ob7tppdxjSWc2p1a6ggU8oID3+MTrygotXGB9e0hYRdPs082RKNTH7OE3CLoL8HZZQChAJDlrN/U5IAkE1WHOrXOYDZZ/RGFmg0B9SypADC32+UjaP/AjQ9oqCjGAfuPLSF4TqikXfiFHQEliVNmCV7zABev0EIFsjoE6SJ2mkUmijsQ8NViFFL7sKgYwF1Lll88S8//SvoulBfJ/BvCbAfZgM1TkSAIQgJ5ByLTcIETo4BerMMXlEVPnC4Bz0C5WchAgi0cBx1qFBYxmMNWTLlIi46oQomyAtEYC6agkE3jA5peD7Oj+pqXhSodQ0pLr2xssUyqCInbfJZhiDAhAqeMRiW9Mi46DyKwj2l3tG9L9V0fEtPp77jfj9vJqXitPGtaXxC2PBez1BWAMbxdwdSvgdzAwiqhaE9APqEA6MjgieqwnwUvPIjpSn2d9/vL2W2cq/XFpo0hDu/+0GBZhEIJueCMNIgxdORdpMCaEMIABBoL0cAcQm6hwJJIOn50IZDTr9TVU6f9cVxO88GnaNIlwmM15Gl/3I3rb/wB80pnRgjAA8QtErodhNZFgLNdKP75TO1S/yJgkdGIRHRyEIEI3KG0kQk87vYS/fO3b8+///ZsV2RKvZoQ87KtgW0Xqa20mBg82zjdgvW5JF+rjqvAvI55blUB8a53MJvKsPNyHlzYsYqXqQSmMLbf59NpchtlC73KH0EKT/vjMv9wQB+lXkiMfTuH/k2714w1gJ8Bq0BIGVbBfDo0NELDwu2EIhut8RUEHbzHKQ0zTWwcDLcBmELTGvdfAMxqQLGekIDgjjf/hjhXNG0B52pGNrsVhhcsr7AruCLhBfZsDCWDPNEt6JES9hluKHmWg4rd5JInOyVa+/9qnkrRzUWVdfSpCV5cdLE1AR0GQd/dhhB3dDVgdoWjTqeDhhouiTDZITc+ZMbx74QbTycfTyV6OULCHJTtYKcHXXY66jhUwhUPOeABFl44uLyTMyCRRWMm8Z5CxoioQ1owIqCJcQ4gm9HIE1TIEGoA+Hd4lrzlT5gDDBVSgIjs3cRCEhUNHDX4/qXUT4BNmMGFCBUYIBDzCr78Sk/SHJ7nn7brprotZodB2MHnoeXZ4GkX/hZXwuVmDT/bZndxurJyHRfV4ktn7CSLpL+uo7t0TaUKBfN6Q30G8pq5C78fNMisLS0D7QFWDiFehGbn+h4nhxgnb9U2GfAqGxJlZdB5fxzO3kVf6sjo6O28DrcbHWxgp8K+zDYOD7Ydj2t5zPFsMhWtQdaLSIetGNaOt1oV2ldQJUBnAriNYqWh4s4JvQtzvJqCeO7AHSUE4uJP4R4lNUKhhEqhy69Oa2XClxnP9biHuHR5gwXurVDQ0elx8mE7ndbnuEynNy8UVZ1or2NYG/vHtL04TE46uJAsn+LmAfK9aSJv8eJkylsVjAIZzKKMbbxXp6ey0EU24qd3HcirbH+u4HIby+HXzVQKKcSGQnOTmpFMo7R6O/N0eF3Gk0PdIjrn0bvcUZcdXA9sVC5xiUpjSmEE88/Qzmz8/xb5DePkQ4/WpE9F+7S5Wqn/Cl0oc9mCEcqkrSnOalwIOvDw203oH9BbZVLl/hvQACiSUQDDI/uawfljECBFL/DvSh4P/mRGlhJUZPACC0ntOxfcH8Fg4S8OEdiDLbR5Gv8yF+wiOX9iFhluL+J44fbS2YUchNyPfgu9dIDhYJHUCK4r6RuCOpRMfJFqA+1+QdEqoRvJAhsoIio6osgj4l6pW5pEUKmbC8ASwUKWW6fau5/wb6N30FeyDs2ysEkK+ScqojaRQuF9tmU87gbLU+hV7tIkCrL7wIfxdT5P1xxUuFwn8T7GUDwu0h2m89Pz5eUKyLLrnBYPclf648XLyIfpPNnXYwTsQw03hj2O5YTpa3LPiJl/Q7HngMaz1EZmIti3GMHzWgXOIYJOTzM1siBPm/lwGDfnp2U8L3YLUqlmcmtf91FEppIX42PT/2tY5Ups76/ScvQk4ski9aTbNPdZ9vN2dF6xkHu0sd/FeWnzlWTXZ+4tvlCzhIH6yIr4zId5IVnoKxPGNSbsonRpz0wA2XASucjv00//cROdevOsCAsDskgRaSN9fje5nKtQbapWRFgszaCWZaojOias0kQM69oD6JEwtioTW1HonM/T4XixP3arAzqgKm/uRVzbkLFALA42md7sagru5sgQU7cZFNxFJQ4yqrhILlesh+C+rHA3tnkkVj9enGb0TMfUgosqB2FUnsN05iJnhIuXv6NSW6Qidjit6hJnNyNRtKrRy+CRsmuYDkokwDmNTndgFUGlC2bTEFqCrC/8d1Rd5Hlk4IqTGVc9FlgK0ujgDhKEOhglqo4ssRRM2+KZmaJFuumBijIRFDn/ljcjiXxYrwvhF1AtEUgG7Hx8zggJ0O1zOkay1tH0UZ/kdBw39vHv1G4Jkp5FaM3uQ7qRa6NiGiDWa2RolVHPgyOv2anNIiw3QR2JiCOWKmom9hH/tEBPSPQOk/j8iQl71nHJ5MKvDF89CX1yf0/LTPUq5BYxs4m4tDFHm2M30kFJnJWJyxF8e+U41txQT/OqZ0T1CVgX6W4p7BqoApFixJNpDb+ok+jMLNEmHMEu4LkTAJFTjqGgXSOmy8dqdaK8QGmmyF4+l4WdCiykVmDOOmof8AJzVlZanS3pOklQ/UmS7RP1UaRJg0yHc1PZ/lFuPzvuwD6wypU5cSQZg9ee57g88IZ5hzxuTxlUQHAahPHxlRg2TnpPZ7WJVeEP59CCCnTxl4p5D3qmH9s7KZ/A7azNa7WKwYUWJVVxr8cRj1GcY7AY6uMXZeHTe2spV4gPHEQAuri/yNI4mQ21ERK70WwzbczDTSDQETbM9E6IjASgbcxcjcuLw6NftGrqeQWPYA2iz7scht3TuCyzjfbJRI7nS57BzmXIJ9U8WgEGMnW65XJ0w6ZajZpZ1LujRNVhf7jFBDVdQqhHx43FhCLujli+/WwpQjQ600KLPByMvbkhc1yVEHjGTqdES0hsmLC7hllUloEE0vmv8c7p74TOPWYTvnsUB5fsxWM8YUdC2GjMRm8fV8Gf8/sZPdBCBdDUyOLL+CCK50uOFDCegH/A0QEcokICJYyNprVkvMG//TORB0YWtGDM90YyCT8GR6woQvsEkIQ4FsAGcZsELi2x+OLKoJsdOePXB3RTPBESM2qV6rxoHNW6d9pWZ+MzSw18sRQdj9jEH5OHKMwblToJxsAwbCuDzhsPQ9up7WgUXo/GgD/m786F0Km53J6Jn4jzdfxh+52dgE5/6QGVEinPjq5ooDULeSr+iU9p+L/y0qWKeSU89OgTB/3FXPqLrNWmEQtOyzK+XnaDw1McIY/6LN/qZG1ntWJjaojU8EC8h3qkx7gtStQ48uYpeTPhqjAfAPsE1gh5NlzFSASaH8xbCwwqfgAG1TQvZd5Nbs6oz89Y9fiNqTiThtWLkM2AApWK35iYmSVswFMNKpU4VVP98XGqpgwqaFhNpt7cAkBiUl4aNXEoooPUn+Uk8xtTMRJi6Qbmaj4KPApmi1GEYtr4Phec/r7EPjI/AN4qK+os++B3pH3EVs9YIEFlK2OEL9K4NX5CbxrMAcNQ2a+GFjgAiwp4TgV8lEJIFNX4Cb4g+9qo+hFqy4BXSO8R7MN/lSi94NfH3wJ2lAoFlj4tAFeEXuHKlkBh/uRnXKhfRM84vfPvz/T7pUKG/0TnX9B//TOdf/+Ffj/R5QcFFUHWjCieulOE21GjnogOtKr2pnJnVZL5O2A2jJ2TpU5KhwBanAXIVSU1NIqj8Kpz0cpASlz8ThBCo+wigNFoVRYKeizAEiKNf8cSaYVR0P5C2fs8KIYCByXjrcgel1Cn0F/TTekT0VZ0vlG2ljU8jBKQq6jopaHPiTU8cJdLDI1AzuB3QL/UaMOvgYMRyBlm3kVhDiSpvePMPUgnnraOsGMlpWshONXACFHsqU9UAZ9Oh8vO0a2VKrzmC5Uw5zVlWdvETO5p3rmRUNHqDJ9FRo9Yj7BOf7wft5dlrU0Pm++gKjP8aU7Wu7Eyx4jgIObw6A1OFzt3lkWkHSKthOs4dkSos3HAYb1f3OEBz/Nx3s2v02bYLfNuvJH22kV2CagAJPD+OUtz6VbIq4i4i20maChqgVB/tGRXsthpPJyV55LkFjDgkGM25rbCbVDAS6uZbcGGbxPl4CeH3f1RrAF/yw8xeOrMD2AocKkK/FgDPbaEp/ohRlJAEYks/O42hBjmPwViDT/EME6+H2t8LMTwcLNgdWasgRDDxCOMNcyfoycuEmuYSdkux8jCgIsBJGHUAAc/ORCAM09Xn0DZgNMvnXnSUIRceL+5Xsj6Begqgs48/kLAcv9/5MKnu+txxz21w4+Oe2pymy4884P8W3YIhVLfdOv508chKuwYDKW5mb7+M7AV9hOGEtkMDv4MlAXhRDBVzYDBDxOEGgv+9pH7Dydd9CzS1Wf/W6Jr/gk3nM43IOB0w0nu0GO8RNecUHHpcn8cCsSexVBqHi5ysmMMN5cXGaHirhMcvpvHxUsQlyrWkFcxNoC5eH01VYvqx0+OeDQy0eezyZVUQXdc28a46YPa9dNWzWDDNwASWxjTPsL9cnZL1Q8cH2PtjN2Ahch44ZmVJa+SWdfC+R4BTVyaP+x1uEYM98ym8bOvnmuEJlBjbNHJ7reFgqmHrhEczgQfSeRajbvi51HNw8OlwR2GdGWewVCGxFmzgg4H1pjuA9ZUZAVx/RVAHBT0YfERS1K0BB2JQKaQLgUIGmSnD5wBOgjBjJ1/3bMdF21Uec0CXaBFt6kD1z3RJ7gi0rN4uOrKwIWeii8V13Oo4hy/lHntBmrFDy5b/AURLrhoMlw0oRyVzDgFAHDMJCGvITWXeV2xsd7815CsbkiWLJxJil9mvK5YNUZWxpUivl5SuMzQ0B9Rgp7Op3Fn0dRVOq232RzcTTxRf1vXW6wL5N/Dj8GCdFZajMtgEmbRfAKsseATQKQHJKaJ9NAsYs4bvLnefL8e1CSstcDe0M6Jch2DAJ573CsNC87M5LIZhVQGwm3jruZOx78DSUSB/CP78Cpqy2KPiswhngChqthxkS7Y9Uv9w2XM1AVu/WvB3+LaNF8v52n39XJxCEY7tTsEtTGTLNVGPm2W6Xi24QhqRd/YT6HhjTg7RwFAiK0i6R5RHf73dD67IEXVf2LpkRVH1BdRbRAVA9YJePbUdpl/z5cVEGcdPzXFRI4KjytIdM4l0+zgDksP4GPBuiDE4HkR7fMhahYGN6hePAhzQrcFM/L6xrut8z8cCTW1sTRG1nEfa+fkpxuViN6070YGc8SsdGiSXBX9bS+Ovmut0gw3TFsxPE5BiP773VK8LUoBSlw7UHEhgwQkSm4sSedixCGrqo0dl6jBFFsBMjjfuIl8ai2Ehqw10sPJGJCTTkiNnSC940BEHzJ1+gSd2vAOk0NEbyiFIWMd0ab5VFfVj5hhhJBUFS2+LsxCXN3C7YGJQWYmnHGh6cAxoDsYudG+j0en/aJVW8rZYoH8xN2MhUd2lAlVqhJmx9FzmPnWm3suQ0eT8FOYaBL2tPeWQlY9cfXr1vH7+MvRyP6Udur36dne8Ooi897y2miUgb85Sr0qgjH+gE5JUX3NqAmadvNVSs92xHQdkiTp9u/TweVyF1VVOL4mZVEjC2FOoQkrG7OBWxxHo4rdGlcaqVqEh53JCHQtdqe5Dwr2pyE6bRh/cu8ib9AjyZcxlUmsHHykAum+grrlsLUlPKiSVPYgXbd6f3VbOR0c8fleV3kUfnLElhzmd5uostFLsrHNeP7lbMaIuqe6GXfD5rv9frVKf9YIhgR1wXbD8eR4NoXawRNrSdoNy6tDUtF9RiHyOo7trReqeMqf1qE3HvbH5OfNP05QnaebzPgsqCz/X1GRZ7WCoXCAYTGoHe+nZuKK8RHdhus3dnzWvtK5l5HAkqaV80T2kjOJyuPGrLb5gCYIYQFNZltRmEW2VWQaSVsN1FJBVBBzTbrk7frgXtNULrVbvzTIqWWJiIudy3pe6jrcsfPpBNMRtSAdbd0hjoxiUlc1TP1Bfjminnps8Hdl2pTnmm0ai06IPn5h3v2OlnBLQkx7J4R+u+E/k90L2KlczFxpmI4csIxVUTkyidNuqGuUovxTNHoL/TqgIbtxCG60ZIhHcBNymbW5AlMVkgUgPNSD0zQOJ4caU1t4Fs+ZxL/9wIZ24JRYq5GIa2RdmPUs9eVdH83OfTQqu0jBWo6OS7uOaPurjchEfkEZo7hv77Tlc6IQzRpRsweLhMMZ8QXXKRzzrzJTMGeAVIG5wdlEAH9KCgVh37BMGcgeMH9V6eycu3H44XTgqg9sqibqOI6qfamr2qPQxrg8WAQjRgXfoeOrdizOmL0Qga6uj+jkNCo1EernIMQNESnH78bn9eax10FnOsWeyrEOORL2ABIWLSxcq7d/78YXa+vVqnFgedurYcMZaVh55U0VqJ7SB+lJfi0yiLq/Mb4OG9vGVxE9VuDIIkIru/Hwen5zsjDSfTFHGXmKgDtWm4MGd6xnGTyAu6M7FpTS8LvOQh2cwm0DhLooCEoPSV+I8qKDgQmvjU152KscKL4SAZOH5PnEYwZJ7UlOTY5gOvskemsil+h4dhwA/RghLIl5FONaknGy4LWKtc0j8ev4Y7SJDHVld+Q1zOYjz6uJtABIAsHqSt2In7DMWHpxFdAhF5gscGIRs+I2IQRfyxXp/ozU+m76/bfn31et2N++Pdsh/qfEETneyRvwU7rWtwHPG//5+j81nPd45UPZdX28y9Z7vPJTwqO34d5P367CkO6In1FQ2U3Xr2GPVH3y2a7f1RnqM5I8u6s2vD2Q2svxYKDzxh1Ip8J4NJDzbqq1iY/0vAw2M2hRdI/o9Z2yV2T0l3Hza2N31UdE243lJpUFAFyyRyY+oStZ2RbavQ8HBZC6ylV1k7gt09UWnvi7nYrQm/wBBOB1T3Zp4oBY9+AF3OoR0vR9fJ+c+K0qH8nNhYfa22WQThXhTsJM7Ka9y3iqli3Qyc2Nlvk4aQGBYdtgLDu3PsHT+HMzjlsnNZwVovcrz4Bzz4jyRSTY5D5jmDqdi3LRm6dS9GZ3kxP45YVmyUgpLUtxemg1nTxWVjXNHRJEtDvl1SkOTgq8VCv6tcCFMtHLHGN0Hgfzq6Z1Pvsm57NDEaIWY0zeDZBcEPoy/DYhAGwp0bGgxsgBDhYJNMbmkrEVa1SpqAe3qL+a1Qe1EbvISSJ3HWCyTuKoyKnLFEt3TF7Qr0fU/8186KqxbkU7jR7tmDInOsrYzEPhrlBbBZFCgiRFX6t5891ZKl2g8y/qhkrogdIe1YUeNQJ7U+SioJBG3LKbX23jInpVv9TINcieROCkaS6RsewQFnVAz+YIdwq2jBSBSF9AYNICo/n11V6OvlK5V1m+znVXZB3QkaIUHSXrY/sZTeuxP/4Cni7LQ40XxpLKmJPFFF/U3aMa9QNX9NYxbKWQSzWFTAIwl4QVqvNCLFByhaDhChjwCC5kN786IuiZir4RDVd6fDzb36EshXfT48AScVN1yG2EcAmorxImjVZbdoaYlTEZYST3AkoJgA5RoUiQw/ig6IIkfoRCi0wYSUEi9J+kvxRpxCA+K0A2K4jQUUWWtAZkSY185sNrUTcOxZbkz0WPECvVCECKpg+c14DzIP424BQ0kWLI7fmChFpSoyjjF0gs0M6H16dhWWyFklz2Yn3pG8QQXWALBlhtPd5abWpv5kLWy8U2Ex/v8QtdRw2ulaQdyJx9mzR0aNTCojSjy5DGdrGOal8GdavnQO47KZCjpbKS4Nz0yyyBbK0AaRByUetMh7t5tlIkdSRzxodCUC3at+jeIUakmHgbuT9PrlFWw1VjlNnMi7WQXRcCE87LD71/ecRVOp2+/XEZluFwng6uuKIqBg0EzD3mUIa2I8pKTZNg1QT0R+QuaIzR78UGblSK2QxNYJDsRmGHk7NH4iju3fzuUH8IT6fD7VZ2qYfw3XGdahUDGk1Un+xsaK6TYhMIe+feDo23HxxpG3U8bMRCp5DcDytv93RwgrSqVymA8RnvlSR11PHgKgkUefv3RCIfizr2g5Og02kda1YDg2z5Tglcm80uiKm6oKGCWMSchotfDCD1W34/fHfc9LWpUw3LCViN7KPdy7zs7W0UqXoBCRQRjN8Ph+H1KkTvBBR68VbPbu+Hw3btNLedgFon9Iwc6f1wcAQ415Tj5wZynqf/3PMcHdysmhKkdGtEnHU/LN8dc6BeCGnmYPnu5Pwytfku2LTAFCxcxFrAFyIznzdvDrq9U7+5qL8jySiq3zoe4DqNe6KyRs0HmhMcUa5muwm70oCzjAhXWx1ooqFEr1fsV9DjKgh2ctKZ6ibinR/z3jiutzJ6pjRFGRkD28KBbSci3AJaMnUWCJmSlJLFPHaOSj+konPRvAc6D4CNLHOW3yPGD5PbhBuF2ucBCCQxI4RARhAbnMr5UK16XaOZ1fSrhsf9+T8vu3le/mc//PS6TIq2VJsEotfpz7BsZGXFc10ZymF8GPplUZ+rKar1mbbDeXhdhn1Az7K3uwlDGTcxTRm5wn4+reM87caDM4NkRuwqP4B9cH38fB4231+X+XLYbpfVG1zc5lIhPrP2UHgTqOOeN2/L/G5TtmcSnWoKr4F6q6iyhkq15h/G5l6/ht/gJKNzY3dNYGPSvES656ZAJPVxG9rdNExt6Aw0Uu+RMEoCDwGXBaSsBGS/7Jhq5E9YxIBvGupasxoRK/tP/jeKxNwPP82m9/Z8IbP4edMx7K8DH7TInCyzMt3LMuzvZIouD9HqHwvIbkDrzMJbk0AhYv1/TvvL3imHiium5Vt1gROHXez38bBrJ9CjYxwB8wqB1pxARw6AvcAUmgysGadHjjqsko30aUiFVjT1kIyMnSBMqSLnDWRmqNFHNPWE2nZKnq1Q2w5/irKs5Nx0gaYetNiA8jGsGl3H9r/BmDiCyJXo6OS3MWuXYinWPw6ATGUthVvFR3KmTHEaX9df+fdyUcuLtEJ5maYg/ar+MS4nh9KsaCpZgcozFjz5cVIXyoqeSrVYhl0Gd4z8VgHqT/TUARgAfitQduJ0miOIQ2niErQBdWbfd+ASDBFesb5BCiqmEKXkOg9UiL+P/XIBXj4m3NzqvXUoShQ7S6jvlr3jS8aRNg5yqFeRQ2k9xftxOLhxRK+3drOfjRzxgt2dEheAQ0fQJOvctrCwDrDzmN1KdF0aB6cxqeLG3OCkvgxxjtUk1Qz4rz0jeoDsMx4qbBbKQwff7/1tcuAsOh6xpqgFon/2Rutwsv04nC6L7Sk0ag3CPHtkJDtpWahdljXrkT6uXiShAe+ObsS9k0Wyu62aLIQEwCUjDur9B3S9m98IShyXloL5SD5/SVYMXPFl6zvTgnohRGXDqzbE4ilaLpIO67pGy3jcDb+G43E8bLfjsN1NB/emLEWEydc1D/P4AhDzhPzrdUXk+GYXIH0C6ytK85aX7D9R9CEup3HrP4VUvvrScCsUfnQTnuB0Gl6dwynE2r8AwlIUIXe3ZlkYnh/RRQ3yaE0X+aDXR3BgxjpfVywRex9q/OMyOvWBlcdQlGxMagsYnKLE5yoTS6n78TysUYqVQlHx/CUMmzHIHYoMvKhrNujhAhYEtTAnsctxPL/NtvXKcpUIwC0g27yMovHS50IUiQW9oev2NI4XqCpRSXhQJDocz8u0cZogRRYBhXuAIo3xagyyqcW+LcBoxPuxgc+fIV7OyMKVKM+wd3le1F62CM9LcsQ8bZb5NG5mmx6lqNTOYHnjhxQkgyqx5ND09oMkTY7sBz6nE9io+UCQtOeRt399sys5dfmposm0W3PV3tPpPX2GEhdql4KuXnCt1t73bQA6DDzFYdo7RaBW7TwqCliuiLLjdUw75VC0VsYBgWwXyOkYY4T0Rl4E+L+o9JPrZNT76XA5O/lVnTklZu2vA7m7SD9jhtQn0BEvvJHYg5+uxRinN1M7Xyw2kWSYZadaJ2jYTye/rKFifyuhOguMKeQpI1Ka+7W0dwvUv57nZS3V7/yIvVFZwmMy7vvZARLUKqSagQrMB0OMrNCvuXnrUksVOmMRcHYReq/9vJ1e7JppqSPBYxtz3l52LqZcL+IyrmOnpZcpC89zmM/zwYaw5pUqe1wLMjQ9/JntKEp1xFhNvD+p123OtLsk1wawNXde0ck6RJ7QxhTpaFZUMEOuFmtadDrSHKzZaRjIGxXS0glpEzAz5zQCejzruje6y8Rr/G+/vM8X2zjodju2bS+ODe31lEda/uayO0/2GVBb0ph+jRBTXgfcOCwYa/T9EBvua81Gx386n3fOHFJQq6sCV3FiQc9MoUnUi0SseejHHq0Z1H3sts2s4QIF0ocPe9y5dZ7PdNHuHU5XHW5obkiwbpgP54lDCZ0CFFdcDQJBXOYTIZuyn8+ILGDp5KUISQGR3z+qyBnK4kmCBtKmhZiYkRB2OZmt5nyKqASrJDAkEUGS/eU8uCrYmdrsXJE/QFfBvg95hU1/PY3n7bR3atkrYe+fQ51czp7cXoQBNik7rM7j9rpkOnUtBTEbvSXPLpS06p1p6E4IHg6ONjiNYFmnntYcefBGz4Nf/9TCosheLRxACJyZ3Qg5ic7sQN5uhJM3cKx63HgZ6hBQBFv5DnzLRf5ZKUFFGSmcPTLZCYknEqbQ3eFuADqbnLRCKiiy/Hs3G6lay5o9zoJdmJhOHGskOFjUlBpF6nY9DHsX3FOru4vtfL0a/x6GQziV8ajP/L+byuBjOjGoGqmDbicP2Ov/5oMvy/zuGphYnxqoNUmKWZT6+KNjJEu9qy6uJhfxIg9+l30VYWdpuJIUSdON5TjaH7VS01OULcPWpkw55YCqpI0/vg5njw9d5YmkfZMERU4bjDLPfJ4cWsuiVFk+Yw4XxnJomVV7hPy3FKsAIxMyZdS66kOyFWRfYq5Dz0fwITfz/riMJxc5UAvng4RHhdmcDatfZDWCae8T1W75FP85nbc+A5MNbEJMSkQnMtWBLsrohLaBKgpVC4BdjbGTdxvVXUI1RYV3qQxyh+TAZWAz9O4Lp+mVHMbp/GZjwXuV1IcMkjWc8tp7AsKZBIFkB5cY+UNPyy/8fB4HRqe6YQA++b2svWichrUPtI9WupzGYbycFzvDnKs4fJdiwieNCE/xw/kWjziE0TcfKmRDIAEtu4iDhDxrqEhNdRfqg32YplEQkgldLTV7cxitfrFCZREFFTz1mdjEZw6NkVwUkj5IrCFCFHpzZCaFNpqgqOSFi8pXC4mgFsDPFvFohxphB4SebIZH7x2ao6mMwoRelem+//jToZ3R0dvacgk6yPt/gjih3CqhRWL/11/EWKF2jNmkk3l0O1IwL7oxo5vw53lxGhezRuKT3dLB4wvlxank6n0cd4cnOMrrdPjpuB6fKQAdZufdHjYr4gJFC4UKqfIb5oTat5cPAmm+L2AJxA3lKk2qyHxjn8HggSa2yKdTfZXSkwGgF/cnIV+hvr90nWf8V79TMLXxQeoKo3taMiaQqR8/CeXgANIogCUSSSoB4CXMAFeoy0LyWI9XR3gf5ud5+8uJr1S1qo/GV251TcVTQFqb7OJme5svRH1WKkCYHRsQdQB8zEWNQdQB6Q2BTTX96yZ2BVq1hzR4JmTecbthMwqePGp7RpVJPVqy60/MZhLKyrUnQQc3WUDmIajRFoCzQSqbXMIFNjKr9gVuSykHwWoRc0SEy7ILr8RP5AtCfUC4zSDogKfYIOHTkHIET9/U3Oa4WpEhjrTQrbvTUV9s1Og5kKWOaXCuY3/9t4uAU0XbOjpMZKaOFFuLTOc7Wqd2VB7bQrIAwHEr68TobN5Pq0CezVrSqpxGSc3SBzsoy1UxtcK9AktPutk/5GBHETgQ4Yebb1mHdIQr/uRfGOJKCKBJBLzUPXHKGjj2UU1Oi/qsUPjz87M8t6J6y6BPVyQ5zIfDZbfbzBe71bwrBOVNQesWKJ1Fhr0NJoeVlGQlzGJdJWYoxLA/JjuI6WR6go40E8OPhnYicxUo6UXmD8LwWMg9L3v3hHUqo0kBOXM47jVVskld7e/kGCHCYbYLkjpHIXw6arzgMcwPLrTR18ag58ObgwBSY79h5t1iZ2nmCokXGwcYpsIMGGh1yWFF0ECGWilKpJX5AdVTOMleGVUXlsUtgiwSqcCMoeqZYPIxGXkGN1VkILHqvCrQ/57nYPRjw7LU5EGoEdSB9x10apUI0D0U4UuklIU2/F8UrgZS1IkhbFB1HhmEsL40oHC8I5pQyBGraAtpAviP7KkN3jSkcBN1lkDFJag/z1ofqwiYQ1RmSA5HZiI8VUh/niFRUH+exKge1lLmXfCkzMB02DkdnrSHhy06LUGKIEIxrFAYJcCfAigBBm/wPYOtZKI5ggVI6r/AhLHHCLlAKSQBnzeoZ4+qGAn3QINcsWZGFdCanrPTrmMHfiX9ZVR/CCTRKfoO8/npfZk88EORyT6fPIMtyJATRUNu0QQanZXJnAKPCo5Nwxse5rPLRNI/JogixYh5fmRYYPRNihs+WDDBQdtGS0WsP1WGghYDv0OTO/EZLayrRGrQN0U3Mtu5BJMY6Fx0RMdhPk8v08avmRQPm/3A44KbFWhyXJ+gYpOyweziQ6pGyAaT5YVnkhBwssYBrxLpYZRv53LaqVxf5iNJxlHYCZy5QoeBHuzUZqmnImE96Wd7t15wBheDqYso/H9Sxr/sbKJZ1a81TQrIbfI39yVH/wIcDVKwglEI+U+zjdh2KiSaEXMzoYNrWLKwwskloA2OSk2Hl24CHLOG5NZwE0BgJELOhgdcXPWhCx5fJWgcQtc6/jZoOnhdB4wIm2rdBqqQObGuoIZaV0j3SJbY6F55ns774ehB/LtGtE5hi5iP8fiWuex2zngCwoodYl7bbYozYQME5vvefgCrsaHXmSYPl/2zQwTWqHIIgGp15uP2cLtyuk7C2YLLRmYOVujxO7jkRVU+eNKvK+XOaXgZn1aErkul3apYpxgrwm1kmxBHZ0KCXJrPfStKpSwcIsBMYsadn//tSEd2qhZDAcaEHLG/eThz/hGJ9LjKUWxZ9S/NTww/EKq1OHuy+MnCIW23D5ntEMR0iL07XB4d4uhK5wSfn0/j8sN3+fTeEuafG72z/j6s61IUrdr/EWtuuo3mEubrWtuPh7LpgHVskTla7D+n5lckyTc/r9yili+qvjjzOY3um88v1ruLr/MFbSF5HZDppE4pbjxiDgjWhjHDbjPfGAVrk4LxS484BSw9orUfmBqUbUwKBvlblh5NxZHJFFRrjCUEOyDp1EEC7kJQJPOP7wLQG81xVFFlyXOa3IJuAZHx+FscVSE1CSNN3Vey4BWAVSBba5X+Y+XRYD5EFO1haELFU2FymMlgmT+U04B5FdSrzGQE8hfkP0bsHsQl0xENlWWJ+CCLcsgNCuU5YP7Juxx2iEJ5DjhEABGF3SVevfiv/iVsEe0zL4H2wRY5iC6QjRAEFcxB+EyXnhKo2vngUCVZroHEDYXyF3T74EJEnULhapCG38V+2RxUZSCnwaicKeGGOQ3zpA2tFdZPihKU+Em/Fl4sA9uKxvTVZiDODJEYwkaStJhnsnOBAMrsv32zxSFrvacukgSZX14cNzPX+WYD8k/6hbYO7OADe53QG/WqGCRyfnk52RKkKs29FxLKwExnKrvN4KCC9IbMSodMzNPWbmTNVU50dV3lpcX7SK/NzE4Ti/C619wbTkQi9dm8c0DQqnq0x26kDDfa3Wy1LrXn5Yt83l/hWEVYfoNPsp/OLna1UtshkdJhTq5nRlfv47QdWSkqUxQ4kIEWPhZizA8suZgd7OEFcZkwDQAT56JOkYP0a5MVfuN5ZoFuQWLBXFBY3SKVgjSfIS0xD9aY6wzqQChfiwyggJCx4kUvDYiggAw0/TVRGUMlix2KMjvL2heqVgSiheCW9L4IpU+FYCKT+Yi0P7GSFdACr6mX5teaH4Hi6K8RlwpmkA5fRrJfIrUB77AH9LMnnxOYKan4lEEyUvJgBoByAq+EUy98Gh8oR4wD87+VEKvyaygCC0HxE6EtSkAdeTB9H0RUWJALFhUWHRc0H4Yfw7TzekobkRP9gpC/KBIxC7NDIlXqIjGs7WIj3d8+AiQlbDTzLERIDQWnGJNQF0XWnhFI46mi2jkSpRPf1YkAzxDtXU7mYbEf2VNMT5j4GuwfNORENFrmw/ayXFuA7dbUvJQUaTXatfJAc314XHsPqMwCt98gjPaTAt4WqWjszKbR7ylEZ+ToxAkHVZR/hant7bzUAP2AjCR2qjFFzMcZ2AMTEIG964FDe+92M/8G8TFBHGY3+iCOILlp6NbKkcoM8NLJmwx0JOE8QuBMkWEfX/bBPUeMBz5vqFMFWE7ZsyJuqCgDAP6CSAyh/MmTjrifidLgnRY66R8tY8lSB2831NhFnE7UALG6AjUQshwB5G0L+x6KzpGu94prVuXfI6BVbyiV5fAaB0fs1LgssyNT3EtWZ+CBYSCEJutDY2Wn/x82XYWAnJEk6drWdXAkvXJJQUmyC6JIyCsR8uLhMMSyvYeXYdrNP8ZlGZ2INi9E47Kokof4Y7PA/PyLzP9TbtvAIIGntKGGusYFihrGcsGAuNStDEKQHjbWhobb7EBC9dByabZkjMQEUD3g/GnBzT+GKQcFg7nkBQeKB/ADOa6xvWD5YgbabHLgrEikEOrElOYeRp5KngxN4ObTeP85JbA/EVTQUCNpKyBz8BUECSc0GFuY0wfBR4xuxCKBCcDA+F9J9IzWB5FaJagLpk6mVpGMFWFIoKkCTS4CBsb2CmHaE0FiotHCmGfhEwFgwqaKAiZbXAust7vdvPYVgL+IAL3mw7wc34bDTfLENZlFW0txjiLAOhIe9LjMr2v3upOIkTLUAY63R6Mu42a1rL9WMltXlrJo68561OqDg4Z1JYu2sRijAoZZG/Z0nA+OnFQlKBK+1KJ6mPqwp/GwHRf/Xq4EVjyojWxVbSGI1Oiyn/Nx+ONiP30haCsEEtmgDJ3b0lhEgoVyRus6WGg+OmRImV4tRcAKnE9cg5VQmbiBijayosoXa2ld38JOQ5a9mhFFvOURE8pOSsILYZUyQb3sgD+1h3L5OlXFQ68jL9CIx5va3MtMIHp3rnGdRScdKnCIvkUnXbR/zjLh7JCjuUb9S/SswaiygRLXhNc7pi2gbXR0Cb8coh45kYuRTjZlvsUn2GpUrGK0HHQby4F1RtjLnagwOqYrLqgB/HpWBVHjqyKZEjP++dfRoWmVPT6IcPK+9S2RPrBtQ4tOlU6JqSvOx+N8mhwAc1Gq6xqBcc5H9/vktcrR5CMkBLIhqF8UqECLBmKdbvb2WA4JR6mSMJEypYBVNlcBOodk0yuPLws8OKpkqYS/EFFLvT2qvRvzUqXrQ4qItRGzWhmZ0QJrmQi2EvzGsreXvyN6mK+JbxNo824gxBnLMd8W4Z+/fbNFl4v2EbmVMprjxan4ZTqheaQOazsuxSMssJemDFTR2MLkXKSiDQ3JJtz8BKBg7c0O0wtsJnIEUgsqQcBNxFBRxisBlLEy6A2KMQXqc34a3mQwKc/k8zmgKR7pTjdnT+UmeFB+wc+sIUSdGCwzEYGoGS1vSK+YbKn5gqIWaCBd5pt25lb3q+PAvZJwyIzTmw8n8F+mUcPrquvNyvfIKwYRYYLMgtUMZm1Ra0TrqkB/iS487NoAsbTI5MLhk3VK5nSRdAn26DGTy98hV8ucLvypv6gz70+lGeCTIwVAUC+r8XHsWiM8RN9aM6/HHvDPdOsR7ZbYrScy0ol9e7RJoQ6+ENQ/uasP8wb6+4ItAck9f7gLg91/fjuBRMrhd6I3EKOI3kD8zgVyO5l6poLY6cdcLsKlkHxcAG8nIgpB58IoFmG70G0MZf4dcPD/Sg3vnFUDpIJyJKMkAQzjF9S/4TKJ+rfooQYDAN4tvRMRFfNQT2IQ3Yf/KjwXzAF/BaVkiQIUXHD4r0xfMaQFKUwYGcjUF+qwQERJEhzW551Yj/4UuX+JFgx7MVunEUIruCOMQsUF+CfAoE3qGh4k634lbDVXIQfGAh5PUQgfMeJ7bV3kXtHoLLCZ3qZzHckhBGlKbaQkrdl52U6HwVaV61Wq7Ugf2IOGrmh7VqxxKfzQ0+vkEJmoQka+iydgga7bZWxUeNY1ZWsnIlT+FKq6CEL0iKrLbfDTZpWaPK+NGztH4qFtCisjmgg5dAbJ1YJfhKJidnkzc5VzFpUrXJBF0EkIuAFwngSEPdgtGQCki+vYh5zLKzUEKmdM7NcsZDE4ALwu9HO1rtn75GSiS1WDBrU1Ol8BHrQgFRhrIxFSsPlii6LoXMikloK9djtQWPYzflojwBNsqQBMga5vYvuEcFvgjrD2lLshL8H3yru7IoaVyiEpkFWovgqfB8sP7yKGObpObEuFqYafUJ4ygti+nDezTYVf6gkGRismqvTUSEEyaFEFehtPEPDlOlPnfDm/zn7i9DNSa+tQDjtlUTef0ZOZL+edQ5pdqLsfuEeGkA3DJ/1qWPlyD99tTvBcTRiTwS5y11/Op8km8ityHd/N+kjMf3La7iLCanDpPbkTJloI8ULu0dynxgOtTdDRBID3DPEREnET/rkgORYah4RRaHVF4pGqEAHCWoYcTCNKt9xPI9I9jhU7fozLy87e+LWaS/Vh/T6IX5tlNxztnKDaU1yJyEw/Ziv4xtmwuZ78ZAqNMuZ48FZ3Re6zOMlmVVCC+BYCf8yOBIxHOCahPEEgwu/hogjODHaTAUyZtZ39TlfnApc5HI7H6+pWEHUBS27lu/XWRj29zbPTmtOqHSmxvvJ1sJW2xqnG6L5xrM3n3faw1Uofcyxu2jiU0zXJVHj+QDBViAXQIuTnJQWPNg0P+xyLQIaDjhpxuHTZCGIRDgzRzoE+QurDoVMwonk2vzuF8FZVly0QeaNpFkGy6aHXpnAIFRrtxmN2TnbSMorWPYp1kn84/WM6T5HXp6uOeXqbjvZG02qH2GjcBMGXyGJ72nWKSu3iNZUOJqRxq90T18oMNsmGKm1fukjg0HD2yhQqT4bUY9ZDoeOw+e76322njSnklKi7qLtJ6+D2Tu90eniUkVi6ILLe6WZk9iw87dYzybpmloOhDQ/orFCuiuJE2hsDMhkClJeLXt/Im032qZYEMC6xQWF/fWYSwyMvw34820YjojTG40atAd3Nx+gO/a+aImwoLIH7v68iH2gZHY7WTjMZEHM3gu3KgNPZzuVlKs89ImhUE5nsl10hRET6iekIHvE4LM4pKvJIhuDvcc21B3Osvy7zRWN8z+4rI57GJw/LV2SllNfJgMOlDhw0HIsmURDzOpfT86tifygi1MMT8MIIdZY/3o8rBfVmN42H82Y+vEz2hdNJFLzoP0h4AQd7pYt1JfHSrEO6t2GlOg4K/Y6KA1FmdMTf80cZCUZ12oCTI8BeqXbmE2DHCMTxONgA3F7tgoefKMAO3sWhdxyzHhzjTVgfx93hqkWnQk24pyiU7P1wTxHrYSkkedfnd5A2tZqj1cOWdZz3eXFMqIRx5znsXYdbugMSODGZdXRUhysd3+qBcNBH0ETxDEAL5r2OQVyfYzsO250D3C7z3Hrl+0hFlwbgPg7nzdtlOpzzxl5JUftAoboo09p0MWhZONk0MSgaRAL8ItFBO3tMgdUGLV0B2/1wTFv5Olf1yRDjpikkxgtb67zXWax7VheUJX43IgG7DmrHJHpuAUm/e59ieLyLexU16uaPOwC/dvNgndSmFvsLmJcGprAHTKLv/IuTELbSa5AiN6GALJEDE+4TQXQ5QURIN9VMwyP4ZwqBTYyNoOsxd0mDxBNaOoumi9xt19XxaCAbyX1CgVKqaFVtWkXyPsFuPLw6u72qZZuGQRU0JtXWGAQXaIdaEyFARhdIGQFxAQSnxyHvQc7em5CwQJxdgB6sKBFElXWiWRid8CZXVafc8CY83N7hJFIPZezSGA9usFrrWtcQ/EADuA+xTCGRkQ3GAWhZSCbhg7Qz9/fy9mreyvuiQ4a2TGx5uo975wu4snG7mjKtvI+Ig0prKLqPv4zH3fDLf/pa0Eh8QRdGkQU4bh6O/rJ4UtC1YG380pIupEg8v/fh53d3zUu55jg4iU1WR6cypTKH+36Njxf2mYxJTmz2MFG95JZ1OTVA5B7KCWeiPozscMCfCiIxA1TGkmUj0EfAXnnBxA+ICT6jwM6hIpgLFSgnd7z+hH8X0ak5jsvLKpbiMJ4UZaG3sohCWsTAYdyvv33b2QxsRfcZxeH7kC45t9ox1Jaxt57mrb0v1Ucy+5JfuSQustedr+sck8VtttZwxW3bZL6ju35VP68XSzCO6zKPh7ONH2vURGxB+hFwWkTaaNbxJ7vzvlfb3HiMYkWM47icJjveKRpdJzbCOXsfaXS3b6tzDkfwUBjtbK+kmsnUFbMAlMwFKWzu+/Ydb8aoqFyktXTFl53nvW20VQqCJDWx49twcqW0Pt/Y2Jtwnr2KH+9L9BQSr1k04GGbyLv8Ok0bO6tTq8kVX1cJBFgtkI4h9Z4GsIGs1DeYW1ooBW6PwolG8k9BkvHf5aKSontT08GpGXYqhR9KhUSFiHZasOqRwiCSOZmO45pFcOy12n4cNf27wT7gnZqs9Opg//t45LeVcdEujtRqIY/lhVhRgcNa76+OCmBtJGbYOcTXa0fEw2Kb0CckE20kpNgNl9Pk8qn1aqko0eDfR7WVUXO9/vjfrETsRsfYrX0An9qkF9tzLlUWHtwXnTD6PgMxEwAR5OBxnhxinrpTS2PGZeX+oESm6M0h+b/opcFPKJyja6Ugj6/YZbluktZndnAMOud86+EYJBWWWju/TmJnqjqV+4AyeHDlaeR02NJxnk5Oj3GjNnSC8sxQYOkj7lfDuRl213bt9+mwnd9txzdvZFkr1BHwICybd9PGLlIWen48RlMY6ZsO9Ug/4AMU7NvkA9TP7rxz+qjVCpDPcZTnrKoGWGiaTneJZ0f7ZOXzVA0k0gh1BEoxz3bZSXjvXyo2VWF5ss6vVH5hUxocBOS+/B5cs+MB/jaVmJ4MSsByC5dHiBP6kCnS1RHz3ROygDepdTDruha2bahVQ+q7a5D4JmevceBEg7oLHvQprNhoC4hTULSxa733hSsY4lwKk94FOhQEvIyMR0EoGYk40NymA6/W1fWQ3LocWSzEn2f7FBQqnBX4HKCvc9HAW7sraESow7Mej05hMosEJxhb53FZR/QgP63KcpA45GU32DiEsvuUU3Edybkri0qtH1mlaJgDn4vY8PqG53Tq6rlM4Oc5Sh8dDkSHvsCiCIQusvxeRLyCxSUb73sVEgg+uJhE3ZVMxGUB6WU5ArU8KGCh+pC3lIQKtGVJuKBobQopbASUMwKKGL4aROyVHAYRLV1nSAaMQ92KbnoHHXWlRYuYZTOv06iYVepZwVXbRFAc13F/OIQ0aj8Va9w9uKLvRlMZ3QtnikhxPdicTb02t8lXmdIm79dRKeAzQZAtuqzQZo+CjemZCs/67mqJqWsYzYEtLmGbFmIaqCXChkKoYuknchk349ZL2JWtjhQiCrtlBKsvxHUCx6DrsFSqOFeRXO4ybqbT6MSvhf5hk3Qmb6M61klPNroVj97gYHrWnZGNY3dmkOT7L1GrRK9wmFqX5DqPFnaaD8+TE6oVMlFuMu+ofncGNolFyGsaBtR5wQBqnvVxXLSM28FpeGjUFuRYT/dxGR3FmE4VQ0sDSlwH9E5Orura5+RRAP9S0UQyIZjACTXVfAK4Zwx1gj6sK3FTqC1v7OQ3zorf0i9YENm9D/aGUB9/hCNxfcDpp52MeHQIoQOCCIJhJTwJcQg7RL3CrSfQA0cl4m5fn/Ifbl+PujUjfT23oZwPosN4wANkyCaUMVck9cu8rHHBMnpZtVq41IzbEJyJ6KoBLPHhWV2x1q7rXquEAUQwRGCsK9G0l1DT9iqgNw1cbEHDSGZJ2McMlCCMWJtIeXZ9msV2jnR504I6KRGQ631I++u3KgsiJWYID4tIRsemtNto9RiGFPogWhEGTCfkWOc5XRwHptAlKON3s094rrqNZHLudTHwdchptnPEEb1XyLRWcOHRnMTGelzukZ5AM/F42AaSxRLe0ZighNnenuSBbfKxvE5ne0u96uDRvW2il9/74Bb/M70OnWPnNLrQ1nGZ9sMy2Q/aqeCEtO6P65h2hNRZHQhwDdk6CoRK0QSgRl/Qs2CMRwnOWAOa7QTVGprQITFRY4lb2NuWHNzMEmLVSIVUtxGbf33Xb6fzcNgOO0cxJS9UZXLk78FZJxih7txLkQmfNleQrt3NlknhsDxDLFIne363sS9hTaEiKyyROModcaZUpOQy2T0qrVqOToxOph+uz1qrVQgZzsaiqHnjEI73aqcp8IN/sm4XoBCJNvzDIsYD2nl7sX3mlRTtUesb6QlNudSm04ok/24T2sF4od920VvoNpQDj9ZjRE+zNDKqPWhXqNQ/0Rt3HcpBB+n6mmnF4tuYrr51hCwhBpENMOf36tkA6tknHQ1oZODSR4mHJaW8AbYqxLrYgp0lpLJFXudQYQpFuGiJapn3DkmR1MNyFlCknxDFkCiF6SeyCiKL2DFH2jmnUdGMq2KO4kolfZ5c0Ej/iKL7oTFbh7UvZcm79RmI1DKf541dtVtlFiWch31B4BXs/CtCqLeYglBtbl/6d1mgLZTMqEJAJN6BJSr7iWyagjkTIz9gyWTSCDnuQEdXWOsZSVe0A/UCPI49FEg4UbfJ0w580CR7/5TfTuPJS8cpe+ThYE8rEYdrw0rRTLhuCx/4HS8GYexp3nns80VWWh4KqoZ1oFYcG97O/hRSsLk2lg7UkbXgj2ILC2KGADJ/3be+coTcDeTPjC2FE8IWRfGogVgbyGG3adSCRkEIoNunFRnbfsxSJaSQZxfdsbIM4XXHRssQt8kdzWo1s5WirSx8orj/88Nl8in0WEC+NSyMsBxCvy3mhvy0rXuuF6X8DjtB7xKDxl2ed9PJam3qVdCycCD8Fpmm0hfvNom9Z5pWmo0MRag6kCgjvLs0d0egz8e45PAlIC0sOyKQb6AvA8K/IKs0rLfgiA7wPIvmRfY3CEECWnT9i5t1Oo1/XNycuJRP5zK0fHb8JIBTRaKRvE9s57L0nkoTJ/pdV3nJ9HCgoyrWvnB7Bg9MrObwampBsBAfKTFfTm+hLGFl9T2znzGRs1QO+2Ma3+2hGzk0+XpTv4pdPmrV9hW251FQDvClKJTg1/nNvnB71cYA50K1OwTBnJZ4F6G0JtBBzeOH+mP7/BTwWnJ1P4LgUwdu/7F9Xr/RtBmHzWa+OBJmmU7pkOlB+B+Xwak2qOFmT+lpPUZU1MUKNfefRzoEOJjD5azKPsdaUsRo0zJuzvPiVI1rWQdBAq8g8ju+1cX4Xl95m8n+SFT/mJp/NPS4eLGXuHpqtteG8DBUXahV07VOYa+HkAla4w7zyITakWw20KINWi2jR0HVCDyM+QG/AXgP3hzyV7jykDpFr7bbniiwh3Bn0aNClp77D14vo1DJcXk3K/bjmuqirxhubJYvX8o2R/OmIINFmlgogpiLH/ZcSCzjM4TwejSlxIkKflV8ipAIB4nYSUpLXuESX++BRIdAZLKOiH+HJwBSIdi02ROp6uu+Wm2ZQHMi6JHyQ0TpsuxO2DMbOUkOiVuZoGghPIAQl+JeaOYQIsWCfVR1K6/Hzq4d12qLHHZ4QFRX0ImkKONe513rA+dx75TTCh3aJ6TTIzfKuPzy6Z5WWgDak75H0ixP81Fuw77shlenuVpIkH3pES7UmW+0v8CHo/5Ij2D8LkGqz72sDq2NIMs7CVns0RNXB+iqVvwBaShIFoGfdIqI2/znaT/Ol/OT029Q1GrrUsYMQHxsf1kL2bKOq5BrFIBexMj2rrOs+IP9YOE58kqW4GoCH/P0i/E2rtOBVXUyOSIsSigwi8AUrxPcV95eeJn7DC51qFXZGEt1qtX9tqfpZPUMHTdIIdK+Mgy3ZoYRMj+gVcEjmoblbXjL575ZrnP+5BM791R20Ctj15O0fbZjQzX5b+7zkBiGsYgZLm0/XWKuaI9yi7du7gfX0EzOwZJhSXmitMCWLQpyAEQMveUcMKicHo9I8KMEkePuJGowJPCB5pwcfQh5jjtRJKMhxMVtmCO1TK+JDWcsMTRA8YXlRFBUoeBUKHEoUCksJjNRjEQS5WxAdNkATNwgWd+ASgGSmFLQBDu9gWROQ+oKshfDp4XA1kpwhJ/wF65AyvUn/i0MOIorJChpAetvgS9qEV22OjbvfkBsz6Cv1eZaXSaGBwKk8TgZII2HCJ5ZJ3kgsM3+hN5Mzc/4MeWZ+0J8/eP9+PXOD2MXNSOCMFj8CPvqffxvzyu/ip2UFfFPqHUijwWut0FXgsh/22GblM2RYzy85xyR6lLdC6IXEJeS6OhTCyTXOWwtZ9FdvIp6BUgxRMxGwmmzFb1SLThVId5IVnBTvzBnthNagQxOwPTBpq5QFZeaZNgDQsVMcIHDs6ESmagJxnbNxc006qg5P2nmD/hugWYE+UDeUUisCHwBQ5iDq4LctMb8ItZBihFoInDSGCtGp8AQDoCeClKgfgOfqSZX5q8qYwMQIwFZQnFQtv2Z7WCMJIv6FNc1e8eMg+ucOp2gMDOp5d5sGGTPA4qbxgoKpUwWVugOwA5mwBGLgFw4BgzNYSURpEtFTfxXzIFzmucURKd6JqowItDGNS/bP4HIoQwQ2iGlzwbeCKS+hU5loG0Sut45Krk5SfsaOBCIaj6lXRkgbyUqQ4hW+fULoUkJf1QyOuEnUtTh+pZNnz46X6ohwqKg6EbmJzIDCK1jYC0KQPtKQSkSgjOxHRc/8azCOeKtWsNIiGq7qLvjzmU8AC6roE4gOqAaqIQ0MCQN2mJbHcy+3tj3W/XrsNvN7+P2601HztESUQGoj/XjtHn3dsK4ztTSbgSi9Mf7Mbd9DVXFOc9yfp3Yijxt5t1lf3jylN67VmYSaPJbP6jTh95fgdbTfHjarNTU9gSyc71HSF/1iR7I+/FpO26m/bB72g8/n1YSBOcNZCjfG27tokqEed4meBkuu/PTeIWGPT1fXl7G5WmN759O03/c6Qo5HfB/6F//8HTTYVpZpp82y7h1iLU6mU7okbOpMz+dkDjZtdq2PE2Hl1nL7HQC10k9ZyMYmjbpzWN+Gjbfn97H59O8+T6en4IQKUmuz6vQGKCk2e6vthmOw/O0c7n2O5nJ6JGFqBMriWKC/Xg6ueoNXS+3N+xTnfu1iQeje8WbrpcrQ23J4gNDHzbz2vr49Dov0243OOO3cnwY8iL96GP8y8FYAbeLSHJcku++Tq1AvR+vydd1G4/Lampc7rlOslzyWq0TKTrFBLvz8HT6tX+ed0/b6Yo3dXH7fSY/NkU2Egk7OZc4Hh5lSZ9Z3QEBtpDEWULfvJd8g3mGtEidiHbA4P85nZ3O/KyyRoavEAgetJHfxmE7Lr7N7bPaGhveR5Fu469MqaFj1meNNThpZtLIvK3B7+jip+/TwV2e1poFp7lMP81mFmnDFaPXZ1bzQyAjkTLd/V6aD4dxc37az47oW1/IUi1ofgRBz+NJ9sOrTYmZ94W1RQMOTsqoP5+GZRl+PW2n/Xi4uiYBIuq+sD6KQI6mm8DAVA4VUGWdZyBv6kSSYjPJ89rj8rQ6tk+X43Fcnp7ni7vJKnvpYAwTuXnNVJtxtzs9XedYJ7WBNPbb+Pj9ILYmQn2NSW8e6jp28Fs1FuYNsU1dpZtFTnN7u7Of1mut1yuYGP7Ilv75NG3Hw3l6mdYl9Hif+9bC5RYMq9JN5TrJdS8o79FZR7NgvJZuMa/utnsfBoyz3c2G3uC6Tref61TXl9A/f2evGaxC/TGrcCP5vq7alTLbmcQ6P+iruGcskidZL8c1aoFLFFo169YBgTDF2h5PdZMSf9ouw3R4uranevdO0cl2zqKu0w3BffSXYdqtLzBeIUYOKZkQ6Fthael3C8vqTysC8Kx6XFYZMgOCqU5NYL8fn5bR3GDhNcr73j4sPvgvZZL1LfbD6bvyKitpvIXGp1ps+qlfW3bH5YZyWJsex1cXTZYVlqsEzg1yFn5wFp8YsMhKa+8ioVP36cfk7sMss9tVWVpmHujHuk//FqeXp+dh8910f4deoRNULes19YEHf7m5757PVUg9wnXM9NOw4mEuTiuz7TUwLRYAmMSH/bpZSdd3DoVeqTMeo7RSRMpj78en87C8jg4Y1HZAkB1pPhBTXo6vy7C9K7f5Bi2rrGOEeL75QHhkpjAJEI/eusgqy+4ANtR8wH8ONfxktWVqWOxNlDhax73eLjdXhom33fjDMc5Zbe0gFj0ThY841XR4OJV1ObNcnaiH9Mf78epC/xh2TrkxF5ryX9jo2yV2MP3xfrx6sOd53q271YeHyc9xHzwPaFixIGTS79p002F7Gs+O+OXKHCcyB6R1S48x14G97G3byewtycjSg8p12OuyO9poAmOEZUneN/f0+3A5v23mw3n8aadsckFO96Xq0peAw4abmaRR70NIvMrkF9XupvjUN9XF+Xj2orxc3rv3CuMH3umWAwwOLDi9TcXyAwO/jE4Al7dWWjH/6OrfkxChR7VIausPj3zvW1g/7+psbryGxry1MpbpKVZ7gudVDf28DEdfPTPvZPKtzz/6Gd0ZfHsj4fNlsquvDB/6CFUp8YHpwbEyxTKeLjuH9sZqAE0Pje4zoB4QfHp5u9eJ3NXr2L/O43LNHtqfUxoaU/0tEkVd78NeBe8dCVnhHKB1tUh3DTbD5m28RgyhkkIlb9OaLfYBDQht/KuZsrtMxL5DTb6oQ0kblKvLCJDSTLLZzadx66vsWlUywP2b5M1yG/1lWPtlJk+4U/agQE23Sw8RbqPvx/MybZyxBYXQl5qsR+nlvdvYa/EwuMEbq38GbE0B5R9t/GsC61ajdEyLfHRCDdK3+21ov0Ysu4jQHFFUZfrXvAXg03y47pc1c22j6WVZokGvb5/u099rxNPheHHqQ3LoXvRQJH/Q+9C+cyrL+18a4Ez6dKfuXpy9BdzXQxSIVS1QfJ6Dy6BNj1q38+V5N1597NAKSbcJ+fYqkXVvHf5Wzxo23wVZUsAmSMeDOKMQND7XSbr+eD/evCURk9jvk1vbFZCGdPt8G3/NfM0/VqbK03j22d9quWxUPO7TN9ZtmmBVObc2LcOF5PNgxvYtXC2TdkTP9ulh4W1sv3Ovt1jB/Z6djwx8z1rYT16rOiYAavU6s4M9wfA8HLbzIXB3VVaqGX1fZWrHkDXN7TXuiQZvqrKT2S5i6vJA7IK8DDsi2I4HrKpoMbs3gj1+Rv+xWpngQ39fqG00OV0k5gvdi5IU+0sjlKmTbZw/wddgA02uU2+ldS5ZU2lftupl9iXQh2P1h+Hq0EkbMS3S2cFllL452j1Np2L6MgZ6yCuJ5CDKt0zPNVhDfw33HbWd3qiPplydhcmdRXFPG3lF5MDflukFuNss6+Nvht1uTTevmY7FBTfJRApZvKr0Ajnn8eztyjopPjZbVev00Vf8zri9Jq2coWWIY2oVq+5X8tA/x81qX0PXW91kcnQ8eHq9Zfx5XobAASgsX7Wo0tOq5rYfzudxf3Su+kaeKtKyJfI7itEDO1FemsRSpx9Yv4xZy/4JoGzzPv0ivo755sfTdSN3HJq8+0DGVBn5dZzfhpWqxPNCcysthd6sdNTHfeiAn95IP50S7+kB9R1K5VZxV81qyzVHh1V6uPg2HLant+H7uB/Pw3Y4D86jy2sR4mt9nzz+PV83bL7rHk+TWzRkpENI/qz3WW72JHgxScqiBoWhLMDh8GCK9eED3rjMhDfE1KfDSO/jB11mGVlDM8+I3H1g8MOw+e6vvgV4gphe2SRvz/voBn3mr441RQs0SJaOanGm8GroVkG1J8tjuv92nyHq3jSyhi7outJBE5jldJwPrqat4O/50qLLIvvwh7gVt70sRyOTvy1K81k6bgLjR50bCwJAdqn0u9tMcwX/EM5whcjabyQ9EHTGFFmgZS8+1RWWE8g1N6K97QtElYqs/YDZuKIY75vKwzBaRfuefJLp4LzpcG4qe0yJi4See1Glo/Cm448qcEVK7F2IFunhuLv58FrUTWhoWVkJ6DukDu3fvo10JVt0BGWJ7PEc+n1eHC+1K2WnAtuY0s3aOrSWFrMYPoAFq9JjhP24n5dfy3jcDb+G43E8bLVosSlkwI2evjLdIZZzxUvejXyvgmQ7bfKOl3NdPUV9LoliKcDfUKZDng7j63yeVsG7B0m/0trAyJil4x0P4+k8brEhnNGt2w1xXDrE8Tb64bJ/HpfA+JVlMeD8pkcBa8v3vSJzrWqGYiPr9jTiWR8bPDystaECtW85mTa+WgFfMTfW+IFmZNMnGRlfr1uvbA5yl+bJ5nQd9waTvGIwxyXgPBbWFVbk6TVNd3TXq1ubJeXI6S17oZF95KjMbxdVep13Hf1mHNZwZjev3pYnIdk01pp3H9rot9FXT/HHmr70F0ZmcI04Tergp/O8jMNh+zIv78OyDW6Yznr4dNjjOv5lG6rbF60MrU0X7wfGvNXUd9N3R66vlfjfIh2Hdx32hpNbxn+PPv9+2/bWyOmGdt6OMRBAIcX5oGKbMvJadB02f1ymZVRvWpkg9eibUydZxtN8WTahC8867LjI03E7VxXd3Xy+EaP6GJhG0NRTi1go/D6e4d6G6T98ba+7efg++XDeSh7z/rgbvQfvpC/QQ/q8So/dWKwIJRUbWbkHr31RpN+h1/E9nTIrxgmBI9LGDdG4NTK706LhvUgPOBEtB2L+xuJSA1NAemxmD+6H/JWss4L0pUrvMeAEP9+Gy+ogBfaktDJUjgkk2MhAAwYHQZ+bo5wdfpLrfYVQ138OubtCumoJL2tPcVzhwafzylXtzya78kHgbXi302e7We7Qsnb25Y4Jkjf1bYLbZRmNbYpcbsS8SoejiCniIU2RywRdXqX3/oopNm/j5vtVDy00vkyQfgBeK8efl+Vyve0C41sdKB8o84vxQ6Nahex0MLYY9eWy8y+KIpckhHkosbFefo8P3HWK3eoIBCBkli53/oFYyxl7N59Cn1TCYI1yt1PajshE+NNcDisoOYx8KayuSQ77kVcRPM+BCSwEfpXeHSUmOI2v63/VT1lhcbJ/gCLEuEtXxsxAfr2RUqAtWjqK9Aj1ljpUmggsuQRorxd3zqn04b1m2Ka3io24FALpjeTytZhq7SB0KnCSgpzsWfkHcOFi/KAXJb36lsLJn5rAJfW32hVCCyLWC+ygOVsiE6b7+rJeSJu3ZX53nBUN9AGO56KKcOB7E63B886FG8vgooeURJVeR7tNcsNh2t9FhrQdcCpFOo2OHPq0eRv3Tipfdqh06FAp00GGcgL3y3e5TAQC9lp/xN9YRx8P2+CulRurA+Vlmd6Ddxt+md+9J5fGI7QpPza0QYs4+0bmsQP7MXEO3/R1suTUg46xSoeIrB2a++m0X/e9dyVY7DfkhKvTe3qW+XKeDqF0Zd5Ipy6kLP5w8BVXqxTJOsE2Tq5Bw0iXOrij5y7bU0BbaLjt0sf8+rK7nFb78j44ZDdFpyu6ALqmC5tzhvst/PWeFZWTRJRCsUxlhNjUzHFdeC0oyK0eYqGJlF4jE6Bpe9vIL9uR+S497hAjh3qs8042h/aISfOax8tUCNp0pq4oCDzvZG6GGsxVnZx2E+Ob6neoOa+Vad8OtqhMp/G5TbSbX1/d67G2MkAUMfjg+Qi5kK3syenQXF+mg75vY/v7VIwLvlHDSJk6rn4MZOEHLKaG5jJteIM1CF2MrSxFdyBcLNODqdOL7KUPtdLLlS8+ENucXtRG+swaMX0tHMCCs9SFXGowhaZfhbfh/Uu2tZursPfScR1X+IPf0mNRU4HR1hCeOv6yuW8oQ0tS1YgKvZndb3PLMxneUKG5Sa/e+hQBeVdbWUOUUptkf2o9TKfzsD9eDi4XXG353yijpiNfLtvjWrR6XYZ9LA62kNDpzb6Xw71mdUO7PEg5rvz/Yv3BLNsEKqDahLcCjj90LmGyYEY2tLlOgKRrSjpTbMfzMDlyoa2ESHZIQ5fpaWg5g5+Eri3+UlQV0s/effi7ifaoIPJO5v9B2lx8IMdyuUzbAL5EZlMgM24kxVPHDVijUsZCYKQs033yH8MyHc4BsKtFIY/LpE2PsgKUGHndSnAl9I37PnmD3EdVo5SikDUzwwidMjLKlG5dNW+l/9qBufkDdcSbwQ2E+q21McD/WPb+MqdJUzuT+Vuxbf+U9LUzvn9GJalaD+7oKt0E3Ib3cjqt1WQM77tJ9s0wbshCSkIHBHNtOnHpbfBAqqWTNfkemgF36b+HQy+DrW66En1rERt968Awjh58o0ryhupu4fFsmVrh7zsDBorLgQH31rKVKpv2B+VMl8FubFKJwKkygjIiJQIpToc2K8F7r1cOluHgOOmZ2vNUme5Daj3n9AOAos9Be1sCwdrGvtQhRIVTqAJwQojQiBWafkMhRAi1jfvCICVB2Q3TAVWbQEoILpgBochhgujaLD40Ompzq9VGf4YtdC2+GdXWWjTDd9A8oIh1D1xiT3QqpHnYT5mJHktUlYVkH36H/CMUFooc6SuhBwJMaU5yIbL8UyOE2V6w8gvdEOQCCjjTqE8LVZEqj+1IOx/ZV7q4TYC/NDDg+c2OJepMlSmhRJLR+TDGtqqwJ4w8EMWo8fkoSlGhIYktskJYAq5FQCtKfHDxqSivgEUWYtR6DmwZrIvKah/rITZVBfgqVhf8vgrmiEARpTLVmMpsydqko1sT83XGYKCDCmWIvEQACS0TanEIzQkIkBUQ1ykKVM1K3t/0hWt9KSxT1+oKujBmpgcOufayhvXxJE5zx+CurwQiBnA7CZk4QenBhsmShzjyIoNDpFSqe/qj99E6tEfhWlaaIjJwLuTfzTMcfoou1XAtah1+e53clfXW7m0I41LBx1D84ptQUoVKrlIQxlv/ItPrbrensxWPdFENTxTK17kNqjpRvtWTW1UfyhNbV33o2mDdhLnJSzWmXmmMbE9U7Yg29oCCgfcTY6BklbEmoK9rASYqqOALXr0KwkIVHrqi80fYE3p2mRaq0GhaNfgJfjO5+5ifajNaZDZD4VKkzE2n3zTjsP32w5ZLySutgFFBSSaLD+kdxqJRD6NZxq7gtU+1wZg92T6vqjRu95AsIlFaOTHsuI96CQwreYfw5RORUtdhfR5rkfiFGlORKIYQYOvqVUEen7orON7Lbh7OZWEFR1KyAXiJIpFYCIPai1lIljhwOxSJGgrroI71kG2+jk1jOhnsINCiEjLWkXjjOt05b+w3EKEzZbsTizz3Id2Vlk3yYH9JxIXfh+zsEWVPL+xWIr3SOiKSWU4iS+KYckCFUxND1si3lh5n/NYav8X46RvEOmmdHkebWxjkpShR5TzlsPQP7PufsOoVKXLNnSPWM/iKl8CutAgt8MHTSkpmTHdbyuZ/MNElcpeZMZ19KTOWMNGJfQrXIc8vzohWmz9GTLfOVq2rtuhNwB1N94guWiipmLctYuieoRIy1HEj/Ouq7m7nFyUuqgOoLLUrYhmHk5s0tkwD/Ai25uUBcN8DT2IzTj+s564K7dKnpDoOQAHZ5rKKXPrXSWwm7kJNP+UIc7BvQc7Ql2pJ7z6LbZSaTHXqI1p096Gc/pxaW5eigDYPOkuLIo/4uuvwnivdaQ6ckJbVBWXXQZ1eCKlaYo8YqomHRrz+xdb+ckXRqlAZL8egjXvtf7D2gy3wblJejO9A85wHen5EEAQ4FmA79CVMfGAKFzDflEIFMXKOGMLVMWccXiAPd/9PeP+WmqgUN0UWBzF4huREVgZCNXZSMQELN8hLu9rRfc30HqKMmoEA0x7QqxWim0yFwIrifqsRDddUEG8Zc0fM5P27f539ts66VLP55kNWvb+mhbdCRUY1tCbhWfDTfvi5IjPWurRDnVaqoVXNZKbeaIMZvt2K3zZuK9OsSgtTkhUxU3LvJXKiZ4u2DJtLfJ5Qohs7G/qHYq+KzAXJ9qjopdPu4Rkdi6cbPP80oxuoCglV45xUSGr/bT6fefsHb3ql31gxRPPLi7udZKWzFfmgwKcR8uJ+pouWMPIkjgtR1g/38men2g8/tReWPYoYM6sDDQN/xVOEj3EjKeW9Xjml9Oc/Dq+4DP4JTLEwsd5TX1OT0cv2+vzOM6tZMPOEeBNaRfk4cctxOi+XjSNToHpMISxOcNjFKYSrGWMQE4N/lwl8kwcHB0lOwA4vPKFajcipNZdb3rE61dFDg0cP41URfE6wOPP81AfW+Xlv722nbEs1ZYusRtE7T6iN/cOV1ihV3y5UIG0jafjr4E4NO1dNs3HFS+P5V+ZluD9KmFJWKBvkWxrjfhkt8chjOVdGIRtSvSgnegP9cHkkq0ZbwRo1M95+Xc8YK//ibqqcLUNU0ozeiL82OzcAqFS/usaK9bF6ysu4rH219j5Rq+wQTvkb8yO43XIQi+UteDVBBpYzPy8K2UjwtxU3DCJQ+LctPP6WZgF5sxbJj5YBQYPxGka0GI+olxajgG6/ZT21helBZ0/b8XeYDR5L22Nk8N2xSN+yQgDPpu2ZkuB45unRr7SSmZuf4AF1qBJ2uKg6tBwQEtDlGCXnKIzjWMaBQcT9UmG3VyjSVxTkgfmFX2YK8tefmFrBeGSqJyO74DKPnKj75ndodbUkQ8FtqzfsLuPLMp7s8meuZkeqmP25DuT66K1myz6k02MGt9tZ1LpcSmo9Mo1rtNpOy+FHALRrg7UjPVb3+o0TSyWsA9nL2vYaoOvhEzlidLmK3shgzVjcrNvIRnpdOQ+cS7aQCImPvPPrZTe4uXd19XJz7xZtBAtzZUywgzP15cHIbsxAI2BadGzgAiDt2pa9u2oCfNRmEef4316I27Sqa0xU8X0WdLoRW4NOiAzHIIPxFmEkjGgNUxyC1CCqER4pX7ILlHcr6qwitdKUD5bAOX06YqnEldTkEb8ywHCUqzAIc5eLmMjkv4zHjXR5aEGKjBAxERwRehAxcfcHdeJKFVdTm2dtjUNDfEZeMADlT/hA2DxN+2DhTs5h1qwOSnjoZMGVb/YnfGmz3aoeNwAyhLixKTAtciC05vDXhPNN/yrkBQU8FAHawG3vwXos0XBlldzOYpnwWt0kPHVqFdKjKurkiIXxzlvzcXMkd4sisX/tPokND1LLkYjvRe4ZnxHkjyTdElldB24ZeZb9cB6XadhN/xm3HiND1VhEKpgzUV7pPoUdvKrREcdHhAwfu4QfWjIb8fDdfMIE2TYf8NSSXmcdNbBSFrtKbj9tytCTWxbSgUp5zJvaD5Nld7tOc1sICfTNhKH8Jg7ZeNBEFJtYSJhAbEZCBIPGInCrtTDYNJoZmMcFHhjhgsD0ApfbNBFnaV0a18+U7c145qIING6hOMmEWLQ2uc5mfdKy1L4Erg6CmM1qwBlCCGM5Q7gDEOTRs6CDBFEIUaCJukX72Smrrgks1fF3v6Y+5rU8s7vydLl5J0n11wE9m8qWdxveEa9QndeizSIJt/k4OhSKRa73NMTQlsdxsJOgZa0yDqRVfNYRnbikKbUxcTDjmNDjzm2ByXrVSaeXE/VjrmM6UtOZispCOiye3LoOuner0ZJ66lH9CQhnYgAChShCmHO21CYpQd2f0T72vXrj+cVlr/ikzmIlHRs1awv6ayIIcjdQZ4ODVw1jxRyVbHrp5jdmHNQyGiDpzYUgqxuUZADGA2mwsnVSBmQFtOMnwHpCd0lf4auVfP1okZowAJarGUxgFDgpovrCYiIT41ztOoYsuXKZb74f5vfduH0dt1f+79PKbenmWyXg5AugvkWWjDFcp3I8z0zN5ZDx28S13qflvc6kBXcvb6EK/xVfRQTnooYVS3OsD++m7DO1wUqc6T+XguZuixVuH9mDX8fL825a03Sxzyt5aAMV+pTP62rAaZ83JK8YHHI8TG52sdavBmTno26RGdV5WLXpskFY00dapMbjbtrYfaGSei3PkLjPjD5ZgWamogmgrJP6AIBWNw/JtHaRCNHPBdWQ0y3xCPLu0oDnvf5xiGhBYsrgWJgq0qdxLIeaCqU2nxmbLY3mUNJylAJDyVMH0BGtBPsCmYOLZTLXR3bsRaVnXbE0bFDlfYwnZIdq9Gael7OTTcrU8pvJwaBgJRBICHgyMBmLZkeyOuIqELmTmBu+cs+4LlSpupDoiTPda9FBvUaPTu0u6umAMeahG1gnTOZlGHu18JFnTCAiOO9YFMJi1/AcmlgC6v4IjifeF2phPsPZrqvIbeGRWleZGnngjjbXlIAfGvvEMg/agA3Y0FzQPfQaRcYavleOfK+429F0JvPUfgq+A17Cawm8QrycPHVkRf5hp5AKNZAomcCMeF3XMZ/20+Hp/LbMl9c3h8Fh9UXE3dEFgaHRSspthjsJipPO7a2hA1ClhKEpEW2fYym/VAunNQiIwr0TgwFep3P2eak5FuaQIXxH96kxo7D9PIaZQLIaBzFngyH76homXpHYcLVeLXtZlzx0TBA92hiTjSeXfncOowWUgGiFNc+E69VYM1PuZ/RpHqwx5gYQA6AEUI5nbb3oEDphpUBRkJck0+eFhr/ANSyDW1zWvXnElZXY/ITiUoEwqUykTL8v5X46KCcslzRAeY74r2tT+92uEzhSxLnmlohmb1P/KH0jJgtruH2xl0W9IgbXuj5X6OTnFt9zjmJfl8jLvA49LU5Xs6rhza5m+Ap53jEBC0QGRFK7jld9JBS7PoRTMVUbqmCCEOrDhxFPIwJ84lJCFwosAJ+1iYWNt2f1Wi2b0lJuYs8+vq85SADvlAxu+Ng4ehUPXKKe2f3Z1t/ZqcZSr4+0cTs9LU7+s8z1Nsi0forTZnBUalRkgWHTUAYKia9UjZp/8EpBkGYJlYKEXEtsbqe+Uqj8PEUWcdGuDJH2SJVKw/B4JPtmzVoVBQRVieiOv44Zr+lZlrfijeJb9nWzY60ffF0nns9alf3GfRFiZyOjh4tutSWFgRxi7tcMviCFtxJNxCaz3W9x+ZvAwJx/INOA7a2Ml5FTdxa0PTku/bxBob4h/o+oROIEkTgAls6g2xTqAmO5mPmG8aQjJSTCK15zkdzKaTwrLKB1KRufCb5JroefxvPLyqDrJrSrxpIgYeid2mh6Gs/74WS7x9bWr2Hbu+T672k8X9WHfBayVnJlwnPKq1BDaOES66iT2dC7Sr0ZAEOi/iQ3G/PjH95ioaeatjZDYtGoNisOnV4ZEW2THKEOg5zTCgzEE8dGn3eOma5qPXMJm8R7Jn4xrqMPl/Nsr4StPp/I3XsfbbsmFTZuda+QiPl1zOT9v45pLW+vIrb9+j+Zoeg9Jhfy6VlXtG6BBcYx6ATeHcRI8LtBE1200dt03rmtr0WuovpFYgMgurxr6BVzdnaKxUzkVZHFcjJtGUxzuJCHKoEKLPvA1RtSu1PndfQUtauXaIEIj2FIyltyiubGYjTmBVrmcxv40kxfBsixkVtHRQg5AFT4mAEwjSHGBJTmgyEPXxlbznuPDbAYiOgU5uYL1BvZC85MFzP3NaHzzOHD2iKbn7fMMwbCSjIjiWoycC9R7MrtqzzPW+cCFtahTA09bmM5EIdSPSpRNhRHg69QjSxaOmvj0zMpafyhPncykNqcg5Nk73sVsOrZNt+QabPMdrRd6WBot+9KGfHyvLc5totIL1cirMYVeS9U8CoqTYBQEYAgMkZmX8LfBUrMHDvzbypzZJBe8TvX+9Y/iAW6gEGEJw6dLLnAj8LhrMVnZCDBjFagOx10wszlANZmjp++tk9e2JEXllA6WrTqPJBmRcKJdUymOUO2KS/onROdwMf16eiahsmQ2H5eX2Z0yYR761UwTZ7swF929lEscxUoBsgxjCTQ8mSdNJnRAM5A/Bk3CzP+RCHg6mSrkohNfBRCHUvonS57168odP7NKB7s7GAzC5UjmPlK07daOpe36n2R2YLVQvRBxagl16ezvc9WTajiIQAixUZvCbTA6a4JvgE2PhfkJpEL5hwAbZaV5uKA+DZvy4jbdHaxmUWl33+Jhvg8HtwMV6teS0n6davusnMFNZZyJrFiqWRJZzd5W+ZWVpreUEAUg/8Zx9XYZcS0RKYThFN0gaNJmA24rhIhdmc301mpySZviR7utmXyitiVFFDJiU6uA3kD9q7gGMgtH7ts7lM/zS7bb5FZDGgZGNDqQHZBHdvJNNaqgl8DckuQzrDblv2vMMHsEe1JfyvOO9IK7GBGmBDF4a4P7RKmPCx3kE+BSlII9YgtCVSpfXXjR8wQZ7fzW024+0/V+Why8j4Eu75YkuJzEoOI/1qilAekftFEL6XlV7hSLSUMV5WugEGIJknOyy/vLMmGkpIvfr9LagR2ubNKOXiC/jJW1SRwXw5y9LxhbQpImzKg2ioJM/4U+jBPesBQQ1xOXGusC/m8uKBKSyRQbKo6kHciWthXCreQuj5fb5KO+PX5/ng/HubtOC/Ht+Fw2s32Fu1Kqd/aJrclnZdf4QqtxTSJPvwuQG6kDHxZLAegyfVqnkEVwjoJZDQytaTkbun5xxDF6xM4KcROc8iR3WAYiNY986kQ/cHPQ4+QV2zAWWl49ZNoVAR4yBfhBDCsE51DSDOyYsH0oWBV5Fkgv2LGXceMLiIrAmBxPdH5qEQm/MFKO62a6kIj3sabE7VhbLSZlIzt5gcTpzACN6595R3BXmTSGFLid6RAJtEutwG9MywfK/KS/x0/IZIX0TgMUsMyQ4ivAym6R8wdLGD8CQ4PbpwHbB6Y4+/j9Qht3TjXByF3fxvrR/DwPGACwdH6uzhBQsdXuGePGEPoe/5t3CGusbi6W3S80MpqEs1C4CtgVC4n12WqVKouVrzRiiAyQY41oSE3y12alWUfKBgYzFGCXlZvXk4IYCCdWCLKgpZG2G7QyOPU1pQ5JpSOCnpYtRJyMRWlTmPZDIcIpO7UGBF3HRgt2HdMFw0nMNp3fDk5HlXb6imUKmXEH8Nu2g5nN12fqQj8aAbqxzjYioK1nvdI0SdeR1ycalGuSm1AMYDVkbh2wPt8OTh9qLqecjAdFgtYjdEIzv2ysROlelUtIDboDze9vtnOZqETFccKLk481etFbSSXoznu2R6wkyKlHZC0ZUBUmArljTlBHWVycL4BL+9Z26VFbfSPP+/GpxBBS5FVVjoE8XuTymw+30TjXQG8rJH6sAG8lQzocb1GxGDXidzUpX7eQvCZ4JAO0krlVakE4Ejf5/Ns6cIVrVqRsqSz9ELD7ARptS5/JchAgETKe/0QrUjinZVzaQuVtw9xJ6ssMOLxI3HxqKlb1aRF04mrSLVtGvWP5YqpsCFMG9rdWrkKzkT5DAdUVMVi0jz2CWltQhQTB/IGJy4fp74JJZJ503o6Vaj+CcUu1U8pTVaFIZKBqzA6RU+zuctxtFnINK+ABIvgyUHfM5Djpn5tbEBt/rEQVIPLG6z2db5bERTaQrwoNcZiDhPU/WRoBoedcTRDswZBC/mnWFCVH5LIBgZzoQIUQzNG7YEEsuBVZcBDhlWSEYaA4Agj8LfwUPMe2goCsi+6uknJBP4QBAoCdiQCCrieGLmu+JNTkVUO0j9cgKxK0peE9J3fN/PFbuNrZC23QNEBItFQm0SQTX8Mff45xCTzJqCgyvBBbGc2zcWX4Pac0tuQQh2MPhAoc1+3ATUgGg1zZJR57WJRLnOGJv1TIT1QYQ82ne9PECmBihdsGGwPYhXsJqJQMt/2eK0pEPhEUcOcpNr4UB2eV1oa374QTMHCHC2NsAxgoBGJHOJkypBlYHInagVKJmiYyMFJjp9phvwBsjBRpaG0JFPzqI2ET21so56Glxef+76WutcNDHIPHpQHbufF8d1rlRG7YbNWpMBy2bn42VJv+OA3qgPpL0E5y2QRLTB+ElStTIro4ebFSobXqiJZGnXA5eACAUq9E7SgU4JNfH9iP6VNtDxSobiXA7RqwWy14ByJhPMXO2Vc6WyY3nMjHiczu+AejD1uGQqHmd0Un5x5P7wMSjXeJ2cGhvkt5aXXaouDO1I79e6fwthAszXr1nOyCgKKWCZFFrNHY1dEbH252ADGXnX0UadB46yoj5vZybKAwo1VC6f3DScE90lEVcTpXFJDyFgwchpebHyyMoZxd+/3jMotieofBYaNxwnz1ZhThAw6MwTs9UWOmTRoOXGBqFiEmCj/C7ocQvO4o9oqS5l5wMUkazuMjsh5IH8ZYdBav9bZRhf0KiNynoEL4G6PwkPaZ7DViW6RRv5/m/uy5UaSJMl/yZfZh5YuhMe9sn+yMpISBYLJ2AIBNo5kZ4vMv68ECFc1NzdzBCuzj6dms5Ielx9maqpqhe7BWA4xRuNXz3rXAiKTzYpoSEKnJxbv2ZNhVEGe04BYehEU8xOBCOYlF7PgQWCGP+l2u7dFDVcmkUUYBQrkHQ0NWNj8qLANTJf5/Pwjxeu8MxXoHPdLYHGlHfE8XZY2JxkA4jdNLO052kaw7h9pUs1xtpNypq5c/BseBPh+7PNeMHpfLpEioVK+AX5znB5D/Jojqqw4F6oRDjtsw9FsjGQKur0YD2M0djBBJbHC9K8q/q7RDyltpFlX5WnPM54VLhghiToZW5fgGTqkPB0YXJ2P4Brq4QKK5k/I7XT4+jzNe01rkGqr0HbrovBltGWwq1ZLdzK6D5WR+3rDKSvL0LuWzbGhnzeSvqM6uaN16HauTVyYmF60RZQsnstI0iRYlG2FofFNWz7u4OvrfH7V1Pkgb2WhMgKjBUqBniShM/j07vWUJNvdFku+Ueft8U0ZXfnbFY3reL/3dwmkMB57yKkJp7GzLB2cqXJgst7BV0SIdTdMfLkOC9/jpL9D73rD0U0I+R9R86owfZe2T+m78z0pa+RbJKHgagZHcyxENbfrKjGQV6ojDEN/yxjGxMCE6Av8LUlripF/DGwYYBAsEbctaEakvpFumluLVnSyr5ghEPBgkYQEP7i04JgLPhp2toz5XduqLuBDxSeP9JheOHrgKbF3jBCnECYDFSw0whbEzRrPhjP/YtTnzdtN758gu+015dGHqpVE+gqEnKHP95xEy1c47m5XUZ04XO+3EnX2NtJ8+fF1dzodNRW8SfZPRNPwUmixWruVIp7zLs3NQ+PNB3r56fInTfrsK3y7/f9UNu6tUrMT1qra4/06z/NeSdQT4/dqWEebP+/2qnlJ1bnwgNGeo9Ql72NsDTC6RjpdZJvBMAJR3gAaGLR7CaqKoJSfDJjwyEZurKL79dePm1bbx+g2WK0pHUeaXsCK/Ssqlye3zEk7ThyuzDdFrRl0r5qufMV7eE450oXYApdF+iqI0BQJZyUtUYIqdL5Y2jUcLvNW+5z7FCOfC3Tevc7b4z79mKHx1aPFDSs9+gdhyf1lwHSTmvtcaR/gA1kDP6HmXs4r2F3E8kATLyHaFaCGEresrG9BF/+8j381ItAVXXlIHLXsDH6GhYwQkvhNBdBSdjzAzAVYKHofoOLBLggWKbH1uU7L5/tt2m53b5ffbs6C835W4JPvFd0KrUzhbDw8qSyplb56veFzDNZ0jHXquOXVlCSj0AaVty77s4Af/xxUYLr2xrlhsqeRWROpFOxprOoOfbM7oVHO40OrCC/BK26V5TK7xaPmVMW/+ynONItGhM+Mcjxj35aBEu11DGv1+L3EvgdrjGjnlRohQ9zSsNGqcI4FziJETwYLF1XxjpWL0h65TNv/UrZqjV/G4mcUewXWNjlObZU+vn/xr7Pyg2ndzG0Vh+pj1N+vz88atRgk/tEgyEqPk8LRxHG/V+mZkng59XjdKQd31R1/D+nIgzTH6XtLotYPrtdJMnKtzkGp+Ryst1ENpWx4GZmtsm99T/76x6zU9+PoauU3q+pCt8tkWUIXZJIwAnugTQvAa+abPSfPSujrdnE9PUVLe8xIPU9FvwSsDd+v9+M6x7c8G6wTXSzjk7Wo8m3gt+Nx/zr9PT3tBmkUhgB7rNYmDhg41fsv5BI5cMDA6yxAPwZWKbH41i14HyP2FctUIAIacPcGUsWHZeRMJiXaaQf0NAxUMInvCliKHTGKEfbtsfbHi+MUWSVOf2yjPIwrEcLbBS6n6XDWnvlB9nJd4qW1OfPhSbtC1G4m9GgWppwA31wihok925rTp4sqLp79LNoyTOUJncfgol0KlmbB92q597uQ8lUlaYnVHqLyLAaXYa5u57XqI7zPl5ft9EHoTj2rZIDJGKQeV9YJdofzfJm1h5zfYKGcHqU9UH1JDxsiQPOnQ1wu2ogzl2cBoVUrGhWxpZgtv4AilIAQxkzj1s8NRFAzi6yT4oy8zIfdPkEo3KZbQD3QbAiXq+iWRBMJNoiohEKXfDm8aBTPeKx2VBeNCEIhauoKBdnd27QUZNO9xsMV6WLmi6PiiAqrdM1eynP7Y6yUlh+C3y6uoG6xWuOM0qCkxw7Ivlw0erJE6kwaIZ6FC3ssAiD/ZyJD/oFI68iMFAaIhkxVe0jeAi1wA5Dr1+Hhi1D8PrewGK9eGut2/E05/N9JKLxnkWklrfF8sxpO79PbJGnW1BbCvQ/r4iwICLWvmBKJFxW6CK+EEjWoLNK/g3RCt36kvoa7aJhG+9ZApQplbhlduaDxp7q930ZOKRa++VOkWGA3hL9P5icHOAMLhdJPcOWwwqhFjh9M+wuVuNV+k2MyqXMVB9pPx9MHZi2kXYPjhEIujO6IzEMNpyF66OO6iBaysTVArhgHUTonG2OA4w0SHF863zFtBejczfdttdIIZsDAr0j/b5arkUaK7k2kmtLbAf81t3p6xDfn/iqAMYa1BKOogEZAgzRX4rAErbK9WdZISOqmkaCom6Cwm1dQhLxxAzoN02sR7pSZ7IY6hT2v2NRcOP+AdyzxJZaHAaoRJ4YIjFUfoXEhdgzj3cwEl9JN1WYF/Hr2nkfBu4OctGNUxG5sXOol9GrZpVJArnZbx+UesthG2M44bghc0RFPpTJKOMcaLrGc1ZKxgPkjKnAs6SNTrvl2Cif48tRf58Nz4jfdSgIUp+kGDF1IecK9kK8F3ohYiP3GOUIE9v6eQJTAFhhfIUw74IkxYv/eCECdkTUp6jATYKcB+vizFypJ3Yz72BaNfdjZ+kf038SsaxiLl8KP77tT/qqlS158TLwcdpMVz6Hv2Xn5QeyiIX3y8v15ibdEmEgUWtm452P41935PH1THtAbWdMDOnlnBq8cWMvNK9Ht5AvYihHgr6HOQskOSnP6NmPytlRu0d4EpRghP18f2X5XaNvSx82LtpAnSOkGDPGw9gt9t+8XvEyX63lpWqPev2yQDXPB2kA9/bGX4XVYnSCIVV995nu+T/v9YTocDRZW1Qc5YdBMql5pi/9xgX8cD2rCiCoFW4jBKSmK6jrEYDHQoucwqm4t1Q10wSHEiWO8NhwA3FtOX0JVuUKXUl3i9H1WDWJ9f9LWdwu4DzRtM63ooo0Q+0TcGSkfSGoRvqn1/QrpQzc+QyNT8+SCHfsyZz1va5flZ7TVztUriL3i8WBINJFPQFQOw2u2WgSRMD4Zkq08+WCqgQwjHq8tfoh/hSkcZyT4CrnLdg5lIHCGUpQZRkS2RKpBWYbRzNnUlIljGtoabIHkupgiUoT3IwQfIEPYHt4GfCIbehtMSiu4FoE0qs6WYFSEtmDl+Frs++RMo1KfVAkdHz2U8wyWzuoITxHfiaCJzGHk0lYSZXTfEHJFvD1hM94XNqfb0/5+PF7Ol9P0piADWY3KHf8Nkj6rURZeEVdOXBWiQ4BoY1zYnm43qypmHmAScyUq2mJ2zI6qWa972pexTsbO0tQECTtu0iCMbvIFOw7VnKryDQch57eAj0G9XFrRilawyAiYgAsOSMFUKUmskRiJxhdIfaA1QULgJMJYq/gdTW5FfYBsELxW2WS2EPJffj8e97tUrSJca74gh1ldPLro+K1JdA8Yb21gcdm+pAKoRgZtQH1WGkIvDb1URaGRXeGQ96Iq8Xi83XZ+nfaLg6jcBeWoiI+R368ddWlKKkeVyRiyytW14Dhq1ySDSi4BCj6IfNYOmunIqo0k1jSoIHUrO50uQx+vyhQwYa/jwDYkZs6Iz/vjlOwlSSc9QBybtaH65dvu+DKdE41JlzBoMGReoykPuXTFmnXwV21k1b5hMW5lL9Xz7jIr8xRJR8SOvlm93vdH5aQs2VQoe2xWr/dlPDXtUzkYhlw9jV6v+8u8nc7Lo+9Oz9NWVSRkl6cQDMOVR+NeLns14pCMuHqBHq77ZCSZobIJyGb1t17GszeoKmkFC9cUgz3zeGj1uSqZYdFYYqVJdTp0ulVVtdSmAprcrN6rlpGNFVtJPhXiyLAaOkqJ+r3rho9AqaNonwa367oUVmOD474kd7qcXxTjp0pNw/GUq/e6i6qTbfwKHJkDNIaAUqcoflqukmbVHpCASwyFMPjWkfp8mV7fXuft6ajaKkjOHnbqla025dg3KCiFAuQ2iG11ZbuS29Da5M41vGzISzH0FZuhAKneLqOSBFe9KAz6Ql0golwuyp+n9slD6JbFLj/0uy0ROS7Xa8rArGQghyg+rEb1Lt+nk441K9nKkK3OVrMhv+/Sw9vv1raS9procYKPyVYblqYKXhvPX5/mlAzduS6zYSOIsoU7/GoLKUIffP52AWZ7ntJRWlc8t04o9zK9KUMet1MBSJ8jPOZBPKOHB6JQIVug3EcYcaN+SBNvQBENKIBwZCzKoV6mk7LD9S2mOLM2MJ0UVpu8XmHeLddT7Iva+5wN+kTHi7QboH4RGAG+EQtXNOuQW9cKI6P8mOvktj6i1ldBdszGS70ROsgGOi3QcapJWDME/gefd+kaBbEdL2Lf/Pa4v76qKF8S2eHmXnX1ysjv5Xjdp9/LJ84R4omze8jdqqWKkHiOgCXwbnXt3L6/6+Xp+J52DPEVw1nHEPamsRqGjKX3/XHh5+Npu593h8t2f0xNvLuNzNxRO6mblYHx/Lt2Pl7as/g7X3xvoVAdm5+Uma5va5GtPQHYx0W4ydDGnPfDhQpUHosCR7W1UsXOQr4HORuArju/Q/byvNv0IO58M3mAvU1VfIOqPOXa+uRvroDKmltqoVvzef6W1iAHX9df6NG6DJNSDxdbDbFjDCiqGPQHixNuXkJv+ZU77TIDtKoCbwrQpsMnBsYIb6tPb7tJV7PcqoxbccfeofhcNiuZTSv4Wf1t5fayfrsejLfmf2GafDYFAuX87TA/z9tJlTE7F8wHiV14tdG7zm/rdp73O2VV0LduNBgKqtrbQCmNtHIlIjETBh1O2ByCt0cLmFIkMCsGtes5jtJX/Mp0jognTeRMo8yJ8F8wewT+TNAAiQwOJMH+Y5GdBTuC9mTs+H3Klz4bqlGK3xkCTi6i4Im7J+pDocSQ7+3C8Ierx++3e54VGtL5jjuVfkHRAcMZWCfFoWl9V7V1cEoRRJkTdVzr61/XdAw5z/9IbQiDRHLxpcAK6FruZEb1kFhS7vKfdP11jURuReDi7aqeuK6JWWadxNWSeSgp//HCy/+HUgEMbqKGiaydJpyB9TRqXX+2ogLkj/ntTXe98fNTPdu9IRVE5fr9gWYhSv4lA6S9YtYMvhUW8te28gOEZbz0qNu4zBRkutFH2x1Ru5ZXm0GmQsY4DwLyfcbSGVwvG6BQRexJN2Ns3QMeX5wWrfGT4cQBU5UC/fsaikkOuQt0X6hRShXdqOii9lOesPRt4e8gDzJ8YrMOUbefQB6nztGwARDqazoDC48ETGweQqC6FnroLt9IuRd0o2tOWBVYp/tjepx1rh8I9DCU6bI/mPCCWJXy7Y/vyqag841IBbUA8yrUfpz0OqVVpqp2t1Zs5HHTdgdUtYHa3VIBMwj8oGSlepjezi/pkmt95nvGLobFSU4zpruGeeGECO2m3JihcY1qISv917nWEWbiBy3WIzUqb9qC7A48o4LKBxSkJsti440h5gCtjm7VZmMXgJ94amFqzEAZjDrhak0pjqHTJcvup3YwWiiLvQwjFz2v5V7GoJ0/GZJI8s6MNjJSxmN42QhBj+FPT1WY4VTPLpi2YTPQMHIJjW3igQBH2BlgXVlh5Ib/1eAs0cvGaDKTtaa4/QTzBBpFsyczComlE+C4/UOxxmoXh2vZnbPD5mQ4lFlSIrr3CHdH4bvjb8O3O3yetpfjSZVKelk8DMBRH0Q6x+0fyi9/dI+MktTy+KzYdq7/OsREQtgTCjDJ8VWLuX3MtxDAH1NOTDv46uAYQnHrRwi2KX2a60mRROrKv0jhVt802aRgDvv5No5clYWGjue33fSHqqi7DAWiGxGNcIbcLqCUQqX97pfx6MlZ8EaFwWxlQYS5NHU/7kvp+xs33v/V3WESmXVu39DRtLhgkPm2y5sn1o2bBYL8KVpr+L3lz2/adaWqfYe7T2aYbwo/rNrGi9O6vG332PoB5tt+Vnt5578QFV6aA/4tJWyJgiF6WYfQ5SlmDPdI4GFscyfmmNe76O7Go1u7h3EDfftinEcDPwYdkB5wj2OywdqvsJYr1OUu07d08Yxu3IvYdWiILeKuSr6ngXtwqcZ9mb7pZbBxOQTUrsAUUMguutKHOTxNeyW2CptGcjg3IoLPz+I0pSu928PTdEq3puDWtYqnymVSJW/ZK1tsruNa0ukyYPrh28Q5uIVG1zpd46HqDq2YOp3kMaPEEzZrWw/chtRIsNtWUHa2J0DKDu5iy/ahqeWSKafJXRho5oMVwg+CfhrrnIEfSg54PpYCgOXmr2/qQHHz2U8eKJdJO3OEyv8W/6RuRc6dqcbTfuhVsua5KMFAoQsVGiEgS2Nlo9Ac7XaJ52vK/HVDY/RdiG0T3CFf1Xlc9264DT1dyPPz0sF8mS5pGBgKC6O8pV2u6QLrE10C+CUQ8cTDMWZdXCk13YxIzMEeHlrjWCdsQ/yCTMSS0Op249ujomhIyjrNsdFLKppuRbRqgAApwHsB/UCqDvFwj+eBBD/Ua/UUtzu1FO6SZY4VGA/UGsWduPwG2JujxWrVksaMwn9fEQsAkWutTuEy/UjjEO/kz8zWveGUXYC7FtoYkTKsFw7mRPCJaviNIM+Xp/38+9eXyyXZfoNMWRfzYMukolR5uuzS8UJ45Dp2O1QKs3hWkPDg0/vuw1HMBV8jX3UMxDOexQLxjEBnjypirIVmXubYngbRjZceTDhm6fhaVPDKZmswU8C+J9E+RBBwx+5xkhHFg4LX1uMyGDeRMyxtKnMrhZLZ3+74prr3VH67kJ5s0EJvmcvxTSvb3SQRUSB3TiTw5Z3zeFI7UecWEAPecVMoSV6OKS2261zmXTw1hLskxOrR1SV+a2ZbVhc/0jMbiF2Eix6njvDIBguEX0MHWwqIpXMwIdk4xWqAb1k3vQcQ5PLCpsPT8/H0rlOTLki1yP0GfEp4gUiQXuSvT/Npl2OenV84rwo+D8vYacLqSoP/vOdl2emy4G9p3/JpN72m6IMLLdKKGNsYEoi4bbIhNnUm9PwYWY5iHQyPg34zJfL37YbT2Mx36uVuPBRyhpOitA6VG1OjqN2WjtmThgpC44LW6OWDwwRedPQa4IRAzV0ca2IpMzIApGl1D0BY1+N8GSDhHaq8glPsLRCbPrH7ULpxjPwJsI+wPCNHHQzEYkcBiHfFBtOjDtTDhqovSPhvn2gRhyczaZAW+TV7VxsRkT+qSaAXNG40d6w60TJiKH6aIX1FK+8krb+0mz9FK7qcrtulFeleJdVu8vYvTarjzSl+Z+8iWSwhP7hPlIt/omlxkR96/T2FjPwqyCotj3ON/6d7Z4XRp3Cp+pkz5NvpeDluj4rx7QY3BnM9Lmow19EyhZsfTTDIcKVZCn2ssJEIkwkyVwvasOvvH5a8Crt0iwQlg6frdrvbPSngaePzQjY1E3wWkimSK9z17Uoabww+zFECkz4GSw9TN9UqojKfrhZaJo0i/ygBiMtdn1OXn8a9aQQmYxZwFEGwj4soGKztfTRJmxG2tKaNVRrYzsZ7GVpmK4ibsNgtE8N/Xn912ziVfAzgCxQHMtDH07d9ebbdXqkyKfe3DmGkbxNWoL0AqG6Z3JeM6q9pR9ZqE9x9DIblZYNcNiorg+V8j6W5/vw8b2e1SYWm92l/+Mg9ELuhKnyUt91pVt0tg78HlEDT69vbXle7h43Lc8xCu8KgytJw8J3Ny7eXRglV792c69n9F6SZ/jWyYpCr6X30OrWWtO29EA6212QriClJH+8I9dBFOdRjYfrd7kETq930iM5zQtiR23DKgIa90Zm7ECO02GcW5wzYmMhicmNpKXtmh3XmHz32M0AiJZvQj5eTBtmVCxxUlGVkfWxvPxVmguqaW7vq2ZzA4gxo2M743dKDj/Z9jJQqM/y+66tEBx9Darq0q/aoStN3GUrn4r0bK0FpHBXEzqCn4zVrOzS4ckToF2rk8y3ma1uAPa+n76rxzbBxKXQ4xxkGl4wMPsZW380Xf677bsuQivPnhsCP7y6zHNm4eg5oNbuh8N0WPpbW5nsHXU/L4AJg+b5LKx+dT8uD+0CMSgDeYTPswbCBWy7rCoj2LEZzjT12RB1kbPkEwGQg+Avgr8KHV+L74J1mPFf3PSiBw8adqnyWohvgMmZ67LduA6Gu5lMX7nK+bF/SOd+5UoNMyf1gS/0YXCEuLlW1ONSP19/T5LobEvgokuGpgRctPKhV5umPwxa6UEysgE6toRkVhOa8EFbPYi5SowFwnNNYkeBTs2VHrIsRieH9izbNLIG1xOEAN8cpHVe8myHgLQgeJdGUNn8zTFCx+Kj33bAvsCCjk5qNpWRQy/mm+0Jp+Pbxn+Zbf6DppLr/yiIImeoV2oE+AAXV2FoCOkibjwDxVBs+M/z89H3evSfDig7znDPxs64Y9rBNjylpurgRNUlr0nY6G5fq3gKP6Mdh+3I6Ho4pC6Tr3OMMoEKvKyEIyTgtGSfjtBbVD+GoXCDm/jhfdmnhpvtTAG/GBR0StgjVJjUzXETg0Jj0qOwMtFwxnKm+oASOTQOUCTaNjuiYoTaCRToaikNkFN8zfEMgsB4jojGiOxhAjkRABIkQ8LmWfZK4+/ClsIk0EAhLeNP1xV2KdQDR/hm7lNi58Ldi58KLF9CaOrHSnuWU1qB8QieUQE4PtNIUqMndDL9jiICyjRDPkGU+uIHUbQ4a5vhJEw00dorvCJL0LhKX0IgIPYdgyjEg+xpIJcP7HNmxFTbcYLaFgAIW5K2hNrrcuY92e4aEWZA4R2LriPM/PmGDQDAGfQMO+IayaLbGQ6KPNj5VDwY6iGgLK279zadBWCe6yn1B9h42JiUXiryoobIvMqe1pc5FWUuGDJfpj+Qd165CFRwYxhg47UQps4AOL9dSXRAechlpSy5aFv0UmvspDaH3GEfVbi6E2g1aC6WEZSjlaeRydISrfowS44bKXZ0G71jJuc5T0IdE74E82xGbn7B6J02ezEAAAAyLycgW21thNp++pUq/QWAXX2oEJPHg52bdMjLhNmOeoa1+S1U7bPKnFsYWSiXp37niJboBj9tV4EZNKOz0t4sYDUa7kFg/xx0QXAQ0lVm2oHW71zalJdYugJAIYw0FGJaaxOsANHb8d6xCKAmnc3+/XbZpkhtq18XWtL+7z0l3+L36nq45TxM3JXQra2EeSKnuBkUiIdrFAUORbfDJndkTN61fbTA/hhu1X7ZvdnPxLiQm6Fb7i+K4u+mkDQKD+50gqiDtCVt/7RteXXb73evuolK+dvA+WIfwbONzEC+717fjaTrN2v/KFakKZyn0eBOeUL0/3Xan11n5wNVyTTMk2SCyArEptEaPA6NzIBlntS7sFjqIgmgjcrGYneG4tXoKCpraxjp44QjWWclbbsMpfbbYBIcbNo4uxtRo0V6Ql8d3f9ptdxrWrSvZU4AvdFi5iX4MrbugCSiOJSdRSlo5qNKfNS58ipeeUE4fvZCsybKPcVsPYQ6rohx380J8HpvP2AOeFTunc/uL5ba1UJ+IHox00gUqRTG8LwldbkRty4MvBuyZczLTRGmtKnyWv6eP20ut6wCta21pXccYko2wA4nXHK06POuJoD+LKqLoT80qYlY7lNVBxIZNHDkAnwiNz1i9vKQdbVrX+EF4s0SIFS2Q+NHjM9MLhQ2KASQI75Lc146NkQRYYbu1Mxky3DoIGtBdA8CnaEcLSZD1bpIJ4Wd+0UkW+A11FnjQ+ExMhzED4nsFNzTutCjOxZi6jhtu7oKD1Iy4VHwFOArwkuE+JxyNfV+cOLm6+C3howe2SY4jilZyWBpQPxPfEv2r8xRKWuWUSkzgqYkuvBXETihvSUsdTC3Zwg5mVKJXtRLuPjbNgbyL8KkoqQ5MqCjGMqxyOuJ0+InVBCyvHu/0gX1OTQiUwSp+hzc0ALsbQYOAL6IU7WgYWEXi+K/sZ0xPQ9HljLhf0VyH8Qg9k4UJWm69U+HEFOklRpbO28orQxG86UQPtUgwNhHTjoeSSCpN3NIlmZV/gZ9xuePz5SV1cPWpkfH5465y/9+4PnFO3f8XODOWEn4TJwxmHUM2mHphYWWbIPuGQKJBa774gw6hqTLBHkrUGwgDa4zxB64fLB+snvgDJQfxByq+MFnj2yNtGvMkfiRtViYcCqEBwJ4e/w1mMrZyVh+w799HNtzPKNGJ6tPcDy3vUooqRlwBaNbeNDjF8JuswIETJW5jou1pHJmtGuNtZI1QUc0FyAYTRKT6DQ42urEDnorJFBqOA/ChYzuUkfGv2HQ1/lWc4VRPVvhznIsZ+henehtfXRu/F/qeF09TnQC2cZ8zDOhyl3mqugGFxL/KPNfbFv84Pk6cq0jdaG2XuWmCDoImyBBat/F7wcZcBAcxXIjvWYQL8TcouOdtaoPOi7u4V4JH2MUqeUffl1hcMZLo+J/ifs1m9PE9g9SC7AHlOUC7cEdEt1wwpNEdEwoB+MogEh7jXB03iJDwb/JQCVlE/E18HKQTKBeO6M0JUEeGVQiX4OOxQcCBCrXjWYjfUfP/ICTLmeJWmLZBmIEAoQJ8V1UUG0IwKmSHPJeEQTcU1nDzQyWl4sHDk4dHD88eYb+PShZgDwo8Evt9npE4JHHQMPAUpucMQQ37c5LZAgqrOEyqwEB24O8IEVFPSLCIdR2MB79Z6StJ1QT/lsc1z+sccqpx9yKAxmwSqvKQ53+10ae4JnOMGgN2kkY4wH4mNUgzaK5C31IpOiaB54G8ChWtf6l7pvQERuogkgikDpg5IrEQVAD8jhVXy5dTSHURLFlenUZPbkEtwHvpSEHA83Y9f2cQD2ChL1IbkcbQrstKaICbkKBAghn5IBaHW3S9Jtcb16DTKFtq0CGfYkjStwQxgrgOrkGyhKV2FXxyajNIr8BfUDpBjyaLgU7siHEuXf0p4CTRjCiLCIhxDcbGlLuQ4IE9p2dNn9+STicGL74XtQiSAMnZyelvpJPQWhBkCgn3YcUL2glOxIGUSZwpwuPKYutjpYg2KvRBpSIZe50kueAa2HMAR67VMCdFvhUFPVL2l58wD0RyTytBcnLxNka8DUI2IxVxBAaw8kasPAEWNPwdroaVMpIVzH7zeMoRM2IkIQZffxSmfRC+mKUN/lckdkjLKdMUtApUqtmjaCOwcgN7ZG2fNS8TCKGwj7gl7o9PxCImlG4SOkERhl7xSFEFwM46OyhTFS0qRXkUyCngAenCgr/Fe2ZBVZK2yFrEeOCoP4J2jAITQBTpg28YfJDmiq/P0kLV43eAWAEKSiDJhI/wF2RsWJASnWjI08CXEeABQRhAT3RDJrMj4F3JcjVL2BiZ7IkGfwHnAbLmAx06SZijG5OwmQS6gfdcs+KB2V7TSGXk7wCIYMY2wmyPqibqZ1nBIBWZknFD/YQ3yQZVDd6p8GYgM4YUQKyARnSyoWkB4ZxcOyrhQfo/WEAh/kJAhhhZuEOwOoO/xYxtgBYJ2iLeHzAOCTwSlsQsaSnaZmnccg7H6kHEKAq6j0BLpan1gEzsDB2eXICbWN3S7hflEOzZwjaGwBruCvBAQLQZZANl3AsaL4KJGDrs96LJ2YC/wBzvsAvIJmeFytFONYvtPXYPg6D7FUg9BgAmXGOZfDNRJH8jHpWCDcyAvjfCZCQwgouLo0hMFV//d3lJid6tz9CLM4o+UoihiCowD2QmJYyhyp0BWuMMI5OuyvfbgpfP8mDn3V6Jxka3Ploz6aFEvcBIeUlJmo0vSULeLJIL9SYJ1YJwQo+uTNJiYTOyDIZvwSzP6NwgrLlIHBGGXMpmxNornBeTKkp7t5s3BRRIG5hMy2I7Ux0jrbESiGKojqBYhFnZ0eI+2rMyXltyo7JgXOF5VvnJ502+7NKmraHyqRP/NP8GseKaAvnuZaeaO3gFd2JZgHtiXTzzqKsktxnIEjkG3FsMBECwDegi5StzLi+zMv/yzSN4K3iDepkbXAEGcfcf8kY5cbtg8Sh+ENilW6WirEKEepBRvonVBJRU8jIHahCoFAD8j5sOTmQ67ADhlCg0Dz2WJoHZIgsWmCi75AhEkieMVdwHlvhr3EwEMvjn8UAUdCSSx5lLZYWJ2hlYHXGgn0LZ1mJrvxhRW42U/afjY//pqNi/GwsTqBMxJPr5sdEJERyDCyaiEpNwYmERRBvI6CQmQCSA6gylXUh9aq2m7//p+XAwMkXmgqKflCsTvryoRvG1m/0wtsVSFYEoApySMOTleP2WuiSNvv3fOs3Xy2mXhmi+s4UuyprkNaJEzPCzvl3enZxfjvvU4ia4tPvWIIkKiE9owQtB2ClVSFcb188JWUfMCpwB9Rdq3WZbzILBLY37IWCNTtSiUT3knYggHvsJVzNxUSCBoRq+rJkTy1Mcr6pPgmudWtSjfQz2pgZrXZebokT65XR81611m4cpU8kt5Tak4qaPbizOI+TBTSq1z8ZX++Q0IdB7fAoQeT4Zmcfg8IBOAxZNTpWJMy/jwxgtmcgJMGsrwu28XBsg+l9G+onqE8u3cHsDrReOhgaOLVCSMgLNk8BX+MyptLjxe/jkBGlYT4/ZNy/wtvBh0SU8/8L8sJrWRDpSDNJIIwLLBt/XJAyzFifiGaOyxhmB01pUrsQsIROR84DfvFi1qfNvLmohPA6sOoX19Vlr8JvaL99c9cVyIbNBZ4SCnnAP+LxLqJ1Y9v5e6EUEoHMlvGS2IurI6asaWiiwTZlGg2gJHA47VrY/CTYcc1gyfMjNsTg8OZJRZtqUfSEtOamIva1eDdyfuBetaX13/3i70yk1dpS2kWI7qOGT/UC19TFsqoBqRimtBPsCRQ7WVSPEEd9hk/vJ0h2mJm0ZmSNqZBUqRVXHFuzI5EezgUmcUflEEh/T/IQa/C68m7eX6ay62UjrJi1egdYE8pEBfB3KJyhjMEQJoV7Zev5+h0q+5joJNjAswwlW+R3JlsFPKvZwvTV/NvYonEy/OAgpnF7y7FnL9PiXRChljkE5VmGEsvK00rGKNzeSWde7fRMBtUIPJRyACd/R2VeoVvweF7cbuEyvac852VNxFMxSZP3gLPSwz01cHeMM0yxtyYoli5UIOeaDiQZajV+JwFktYIl/Wc1gReqAGcmZAQaJiZQQxUBVqetVTJq8H//Vfz1Mh6Pq9Coa4H0ZWZeH7YrMukOT3vKDi6l2Qa6qEPABzgLxAfiy+WJJW/D7f+A+zE4QwvkHwFLVEeb99PUfb/u3m1HC5aTnF7ihMAvqydLCDrBh7ZduI9jJwsrGb7ghZZzr+qcKzvgvbpBst0UeirnW7davh7QBcBgq2Z+06fMNwxwvdecIPur0II4c2E6w9u9+f/66nVI4JGksO1hdlYqQw/789XQ8KuF4V6WD5tlBcayvb9P5/H7U/Z/kC66GNt8jvEG/707zc1r0bOv0Di3rqvJjq/dYtYnHAuXxsAp/eJ/GbVbdJhkV83fI41tz1GPqh+WrF8lLiD+QU44Fh1WGpRXXDihBWneXC+coigOdgvI2/CamCgPwiTxkjJFzSd4Wo7dYOFinaiuI2f6chm2FdA3ehcBUMml4UcyGMBf/Jg5I6VpBsfZzQrX4mWBghYylBbRcErMBdQ7xh4KGDYF4/Kv4xjp0you/sfRpUcxGoVr8NzSLzIVhkd9jNKUxVV2mbgsUM6qwEAuCV1yhk2clRMGmkooaKFblgW1YeiJDaG9pfYSGx1LfsHaOuzfVLVStGB4T62viP6M3+SU1cWHEacXmrIn/+yvh3Jr/7VVvUev+N6k9Hug5eJoCN1qt2ACAiica8UQjnuiBskOoOPAXD/QcRBLwt0DcRrB6N/F3jk4DOgih2GCVnygEMQpkACZaUVZYIGdAjf2RrsJCNaihsFCNtcqJol6CZrjE9C17DKGhKCsnWAelDoI/WToI3IvBg5DaCKu6ZHAjhHKCegn8O/YCoOUvUEWhoVhZoxLaCOggbCYG+Rf/WtaFpT0oKg6oH0B+ZTWZM5n/JqMfOabg4pOBD4wF4HlHQyhoqmxmvY/MHn+/Pj/vToeUchCaQSYX4ojhBk9hRrUSYr5fSzvAh2YIycV4XnBX55cdVl7s+ZxgK12QF4FLQFz0A+IHNLwPNR1H6jwJtK/6bbdwjJPMyvVsw85Eew92q2dnb7/d3+WojIYX8X2SFOJrgRg5DEYaL7IspC4xNI9Hg/BIQNCKYIChoA1FcCFhkjc+LLg81te/qww/JEn5SnjrNpJq3lzVyUhrJ+8fu4PqYdL5PUz87jWX4zH9YoOHbFmdMXW2RkZuYsPpo+1HZXo7upPT9JNd05TtcjylXqidy18qOnYfL6ld6LIShLk4KsxhWIkhLQNO2z+UY7msW/fYv+852rpBb52C366/7+fzi25uLwpdX3oUbO6J3yeGP+3e9tOPbHT5RnBgboyae3n0806Z63eCOP+lxwG8WWsNv4z8dD0tDvHGKxd4GBsyb1Zvspdpf6teq2ElstgjPtjUK5HnZdjnad4vnud65EqOzOL12l1oGXl/Pb/oToWV8P4eqPtsPnPHy7jLbV9P2eitHL3C6J+569P06k5tuSX35NDUa3dUjG/PbblP9wjo7kDJZ4bPJ7d87z0ixA2UMSuGft29Hk8/Pu58envbHZ7MErrs+fWlRwi6MdrRrLrU79P2j7fT7rx0/Ttfpv1eX05uCIhzN80ntptDvmAruRkgZt40n9hmTrvt8XDYbS/TZbGdzl5TsiVgu2k+sd3gCtbeIC2+e8T6m+YTWw7GP5sNnavEor5HFrH5zGrOSJqdLMQBBAl19ZlXf3x3lnAvZydctUK91kI/jn6+TN+yoQc5NFTrzSeW782ufbo1pDov/3y+6GajvZw3A5CNulm7kq9ZW7am88tspZa9pUa9t+toinD9U40wL8frfLgM0+k0qTZgYgcgwn0fEMl8FVZvCe9TWm1r3IK58I4siBNO2f5SB681VSugHT+kPk1LH+RUueh+xRAqP6E6TfNed5Z0Wz6TsgiLqFJdkJM5rflvvOiYUkrE/YYeWAgNiEfRexkhZ+d3qhS3lobco2zOhovH4fXdak10Avx36Q09uA01P6qH84Nvhl1fJIvJr3svF33WXW7cbxIzXXeorBt38NvxCtt6wECFhrW38V/n81lNodC6/W8fTkjdDKPrZa2a3jqdEfizttuwK8j9OzN7ZJFYGkKjsgW+ragr0XeAtRdRG8p1kI+asdCdiSQx/FfUSgai2y3xJtax6UQCtM3vwIe3q6ey21oDlYtHRtKsTBn6ztz1TKwDG+UsTejvuzQHD8ETEDQC/S8t8e87FbNWbh/UAhrFEmuEWu3L7SbV62XwWw4XqD3LOFm45902Ksyx1mIPOesBXbU98Vc2x6XFUKFN7uU0f/umqbejt7dRvMZVaZuV59I2q5rQ+J3B7zemdAqNt1NCpyDkCdnaKFxHRXhui+/Vg76mi9rVZuHk7lHh2LAKVcDQTvPrqwpE/AmH4k9LXnxn1KtG1n582O10Ve4Y3tkSK100x8GWH30PYlmijhVEQ6cRt+Qm1sAFRyZSY2KZq6PfLL1gyW9A5SCADUVjkpaIukXjh+NtD1/VXuzIZOWSZ2AwCbD7PqglY7yxyXdpwbs1alFdaXe9Hra6Gc+mFTEc7RM6oyVjacy0MXbrTYpAN3NQR9hnoQBM3y+THg0bt3bCjif4wCSSjAUHGNVBq3d7vEsnDGSvUJG3BReV0w+dQvRugDYWhMCnH4fd3y+7w9PbcVYIlmgv9gUvOob6dYe1df8NnyWAN9KS8bHBT4h27k+6Ynr8OO3Ou9N3pWvpJOzFZkOG9sYc9ZL2/OzddmqxKG2Ocj0cdnudzwXf7idGduZg70ndpm3d4g/OyY1wPIlvXYT8QGTbpnTV/0oPr6Egjyi4EP14S9spCnAmkHx334GHuAVSHwCr/Qq8twDuWKg3+WZCaT4M2AlDIGEWTC/G4chZZaN0lhARXxSqbD/eVHTlha2YmvHMgWsXOIURRBG24pmxAGk6iZmpsiz6i7TbDJ0fby63/9t+923aqs58wU8fSF/xw4rbuKcp7cDuAxw4Mu9HsTemEvA88moADywDTlLnytqPUpaLbk/zW7otDoO7z3LnLsB0P97m7bRPuyGOtXcGZVGpN6Y+DXpvRCyVOPOtEa9PqVRpsxGFEmHvZSJJCKnoJM5oCFl5seGpZEoBMhbuqzhDLKdVVpA77H8FZOr69PZ/fptTsMPHZgpgxwKWVl3qUuL7sKHvQvTo9IasQ7KSXP8IeEpWG1ABSQ0WRqAND4XihbsmFQPU7rOIDgkgaVTgCyHaDax997546Zqey75BXE4fMIc7LAXilFUR3CHZcrTQaPS6lK8Ox/f97umblsGvTi+dgb9P8z674cZFdKoedGxwzUPwzRquh9+P14MuK4XaTcDiqgaRGLtctQH/jBxLNkWCwCG0feF2ti/TQb3E0PhWQn+6PLI89PN8SK/UFlodg9kWE82AH7QuWfSwEI3hgCvSqFXytw2utpDbWezpXD1GdW5BDLg8ecoWc01ZyPfvkHhrX0AhU4nxDPIkCDzAd6Zfn4xP8xN5Y/BSg++9e3um8/ao+AihkDRWjRvJXQ9P8zY9AUKh96jJPiMgVbrpeTv/dfqm4fvazRbixfzhvHbTCZWtM87r2DLAHvrGakhXZVXwuSypQz7LF70e5ufjKUW/BndfHSPUNTJmB8ulad3o7nqY/6ZRqM63P1oTMylJZtVLzukoSMeWyJE2VxVl3JC8/CtkpzQr6xoe06UXqGSXQ+VG5dSjWuMkNMzWPZvjGRNvEzgd+xrpbkv2BZezO22I2wmyTkWVcTvmWMIX1NHotUyvmZocfnDumWEWGj1eD/vdWYnG/ZIk7Z6N0Nnv8H497Oc/0iS98rceiOJgNAPp0lhaWPv5ddaVjNbdmKGei0oSe9DTbtq+6MCo8mmfsp5BARwKCKKyQXJ8+fIpQcHN2LgDBh87+Bgwe5yx8um+a2pRy7A3spgOIDuXASxarBbP2/P0vPt6fH7OUqXaveViUH7eTns9RyTTtMOuNVruTtQ9CS2ecFDOtF9S6+Er1K+H8/xNBYnVEPzDB9WsYgZEHcdnc6HD+W23nZ9VHW9wpz39i9rSEj1f35aYQacBj1AVIO8CVQH0HjUl9hUvc5LW1e5+wJaykDnFnCKv7OQG+HmPatH/kF3x6orRKJlQhhO+b8LkNUg2ATmqqWgXoypl7OVhvsEUkHHDU9asYCGNVQHsPkrhY5LD4B76cr5YqMDjG46vbsj6Vz6SE9d58UxKglk2wKsWhTJKLRWZNk0fBITE108RHT8ExWfgJFLS1fDILoqiBn/pvn07TU9pk4ON79gZv0TcPchLgD9A7sMO9X3eFDbeouirGpXs8WTk96PahmclIkma5DG57YQhWK7KkY298IXYL8NooSVbWdFyjsVKClAoAKThiGHFzC+J+cCTXjSs8YVP9++nQjLXcxWfgPrzUTtN25fZH9PQotpsvJhMYKyZ5V+JvXh9e0shgN43O6bMfvDHO6WMHenqBylxPG/ruH03HaZ0fIzILhIeEXG2x78aRO0dYCb14/DHJ+Mam1CAG2AIKInUhiMKveZoAQLfCKw/rrb4A/YB2UjOD3oURaTxIQame78yybNvKotCNy7QC81r7Ddgj5i2rHfLYmjfjrbroi2SdmIRaBN+gMFInE7xVCEpVPQlpucF8CfRmZZlKNFWyXKNoI9D2QOC/85yebC8HT7v42C5N/yMF4PlwPAzfgqWiwK9E7BPghswsicgYqw/o9a2NNqAOQpp3lkFxH6hAB512AyAi9OihU11xQQqSY8tkqk4L3k2Bv4kYnMK3KmbZtKjZJUpRL8pbBC7p5t+L4ENxBbxBXr/qu7zVM0Z81mVeVq3BFHMI8+KVb1p/YIbYRhfF7wMePvzBPnspPUXrOeqocUEN/ShScHZJ8DGK/5muo7VLqZWhIbPKm6pXJingX7bpgTTfesX4I5yfnNWIxJfeWDtzou8P+3BFCSAB6eWMKxjGF3Pun5eSrB8wrDgoQsih7EJWGdHedfnKMXdXDjhlHdpwVLPqSTZTmu+tMtzgkm4Kw/BeB0PRZiNVRt8KwsAp+KipaN5zU2Q0LULYjt3Pux3h2+Xl3SZJ16EFTbgfqUQ7pr5zIbgUv9KrSOu11khUKI73peRUwsZKaznQg/gW+JUiEvEn4C92xew8uv89Ne36aQspYfOKwXhSnF8b1TTmVQ8ZUNrr5Uqsu9V+jUrF6GthLmXVVexTLZ4fv+KWkvnZwnfq9++hzRR6N3Cm7lp6A3CvIq6hC8gWl96MvzARJTJV2R5dbWPX5v5GLV6UwVd5Z99U9M+XY2SaPtFcF1NfmJ8KfDtr2npB6QWOzV2r6plXoATYmA0y/i39SfScuOaVR3q5lGtOYXYQDQsuHHEKylitUtIbtj8EAXh3pcL3IfPjuiNPz7gWwun+qmZMGXiysr3mRet+DLpoKSlmuFAyO/XXGJlE7wsCHAssazUyl920z6tnfcuSYvgfRYF1OhwGwMP9GVkp8p4i+xUmXXB/Vd0ECLk+mdc/EUroZgtCvdOAK2AYUHgrdgjg9UJIyqqOuRgHcaDU6nsE4lJxz6Rwh3T9MT8xYiHOF5/NeLB5fGLsQ8RVf/zUBDA5/+ZHaUIwot+DaQc0sGPgMQ63z6Tgf+rUR92pmczXQTNnd+64bbV/fY6nf5QGsfN4EHoqzrm3cZNhaPVRhRFvzRsl9Stc/e4Dak4W36jdjY4QoejQKOkvirfeXLUDxsp/wJvJO51WHkDqfioJLEVRED6WVsMKSjv6kz+BW+73OMZrqgjSrobbrMVg7eMJy22xY6mt9bpnYtK7DanQn6AqUrMDqhcw6aRSHULxKGPz5EhdIM4kQU1vF1phv99Om1fJjXjk34l+ezB8Stmj0EiyAMBjiF4BdYpJ04WngQj91zsFFWd3Yn3iL/9Ph+mVLE3uMYeNTbuti2Ew6dZF1XcZpiAbwc9veW7yGn8VU+7Rb+J2u1WFNu08gsyLJkXelAsY6ZD+mI35V7iD6fmriuHMSZyPuLu9DRvlR2Xq/tmBEOKFd2IC2Sr+2VUE5HBB3x+ptW431bcubW848SfkbQsNnU632kkGNXGdQipDc5XGMYizkPFAytVCJcRdo1Y7iN21hFocQDRBsqxUFM8C72bZBha7u80E6WBKepQZqc8+CAXeE739/X1dT6/Tpdtii9uRB/ZpTxOOsI6mfR98HTC1S5pS+bzPtb4fU4biQR37ZUKDtpv19cQws4BngEV5OmoBxOajD+gkS8K7UBWYvGYgArsn6saJ3KNU5+JVIM5J85/BN9sLiAAGjFtVlgIPwBo5t37IgVc/PZO18NBARx1kN0u8doCaBkPZouukRTAsQZnT86Pa31fo+/zedbkgeDCrnmTZ1RKS/XH5SLpJtu7hrJ0ZygM+D6lPP1amheEzoLxyEmMm0XeV4bkRJLpMqgh778SsQJ0Rx2xHwm2IojXZp8L3h0yDzOv7JhNGl73FnGOHEVkda3PEl7e7PNx8V5LogNp98SWl4JZacSkfK98i4QueKu8fV/LeL+tZUE8nab5kC4KYSKAdRCn/8NFtgytlm07SE9RmFuFwTiZ0NOoNJ3gYoImN+wtC3yJXs2kU/J1leZMkeGa9H4gAgF+le4FW1b73d9WbmuqjTSl6SsC5M1KU9nlKmlx2CdakWvM2Cz+gCVXP/w0LTsAIaUBICdJx7DOwWlUC+kIOX2f/kxY2rTi6XzB27tyvR5dn0gqiEtq4fdpnyz5tiDgZC8g11TjXacsBSeMQvD6PikVWeNK90XfKLxS0VmlcJacVHDsKjhaQWLF9uVbky8jq51lbLyxTe8qP1p7n9IY0s3fGB8h7WUAHU8aMqrvP7AEHJ8zBtFwjELew15Oop8VNnoQvAVUI7yYOi4sBHxCrBRHqZFG1cCFhRMg3pjsNYVgEVxB0XUKr6Ujgo2rydwhc2WSJy97spB3gQBS9PagVKlfAQe9T+ftfjels7KVBvQdOPVjWBdKvk+X3WmBQFNEw52NMSc0zjBIhbPYCO5Y5Pyzoa21D8qyBcsRhkgDYPaGYPbn2pm/p/63YVO5sCoJpw1tvHDdAvnwfae2PHcLLW15u9/T2qS7Ebs0JmfY83H7xy6Nm6UjiOE1/gUObXEWoPMiENxM7YBanqjcoaiX3TErdyjYxd/El19qVZirJlDU8/sRCkHF/d8MwLdjFAcwY4iFmbyziejkZ4kuED6golNVgJLFDsQedwSuV4szyPzKJRmsLslKUlGmoaUIXtWoKN0QtSJWiFgaiLtwoO6sRpYieiNZYg/oMTq4hXU+SwmT/nnaXo7K0y1I8zHOTEytji8K2zwtytZGsvEOVNMFNw4YeJqiIlj7VKP33T6NAyufsoEACZPVNG/wSSLvu1OqC2jcPRTV4Fo40vrf6SUto9U+kxiJEJpMx02BhXnCwRUTcSBLRjeihmk1vrooaQLLKliwLY+w+64KjJ37MVhIxl1ExZM3+ruyh3L5XgMXWGHivKQ9ofyol+IxoHMNIy8s+bgaAfdFQCrPueJxIGKKyAxBhyliB/EUoPdaphzlkaG1pDwgOqQHscCIvrAxocFxkAvtoJgUrA8R7Wby9KQ/K36ishPcME5H0WMV5J8a16A9poA86fVipZvgf8iAi3QmlkEz+yHbUVo4mTJmzhPZX+yQYyP5LMmyxyWS9JGFCEu8SMmpiOnpx0OmBU9FuuQyScdfWH0gmR+KTo9gZMBNBV7nppY4QGkuzlYWmdmpUPh1K7mCJxthbqLNE24nKuok6CHZ+4ZUy1ait77R9TrOMwqxkowkoVS/e39RJ5J/riKBpe6S6aBFmyxoMd9f8vZ9G9fzhGkvgCVa3ccfcE6hRgBZW0QK0eo6rmGUPYeYVQoDV/ETT8wWP3X4CXpuulWO3IhQs/znVD7TZrYkQ6F4i0RUWM0a32NO63SNL7nJDjO6g2FiMpMBXKt1Ipio2B9pJUN2irW5CwU2Qf+ylT/tolkSIK3MsC2gTqrCFiK3GgSWjHGosS6FabMqFbWuiQWsA0hgxOXvP7D8FwmiyC6BLTG7jBECotic4Rm/G04H1hPposi5T7RWgEoGgCRrhyx94CsCQConbdRhjWwNN+An4X6QHw4NWERYVUUs9+WYfqfGbceAqwHWEUTXSHPHLmA2rBdmOcDb6bFt0B95sJqth+kAgHnabIyDiwdEV9ipj6nuxdVhkOeCDRFfGHFPBobGKcydIiC6jIyJuHoFfhB/AAeXPCGa6fJ1ionKjRabNPFiob3lsqcLK9BKvnZUJUODUP6Ol5qvc07dMELwSQIFcdQyzDkl94ydL/rEdCmlX/NTKgVz21f4bC3LeJr7gUHgCvjsJVPt9zlN0UM9+mIgsV0w7mYUTaU5SQzYdLCx9ThiesTE9OgeQIpAozhTtIw0LTTCo5KLrvDAad+hwVV5rOsU+z4ftN+/C4nCWYDE+Z6BemFinxQHwhVDQIaHQAK7Qkwjub7z44eQBHWTIhvcGMcU/DEYOggsENQbCVPgK7GXuPCv8iP5OV1EvuaY2yWtPbBQ9HYJ2i/VIpkdFNQiDX6IMUDWdVoYmaIWATxZ26sYKAFdQLTVDnKgPL6j1Y7R4Vq47+SQcIWPyrfF14X0seKbo2skgTR5RBDLQlmM5TMeEVYsg1Gk3MQwzaLcpOdPlpnGr5GbYIszhScY5YHC8/NiFIxiylIwXlki+SekKpSCEw4hQYnjlSWXnxeyUARjSVrIgrPAF1yDwnPc36N8hIIXZCYsROic2wVVEN4ALKkAUJgeYKZO7vOyFHpxWAIVHJMCkCH5GJsyQBVR2IC5URdnXQDkGAncty2boo5CVHV5edntE/VIXSCKY2PJI180XsCmEpnBgecT41R4NYjYlZsV42mcWT7x/vYQx/3TfPh22p2ve0UDqqW8nzdueLyWBk+pE35vn1IDrGWsNM6pfb/p7GwU79HYwosO6WKpFbzSl9s7XtOiSuMTerFBgJ4ArRWS9AiTxL2hRHjLEf44gyj04dmNqm78Ac53ce2DUGCqL3kMG/wTzERWYQWdiyAVZrFUacbxWhxBD5h4FuaOw1yIkER0byHoFCbhy1gcUIMMIZV4CtJJ48GeXxg/sabq99rQ/jZV9ShUxqkNk0noqBjVhA3CRTo3Nr4P8nIb/6UcclxO8QoNyzKe4jB2shk4qZN9zistPqIIbhhuMC9j93W+AB44617Fda+cjV34swZ6BpQnXz0Bx3pD+3ILIschzVlXytFP80W5Mo0+n500faPjEzPSUh66XO+37006SdyaNQwEEREJT0DGHqUq7XLBr7e+8inXSFptVXCcrejM0NKBN+TCSfdavyuedpCNzrVJtG9l/THW/M1oGCNuHNFwANax5hbnb1YjmqTvG8bN+dX+uFotKVULX2AzeSegrBvzeX+cVK+eIPvTs3Fkk+8B5VH18ws+PXx0V3NKllGzRkUhyO0KSxnbxrox1dMH4ZoGslNo1llyxTEHBRmKIYF/gui8Ysi/vb/delu87CbVFiVUTWLzBjVSv1YMcB8/F0gu6oRkaIAb1Se+mrpb2Z5R+3L+Bc6SWgr35R5awVYjQvg9YqP7pxpRqA/s6ElRAWae8DaBHXZNT7cCvn57KNV7cOPjm0z1Crr626DqLHb5zUxf8UkewhNkJH0eqFgLT/waXwwLgPg1vhgGxPCLfDEyEEGm+kh97ST986n5uoS84M9/m20327fL9Jo4tIdmkGrPvicYQ3jkE8dL3lwuCJj5C9rqrW1/ikH1pi0sKEgDaD8RV1zzXVsEAiQUrHQi+Bjz8qyGFDEAwQRjy3OH/MfudNRufSIIIMmhXf+VdBvYJvj9xUySFJe7kc6JYg0XNBclA11ONZZtGPwiPRColkoevOe7pLS/0LjNCGWRaeBdoHjUcYn6qYmivbqMeGrHzVaSPgM3oREXOne9n/963h2e/tfTdJnUPbmtnSEXr0e/ZHL+7f2s9Nwu9+mRP5vB1CqYqqnrVtXg6nYLhqfW+y68x6TRU9W4mBKIl4Ikz87v3KKJlJL4zYqaL5JJ1Ry9G3KUfHt/pGqI1jd+iMdvQ1YnZenszY5FuApJ+XG8pvOmW+MD4H+aZTtMBSjet7mPhVBHhITxB0Yo9weJuz7q5kB2ARfQFibgh1j6i8ADuAz0kMslRgGFvliggxtcvIRV6AMPKP6nOO27GN9Sbku5Z2TTxYoXNnOEaYjD2DizEv4EBMlB06CEt+Y0ib8TfCJyCgJ/AlhM+5yWP5GFAHASII0wk7PUVlzzlv4Udw9+UjWKbmEUEZPbgy0MHHZWf9hQVBiaMSS0aj5EW9jZhaZkCASFPRnbD5DG6oPiRrzQ+S3jC8rOfxwPii4grZraeKeIgOGCEtBJJ9RU5VaG8qol3fP+7xBjM7DeCLIyrwAFg76W9yjKqrhPgyhE7N26KOof50vaobWTPRTB52zGHEXgvgOnCaDxjI4IVApuLTJYtu9jrXHDKiFkUoTCO2FaYsdO//2XL2/z224/H3Zf/vf//e//+Z//D3VYZHY="; \ No newline at end of file +window.searchData = "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"; \ No newline at end of file diff --git a/docs/classes/_questdb_browser-client.QwpBatchTooLargeError.html b/docs/classes/_questdb_browser-client.QwpBatchTooLargeError.html index 2ecc20aa4..de8e0d7b2 100644 --- a/docs/classes/_questdb_browser-client.QwpBatchTooLargeError.html +++ b/docs/classes/_questdb_browser-client.QwpBatchTooLargeError.html @@ -1,7 +1,7 @@ -QwpBatchTooLargeError | QuestDB JavaScript Client - v5.0.0
QuestDB JavaScript Client - v5.0.0
    Preparing search index...

    Hierarchy

    • RangeError
      • QwpBatchTooLargeError
    Index

    Constructors

    constructor +QwpBatchTooLargeError | QuestDB JavaScript Client - v5.0.0

    Hierarchy

    • RangeError
      • QwpBatchTooLargeError
    Index

    Constructors

    Properties

    batchSizeBytes: number
    maxBatchSizeBytes: number
    message: string
    name: string
    stack?: string
    +

    Constructors

    Properties

    batchSizeBytes: number
    maxBatchSizeBytes: number
    message: string
    name: string
    stack?: string
    diff --git a/docs/classes/_questdb_browser-client.QwpBindValues.html b/docs/classes/_questdb_browser-client.QwpBindValues.html index 755892c7f..eb08a7dbd 100644 --- a/docs/classes/_questdb_browser-client.QwpBindValues.html +++ b/docs/classes/_questdb_browser-client.QwpBindValues.html @@ -1,7 +1,7 @@ QwpBindValues | QuestDB JavaScript Client - v5.0.0
    QuestDB JavaScript Client - v5.0.0
      Preparing search index...

      Browser-safe typed positional bind encoder.

      Setters must be called in ascending zero-based index order. SQL placeholders are one-based, so index 0 binds $1, index 1 binds $2, and so on.

      -
      Index

      Constructors

      Index

      Constructors

      Accessors

      Methods

      Constructors

      Accessors

      Methods

      • Binds a typed NULL.

        +

      Constructors

      Accessors

      Methods

      • Binds a typed NULL.

        A null bind is exactly type + flag + bitmap. The only types that carry anything more are the ones whose prefix the decoder reads before it branches on the null flag: the DECIMAL scale byte and the GEOHASH @@ -40,6 +40,6 @@ the server read that word's first byte as the next bind's type code ("unsupported wire type 0x0"), or, after the last bind, as the trailing queryFlags varint -- silently dropping a requested dictionary reset.

        -

        Parameters

        Returns this

      +

      Parameters

      Returns this

      diff --git a/docs/classes/_questdb_browser-client.QwpBrowserSessionBootstrapError.html b/docs/classes/_questdb_browser-client.QwpBrowserSessionBootstrapError.html index 001b749a9..9496c2afa 100644 --- a/docs/classes/_questdb_browser-client.QwpBrowserSessionBootstrapError.html +++ b/docs/classes/_questdb_browser-client.QwpBrowserSessionBootstrapError.html @@ -1,5 +1,5 @@ QwpBrowserSessionBootstrapError | QuestDB JavaScript Client - v5.0.0
      QuestDB JavaScript Client - v5.0.0
        Preparing search index...

        Class QwpBrowserSessionBootstrapError

        An HTTP rejection while creating a browser qdb_session cookie.

        -

        Hierarchy (View Summary)

        Index

        Constructors

        Hierarchy (View Summary)

        Index

        Constructors

        Properties

        cause? closeCode? kind @@ -17,7 +17,7 @@ url?

        Accessors

        Constructors

        Properties

        cause?: unknown
        closeCode?: number
        message: string
        name: string
        responseBody: string
        retryable?: boolean
        serverRole?: string
        serverZone?: string
        stack?: string
        statusCode?: number
        statusMessage?: string
        timeoutPhase?: QwpUpgradeTimeoutPhase

        Node opening phase that exceeded its deadline.

        -
        tryNextEndpoint?: boolean
        url?: string | URL

        Accessors

        +

        Constructors

        Properties

        cause?: unknown
        closeCode?: number
        message: string
        name: string
        responseBody: string
        retryable?: boolean
        serverRole?: string
        serverZone?: string
        stack?: string
        statusCode?: number
        statusMessage?: string
        timeoutPhase?: QwpUpgradeTimeoutPhase

        Node opening phase that exceeded its deadline.

        +
        tryNextEndpoint?: boolean
        url?: string | URL

        Accessors

        diff --git a/docs/classes/_questdb_browser-client.QwpByteReader.html b/docs/classes/_questdb_browser-client.QwpByteReader.html index b2d64f453..4478e1b5e 100644 --- a/docs/classes/_questdb_browser-client.QwpByteReader.html +++ b/docs/classes/_questdb_browser-client.QwpByteReader.html @@ -1,5 +1,5 @@ QwpByteReader | QuestDB JavaScript Client - v5.0.0
        QuestDB JavaScript Client - v5.0.0
          Preparing search index...

          A bounds-checked, runtime-neutral little-endian byte reader.

          -
          Index

          Constructors

          Index

          Constructors

          Properties

          Accessors

          Constructors

          Properties

          bytes: Uint8Array

          Accessors

          Methods

          +

          Constructors

          Properties

          bytes: Uint8Array

          Accessors

          Methods

          diff --git a/docs/classes/_questdb_browser-client.QwpByteWriter.html b/docs/classes/_questdb_browser-client.QwpByteWriter.html index 5445457c6..85ab23844 100644 --- a/docs/classes/_questdb_browser-client.QwpByteWriter.html +++ b/docs/classes/_questdb_browser-client.QwpByteWriter.html @@ -1,5 +1,5 @@ QwpByteWriter | QuestDB JavaScript Client - v5.0.0
          QuestDB JavaScript Client - v5.0.0
            Preparing search index...

            A growable, runtime-neutral little-endian byte writer.

            -
            Index

            Constructors

            Index

            Constructors

            Accessors

            Methods

            Constructors

            Accessors

            Methods

            +

            Constructors

            Accessors

            Methods

            diff --git a/docs/classes/_questdb_browser-client.QwpClient.html b/docs/classes/_questdb_browser-client.QwpClient.html index 765b3af90..902fd2b4b 100644 --- a/docs/classes/_questdb_browser-client.QwpClient.html +++ b/docs/classes/_questdb_browser-client.QwpClient.html @@ -1,15 +1,15 @@ QwpClient | QuestDB JavaScript Client - v5.0.0
            QuestDB JavaScript Client - v5.0.0
              Preparing search index...

              Browser-safe facade owning bounded ingress and egress connection pools. Borrowed handles are exclusive; separate query leases execute concurrently.

              -
              Index

              Constructors

              Index

              Constructors

              Accessors

              Methods

              • Rejects new borrows and closes idle resources. Borrowed query sessions are +

              Constructors

              Accessors

              Methods

              • Rejects new borrows and closes idle resources. Borrowed query sessions are cancelled and closed; borrowed senders retain ownership during a bounded drain and own their teardown if they outlive it.

                -

                Returns Promise<void>

              +

              Returns Promise<void>

              diff --git a/docs/classes/_questdb_browser-client.QwpClientClosedError.html b/docs/classes/_questdb_browser-client.QwpClientClosedError.html index 8cec1a044..14197a672 100644 --- a/docs/classes/_questdb_browser-client.QwpClientClosedError.html +++ b/docs/classes/_questdb_browser-client.QwpClientClosedError.html @@ -1,6 +1,6 @@ QwpClientClosedError | QuestDB JavaScript Client - v5.0.0
              QuestDB JavaScript Client - v5.0.0
                Preparing search index...

                The owning QWP client, or one of its returned lease handles, is closed.

                -

                Hierarchy

                • Error
                  • QwpClientClosedError
                Index

                Constructors

                Hierarchy

                • Error
                  • QwpClientClosedError
                Index

                Constructors

                Properties

                Constructors

                Properties

                message: string
                name: string
                stack?: string
                +

                Constructors

                Properties

                message: string
                name: string
                stack?: string
                diff --git a/docs/classes/_questdb_browser-client.QwpDurableAckUnavailableError.html b/docs/classes/_questdb_browser-client.QwpDurableAckUnavailableError.html index fc8188ed1..a5e7a54e3 100644 --- a/docs/classes/_questdb_browser-client.QwpDurableAckUnavailableError.html +++ b/docs/classes/_questdb_browser-client.QwpDurableAckUnavailableError.html @@ -1,5 +1,5 @@ QwpDurableAckUnavailableError | QuestDB JavaScript Client - v5.0.0
                QuestDB JavaScript Client - v5.0.0
                  Preparing search index...

                  Class QwpDurableAckUnavailableError

                  A requested durable-ACK capability was not confirmed by the server.

                  -

                  Hierarchy (View Summary)

                  Index

                  Constructors

                  Hierarchy (View Summary)

                  Index

                  Constructors

                  Properties

                  cause? closeCode? kind @@ -16,7 +16,7 @@ url?

                  Accessors

                  Constructors

                  Properties

                  cause?: unknown
                  closeCode?: number
                  message: string
                  name: string
                  retryable?: boolean
                  serverRole?: string
                  serverZone?: string
                  stack?: string
                  statusCode?: number
                  statusMessage?: string
                  timeoutPhase?: QwpUpgradeTimeoutPhase

                  Node opening phase that exceeded its deadline.

                  -
                  tryNextEndpoint?: boolean
                  url?: string | URL

                  Accessors

                  +

                  Constructors

                  Properties

                  cause?: unknown
                  closeCode?: number
                  message: string
                  name: string
                  retryable?: boolean
                  serverRole?: string
                  serverZone?: string
                  stack?: string
                  statusCode?: number
                  statusMessage?: string
                  timeoutPhase?: QwpUpgradeTimeoutPhase

                  Node opening phase that exceeded its deadline.

                  +
                  tryNextEndpoint?: boolean
                  url?: string | URL

                  Accessors

                  diff --git a/docs/classes/_questdb_browser-client.QwpEgressQuery.html b/docs/classes/_questdb_browser-client.QwpEgressQuery.html index 2398e0a85..0d8b4e5fb 100644 --- a/docs/classes/_questdb_browser-client.QwpEgressQuery.html +++ b/docs/classes/_questdb_browser-client.QwpEgressQuery.html @@ -1,5 +1,5 @@ QwpEgressQuery | QuestDB JavaScript Client - v5.0.0
                  QuestDB JavaScript Client - v5.0.0
                    Preparing search index...

                    One QWP query/statement and its stream of materialized result batches.

                    -

                    Implements

                    Index

                    Constructors

                    Implements

                    Index

                    Constructors

                    Properties

                    Accessors

                    Constructors

                    Properties

                    completion: Promise<QwpQueryCompletion>
                    requestId: bigint

                    Accessors

                    • get withholdingResults(): boolean
                      Internal

                      Whether results are withheld from the consumer: the timeout +

                    Constructors

                    Properties

                    completion: Promise<QwpQueryCompletion>
                    requestId: bigint

                    Accessors

                    Methods

                    Methods

                    • Waits for completion without changing the query lifecycle. A finite wait returns false on expiry; the query remains active until it completes, is cancelled explicitly, or its configured query deadline expires.

                      -

                      Parameters

                      • timeoutMs: number

                      Returns Promise<boolean>

                    • Cancels the query. No further batch is delivered: batches already queued are dropped, and the server is sent CANCEL together with the flow-control credit those batches held. The outcome follows the server's terminal response: a cancellation rejects iteration and completion @@ -63,28 +63,42 @@ reconnect has taken it over: it then follows the replayed request, and a later failure reaches the query and the session. A query sends at most one CANCEL.

                      -

                      Returns Promise<void>

                    • Internal

                      Called when the application cancels, which outranks a timeout +

                      A query that has already ended, as isDone() reports, has nothing left +to cancel: the returned promise resolves and nothing is sent, even if the +session has since closed or failed. A timer or an AbortSignal listener +that fires after the query completes may therefore still call it. This +method never throws: every failure rejects the returned promise.

                      +

                      Returns Promise<void>

                    • Internal

                      Called when the application cancels, which outranks a timeout expiring later. Results are withheld exactly as they are at the timeout, and the credit returned is what the dropped batches held.

                      -

                      Returns number

                    • Internal

                      Records a batch dropped unread because the consumer has retired or results are withheld, and returns the credit to restore for it.

                      -

                      Parameters

                      • creditBytes: number

                      Returns number

                    • Internal

                      Called when the timeout expires. No further batch reaches the consumer: queued ones are dropped. Returns the flow-control credit they held, which the server needs back to stream on toward its terminal.

                      -

                      Returns number

                    +

                    Returns number

                    diff --git a/docs/classes/_questdb_browser-client.QwpEgressQueryAbandonedError.html b/docs/classes/_questdb_browser-client.QwpEgressQueryAbandonedError.html index e81e2fd92..f91872e59 100644 --- a/docs/classes/_questdb_browser-client.QwpEgressQueryAbandonedError.html +++ b/docs/classes/_questdb_browser-client.QwpEgressQueryAbandonedError.html @@ -1,7 +1,7 @@ QwpEgressQueryAbandonedError | QuestDB JavaScript Client - v5.0.0
                    QuestDB JavaScript Client - v5.0.0
                      Preparing search index...

                      Class QwpEgressQueryAbandonedError

                      Result iteration ended before the server completed the query.

                      -

                      Hierarchy

                      • Error
                        • QwpEgressQueryAbandonedError
                      Index

                      Constructors

                      Hierarchy

                      • Error
                        • QwpEgressQueryAbandonedError
                      Index

                      Constructors

                      Properties

                      Constructors

                      Properties

                      message: string
                      name: string
                      requestId: bigint
                      stack?: string
                      +

                      Constructors

                      Properties

                      message: string
                      name: string
                      requestId: bigint
                      stack?: string
                      diff --git a/docs/classes/_questdb_browser-client.QwpEgressQueryCancelTimeoutError.html b/docs/classes/_questdb_browser-client.QwpEgressQueryCancelTimeoutError.html index da19562f7..2327592e9 100644 --- a/docs/classes/_questdb_browser-client.QwpEgressQueryCancelTimeoutError.html +++ b/docs/classes/_questdb_browser-client.QwpEgressQueryCancelTimeoutError.html @@ -6,10 +6,10 @@ session itself fails with this error if it was opened with reconnect: false, or if a queryViews() callback of the query is still running one more cancelDrainTimeoutMs later.

                      -

                      Hierarchy

                      Index

                      Constructors

                      Hierarchy

                      • Error
                        • QwpEgressQueryCancelTimeoutError
                      Index

                      Constructors

                      Properties

                      message: string
                      name: string
                      requestId: bigint
                      stack?: string
                      timeoutMs: number
                      +

                      Constructors

                      Properties

                      message: string
                      name: string
                      requestId: bigint
                      stack?: string
                      timeoutMs: number
                      diff --git a/docs/classes/_questdb_browser-client.QwpEgressQueryError.html b/docs/classes/_questdb_browser-client.QwpEgressQueryError.html index 0b1e5fa86..91c95263f 100644 --- a/docs/classes/_questdb_browser-client.QwpEgressQueryError.html +++ b/docs/classes/_questdb_browser-client.QwpEgressQueryError.html @@ -1,7 +1,18 @@ -QwpEgressQueryError | QuestDB JavaScript Client - v5.0.0
                      QuestDB JavaScript Client - v5.0.0
                        Preparing search index...

                        Hierarchy

                        • Error
                          • QwpEgressQueryError
                        Index

                        Constructors

                        constructor +QwpEgressQueryError | QuestDB JavaScript Client - v5.0.0

                        Hierarchy

                        • Error
                          • QwpEgressQueryError
                        Index

                        Constructors

                        Properties

                        message: string
                        name: string
                        requestId: bigint
                        stack?: string
                        status: number
                        +

                        Constructors

                        • Parameters

                          • requestId: bigint
                          • status: number
                          • message: string
                          • Optionalposition: number

                            UTF-16 offset into the query's SQL text the error points at: an index +into the JavaScript string the query was issued with. Present when the +query asked for it with errorPosition and the SQL engine raised the +error, and 0 when the engine named no position, as for a query timeout +on the server or CANCEL QUERY.

                            +

                          Returns QwpEgressQueryError

                        Properties

                        message: string
                        name: string
                        position?: number

                        UTF-16 offset into the query's SQL text the error points at: an index +into the JavaScript string the query was issued with. Present when the +query asked for it with errorPosition and the SQL engine raised the +error, and 0 when the engine named no position, as for a query timeout +on the server or CANCEL QUERY.

                        +
                        requestId: bigint
                        stack?: string
                        status: number
                        diff --git a/docs/classes/_questdb_browser-client.QwpEgressQueryTimeoutError.html b/docs/classes/_questdb_browser-client.QwpEgressQueryTimeoutError.html index da0a9be92..ab15fcca5 100644 --- a/docs/classes/_questdb_browser-client.QwpEgressQueryTimeoutError.html +++ b/docs/classes/_questdb_browser-client.QwpEgressQueryTimeoutError.html @@ -1,10 +1,10 @@ QwpEgressQueryTimeoutError | QuestDB JavaScript Client - v5.0.0
                        QuestDB JavaScript Client - v5.0.0
                          Preparing search index...

                          The query ran past its timeout (queryTimeoutMs or the per-query timeoutMs) and was cancelled. Reported once the server has ended the query, or after the grace period if it has not.

                          -

                          Hierarchy

                          • Error
                            • QwpEgressQueryTimeoutError
                          Index

                          Constructors

                          Hierarchy

                          • Error
                            • QwpEgressQueryTimeoutError
                          Index

                          Constructors

                          Properties

                          message: string
                          name: string
                          requestId: bigint
                          stack?: string
                          timeoutMs: number
                          +

                          Constructors

                          Properties

                          message: string
                          name: string
                          requestId: bigint
                          stack?: string
                          timeoutMs: number
                          diff --git a/docs/classes/_questdb_browser-client.QwpEgressRowWindowUnsupportedError.html b/docs/classes/_questdb_browser-client.QwpEgressRowWindowUnsupportedError.html new file mode 100644 index 000000000..05ba95210 --- /dev/null +++ b/docs/classes/_questdb_browser-client.QwpEgressRowWindowUnsupportedError.html @@ -0,0 +1,16 @@ +QwpEgressRowWindowUnsupportedError | QuestDB JavaScript Client - v5.0.0
                          QuestDB JavaScript Client - v5.0.0
                            Preparing search index...

                            Class QwpEgressRowWindowUnsupportedError

                            The query asked for a row window -- skipRows or maxRows -- and the +endpoint does not advertise the QUERY_DETAILS capability it needs. Such a +server would stream the whole result, so the query is not sent to it. +query() rejects at once if the currently bound endpoint lacks the +capability. A query that failover would replay on such an endpoint fails +instead of being replayed, and so does one issued during a reconnect that +reaches such an endpoint: both reject their completion and iteration, +while the query() call resolves. Statements are refused the same way, as +the client cannot tell them from queries before sending them. Use SQL +LIMIT with servers that predate the capability.

                            +

                            Hierarchy

                            • Error
                              • QwpEgressRowWindowUnsupportedError
                            Index

                            Constructors

                            Properties

                            Constructors

                            Properties

                            message: string
                            name: string
                            requestId: bigint
                            stack?: string
                            diff --git a/docs/classes/_questdb_browser-client.QwpEgressSession.html b/docs/classes/_questdb_browser-client.QwpEgressSession.html index 65e2acfb4..05814b635 100644 --- a/docs/classes/_questdb_browser-client.QwpEgressSession.html +++ b/docs/classes/_questdb_browser-client.QwpEgressSession.html @@ -5,7 +5,7 @@ timeout -- may still be draining on the connection; a new query waits for that rather than failing. A completed query's materialized batches may still be consumed while the next query runs.

                            -

                            Implements

                            Index

                            Properties

                            Implements

                            • QwpEgressQueryControl
                            Index

                            Properties

                            Accessors

                            Properties

                            ready: Promise<QwpServerInfoMessage>

                            Initial SERVER_INFO; use serverInfo for the current post-failover snapshot.

                            -

                            Accessors

                            Accessors

                            • get metrics(): QwpEgressMetrics

                              Immutable notification-inbox counters for this session's reconnect observer, the egress counterpart of QwpSender.metrics.ingress.

                              A reconnect.onEvent observer runs on a bounded inbox that drops its oldest pending entry under overflow, exactly as ingress does. Nothing @@ -30,23 +30,23 @@ either, because attempt resets to one on every success: six outages that discarded eleven events were indistinguishable from a healthy two. A non-zero drop count means the observer is not keeping up.

                              -

                              Returns QwpEgressMetrics

                            Methods

                            • Parameters

                              • requestId: bigint
                              • additionalBytes: number | bigint
                              • replayOnReconnect: boolean = true
                              • acceptWhenReconnectStarts: boolean = false

                              Returns Promise<void>

                            Methods

                            • Parameters

                              • requestId: bigint
                              • additionalBytes: number | bigint
                              • replayOnReconnect: boolean = true
                              • acceptWhenReconnectStarts: boolean = false

                              Returns Promise<void>

                            • Internal

                              Cancels and drains an active operation before a pooled lease is returned. False means the physical session is no longer safe to reuse.

                              A query() of the lease that has not started yet -- still waiting for SERVER_INFO, or for an abandoned query to drain -- rejects with abandonStart() instead. Left waiting, it started as soon as the drain below finished, on a session the pool was handing to its next borrower, whose own query() then failed because one was already active.

                              -

                              Parameters

                              • abandonStart: () => Error

                              Returns Promise<boolean>

                            • Internal

                              Best-effort cancellation followed by physical connection teardown for facade shutdown. Unlike pooled lease return, this does not wait for the server to finish draining the cancelled query.

                              -

                              Returns Promise<void>

                            +

                            Returns Promise<void>

                            diff --git a/docs/classes/_questdb_browser-client.QwpEgressSessionClosedError.html b/docs/classes/_questdb_browser-client.QwpEgressSessionClosedError.html index fa91fc5b8..11792b919 100644 --- a/docs/classes/_questdb_browser-client.QwpEgressSessionClosedError.html +++ b/docs/classes/_questdb_browser-client.QwpEgressSessionClosedError.html @@ -1,6 +1,6 @@ -QwpEgressSessionClosedError | QuestDB JavaScript Client - v5.0.0
                            QuestDB JavaScript Client - v5.0.0
                              Preparing search index...

                              Hierarchy

                              • Error
                                • QwpEgressSessionClosedError
                              Index

                              Constructors

                              constructor +QwpEgressSessionClosedError | QuestDB JavaScript Client - v5.0.0

                              Hierarchy

                              • Error
                                • QwpEgressSessionClosedError
                              Index

                              Constructors

                              Properties

                              Constructors

                              Properties

                              message: string
                              name: string
                              stack?: string
                              +

                              Constructors

                              Properties

                              message: string
                              name: string
                              stack?: string
                              diff --git a/docs/classes/_questdb_browser-client.QwpFailoverError.html b/docs/classes/_questdb_browser-client.QwpFailoverError.html index 834f576ed..720046184 100644 --- a/docs/classes/_questdb_browser-client.QwpFailoverError.html +++ b/docs/classes/_questdb_browser-client.QwpFailoverError.html @@ -1,8 +1,8 @@ QwpFailoverError | QuestDB JavaScript Client - v5.0.0
                              QuestDB JavaScript Client - v5.0.0
                                Preparing search index...

                                Every eligible QWP endpoint in one connection sweep failed.

                                -

                                Hierarchy

                                • Error
                                  • QwpFailoverError
                                Index

                                Constructors

                                Hierarchy

                                • Error
                                  • QwpFailoverError
                                Index

                                Constructors

                                Properties

                                Constructors

                                Properties

                                attempts: readonly QwpFailoverAttempt[]
                                cause?: unknown
                                message: string
                                name: string
                                stack?: string
                                +

                                Constructors

                                Properties

                                attempts: readonly QwpFailoverAttempt[]
                                cause?: unknown
                                message: string
                                name: string
                                stack?: string
                                diff --git a/docs/classes/_questdb_browser-client.QwpIngressAckAbandonedError.html b/docs/classes/_questdb_browser-client.QwpIngressAckAbandonedError.html index e0ebf1a76..dd88c51f5 100644 --- a/docs/classes/_questdb_browser-client.QwpIngressAckAbandonedError.html +++ b/docs/classes/_questdb_browser-client.QwpIngressAckAbandonedError.html @@ -1,9 +1,9 @@ QwpIngressAckAbandonedError | QuestDB JavaScript Client - v5.0.0
                                QuestDB JavaScript Client - v5.0.0
                                  Preparing search index...

                                  A recovered frame was deliberately retired without a server ACK.

                                  -

                                  Hierarchy

                                  • Error
                                    • QwpIngressAckAbandonedError
                                  Index

                                  Constructors

                                  Hierarchy

                                  • Error
                                    • QwpIngressAckAbandonedError
                                  Index

                                  Constructors

                                  Properties

                                  fromFsn: bigint
                                  message: string
                                  name: string
                                  stack?: string
                                  targetSequence: bigint
                                  toFsn: bigint
                                  +

                                  Constructors

                                  Properties

                                  fromFsn: bigint
                                  message: string
                                  name: string
                                  stack?: string
                                  targetSequence: bigint
                                  toFsn: bigint
                                  diff --git a/docs/classes/_questdb_browser-client.QwpIngressNackError.html b/docs/classes/_questdb_browser-client.QwpIngressNackError.html index 477228bd2..5d5201715 100644 --- a/docs/classes/_questdb_browser-client.QwpIngressNackError.html +++ b/docs/classes/_questdb_browser-client.QwpIngressNackError.html @@ -1,7 +1,7 @@ -QwpIngressNackError | QuestDB JavaScript Client - v5.0.0
                                  QuestDB JavaScript Client - v5.0.0
                                    Preparing search index...

                                    Hierarchy

                                    • Error
                                      • QwpIngressNackError
                                    Index

                                    Constructors

                                    constructor +QwpIngressNackError | QuestDB JavaScript Client - v5.0.0

                                    Hierarchy

                                    • Error
                                      • QwpIngressNackError
                                    Index

                                    Constructors

                                    Properties

                                    message: string
                                    name: string
                                    senderError: QwpSenderError = ...
                                    stack?: string
                                    +

                                    Constructors

                                    Properties

                                    message: string
                                    name: string
                                    senderError: QwpSenderError = ...
                                    stack?: string
                                    diff --git a/docs/classes/_questdb_browser-client.QwpIngressSessionClosedError.html b/docs/classes/_questdb_browser-client.QwpIngressSessionClosedError.html index 33b259561..5569c7b17 100644 --- a/docs/classes/_questdb_browser-client.QwpIngressSessionClosedError.html +++ b/docs/classes/_questdb_browser-client.QwpIngressSessionClosedError.html @@ -1,6 +1,6 @@ -QwpIngressSessionClosedError | QuestDB JavaScript Client - v5.0.0
                                    QuestDB JavaScript Client - v5.0.0
                                      Preparing search index...

                                      Class QwpIngressSessionClosedError

                                      Hierarchy

                                      • Error
                                        • QwpIngressSessionClosedError
                                      Index

                                      Constructors

                                      constructor +QwpIngressSessionClosedError | QuestDB JavaScript Client - v5.0.0

                                      Class QwpIngressSessionClosedError

                                      Hierarchy

                                      • Error
                                        • QwpIngressSessionClosedError
                                      Index

                                      Constructors

                                      Properties

                                      Constructors

                                      Properties

                                      message: string
                                      name: string
                                      stack?: string
                                      +

                                      Constructors

                                      Properties

                                      message: string
                                      name: string
                                      stack?: string
                                      diff --git a/docs/classes/_questdb_browser-client.QwpMemoryReplayAppendTimeoutError.html b/docs/classes/_questdb_browser-client.QwpMemoryReplayAppendTimeoutError.html index 0c6316505..9481e6d59 100644 --- a/docs/classes/_questdb_browser-client.QwpMemoryReplayAppendTimeoutError.html +++ b/docs/classes/_questdb_browser-client.QwpMemoryReplayAppendTimeoutError.html @@ -1,5 +1,5 @@ QwpMemoryReplayAppendTimeoutError | QuestDB JavaScript Client - v5.0.0
                                      QuestDB JavaScript Client - v5.0.0
                                        Preparing search index...

                                        Class QwpMemoryReplayAppendTimeoutError

                                        ACK-driven trimming did not free in-memory replay capacity in time.

                                        -

                                        Hierarchy

                                        • Error
                                          • QwpMemoryReplayAppendTimeoutError
                                        Index

                                        Constructors

                                        Hierarchy

                                        • Error
                                          • QwpMemoryReplayAppendTimeoutError
                                        Index

                                        Constructors

                                        Properties

                                        Constructors

                                        Properties

                                        maxBytes: number
                                        message: string
                                        name: string
                                        requiredBytes: number
                                        stack?: string
                                        timeoutMs: number
                                        usedBytes: number
                                        +

                                        Constructors

                                        Properties

                                        maxBytes: number
                                        message: string
                                        name: string
                                        requiredBytes: number
                                        stack?: string
                                        timeoutMs: number
                                        usedBytes: number
                                        diff --git a/docs/classes/_questdb_browser-client.QwpMemoryReplayBatchTooLargeError.html b/docs/classes/_questdb_browser-client.QwpMemoryReplayBatchTooLargeError.html index 3560bf33e..d9ca9de1a 100644 --- a/docs/classes/_questdb_browser-client.QwpMemoryReplayBatchTooLargeError.html +++ b/docs/classes/_questdb_browser-client.QwpMemoryReplayBatchTooLargeError.html @@ -1,9 +1,9 @@ QwpMemoryReplayBatchTooLargeError | QuestDB JavaScript Client - v5.0.0
                                        QuestDB JavaScript Client - v5.0.0
                                          Preparing search index...

                                          Class QwpMemoryReplayBatchTooLargeError

                                          One logical batch can never fit in the configured in-memory replay budget.

                                          -

                                          Hierarchy

                                          • RangeError
                                            • QwpMemoryReplayBatchTooLargeError
                                          Index

                                          Constructors

                                          Hierarchy

                                          • RangeError
                                            • QwpMemoryReplayBatchTooLargeError
                                          Index

                                          Constructors

                                          Properties

                                          frameCount: number
                                          maxBytes: number
                                          message: string
                                          name: string
                                          requiredBytes: number
                                          stack?: string
                                          +

                                          Constructors

                                          Properties

                                          frameCount: number
                                          maxBytes: number
                                          message: string
                                          name: string
                                          requiredBytes: number
                                          stack?: string
                                          diff --git a/docs/classes/_questdb_browser-client.QwpMemoryReplayFrameTooLargeError.html b/docs/classes/_questdb_browser-client.QwpMemoryReplayFrameTooLargeError.html index 80bbe0202..c9364175b 100644 --- a/docs/classes/_questdb_browser-client.QwpMemoryReplayFrameTooLargeError.html +++ b/docs/classes/_questdb_browser-client.QwpMemoryReplayFrameTooLargeError.html @@ -1,9 +1,9 @@ QwpMemoryReplayFrameTooLargeError | QuestDB JavaScript Client - v5.0.0
                                          QuestDB JavaScript Client - v5.0.0
                                            Preparing search index...

                                            Class QwpMemoryReplayFrameTooLargeError

                                            One frame can never fit in the configured in-memory replay budget.

                                            -

                                            Hierarchy

                                            • RangeError
                                              • QwpMemoryReplayFrameTooLargeError
                                            Index

                                            Constructors

                                            Hierarchy

                                            • RangeError
                                              • QwpMemoryReplayFrameTooLargeError
                                            Index

                                            Constructors

                                            Properties

                                            maxBytes: number
                                            message: string
                                            name: string
                                            payloadBytes: number
                                            requiredBytes: number
                                            stack?: string
                                            +

                                            Constructors

                                            Properties

                                            maxBytes: number
                                            message: string
                                            name: string
                                            payloadBytes: number
                                            requiredBytes: number
                                            stack?: string
                                            diff --git a/docs/classes/_questdb_browser-client.QwpPoolAcquireTimeoutError.html b/docs/classes/_questdb_browser-client.QwpPoolAcquireTimeoutError.html index 82ffb702b..7dee05a5c 100644 --- a/docs/classes/_questdb_browser-client.QwpPoolAcquireTimeoutError.html +++ b/docs/classes/_questdb_browser-client.QwpPoolAcquireTimeoutError.html @@ -1,8 +1,8 @@ QwpPoolAcquireTimeoutError | QuestDB JavaScript Client - v5.0.0
                                            QuestDB JavaScript Client - v5.0.0
                                              Preparing search index...

                                              A bounded QWP pool could not provide a connection before its deadline.

                                              -

                                              Hierarchy

                                              • Error
                                                • QwpPoolAcquireTimeoutError
                                              Index

                                              Constructors

                                              Hierarchy

                                              • Error
                                                • QwpPoolAcquireTimeoutError
                                              Index

                                              Constructors

                                              Properties

                                              message: string
                                              name: string
                                              resource: "sender" | "query"
                                              stack?: string
                                              timeoutMs: number
                                              +

                                              Constructors

                                              Properties

                                              message: string
                                              name: string
                                              resource: "sender" | "query"
                                              stack?: string
                                              timeoutMs: number
                                              diff --git a/docs/classes/_questdb_browser-client.QwpPoolResourceError.html b/docs/classes/_questdb_browser-client.QwpPoolResourceError.html index 662e215a9..e5a4dffc8 100644 --- a/docs/classes/_questdb_browser-client.QwpPoolResourceError.html +++ b/docs/classes/_questdb_browser-client.QwpPoolResourceError.html @@ -1,8 +1,8 @@ QwpPoolResourceError | QuestDB JavaScript Client - v5.0.0
                                              QuestDB JavaScript Client - v5.0.0
                                                Preparing search index...

                                                A pooled resource failed while a new slot was being connected.

                                                -

                                                Hierarchy

                                                • Error
                                                  • QwpPoolResourceError
                                                Index

                                                Constructors

                                                Hierarchy

                                                • Error
                                                  • QwpPoolResourceError
                                                Index

                                                Constructors

                                                Properties

                                                Constructors

                                                Properties

                                                cause: unknown
                                                message: string
                                                name: string
                                                resource: "sender" | "query"
                                                stack?: string
                                                +

                                                Constructors

                                                Properties

                                                cause: unknown
                                                message: string
                                                name: string
                                                resource: "sender" | "query"
                                                stack?: string
                                                diff --git a/docs/classes/_questdb_browser-client.QwpProtocolError.html b/docs/classes/_questdb_browser-client.QwpProtocolError.html index b6a10d778..d090e0b3a 100644 --- a/docs/classes/_questdb_browser-client.QwpProtocolError.html +++ b/docs/classes/_questdb_browser-client.QwpProtocolError.html @@ -1,6 +1,6 @@ QwpProtocolError | QuestDB JavaScript Client - v5.0.0
                                                QuestDB JavaScript Client - v5.0.0
                                                  Preparing search index...

                                                  Raised when a QWP payload is malformed, truncated, or unsupported.

                                                  -

                                                  Hierarchy

                                                  • Error
                                                    • QwpProtocolError
                                                  Index

                                                  Constructors

                                                  Hierarchy

                                                  • Error
                                                    • QwpProtocolError
                                                  Index

                                                  Constructors

                                                  Properties

                                                  Constructors

                                                  Properties

                                                  message: string
                                                  name: string
                                                  stack?: string
                                                  +

                                                  Constructors

                                                  Properties

                                                  message: string
                                                  name: string
                                                  stack?: string
                                                  diff --git a/docs/classes/_questdb_browser-client.QwpQueryLease.html b/docs/classes/_questdb_browser-client.QwpQueryLease.html index ff205c691..4b8e36da0 100644 --- a/docs/classes/_questdb_browser-client.QwpQueryLease.html +++ b/docs/classes/_questdb_browser-client.QwpQueryLease.html @@ -1,5 +1,5 @@ QwpQueryLease | QuestDB JavaScript Client - v5.0.0
                                                  QuestDB JavaScript Client - v5.0.0
                                                    Preparing search index...

                                                    One exclusively borrowed egress session from a QwpClient query pool.

                                                    -
                                                    Index

                                                    Constructors

                                                    Index

                                                    Constructors

                                                    Properties

                                                    Accessors

                                                    Methods

                                                    Constructors

                                                    Properties

                                                    ready: Promise<QwpServerInfoMessage>

                                                    Initial SERVER_INFO; use serverInfo for the current post-failover snapshot.

                                                    -

                                                    Accessors

                                                    • get serverInfo(): undefined | QwpServerInfoMessage

                                                      Cached immutable SERVER_INFO for this lease's currently bound endpoint. +

                                                    Constructors

                                                    Properties

                                                    ready: Promise<QwpServerInfoMessage>

                                                    Initial SERVER_INFO; use serverInfo for the current post-failover snapshot.

                                                    +

                                                    Accessors

                                                    Methods

                                                    +

                                                    Returns undefined | QwpServerInfoMessage

                                                    Methods

                                                    diff --git a/docs/classes/_questdb_browser-client.QwpReconnectExhaustedError.html b/docs/classes/_questdb_browser-client.QwpReconnectExhaustedError.html index 29aab31bd..87df1cf02 100644 --- a/docs/classes/_questdb_browser-client.QwpReconnectExhaustedError.html +++ b/docs/classes/_questdb_browser-client.QwpReconnectExhaustedError.html @@ -2,10 +2,10 @@ reached reconnectMaxDurationMs, or an egress failover episode reached failoverMaxAttempts or failoverMaxDurationMs. A connected ingress session does not raise it, because its reconnects are not bounded.

                                                    -

                                                    Hierarchy

                                                    Index

                                                    Constructors

                                                    Hierarchy

                                                    • Error
                                                      • QwpReconnectExhaustedError
                                                    Index

                                                    Constructors

                                                    Properties

                                                    Constructors

                                                    Properties

                                                    attempts: number
                                                    cause: unknown
                                                    message: string
                                                    name: string
                                                    stack?: string
                                                    +

                                                    Constructors

                                                    Properties

                                                    attempts: number
                                                    cause: unknown
                                                    message: string
                                                    name: string
                                                    stack?: string
                                                    diff --git a/docs/classes/_questdb_browser-client.QwpReplayDictionaryError.html b/docs/classes/_questdb_browser-client.QwpReplayDictionaryError.html index e6d1608cc..bb4f99c63 100644 --- a/docs/classes/_questdb_browser-client.QwpReplayDictionaryError.html +++ b/docs/classes/_questdb_browser-client.QwpReplayDictionaryError.html @@ -1,7 +1,7 @@ QwpReplayDictionaryError | QuestDB JavaScript Client - v5.0.0
                                                    QuestDB JavaScript Client - v5.0.0
                                                      Preparing search index...

                                                      A replay store cannot preserve the dictionary required by delta frames.

                                                      -

                                                      Hierarchy (View Summary)

                                                      Index

                                                      Constructors

                                                      Hierarchy (View Summary)

                                                      Index

                                                      Constructors

                                                      Properties

                                                      Constructors

                                                      Properties

                                                      cause?: unknown
                                                      message: string
                                                      name: string
                                                      stack?: string
                                                      +

                                                      Constructors

                                                      Properties

                                                      cause?: unknown
                                                      message: string
                                                      name: string
                                                      stack?: string
                                                      diff --git a/docs/classes/_questdb_browser-client.QwpReplayDictionaryPersistenceError.html b/docs/classes/_questdb_browser-client.QwpReplayDictionaryPersistenceError.html index 52bf9f442..4eb2e8c01 100644 --- a/docs/classes/_questdb_browser-client.QwpReplayDictionaryPersistenceError.html +++ b/docs/classes/_questdb_browser-client.QwpReplayDictionaryPersistenceError.html @@ -1,9 +1,9 @@ QwpReplayDictionaryPersistenceError | QuestDB JavaScript Client - v5.0.0
                                                      QuestDB JavaScript Client - v5.0.0
                                                        Preparing search index...

                                                        Class QwpReplayDictionaryPersistenceError

                                                        A replay dictionary sidecar rejected an append before its delta frame was published. The reconnecting transport has permanently switched to full, self-contained symbol encoding; retrying the logical batch is safe.

                                                        -

                                                        Hierarchy (View Summary)

                                                        Index

                                                        Constructors

                                                        Hierarchy (View Summary)

                                                        Index

                                                        Constructors

                                                        Properties

                                                        Constructors

                                                        Properties

                                                        cause?: unknown
                                                        message: string
                                                        name: string
                                                        stack?: string
                                                        +

                                                        Constructors

                                                        Properties

                                                        cause?: unknown
                                                        message: string
                                                        name: string
                                                        stack?: string
                                                        diff --git a/docs/classes/_questdb_browser-client.QwpReplayRejectedError.html b/docs/classes/_questdb_browser-client.QwpReplayRejectedError.html index 01ad7e370..710054dde 100644 --- a/docs/classes/_questdb_browser-client.QwpReplayRejectedError.html +++ b/docs/classes/_questdb_browser-client.QwpReplayRejectedError.html @@ -1,8 +1,8 @@ QwpReplayRejectedError | QuestDB JavaScript Client - v5.0.0
                                                        QuestDB JavaScript Client - v5.0.0
                                                          Preparing search index...

                                                          A replayed ingress frame was rejected and remains in persistent storage.

                                                          -

                                                          Hierarchy

                                                          • Error
                                                            • QwpReplayRejectedError
                                                          Index

                                                          Constructors

                                                          Hierarchy

                                                          • Error
                                                            • QwpReplayRejectedError
                                                          Index

                                                          Constructors

                                                          Properties

                                                          frameSequence: bigint
                                                          message: string
                                                          name: string
                                                          stack?: string
                                                          status: number
                                                          +

                                                          Constructors

                                                          Properties

                                                          frameSequence: bigint
                                                          message: string
                                                          name: string
                                                          stack?: string
                                                          status: number
                                                          diff --git a/docs/classes/_questdb_browser-client.QwpResultBatch.html b/docs/classes/_questdb_browser-client.QwpResultBatch.html index 9c536480b..f7766f500 100644 --- a/docs/classes/_questdb_browser-client.QwpResultBatch.html +++ b/docs/classes/_questdb_browser-client.QwpResultBatch.html @@ -1,4 +1,4 @@ -QwpResultBatch | QuestDB JavaScript Client - v5.0.0
                                                          QuestDB JavaScript Client - v5.0.0
                                                            Preparing search index...
                                                            Index

                                                            Constructors

                                                            constructor +QwpResultBatch | QuestDB JavaScript Client - v5.0.0
                                                            Index

                                                            Constructors

                                                            Properties

                                                            Methods

                                                            Constructors

                                                            Properties

                                                            batchSequence: bigint
                                                            columns: readonly QwpResultColumn[]
                                                            requestId: bigint
                                                            rowCount: number
                                                            tableName: string

                                                            Methods

                                                            +

                                                            Constructors

                                                            Properties

                                                            batchSequence: bigint
                                                            columns: readonly QwpResultColumn[]
                                                            requestId: bigint
                                                            rowCount: number
                                                            tableName: string

                                                            Methods

                                                            diff --git a/docs/classes/_questdb_browser-client.QwpResultBatchDecoder.html b/docs/classes/_questdb_browser-client.QwpResultBatchDecoder.html index a94ea997d..087837cbe 100644 --- a/docs/classes/_questdb_browser-client.QwpResultBatchDecoder.html +++ b/docs/classes/_questdb_browser-client.QwpResultBatchDecoder.html @@ -1,5 +1,5 @@ QwpResultBatchDecoder | QuestDB JavaScript Client - v5.0.0
                                                            QuestDB JavaScript Client - v5.0.0
                                                              Preparing search index...

                                                              Stateful decoder for connection-scoped QWP result batches.

                                                              -
                                                              Index

                                                              Constructors

                                                              Index

                                                              Constructors

                                                              Properties

                                                              Methods

                                                              absorbDictionary applyCacheReset @@ -17,7 +17,7 @@ only by QWP_MAX_CELLS_PER_BATCH times the pool size, which the cap's own comment puts at roughly half a gigabyte per slot.

                                                              Left undefined the batch is bounded by the cell cap alone, as before.

                                                              -

                                                              Methods

                                                              Methods

                                                              • Applies the delta symbol dictionary carried by a batch whose rows are being discarded, without touching any per-query state.

                                                                The dictionary is connection-scoped and cumulative: the server numbers entries from where the previous batch left off, on the connection rather @@ -31,9 +31,9 @@ asked for.

                                                                The dictionary sits at the front of the body, so this reads only as far as it needs to and never decodes the rows it is throwing away.

                                                                -

                                                                Parameters

                                                                Returns void

                                                              +

                                                              Parameters

                                                              Returns QwpResultBatchView

                                                              diff --git a/docs/classes/_questdb_browser-client.QwpResultBatchView.html b/docs/classes/_questdb_browser-client.QwpResultBatchView.html index 2ec7111e1..b8951476b 100644 --- a/docs/classes/_questdb_browser-client.QwpResultBatchView.html +++ b/docs/classes/_questdb_browser-client.QwpResultBatchView.html @@ -1,7 +1,7 @@ QwpResultBatchView | QuestDB JavaScript Client - v5.0.0
                                                              QuestDB JavaScript Client - v5.0.0
                                                                Preparing search index...

                                                                Batch-owned reusable view delivered by QwpEgressSession.queryViews(). Access is invalid after the callback returns. materialize() creates an independently owned QwpResultBatch when retention is required.

                                                                -
                                                                Index

                                                                Constructors

                                                                Index

                                                                Constructors

                                                                Accessors

                                                                Constructors

                                                                Accessors

                                                                Methods

                                                                • Visits rows in index order with one re-pointed row view. The callback is +

                                                                Constructors

                                                                Accessors

                                                                Methods

                                                                • Internal

                                                                  Parameters

                                                                  • requestId: bigint
                                                                  • batchSequence: bigint
                                                                  • tableName: string
                                                                  • rowCount: number
                                                                  • layouts: QwpResultColumnViewLayout[]

                                                                  Returns this

                                                                • Internal

                                                                  Parameters

                                                                  • requestId: bigint
                                                                  • batchSequence: bigint
                                                                  • tableName: string
                                                                  • rowCount: number
                                                                  • layouts: QwpResultColumnViewLayout[]

                                                                  Returns this

                                                                +

                                                                Parameters

                                                                Returns QwpResultRowView

                                                                diff --git a/docs/classes/_questdb_browser-client.QwpResultColumnView.html b/docs/classes/_questdb_browser-client.QwpResultColumnView.html index d365b70ff..f19227b9d 100644 --- a/docs/classes/_questdb_browser-client.QwpResultColumnView.html +++ b/docs/classes/_questdb_browser-client.QwpResultColumnView.html @@ -2,7 +2,7 @@

                                                                The view and every byte slice returned from it are valid only while the surrounding queryViews() callback is running. Copy data that must outlive the callback.

                                                                -
                                                                Index

                                                                Constructors

                                                                Index

                                                                Constructors

                                                                Properties

                                                                Accessors

                                                                Constructors

                                                                Properties

                                                                columnIndex: number

                                                                Accessors

                                                                Methods

                                                                • Raw packed non-null values. Fixed-width values use QWP little-endian +

                                                                Constructors

                                                                Properties

                                                                columnIndex: number

                                                                Accessors

                                                                Methods

                                                                • Raw packed non-null values. Fixed-width values use QWP little-endian layout; booleans are bit-packed and variable-width columns contain their uint32 offset table. SYMBOL returns undefined because IDs are varints.

                                                                  -

                                                                  Returns undefined | Uint8Array<ArrayBufferLike>

                                                                +

                                                                Returns undefined | Uint8Array<ArrayBufferLike>

                                                                diff --git a/docs/classes/_questdb_browser-client.QwpResultRowView.html b/docs/classes/_questdb_browser-client.QwpResultRowView.html index b1ae8fb03..1477f830b 100644 --- a/docs/classes/_questdb_browser-client.QwpResultRowView.html +++ b/docs/classes/_questdb_browser-client.QwpResultRowView.html @@ -3,7 +3,7 @@ while the surrounding queryViews() callback is running, and must not be retained across forEachRow() iterations. Byte and array views returned by its accessors remain zero-copy and have the same lifetime.

                                                                -
                                                                Index

                                                                Constructors

                                                                Index

                                                                Constructors

                                                                Accessors

                                                                Methods

                                                                get @@ -29,10 +29,10 @@ getUuidLow isNull of -

                                                                Constructors

                                                                Accessors

                                                                Methods

                                                                +

                                                                Constructors

                                                                Accessors

                                                                Methods

                                                                diff --git a/docs/classes/_questdb_browser-client.QwpRoleMismatchError.html b/docs/classes/_questdb_browser-client.QwpRoleMismatchError.html index cfe4d9a44..41aeb2de9 100644 --- a/docs/classes/_questdb_browser-client.QwpRoleMismatchError.html +++ b/docs/classes/_questdb_browser-client.QwpRoleMismatchError.html @@ -1,5 +1,5 @@ QwpRoleMismatchError | QuestDB JavaScript Client - v5.0.0
                                                                QuestDB JavaScript Client - v5.0.0
                                                                  Preparing search index...

                                                                  A connected endpoint advertised a role that does not satisfy target.

                                                                  -

                                                                  Hierarchy (View Summary)

                                                                  Index

                                                                  Constructors

                                                                  Hierarchy (View Summary)

                                                                  Index

                                                                  Constructors

                                                                  Properties

                                                                  cause? closeCode? kind @@ -17,7 +17,7 @@ url?

                                                                  Accessors

                                                                  Constructors

                                                                  Properties

                                                                  cause?: unknown
                                                                  closeCode?: number
                                                                  message: string
                                                                  name: string
                                                                  retryable?: boolean
                                                                  serverRole?: string
                                                                  serverZone?: string
                                                                  stack?: string
                                                                  statusCode?: number
                                                                  statusMessage?: string
                                                                  target: QwpTarget
                                                                  timeoutPhase?: QwpUpgradeTimeoutPhase

                                                                  Node opening phase that exceeded its deadline.

                                                                  -
                                                                  tryNextEndpoint?: boolean
                                                                  url?: string | URL

                                                                  Accessors

                                                                  +

                                                                  Constructors

                                                                  Properties

                                                                  cause?: unknown
                                                                  closeCode?: number
                                                                  message: string
                                                                  name: string
                                                                  retryable?: boolean
                                                                  serverRole?: string
                                                                  serverZone?: string
                                                                  stack?: string
                                                                  statusCode?: number
                                                                  statusMessage?: string
                                                                  target: QwpTarget
                                                                  timeoutPhase?: QwpUpgradeTimeoutPhase

                                                                  Node opening phase that exceeded its deadline.

                                                                  +
                                                                  tryNextEndpoint?: boolean
                                                                  url?: string | URL

                                                                  Accessors

                                                                  diff --git a/docs/classes/_questdb_browser-client.QwpSendClosedError.html b/docs/classes/_questdb_browser-client.QwpSendClosedError.html index 843eb0711..3fe07b278 100644 --- a/docs/classes/_questdb_browser-client.QwpSendClosedError.html +++ b/docs/classes/_questdb_browser-client.QwpSendClosedError.html @@ -1,8 +1,8 @@ QwpSendClosedError | QuestDB JavaScript Client - v5.0.0
                                                                  QuestDB JavaScript Client - v5.0.0
                                                                    Preparing search index...

                                                                    A QWP send was rejected because its WebSocket closed.

                                                                    -

                                                                    Hierarchy (View Summary)

                                                                    Index

                                                                    Constructors

                                                                    Hierarchy (View Summary)

                                                                    Index

                                                                    Constructors

                                                                    Properties

                                                                    cause?: unknown
                                                                    message: string
                                                                    name: string
                                                                    stack?: string
                                                                    +

                                                                    Constructors

                                                                    Properties

                                                                    cause?: unknown
                                                                    message: string
                                                                    name: string
                                                                    stack?: string
                                                                    diff --git a/docs/classes/_questdb_browser-client.QwpSendError.html b/docs/classes/_questdb_browser-client.QwpSendError.html index a9aab6c76..dfc62c4b2 100644 --- a/docs/classes/_questdb_browser-client.QwpSendError.html +++ b/docs/classes/_questdb_browser-client.QwpSendError.html @@ -1,7 +1,7 @@ QwpSendError | QuestDB JavaScript Client - v5.0.0
                                                                    QuestDB JavaScript Client - v5.0.0
                                                                      Preparing search index...

                                                                      A failure while handing a QWP frame to the WebSocket transport.

                                                                      -

                                                                      Hierarchy (View Summary)

                                                                      Index

                                                                      Constructors

                                                                      Hierarchy (View Summary)

                                                                      Index

                                                                      Constructors

                                                                      Properties

                                                                      Constructors

                                                                      Properties

                                                                      cause?: unknown
                                                                      message: string
                                                                      name: string
                                                                      stack?: string
                                                                      +

                                                                      Constructors

                                                                      Properties

                                                                      cause?: unknown
                                                                      message: string
                                                                      name: string
                                                                      stack?: string
                                                                      diff --git a/docs/classes/_questdb_browser-client.QwpSendTimeoutError.html b/docs/classes/_questdb_browser-client.QwpSendTimeoutError.html index ef524afe9..2729a324e 100644 --- a/docs/classes/_questdb_browser-client.QwpSendTimeoutError.html +++ b/docs/classes/_questdb_browser-client.QwpSendTimeoutError.html @@ -1,9 +1,9 @@ QwpSendTimeoutError | QuestDB JavaScript Client - v5.0.0
                                                                      QuestDB JavaScript Client - v5.0.0
                                                                        Preparing search index...

                                                                        The WebSocket did not drain a QWP frame before its send deadline.

                                                                        -

                                                                        Hierarchy (View Summary)

                                                                        Index

                                                                        Constructors

                                                                        Hierarchy (View Summary)

                                                                        Index

                                                                        Constructors

                                                                        Properties

                                                                        bufferedAmountBytes?: number
                                                                        cause?: unknown
                                                                        message: string
                                                                        name: string
                                                                        stack?: string
                                                                        timeoutMs: number
                                                                        +

                                                                        Constructors

                                                                        Properties

                                                                        bufferedAmountBytes?: number
                                                                        cause?: unknown
                                                                        message: string
                                                                        name: string
                                                                        stack?: string
                                                                        timeoutMs: number
                                                                        diff --git a/docs/classes/_questdb_browser-client.QwpSender.html b/docs/classes/_questdb_browser-client.QwpSender.html index 029946cad..b5b11d3b7 100644 --- a/docs/classes/_questdb_browser-client.QwpSender.html +++ b/docs/classes/_questdb_browser-client.QwpSender.html @@ -2,7 +2,7 @@

                                                                        Applications normally obtain this class through create/connectQwpNodeSender or create/connectQwpBrowserSender, rather than constructing sessions and QwpTableBuffer instances themselves.

                                                                        -
                                                                        Index

                                                                        Accessors

                                                                        Index

                                                                        Accessors

                                                                        Methods

                                                                        Methods

                                                                        • Internal

                                                                          Closes the sender on behalf of the pooled QWP client, best effort. A failure -- typically a close drain that timed out with frames still unacknowledged -- is logged as a warning instead of rejecting, as the Java, Rust and Python pools do, so neither pool shutdown nor the lease whose return triggered the close fails because of it.

                                                                          -

                                                                          Returns Promise<void>

                                                                        • Adds a QuestDB DATE column value in milliseconds since the epoch. -9_223_372_036_854_775_808n is QuestDB's DATE NULL sentinel: it is stored as NULL and cannot be stored as an ordinary value.

                                                                          -

                                                                          Parameters

                                                                          • name: string
                                                                          • millisecondsSinceEpoch: undefined | null | number | bigint

                                                                          Returns QwpSender

                                                                        • Parameters

                                                                          • name: string
                                                                          • unscaled: undefined | null | bigint | Int8Array<ArrayBufferLike>
                                                                          • scale: number

                                                                          Returns QwpSender

                                                                        • Parameters

                                                                          • name: string
                                                                          • unscaled: undefined | null | bigint | Int8Array<ArrayBufferLike>
                                                                          • scale: number

                                                                          Returns QwpSender

                                                                        • Publishes completed rows to the local ingress/replay boundary without waiting for a server ACK. Use flushAndWait() to also wait for the ACK. A transactional sender commits here: rows previously sent by auto-flush and any pending rows close in one group-closing frame.

                                                                          -

                                                                          Returns Promise<boolean>

                                                                        • Publishes pending rows without waiting for their server ACK and returns the highest frame sequence published by this call, or -1n when it published nothing. Pass the result to waitForAck() to wait for that frame; flushAndWait() waits for everything published so far.

                                                                          -

                                                                          Returns Promise<bigint>

                                                                        • Flushes pending rows, then waits until the server has acknowledged every frame this sender has published, including the frames a store-and-forward journal recovered from an earlier process once the sender has connected. Resolves true once they are acknowledged and false when the ACK watermark @@ -79,17 +79,17 @@ requested, the wait covers durable upload. A transactional sender commits its open transaction first. Over UDP, which has no server acknowledgements, this resolves true once the datagrams are sent.

                                                                          -

                                                                          Parameters

                                                                          • OptionaltimeoutMs: number

                                                                          Returns Promise<boolean>

                                                                        • Adds a QuestDB INT column value. -2_147_483_648 is QuestDB's INT NULL sentinel: it is stored as NULL and cannot be stored as an ordinary value.

                                                                          -

                                                                          Parameters

                                                                          • name: string
                                                                          • value: undefined | null | number

                                                                          Returns QwpSender

                                                                        • Parameters

                                                                          • name: string
                                                                          • word0: undefined | null | bigint
                                                                          • word1: undefined | null | bigint
                                                                          • word2: undefined | null | bigint
                                                                          • word3: undefined | null | bigint

                                                                          Returns QwpSender

                                                                        • Parameters

                                                                          • name: string
                                                                          • word0: undefined | null | bigint
                                                                          • word1: undefined | null | bigint
                                                                          • word2: undefined | null | bigint
                                                                          • word3: undefined | null | bigint

                                                                          Returns QwpSender

                                                                        • Adds a protocol LONG[] column value with between 1 and 32 dimensions.

                                                                          Current QuestDB servers reject LONG-array ingestion with long arrays are not supported, only double arrays. This method remains available for Java-client and protocol parity.

                                                                          -

                                                                          Parameters

                                                                          • name: string
                                                                          • value: undefined | null | unknown[]

                                                                          Returns QwpSender

                                                                        • Adds a QuestDB LONG column value. -9_223_372_036_854_775_808n is QuestDB's LONG NULL sentinel: it is stored as NULL and cannot be stored as an ordinary value.

                                                                          -

                                                                          Parameters

                                                                          • name: string
                                                                          • value: undefined | null | number | bigint

                                                                          Returns QwpSender

                                                                        • Internal

                                                                          Flushes completed rows and resets borrower-local staging without closing the physical session. Used by the pooled QWP client when a lease returns.

                                                                          -

                                                                          Returns Promise<void>

                                                                        • Waits until the cumulative ACK watermark covers a frame sequence, such as +

                                                                          Returns Promise<void>

                                                                        • Waits until the cumulative ACK watermark covers a frame sequence, such as one returned by flushAndGetSequence(). Resolves true once it does, and false when the watermark makes no progress for timeoutMs (the session's ackTimeoutMs by default); the timeout restarts whenever the watermark @@ -97,6 +97,6 @@ the Java client's awaitAckedFsn(), a timeoutMs of zero or less checks without waiting. Rejects when the server rejects a covered frame or the session can no longer deliver.

                                                                          -

                                                                          Parameters

                                                                          • targetSequence: bigint
                                                                          • OptionaltimeoutMs: number

                                                                          Returns Promise<boolean>

                                                                        +

                                                                        Type Parameters

                                                                        Parameters

                                                                        • tableName: string
                                                                        • schema: Schema

                                                                        Returns QwpTableWriter<Schema>

                                                                        diff --git a/docs/classes/_questdb_browser-client.QwpSenderCloseTimeoutError.html b/docs/classes/_questdb_browser-client.QwpSenderCloseTimeoutError.html index d737391f1..e87c28b9f 100644 --- a/docs/classes/_questdb_browser-client.QwpSenderCloseTimeoutError.html +++ b/docs/classes/_questdb_browser-client.QwpSenderCloseTimeoutError.html @@ -1,9 +1,9 @@ QwpSenderCloseTimeoutError | QuestDB JavaScript Client - v5.0.0
                                                                        QuestDB JavaScript Client - v5.0.0
                                                                          Preparing search index...

                                                                          close() could not publish and acknowledge all committed ingress frames.

                                                                          -

                                                                          Hierarchy

                                                                          • Error
                                                                            • QwpSenderCloseTimeoutError
                                                                          Index

                                                                          Constructors

                                                                          Hierarchy

                                                                          • Error
                                                                            • QwpSenderCloseTimeoutError
                                                                          Index

                                                                          Constructors

                                                                          Properties

                                                                          ackedSequence: bigint
                                                                          message: string
                                                                          name: string
                                                                          stack?: string
                                                                          targetSequence: bigint
                                                                          timeoutMs: number
                                                                          +

                                                                          Constructors

                                                                          Properties

                                                                          ackedSequence: bigint
                                                                          message: string
                                                                          name: string
                                                                          stack?: string
                                                                          targetSequence: bigint
                                                                          timeoutMs: number
                                                                          diff --git a/docs/classes/_questdb_browser-client.QwpSymbolDictionary.html b/docs/classes/_questdb_browser-client.QwpSymbolDictionary.html index baa31e45f..af3b7e27d 100644 --- a/docs/classes/_questdb_browser-client.QwpSymbolDictionary.html +++ b/docs/classes/_questdb_browser-client.QwpSymbolDictionary.html @@ -1,5 +1,5 @@ QwpSymbolDictionary | QuestDB JavaScript Client - v5.0.0
                                                                          QuestDB JavaScript Client - v5.0.0
                                                                            Preparing search index...

                                                                            Connection-scoped QWP symbol dictionary. IDs are dense from zero.

                                                                            -
                                                                            Index

                                                                            Constructors

                                                                            Index

                                                                            Constructors

                                                                            Accessors

                                                                            Methods

                                                                            Constructors

                                                                            Accessors

                                                                            Methods

                                                                            +

                                                                            Constructors

                                                                            Accessors

                                                                            Methods

                                                                            diff --git a/docs/classes/_questdb_browser-client.QwpTableBuffer.html b/docs/classes/_questdb_browser-client.QwpTableBuffer.html index 14beca44e..f7330d912 100644 --- a/docs/classes/_questdb_browser-client.QwpTableBuffer.html +++ b/docs/classes/_questdb_browser-client.QwpTableBuffer.html @@ -1,5 +1,5 @@ QwpTableBuffer | QuestDB JavaScript Client - v5.0.0
                                                                            QuestDB JavaScript Client - v5.0.0
                                                                              Preparing search index...

                                                                              Mutable columnar staging area for one QWP ingress table.

                                                                              -
                                                                              Index

                                                                              Constructors

                                                                              Index

                                                                              Constructors

                                                                              Properties

                                                                              Accessors

                                                                              Constructors

                                                                              Properties

                                                                              name: string

                                                                              Accessors

                                                                              Methods

                                                                              • Returns null when the current row already contains this column. The first +

                                                                              Constructors

                                                                              Properties

                                                                              name: string

                                                                              Accessors

                                                                              Methods

                                                                              • Truncates every column back to the last completed row.

                                                                                Values are truncated to the committed watermark rather than popped once per non-null marker, because getOrCreateColumn() reserves the current cell as non-null before the caller appends its value. A setter that threw @@ -22,7 +22,7 @@ then deleted the previous completed row's value instead. The table kept that row's non-null marker, so encodeQwpIngressFrame() rejected the whole buffer with a value/marker count mismatch.

                                                                                -

                                                                                Returns void

                                                                              +

                                                                              Parameters

                                                                              Returns QwpTableBuffer

                                                                              diff --git a/docs/classes/_questdb_browser-client.QwpTableWriter.html b/docs/classes/_questdb_browser-client.QwpTableWriter.html index 2bf2d0e96..6c58eaaf5 100644 --- a/docs/classes/_questdb_browser-client.QwpTableWriter.html +++ b/docs/classes/_questdb_browser-client.QwpTableWriter.html @@ -1,7 +1,7 @@ QwpTableWriter | QuestDB JavaScript Client - v5.0.0
                                                                              QuestDB JavaScript Client - v5.0.0
                                                                                Preparing search index...

                                                                                Class QwpTableWriter<Schema>

                                                                                A reusable table-bound writer compiled from a QWP schema.

                                                                                -

                                                                                Type Parameters

                                                                                Index

                                                                                Properties

                                                                                Type Parameters

                                                                                Index

                                                                                Properties

                                                                                Methods

                                                                                Properties

                                                                                tableName: string

                                                                                Methods

                                                                                +

                                                                                Properties

                                                                                tableName: string

                                                                                Methods

                                                                                diff --git a/docs/classes/_questdb_browser-client.QwpUnrecoverableReplayDictionaryError.html b/docs/classes/_questdb_browser-client.QwpUnrecoverableReplayDictionaryError.html index 357f3c3dc..b4baaba5d 100644 --- a/docs/classes/_questdb_browser-client.QwpUnrecoverableReplayDictionaryError.html +++ b/docs/classes/_questdb_browser-client.QwpUnrecoverableReplayDictionaryError.html @@ -1,8 +1,8 @@ QwpUnrecoverableReplayDictionaryError | QuestDB JavaScript Client - v5.0.0
                                                                                QuestDB JavaScript Client - v5.0.0
                                                                                  Preparing search index...

                                                                                  Class QwpUnrecoverableReplayDictionaryError

                                                                                  Recovered delta frames depend on symbol IDs that neither the durable dictionary prefix nor the surviving frames can reconstruct.

                                                                                  -

                                                                                  Hierarchy (View Summary)

                                                                                  Index

                                                                                  Constructors

                                                                                  Hierarchy (View Summary)

                                                                                  Index

                                                                                  Constructors

                                                                                  Properties

                                                                                  Constructors

                                                                                  Properties

                                                                                  cause?: unknown
                                                                                  message: string
                                                                                  name: string
                                                                                  stack?: string
                                                                                  +

                                                                                  Constructors

                                                                                  Properties

                                                                                  cause?: unknown
                                                                                  message: string
                                                                                  name: string
                                                                                  stack?: string
                                                                                  diff --git a/docs/classes/_questdb_browser-client.QwpUpgradeError.html b/docs/classes/_questdb_browser-client.QwpUpgradeError.html index 3336ceabe..a64bb99b7 100644 --- a/docs/classes/_questdb_browser-client.QwpUpgradeError.html +++ b/docs/classes/_questdb_browser-client.QwpUpgradeError.html @@ -1,5 +1,5 @@ QwpUpgradeError | QuestDB JavaScript Client - v5.0.0
                                                                                  QuestDB JavaScript Client - v5.0.0
                                                                                    Preparing search index...

                                                                                    A failure while establishing or validating a QWP WebSocket upgrade.

                                                                                    -

                                                                                    Hierarchy (View Summary)

                                                                                    Index

                                                                                    Constructors

                                                                                    Hierarchy (View Summary)

                                                                                    Index

                                                                                    Constructors

                                                                                    Properties

                                                                                    cause? closeCode? kind @@ -16,7 +16,7 @@ url?

                                                                                    Accessors

                                                                                    Constructors

                                                                                    Properties

                                                                                    cause?: unknown
                                                                                    closeCode?: number
                                                                                    message: string
                                                                                    name: string
                                                                                    retryable?: boolean
                                                                                    serverRole?: string
                                                                                    serverZone?: string
                                                                                    stack?: string
                                                                                    statusCode?: number
                                                                                    statusMessage?: string
                                                                                    timeoutPhase?: QwpUpgradeTimeoutPhase

                                                                                    Node opening phase that exceeded its deadline.

                                                                                    -
                                                                                    tryNextEndpoint?: boolean
                                                                                    url?: string | URL

                                                                                    Accessors

                                                                                    +

                                                                                    Constructors

                                                                                    Properties

                                                                                    cause?: unknown
                                                                                    closeCode?: number
                                                                                    message: string
                                                                                    name: string
                                                                                    retryable?: boolean
                                                                                    serverRole?: string
                                                                                    serverZone?: string
                                                                                    stack?: string
                                                                                    statusCode?: number
                                                                                    statusMessage?: string
                                                                                    timeoutPhase?: QwpUpgradeTimeoutPhase

                                                                                    Node opening phase that exceeded its deadline.

                                                                                    +
                                                                                    tryNextEndpoint?: boolean
                                                                                    url?: string | URL

                                                                                    Accessors

                                                                                    diff --git a/docs/classes/_questdb_browser-client.QwpWriterRowError.html b/docs/classes/_questdb_browser-client.QwpWriterRowError.html index 183eaaf91..ce07a35ee 100644 --- a/docs/classes/_questdb_browser-client.QwpWriterRowError.html +++ b/docs/classes/_questdb_browser-client.QwpWriterRowError.html @@ -1,5 +1,5 @@ QwpWriterRowError | QuestDB JavaScript Client - v5.0.0
                                                                                    QuestDB JavaScript Client - v5.0.0
                                                                                      Preparing search index...

                                                                                      A complete object row failed compiled-writer validation.

                                                                                      -

                                                                                      Hierarchy

                                                                                      • Error
                                                                                        • QwpWriterRowError
                                                                                      Index

                                                                                      Constructors

                                                                                      Hierarchy

                                                                                      • Error
                                                                                        • QwpWriterRowError
                                                                                      Index

                                                                                      Constructors

                                                                                      Properties

                                                                                      Constructors

                                                                                      Properties

                                                                                      cause: unknown
                                                                                      columnName: undefined | string
                                                                                      message: string
                                                                                      name: string
                                                                                      rowIndex: undefined | number
                                                                                      stack?: string
                                                                                      tableName: string
                                                                                      +

                                                                                      Constructors

                                                                                      Properties

                                                                                      cause: unknown
                                                                                      columnName: undefined | string
                                                                                      message: string
                                                                                      name: string
                                                                                      rowIndex: undefined | number
                                                                                      stack?: string
                                                                                      tableName: string
                                                                                      diff --git a/docs/classes/_questdb_nodejs-client.HttpTransport.html b/docs/classes/_questdb_nodejs-client.HttpTransport.html index dc1fa1a6b..3cc78f565 100644 --- a/docs/classes/_questdb_nodejs-client.HttpTransport.html +++ b/docs/classes/_questdb_nodejs-client.HttpTransport.html @@ -1,6 +1,6 @@ HttpTransport | QuestDB JavaScript Client - v5.0.0
                                                                                      QuestDB JavaScript Client - v5.0.0
                                                                                        Preparing search index...

                                                                                        HTTP transport implementation using Node.js built-in http/https modules.
                                                                                        Supports both HTTP and HTTPS protocols with configurable authentication.

                                                                                        -

                                                                                        Hierarchy

                                                                                        • HttpTransportBase
                                                                                          • HttpTransport
                                                                                        Index

                                                                                        Constructors

                                                                                        Hierarchy

                                                                                        • HttpTransportBase
                                                                                          • HttpTransport
                                                                                        Index

                                                                                        Constructors

                                                                                        Properties

                                                                                        host log password @@ -20,16 +20,16 @@

                                                                                        Constructors

                                                                                        Properties

                                                                                        host: string
                                                                                        log: Logger
                                                                                        password: string
                                                                                        port: number
                                                                                        requestMinThroughput: number
                                                                                        requestTimeout: number
                                                                                        retryTimeout: number
                                                                                        secure: boolean
                                                                                        tlsCA: Buffer
                                                                                        tlsVerify: boolean
                                                                                        token: string
                                                                                        username: string

                                                                                        Methods

                                                                                        Properties

                                                                                        host: string
                                                                                        log: Logger
                                                                                        password: string
                                                                                        port: number
                                                                                        requestMinThroughput: number
                                                                                        requestTimeout: number
                                                                                        retryTimeout: number
                                                                                        secure: boolean
                                                                                        tlsCA: Buffer
                                                                                        tlsVerify: boolean
                                                                                        token: string
                                                                                        username: string

                                                                                        Methods

                                                                                        • HTTP transport does not require explicit connection establishment.

                                                                                          Returns Promise<boolean>

                                                                                          Error indicating connect is not required for HTTP transport

                                                                                          -
                                                                                        +
                                                                                        diff --git a/docs/classes/_questdb_nodejs-client.QwpBatchTooLargeError.html b/docs/classes/_questdb_nodejs-client.QwpBatchTooLargeError.html index ae412f647..7a22a3947 100644 --- a/docs/classes/_questdb_nodejs-client.QwpBatchTooLargeError.html +++ b/docs/classes/_questdb_nodejs-client.QwpBatchTooLargeError.html @@ -1,4 +1,4 @@ -QwpBatchTooLargeError | QuestDB JavaScript Client - v5.0.0
                                                                                        QuestDB JavaScript Client - v5.0.0
                                                                                          Preparing search index...

                                                                                          Hierarchy

                                                                                          • RangeError
                                                                                            • QwpBatchTooLargeError
                                                                                          Index

                                                                                          Constructors

                                                                                          constructor +QwpBatchTooLargeError | QuestDB JavaScript Client - v5.0.0

                                                                                          Hierarchy

                                                                                          • RangeError
                                                                                            • QwpBatchTooLargeError
                                                                                          Index

                                                                                          Constructors

                                                                                          Properties

                                                                                          batchSizeBytes: number
                                                                                          cause?: unknown
                                                                                          maxBatchSizeBytes: number
                                                                                          message: string
                                                                                          name: string
                                                                                          stack?: string
                                                                                          stackTraceLimit: number

                                                                                          The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                          Constructors

                                                                                          Properties

                                                                                          batchSizeBytes: number
                                                                                          cause?: unknown
                                                                                          maxBatchSizeBytes: number
                                                                                          message: string
                                                                                          name: string
                                                                                          stack?: string
                                                                                          stackTraceLimit: number

                                                                                          The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                          The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpBindValues.html b/docs/classes/_questdb_nodejs-client.QwpBindValues.html index f551c2297..cf1281263 100644 --- a/docs/classes/_questdb_nodejs-client.QwpBindValues.html +++ b/docs/classes/_questdb_nodejs-client.QwpBindValues.html @@ -1,7 +1,7 @@ QwpBindValues | QuestDB JavaScript Client - v5.0.0

                                                                                          Browser-safe typed positional bind encoder.

                                                                                          Setters must be called in ascending zero-based index order. SQL placeholders are one-based, so index 0 binds $1, index 1 binds $2, and so on.

                                                                                          -
                                                                                          Index

                                                                                          Constructors

                                                                                          Index

                                                                                          Constructors

                                                                                          Accessors

                                                                                          Methods

                                                                                          Constructors

                                                                                          Accessors

                                                                                          Methods

                                                                                          • Binds a typed NULL.

                                                                                            +

                                                                                          Constructors

                                                                                          Accessors

                                                                                          Methods

                                                                                          • Binds a typed NULL.

                                                                                            A null bind is exactly type + flag + bitmap. The only types that carry anything more are the ones whose prefix the decoder reads before it branches on the null flag: the DECIMAL scale byte and the GEOHASH @@ -40,6 +40,6 @@ the server read that word's first byte as the next bind's type code ("unsupported wire type 0x0"), or, after the last bind, as the trailing queryFlags varint -- silently dropping a requested dictionary reset.

                                                                                            -

                                                                                            Parameters

                                                                                            Returns this

                                                                                          +

                                                                                          Parameters

                                                                                          Returns this

                                                                                          diff --git a/docs/classes/_questdb_nodejs-client.QwpByteReader.html b/docs/classes/_questdb_nodejs-client.QwpByteReader.html index 2d794758d..24ca1ea26 100644 --- a/docs/classes/_questdb_nodejs-client.QwpByteReader.html +++ b/docs/classes/_questdb_nodejs-client.QwpByteReader.html @@ -1,5 +1,5 @@ QwpByteReader | QuestDB JavaScript Client - v5.0.0
                                                                                          QuestDB JavaScript Client - v5.0.0
                                                                                            Preparing search index...

                                                                                            A bounds-checked, runtime-neutral little-endian byte reader.

                                                                                            -
                                                                                            Index

                                                                                            Constructors

                                                                                            Index

                                                                                            Constructors

                                                                                            Properties

                                                                                            Accessors

                                                                                            Constructors

                                                                                            Properties

                                                                                            bytes: Uint8Array

                                                                                            Accessors

                                                                                            Methods

                                                                                            +

                                                                                            Constructors

                                                                                            Properties

                                                                                            bytes: Uint8Array

                                                                                            Accessors

                                                                                            Methods

                                                                                            diff --git a/docs/classes/_questdb_nodejs-client.QwpByteWriter.html b/docs/classes/_questdb_nodejs-client.QwpByteWriter.html index 362e7344e..01afa4421 100644 --- a/docs/classes/_questdb_nodejs-client.QwpByteWriter.html +++ b/docs/classes/_questdb_nodejs-client.QwpByteWriter.html @@ -1,5 +1,5 @@ QwpByteWriter | QuestDB JavaScript Client - v5.0.0
                                                                                            QuestDB JavaScript Client - v5.0.0
                                                                                              Preparing search index...

                                                                                              A growable, runtime-neutral little-endian byte writer.

                                                                                              -
                                                                                              Index

                                                                                              Constructors

                                                                                              Index

                                                                                              Constructors

                                                                                              Accessors

                                                                                              Methods

                                                                                              Constructors

                                                                                              Accessors

                                                                                              Methods

                                                                                              +

                                                                                              Constructors

                                                                                              Accessors

                                                                                              Methods

                                                                                              diff --git a/docs/classes/_questdb_nodejs-client.QwpClient.html b/docs/classes/_questdb_nodejs-client.QwpClient.html index dff725866..48a27d6d4 100644 --- a/docs/classes/_questdb_nodejs-client.QwpClient.html +++ b/docs/classes/_questdb_nodejs-client.QwpClient.html @@ -1,15 +1,15 @@ QwpClient | QuestDB JavaScript Client - v5.0.0
                                                                                              QuestDB JavaScript Client - v5.0.0
                                                                                                Preparing search index...

                                                                                                Browser-safe facade owning bounded ingress and egress connection pools. Borrowed handles are exclusive; separate query leases execute concurrently.

                                                                                                -
                                                                                                Index

                                                                                                Constructors

                                                                                                Index

                                                                                                Constructors

                                                                                                Accessors

                                                                                                Methods

                                                                                                • Rejects new borrows and closes idle resources. Borrowed query sessions are +

                                                                                                Constructors

                                                                                                Accessors

                                                                                                Methods

                                                                                                • Rejects new borrows and closes idle resources. Borrowed query sessions are cancelled and closed; borrowed senders retain ownership during a bounded drain and own their teardown if they outlive it.

                                                                                                  -

                                                                                                  Returns Promise<void>

                                                                                                +

                                                                                                Returns Promise<void>

                                                                                                diff --git a/docs/classes/_questdb_nodejs-client.QwpClientClosedError.html b/docs/classes/_questdb_nodejs-client.QwpClientClosedError.html index 1591bc893..9a55f5e67 100644 --- a/docs/classes/_questdb_nodejs-client.QwpClientClosedError.html +++ b/docs/classes/_questdb_nodejs-client.QwpClientClosedError.html @@ -1,5 +1,5 @@ QwpClientClosedError | QuestDB JavaScript Client - v5.0.0
                                                                                                QuestDB JavaScript Client - v5.0.0
                                                                                                  Preparing search index...

                                                                                                  The owning QWP client, or one of its returned lease handles, is closed.

                                                                                                  -

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpClientClosedError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpClientClosedError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpDurableAckUnavailableError.html b/docs/classes/_questdb_nodejs-client.QwpDurableAckUnavailableError.html index 855dc2692..15c8cec25 100644 --- a/docs/classes/_questdb_nodejs-client.QwpDurableAckUnavailableError.html +++ b/docs/classes/_questdb_nodejs-client.QwpDurableAckUnavailableError.html @@ -1,5 +1,5 @@ QwpDurableAckUnavailableError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpDurableAckUnavailableError

                                                                                                  A requested durable-ACK capability was not confirmed by the server.

                                                                                                  -

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  closeCode?: number
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  retryable?: boolean
                                                                                                  serverRole?: string
                                                                                                  serverZone?: string
                                                                                                  stack?: string
                                                                                                  statusCode?: number
                                                                                                  statusMessage?: string
                                                                                                  timeoutPhase?: QwpUpgradeTimeoutPhase

                                                                                                  Node opening phase that exceeded its deadline.

                                                                                                  -
                                                                                                  tryNextEndpoint?: boolean
                                                                                                  url?: string | URL
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  closeCode?: number
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  retryable?: boolean
                                                                                                  serverRole?: string
                                                                                                  serverZone?: string
                                                                                                  stack?: string
                                                                                                  statusCode?: number
                                                                                                  statusMessage?: string
                                                                                                  timeoutPhase?: QwpUpgradeTimeoutPhase

                                                                                                  Node opening phase that exceeded its deadline.

                                                                                                  +
                                                                                                  tryNextEndpoint?: boolean
                                                                                                  url?: string | URL
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes @@ -28,8 +28,8 @@

                                                                                                  If set to a non-number value, or set to a negative number, stack traces will not capture any frames.

                                                                                                  Accessors

                                                                                                  Methods

                                                                                                  • Creates a .stack property on targetObject, which when accessed returns +

                                                                                                    Returns boolean

                                                                                                  Methods

                                                                                                  • Grants the server additionalBytes more send-ahead credit for this +query. Use it to replenish credit by hand on a query run with +autoCredit: false.

                                                                                                    +

                                                                                                    A query that has already ended is owed no credit: the returned promise +resolves and nothing is sent, even if the session has since closed or +failed. additionalBytes must be a non-negative safe integer or a +bigint that fits in uint64, whatever the query's state; any other value +rejects with a RangeError. This method never throws: every failure +rejects the returned promise.

                                                                                                    +

                                                                                                    Parameters

                                                                                                    • additionalBytes: number | bigint

                                                                                                    Returns Promise<void>

                                                                                                  diff --git a/docs/classes/_questdb_nodejs-client.QwpEgressQueryAbandonedError.html b/docs/classes/_questdb_nodejs-client.QwpEgressQueryAbandonedError.html index 852775f08..270afaa27 100644 --- a/docs/classes/_questdb_nodejs-client.QwpEgressQueryAbandonedError.html +++ b/docs/classes/_questdb_nodejs-client.QwpEgressQueryAbandonedError.html @@ -1,5 +1,5 @@ QwpEgressQueryAbandonedError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpEgressQueryAbandonedError

                                                                                                  Result iteration ended before the server completed the query.

                                                                                                  -

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpEgressQueryAbandonedError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpEgressQueryAbandonedError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  requestId: bigint
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  requestId: bigint
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpEgressQueryCancelTimeoutError.html b/docs/classes/_questdb_nodejs-client.QwpEgressQueryCancelTimeoutError.html index b4418e142..989b1fa2f 100644 --- a/docs/classes/_questdb_nodejs-client.QwpEgressQueryCancelTimeoutError.html +++ b/docs/classes/_questdb_nodejs-client.QwpEgressQueryCancelTimeoutError.html @@ -6,7 +6,7 @@ session itself fails with this error if it was opened with reconnect: false, or if a queryViews() callback of the query is still running one more cancelDrainTimeoutMs later.

                                                                                                  -

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpEgressQueryCancelTimeoutError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpEgressQueryCancelTimeoutError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause? message name @@ -16,7 +16,7 @@ stackTraceLimit

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  requestId: bigint
                                                                                                  stack?: string
                                                                                                  timeoutMs: number
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  requestId: bigint
                                                                                                  stack?: string
                                                                                                  timeoutMs: number
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpEgressQueryError.html b/docs/classes/_questdb_nodejs-client.QwpEgressQueryError.html index b48fac7c1..f64b32a94 100644 --- a/docs/classes/_questdb_nodejs-client.QwpEgressQueryError.html +++ b/docs/classes/_questdb_nodejs-client.QwpEgressQueryError.html @@ -1,14 +1,25 @@ -QwpEgressQueryError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpEgressQueryError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  constructor +QwpEgressQueryError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpEgressQueryError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  requestId: bigint
                                                                                                  stack?: string
                                                                                                  status: number
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  • Parameters

                                                                                                    • requestId: bigint
                                                                                                    • status: number
                                                                                                    • message: string
                                                                                                    • Optionalposition: number

                                                                                                      UTF-16 offset into the query's SQL text the error points at: an index +into the JavaScript string the query was issued with. Present when the +query asked for it with errorPosition and the SQL engine raised the +error, and 0 when the engine named no position, as for a query timeout +on the server or CANCEL QUERY.

                                                                                                      +

                                                                                                    Returns QwpEgressQueryError

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  position?: number

                                                                                                  UTF-16 offset into the query's SQL text the error points at: an index +into the JavaScript string the query was issued with. Present when the +query asked for it with errorPosition and the SQL engine raised the +error, and 0 when the engine named no position, as for a query timeout +on the server or CANCEL QUERY.

                                                                                                  +
                                                                                                  requestId: bigint
                                                                                                  stack?: string
                                                                                                  status: number
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes @@ -32,4 +43,4 @@

                                                                                                  Parameters

                                                                                                  • targetObject: object
                                                                                                  • OptionalconstructorOpt: Function

                                                                                                  Returns void

                                                                                                  • Parameters

                                                                                                    • err: Error
                                                                                                    • stackTraces: CallSite[]

                                                                                                    Returns any

                                                                                                  +
                                                                                                  diff --git a/docs/classes/_questdb_nodejs-client.QwpEgressQueryTimeoutError.html b/docs/classes/_questdb_nodejs-client.QwpEgressQueryTimeoutError.html index bde8002ed..4870069c2 100644 --- a/docs/classes/_questdb_nodejs-client.QwpEgressQueryTimeoutError.html +++ b/docs/classes/_questdb_nodejs-client.QwpEgressQueryTimeoutError.html @@ -1,7 +1,7 @@ QwpEgressQueryTimeoutError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpEgressQueryTimeoutError

                                                                                                  The query ran past its timeout (queryTimeoutMs or the per-query timeoutMs) and was cancelled. Reported once the server has ended the query, or after the grace period if it has not.

                                                                                                  -

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpEgressQueryTimeoutError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpEgressQueryTimeoutError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause? message name @@ -11,7 +11,7 @@ stackTraceLimit

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  requestId: bigint
                                                                                                  stack?: string
                                                                                                  timeoutMs: number
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  requestId: bigint
                                                                                                  stack?: string
                                                                                                  timeoutMs: number
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpEgressRowWindowUnsupportedError.html b/docs/classes/_questdb_nodejs-client.QwpEgressRowWindowUnsupportedError.html new file mode 100644 index 000000000..b010a7a0a --- /dev/null +++ b/docs/classes/_questdb_nodejs-client.QwpEgressRowWindowUnsupportedError.html @@ -0,0 +1,44 @@ +QwpEgressRowWindowUnsupportedError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpEgressRowWindowUnsupportedError

                                                                                                  The query asked for a row window -- skipRows or maxRows -- and the +endpoint does not advertise the QUERY_DETAILS capability it needs. Such a +server would stream the whole result, so the query is not sent to it. +query() rejects at once if the currently bound endpoint lacks the +capability. A query that failover would replay on such an endpoint fails +instead of being replayed, and so does one issued during a reconnect that +reaches such an endpoint: both reject their completion and iteration, +while the query() call resolves. Statements are refused the same way, as +the client cannot tell them from queries before sending them. Use SQL +LIMIT with servers that predate the capability.

                                                                                                  +

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpEgressRowWindowUnsupportedError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  requestId: bigint
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +collected by a stack trace (whether generated by new Error().stack or +Error.captureStackTrace(obj)).

                                                                                                  +

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes +will affect any stack trace captured after the value has been changed.

                                                                                                  +

                                                                                                  If set to a non-number value, or set to a negative number, stack traces will +not capture any frames.

                                                                                                  +

                                                                                                  Methods

                                                                                                  • Creates a .stack property on targetObject, which when accessed returns +a string representing the location in the code at which +Error.captureStackTrace() was called.

                                                                                                    +
                                                                                                    const myObject = {};
                                                                                                    Error.captureStackTrace(myObject);
                                                                                                    myObject.stack; // Similar to `new Error().stack` +
                                                                                                    + +

                                                                                                    The first line of the trace will be prefixed with +${myObject.name}: ${myObject.message}.

                                                                                                    +

                                                                                                    The optional constructorOpt argument accepts a function. If given, all frames +above constructorOpt, including constructorOpt, will be omitted from the +generated stack trace.

                                                                                                    +

                                                                                                    The constructorOpt argument is useful for hiding implementation +details of error generation from the user. For instance:

                                                                                                    +
                                                                                                    function a() {
                                                                                                    b();
                                                                                                    }

                                                                                                    function b() {
                                                                                                    c();
                                                                                                    }

                                                                                                    function c() {
                                                                                                    // Create an error without stack trace to avoid calculating the stack trace twice.
                                                                                                    const { stackTraceLimit } = Error;
                                                                                                    Error.stackTraceLimit = 0;
                                                                                                    const error = new Error();
                                                                                                    Error.stackTraceLimit = stackTraceLimit;

                                                                                                    // Capture the stack trace above function b
                                                                                                    Error.captureStackTrace(error, b); // Neither function c, nor b is included in the stack trace
                                                                                                    throw error;
                                                                                                    }

                                                                                                    a(); +
                                                                                                    + +

                                                                                                    Parameters

                                                                                                    • targetObject: object
                                                                                                    • OptionalconstructorOpt: Function

                                                                                                    Returns void

                                                                                                  • Parameters

                                                                                                    • err: Error
                                                                                                    • stackTraces: CallSite[]

                                                                                                    Returns any

                                                                                                  diff --git a/docs/classes/_questdb_nodejs-client.QwpEgressSession.html b/docs/classes/_questdb_nodejs-client.QwpEgressSession.html index 4adf55fe1..24055a851 100644 --- a/docs/classes/_questdb_nodejs-client.QwpEgressSession.html +++ b/docs/classes/_questdb_nodejs-client.QwpEgressSession.html @@ -5,7 +5,7 @@ timeout -- may still be draining on the connection; a new query waits for that rather than failing. A completed query's materialized batches may still be consumed while the next query runs.

                                                                                                  -

                                                                                                  Implements

                                                                                                  • QwpEgressQueryControl
                                                                                                  Index

                                                                                                  Properties

                                                                                                  Implements

                                                                                                  • QwpEgressQueryControl
                                                                                                  Index

                                                                                                  Properties

                                                                                                  Accessors

                                                                                                  Properties

                                                                                                  ready: Promise<QwpServerInfoMessage>

                                                                                                  Initial SERVER_INFO; use serverInfo for the current post-failover snapshot.

                                                                                                  -

                                                                                                  Accessors

                                                                                                  Accessors

                                                                                                  • get metrics(): QwpEgressMetrics

                                                                                                    Immutable notification-inbox counters for this session's reconnect observer, the egress counterpart of QwpSender.metrics.ingress.

                                                                                                    A reconnect.onEvent observer runs on a bounded inbox that drops its oldest pending entry under overflow, exactly as ingress does. Nothing @@ -30,23 +30,23 @@ either, because attempt resets to one on every success: six outages that discarded eleven events were indistinguishable from a healthy two. A non-zero drop count means the observer is not keeping up.

                                                                                                    -

                                                                                                    Returns QwpEgressMetrics

                                                                                                  Methods

                                                                                                  • Parameters

                                                                                                    • requestId: bigint
                                                                                                    • additionalBytes: number | bigint
                                                                                                    • replayOnReconnect: boolean = true
                                                                                                    • acceptWhenReconnectStarts: boolean = false

                                                                                                    Returns Promise<void>

                                                                                                  Methods

                                                                                                  • Parameters

                                                                                                    • requestId: bigint
                                                                                                    • additionalBytes: number | bigint
                                                                                                    • replayOnReconnect: boolean = true
                                                                                                    • acceptWhenReconnectStarts: boolean = false

                                                                                                    Returns Promise<void>

                                                                                                  • Internal

                                                                                                    Cancels and drains an active operation before a pooled lease is returned. False means the physical session is no longer safe to reuse.

                                                                                                    A query() of the lease that has not started yet -- still waiting for SERVER_INFO, or for an abandoned query to drain -- rejects with abandonStart() instead. Left waiting, it started as soon as the drain below finished, on a session the pool was handing to its next borrower, whose own query() then failed because one was already active.

                                                                                                    -

                                                                                                    Parameters

                                                                                                    • abandonStart: () => Error

                                                                                                    Returns Promise<boolean>

                                                                                                  • Internal

                                                                                                    Best-effort cancellation followed by physical connection teardown for facade shutdown. Unlike pooled lease return, this does not wait for the server to finish draining the cancelled query.

                                                                                                    -

                                                                                                    Returns Promise<void>

                                                                                                  +

                                                                                                  Returns Promise<void>

                                                                                                  diff --git a/docs/classes/_questdb_nodejs-client.QwpEgressSessionClosedError.html b/docs/classes/_questdb_nodejs-client.QwpEgressSessionClosedError.html index fa7c15d15..f6401e89d 100644 --- a/docs/classes/_questdb_nodejs-client.QwpEgressSessionClosedError.html +++ b/docs/classes/_questdb_nodejs-client.QwpEgressSessionClosedError.html @@ -1,4 +1,4 @@ -QwpEgressSessionClosedError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpEgressSessionClosedError

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpEgressSessionClosedError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  constructor +QwpEgressSessionClosedError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpEgressSessionClosedError

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpEgressSessionClosedError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpFailoverError.html b/docs/classes/_questdb_nodejs-client.QwpFailoverError.html index 4713cd13f..5073a0114 100644 --- a/docs/classes/_questdb_nodejs-client.QwpFailoverError.html +++ b/docs/classes/_questdb_nodejs-client.QwpFailoverError.html @@ -1,5 +1,5 @@ QwpFailoverError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Every eligible QWP endpoint in one connection sweep failed.

                                                                                                  -

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpFailoverError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpFailoverError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  attempts: readonly QwpFailoverAttempt[]
                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  attempts: readonly QwpFailoverAttempt[]
                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpIngressAckAbandonedError.html b/docs/classes/_questdb_nodejs-client.QwpIngressAckAbandonedError.html index 6dd6ac137..eda2b1314 100644 --- a/docs/classes/_questdb_nodejs-client.QwpIngressAckAbandonedError.html +++ b/docs/classes/_questdb_nodejs-client.QwpIngressAckAbandonedError.html @@ -1,5 +1,5 @@ QwpIngressAckAbandonedError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpIngressAckAbandonedError

                                                                                                  A recovered frame was deliberately retired without a server ACK.

                                                                                                  -

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpIngressAckAbandonedError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpIngressAckAbandonedError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  fromFsn: bigint
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  stack?: string
                                                                                                  targetSequence: bigint
                                                                                                  toFsn: bigint
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  fromFsn: bigint
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  stack?: string
                                                                                                  targetSequence: bigint
                                                                                                  toFsn: bigint
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpIngressNackError.html b/docs/classes/_questdb_nodejs-client.QwpIngressNackError.html index b3cf9da6a..e6d159169 100644 --- a/docs/classes/_questdb_nodejs-client.QwpIngressNackError.html +++ b/docs/classes/_questdb_nodejs-client.QwpIngressNackError.html @@ -1,4 +1,4 @@ -QwpIngressNackError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpIngressNackError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  constructor +QwpIngressNackError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpIngressNackError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  senderError: QwpSenderError = ...
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  senderError: QwpSenderError = ...
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpIngressSessionClosedError.html b/docs/classes/_questdb_nodejs-client.QwpIngressSessionClosedError.html index b66db25a5..601969401 100644 --- a/docs/classes/_questdb_nodejs-client.QwpIngressSessionClosedError.html +++ b/docs/classes/_questdb_nodejs-client.QwpIngressSessionClosedError.html @@ -1,4 +1,4 @@ -QwpIngressSessionClosedError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpIngressSessionClosedError

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpIngressSessionClosedError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  constructor +QwpIngressSessionClosedError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpIngressSessionClosedError

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpIngressSessionClosedError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpMemoryReplayAppendTimeoutError.html b/docs/classes/_questdb_nodejs-client.QwpMemoryReplayAppendTimeoutError.html index 32356c550..e3b947a97 100644 --- a/docs/classes/_questdb_nodejs-client.QwpMemoryReplayAppendTimeoutError.html +++ b/docs/classes/_questdb_nodejs-client.QwpMemoryReplayAppendTimeoutError.html @@ -1,5 +1,5 @@ QwpMemoryReplayAppendTimeoutError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpMemoryReplayAppendTimeoutError

                                                                                                  ACK-driven trimming did not free in-memory replay capacity in time.

                                                                                                  -

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpMemoryReplayAppendTimeoutError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpMemoryReplayAppendTimeoutError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  maxBytes: number
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  requiredBytes: number
                                                                                                  stack?: string
                                                                                                  timeoutMs: number
                                                                                                  usedBytes: number
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  maxBytes: number
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  requiredBytes: number
                                                                                                  stack?: string
                                                                                                  timeoutMs: number
                                                                                                  usedBytes: number
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpMemoryReplayBatchTooLargeError.html b/docs/classes/_questdb_nodejs-client.QwpMemoryReplayBatchTooLargeError.html index 099c8e3a6..4e413e18a 100644 --- a/docs/classes/_questdb_nodejs-client.QwpMemoryReplayBatchTooLargeError.html +++ b/docs/classes/_questdb_nodejs-client.QwpMemoryReplayBatchTooLargeError.html @@ -1,5 +1,5 @@ QwpMemoryReplayBatchTooLargeError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpMemoryReplayBatchTooLargeError

                                                                                                  One logical batch can never fit in the configured in-memory replay budget.

                                                                                                  -

                                                                                                  Hierarchy

                                                                                                  • RangeError
                                                                                                    • QwpMemoryReplayBatchTooLargeError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy

                                                                                                  • RangeError
                                                                                                    • QwpMemoryReplayBatchTooLargeError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  frameCount: number
                                                                                                  maxBytes: number
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  requiredBytes: number
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  frameCount: number
                                                                                                  maxBytes: number
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  requiredBytes: number
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpMemoryReplayFrameTooLargeError.html b/docs/classes/_questdb_nodejs-client.QwpMemoryReplayFrameTooLargeError.html index bcce9e736..e87d68645 100644 --- a/docs/classes/_questdb_nodejs-client.QwpMemoryReplayFrameTooLargeError.html +++ b/docs/classes/_questdb_nodejs-client.QwpMemoryReplayFrameTooLargeError.html @@ -1,5 +1,5 @@ QwpMemoryReplayFrameTooLargeError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpMemoryReplayFrameTooLargeError

                                                                                                  One frame can never fit in the configured in-memory replay budget.

                                                                                                  -

                                                                                                  Hierarchy

                                                                                                  • RangeError
                                                                                                    • QwpMemoryReplayFrameTooLargeError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy

                                                                                                  • RangeError
                                                                                                    • QwpMemoryReplayFrameTooLargeError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  maxBytes: number
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  payloadBytes: number
                                                                                                  requiredBytes: number
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  maxBytes: number
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  payloadBytes: number
                                                                                                  requiredBytes: number
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpPoolAcquireTimeoutError.html b/docs/classes/_questdb_nodejs-client.QwpPoolAcquireTimeoutError.html index e031fa4c7..e385eb9bc 100644 --- a/docs/classes/_questdb_nodejs-client.QwpPoolAcquireTimeoutError.html +++ b/docs/classes/_questdb_nodejs-client.QwpPoolAcquireTimeoutError.html @@ -1,5 +1,5 @@ QwpPoolAcquireTimeoutError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpPoolAcquireTimeoutError

                                                                                                  A bounded QWP pool could not provide a connection before its deadline.

                                                                                                  -

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpPoolAcquireTimeoutError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpPoolAcquireTimeoutError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  resource: "query" | "sender"
                                                                                                  stack?: string
                                                                                                  timeoutMs: number
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  resource: "query" | "sender"
                                                                                                  stack?: string
                                                                                                  timeoutMs: number
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpPoolResourceError.html b/docs/classes/_questdb_nodejs-client.QwpPoolResourceError.html index 14130606a..e1bf4493d 100644 --- a/docs/classes/_questdb_nodejs-client.QwpPoolResourceError.html +++ b/docs/classes/_questdb_nodejs-client.QwpPoolResourceError.html @@ -1,5 +1,5 @@ QwpPoolResourceError | QuestDB JavaScript Client - v5.0.0

                                                                                                  A pooled resource failed while a new slot was being connected.

                                                                                                  -

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpPoolResourceError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpPoolResourceError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  resource: "query" | "sender"
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  resource: "query" | "sender"
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpProtocolError.html b/docs/classes/_questdb_nodejs-client.QwpProtocolError.html index 133681046..ebbb04062 100644 --- a/docs/classes/_questdb_nodejs-client.QwpProtocolError.html +++ b/docs/classes/_questdb_nodejs-client.QwpProtocolError.html @@ -1,5 +1,5 @@ QwpProtocolError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Raised when a QWP payload is malformed, truncated, or unsupported.

                                                                                                  -

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpProtocolError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpProtocolError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpQueryLease.html b/docs/classes/_questdb_nodejs-client.QwpQueryLease.html index 1965c86aa..8ffc3bd1c 100644 --- a/docs/classes/_questdb_nodejs-client.QwpQueryLease.html +++ b/docs/classes/_questdb_nodejs-client.QwpQueryLease.html @@ -1,5 +1,5 @@ QwpQueryLease | QuestDB JavaScript Client - v5.0.0

                                                                                                  One exclusively borrowed egress session from a QwpClient query pool.

                                                                                                  -
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  Accessors

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  ready: Promise<QwpServerInfoMessage>

                                                                                                  Initial SERVER_INFO; use serverInfo for the current post-failover snapshot.

                                                                                                  -

                                                                                                  Accessors

                                                                                                  • get serverInfo(): QwpServerInfoMessage

                                                                                                    Cached immutable SERVER_INFO for this lease's currently bound endpoint. +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  ready: Promise<QwpServerInfoMessage>

                                                                                                  Initial SERVER_INFO; use serverInfo for the current post-failover snapshot.

                                                                                                  +

                                                                                                  Accessors

                                                                                                  Methods

                                                                                                  +

                                                                                                  Returns QwpServerInfoMessage

                                                                                                  Methods

                                                                                                  diff --git a/docs/classes/_questdb_nodejs-client.QwpReconnectExhaustedError.html b/docs/classes/_questdb_nodejs-client.QwpReconnectExhaustedError.html index 924180a66..94f24f8ad 100644 --- a/docs/classes/_questdb_nodejs-client.QwpReconnectExhaustedError.html +++ b/docs/classes/_questdb_nodejs-client.QwpReconnectExhaustedError.html @@ -2,7 +2,7 @@ reached reconnectMaxDurationMs, or an egress failover episode reached failoverMaxAttempts or failoverMaxDurationMs. A connected ingress session does not raise it, because its reconnects are not bounded.

                                                                                                  -

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpReconnectExhaustedError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpReconnectExhaustedError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  attempts: number
                                                                                                  cause: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  attempts: number
                                                                                                  cause: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpReplayDictionaryError.html b/docs/classes/_questdb_nodejs-client.QwpReplayDictionaryError.html index 45a9536b3..9d393067c 100644 --- a/docs/classes/_questdb_nodejs-client.QwpReplayDictionaryError.html +++ b/docs/classes/_questdb_nodejs-client.QwpReplayDictionaryError.html @@ -1,5 +1,5 @@ QwpReplayDictionaryError | QuestDB JavaScript Client - v5.0.0

                                                                                                  A replay store cannot preserve the dictionary required by delta frames.

                                                                                                  -

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpReplayDictionaryPersistenceError.html b/docs/classes/_questdb_nodejs-client.QwpReplayDictionaryPersistenceError.html index 63e08d65b..7b0b95561 100644 --- a/docs/classes/_questdb_nodejs-client.QwpReplayDictionaryPersistenceError.html +++ b/docs/classes/_questdb_nodejs-client.QwpReplayDictionaryPersistenceError.html @@ -1,7 +1,7 @@ QwpReplayDictionaryPersistenceError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpReplayDictionaryPersistenceError

                                                                                                  A replay dictionary sidecar rejected an append before its delta frame was published. The reconnecting transport has permanently switched to full, self-contained symbol encoding; retrying the logical batch is safe.

                                                                                                  -

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpReplayRejectedError.html b/docs/classes/_questdb_nodejs-client.QwpReplayRejectedError.html index 9fb3aba9b..415976f19 100644 --- a/docs/classes/_questdb_nodejs-client.QwpReplayRejectedError.html +++ b/docs/classes/_questdb_nodejs-client.QwpReplayRejectedError.html @@ -1,5 +1,5 @@ QwpReplayRejectedError | QuestDB JavaScript Client - v5.0.0

                                                                                                  A replayed ingress frame was rejected and remains in persistent storage.

                                                                                                  -

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpReplayRejectedError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpReplayRejectedError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  frameSequence: bigint
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  stack?: string
                                                                                                  status: number
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  frameSequence: bigint
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  stack?: string
                                                                                                  status: number
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpReplayStoreAppendTimeoutError.html b/docs/classes/_questdb_nodejs-client.QwpReplayStoreAppendTimeoutError.html index 8d6b14bc6..5a91b7166 100644 --- a/docs/classes/_questdb_nodejs-client.QwpReplayStoreAppendTimeoutError.html +++ b/docs/classes/_questdb_nodejs-client.QwpReplayStoreAppendTimeoutError.html @@ -1,4 +1,4 @@ -QwpReplayStoreAppendTimeoutError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpReplayStoreAppendTimeoutError

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  constructor +QwpReplayStoreAppendTimeoutError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpReplayStoreAppendTimeoutError

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause? maxBytes message @@ -10,14 +10,14 @@ stackTraceLimit

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  maxBytes: number
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  requiredBytes: number
                                                                                                  retryable: boolean = true

                                                                                                  Whether reconnecting and replaying can plausibly clear this failure.

                                                                                                  +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  maxBytes: number
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  requiredBytes: number
                                                                                                  retryable: boolean = true

                                                                                                  Whether reconnecting and replaying can plausibly clear this failure.

                                                                                                  Background maintenance and checkpoint faults are parked and cleared on the next successful batch, so a briefly full, read-only or descriptor-starved filesystem is retryable. Structural corruption and a slot lock taken over by another process are verdicts on the journal itself and are not. The ingress connection lives in the browser-safe layer and cannot reference these classes, so it reads this flag structurally.

                                                                                                  -
                                                                                                  stack?: string
                                                                                                  timeoutMs: number
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  stack?: string
                                                                                                  timeoutMs: number
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpReplayStoreBatchTooLargeError.html b/docs/classes/_questdb_nodejs-client.QwpReplayStoreBatchTooLargeError.html index b891892d1..2baddecaa 100644 --- a/docs/classes/_questdb_nodejs-client.QwpReplayStoreBatchTooLargeError.html +++ b/docs/classes/_questdb_nodejs-client.QwpReplayStoreBatchTooLargeError.html @@ -1,5 +1,5 @@ QwpReplayStoreBatchTooLargeError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpReplayStoreBatchTooLargeError

                                                                                                  One logical batch can never fit in an empty store-and-forward journal.

                                                                                                  -

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  frameCount: number
                                                                                                  maxBytes: number
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  requiredBytes: number
                                                                                                  retryable: false

                                                                                                  Whether reconnecting and replaying can plausibly clear this failure.

                                                                                                  +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  frameCount: number
                                                                                                  maxBytes: number
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  requiredBytes: number
                                                                                                  retryable: false

                                                                                                  Whether reconnecting and replaying can plausibly clear this failure.

                                                                                                  Background maintenance and checkpoint faults are parked and cleared on the next successful batch, so a briefly full, read-only or descriptor-starved filesystem is retryable. Structural corruption and a slot lock taken over by another process are verdicts on the journal itself and are not. The ingress connection lives in the browser-safe layer and cannot reference these classes, so it reads this flag structurally.

                                                                                                  -
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpReplayStoreCheckpointError.html b/docs/classes/_questdb_nodejs-client.QwpReplayStoreCheckpointError.html index 796d4e2d2..df96231f9 100644 --- a/docs/classes/_questdb_nodejs-client.QwpReplayStoreCheckpointError.html +++ b/docs/classes/_questdb_nodejs-client.QwpReplayStoreCheckpointError.html @@ -1,4 +1,4 @@ -QwpReplayStoreCheckpointError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpReplayStoreCheckpointError

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  constructor +QwpReplayStoreCheckpointError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpReplayStoreCheckpointError

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  directory: string
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  retryable: boolean = true

                                                                                                  Whether reconnecting and replaying can plausibly clear this failure.

                                                                                                  +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  directory: string
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  retryable: boolean = true

                                                                                                  Whether reconnecting and replaying can plausibly clear this failure.

                                                                                                  Background maintenance and checkpoint faults are parked and cleared on the next successful batch, so a briefly full, read-only or descriptor-starved filesystem is retryable. Structural corruption and a slot lock taken over by another process are verdicts on the journal itself and are not. The ingress connection lives in the browser-safe layer and cannot reference these classes, so it reads this flag structurally.

                                                                                                  -
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpReplayStoreCorruptionError.html b/docs/classes/_questdb_nodejs-client.QwpReplayStoreCorruptionError.html index cdc374efb..3fe3b11f5 100644 --- a/docs/classes/_questdb_nodejs-client.QwpReplayStoreCorruptionError.html +++ b/docs/classes/_questdb_nodejs-client.QwpReplayStoreCorruptionError.html @@ -1,5 +1,5 @@ QwpReplayStoreCorruptionError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpReplayStoreCorruptionError

                                                                                                  Durable journal bytes are structurally corrupt and cannot be replayed.

                                                                                                  -

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  retryable: false

                                                                                                  Corrupt bytes read the same way on every attempt.

                                                                                                  -
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  retryable: false

                                                                                                  Corrupt bytes read the same way on every attempt.

                                                                                                  +
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpReplayStoreError.html b/docs/classes/_questdb_nodejs-client.QwpReplayStoreError.html index d0dae55f5..e95ba0286 100644 --- a/docs/classes/_questdb_nodejs-client.QwpReplayStoreError.html +++ b/docs/classes/_questdb_nodejs-client.QwpReplayStoreError.html @@ -1,4 +1,4 @@ -QwpReplayStoreError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  constructor +QwpReplayStoreError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause? message name @@ -7,14 +7,14 @@ stackTraceLimit

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  retryable: boolean = true

                                                                                                  Whether reconnecting and replaying can plausibly clear this failure.

                                                                                                  +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  retryable: boolean = true

                                                                                                  Whether reconnecting and replaying can plausibly clear this failure.

                                                                                                  Background maintenance and checkpoint faults are parked and cleared on the next successful batch, so a briefly full, read-only or descriptor-starved filesystem is retryable. Structural corruption and a slot lock taken over by another process are verdicts on the journal itself and are not. The ingress connection lives in the browser-safe layer and cannot reference these classes, so it reads this flag structurally.

                                                                                                  -
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpReplayStoreFullError.html b/docs/classes/_questdb_nodejs-client.QwpReplayStoreFullError.html index eacd9041f..8613043ef 100644 --- a/docs/classes/_questdb_nodejs-client.QwpReplayStoreFullError.html +++ b/docs/classes/_questdb_nodejs-client.QwpReplayStoreFullError.html @@ -1,4 +1,4 @@ -QwpReplayStoreFullError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  constructor +QwpReplayStoreFullError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  maxBytes: number
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  requiredBytes: number
                                                                                                  retryable: boolean = true

                                                                                                  Whether reconnecting and replaying can plausibly clear this failure.

                                                                                                  +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  maxBytes: number
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  requiredBytes: number
                                                                                                  retryable: boolean = true

                                                                                                  Whether reconnecting and replaying can plausibly clear this failure.

                                                                                                  Background maintenance and checkpoint faults are parked and cleared on the next successful batch, so a briefly full, read-only or descriptor-starved filesystem is retryable. Structural corruption and a slot lock taken over by another process are verdicts on the journal itself and are not. The ingress connection lives in the browser-safe layer and cannot reference these classes, so it reads this flag structurally.

                                                                                                  -
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpReplayStoreLockLostError.html b/docs/classes/_questdb_nodejs-client.QwpReplayStoreLockLostError.html index 3cdb60e25..3562fc055 100644 --- a/docs/classes/_questdb_nodejs-client.QwpReplayStoreLockLostError.html +++ b/docs/classes/_questdb_nodejs-client.QwpReplayStoreLockLostError.html @@ -6,7 +6,7 @@ because a frame's sequence is derived from its position, an overwrite of the same width leaves a journal that reopens as intact with the new owner's frames gone. Failing the append is what keeps that loss impossible.

                                                                                                  -

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  directory: string
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  retryable: false

                                                                                                  Retrying is precisely what must not happen: the slot belongs to another +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  directory: string
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  retryable: false

                                                                                                  Retrying is precisely what must not happen: the slot belongs to another process now, so replaying out of it would race that owner's appends.

                                                                                                  -
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpReplayStoreLockUnprovableError.html b/docs/classes/_questdb_nodejs-client.QwpReplayStoreLockUnprovableError.html index 150e3a080..4df778ce1 100644 --- a/docs/classes/_questdb_nodejs-client.QwpReplayStoreLockUnprovableError.html +++ b/docs/classes/_questdb_nodejs-client.QwpReplayStoreLockUnprovableError.html @@ -9,7 +9,7 @@ ending the session. Collapsing them terminated a producer -- permanently, with the transport healthy throughout -- because the host process briefly ran out of descriptors, and blamed a second process that did not exist.

                                                                                                  -

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  directory: string
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  retryable: boolean = true

                                                                                                  Whether reconnecting and replaying can plausibly clear this failure.

                                                                                                  +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  directory: string
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  retryable: boolean = true

                                                                                                  Whether reconnecting and replaying can plausibly clear this failure.

                                                                                                  Background maintenance and checkpoint faults are parked and cleared on the next successful batch, so a briefly full, read-only or descriptor-starved filesystem is retryable. Structural corruption and a slot lock taken over by another process are verdicts on the journal itself and are not. The ingress connection lives in the browser-safe layer and cannot reference these classes, so it reads this flag structurally.

                                                                                                  -
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpReplayStoreLockedError.html b/docs/classes/_questdb_nodejs-client.QwpReplayStoreLockedError.html index 05fd87e33..1dfce2f1f 100644 --- a/docs/classes/_questdb_nodejs-client.QwpReplayStoreLockedError.html +++ b/docs/classes/_questdb_nodejs-client.QwpReplayStoreLockedError.html @@ -1,4 +1,4 @@ -QwpReplayStoreLockedError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  constructor +QwpReplayStoreLockedError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  directory: string
                                                                                                  holderPid?: number
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  retryable: boolean = true

                                                                                                  Whether reconnecting and replaying can plausibly clear this failure.

                                                                                                  +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  directory: string
                                                                                                  holderPid?: number
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  retryable: boolean = true

                                                                                                  Whether reconnecting and replaying can plausibly clear this failure.

                                                                                                  Background maintenance and checkpoint faults are parked and cleared on the next successful batch, so a briefly full, read-only or descriptor-starved filesystem is retryable. Structural corruption and a slot lock taken over by another process are verdicts on the journal itself and are not. The ingress connection lives in the browser-safe layer and cannot reference these classes, so it reads this flag structurally.

                                                                                                  -
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpReplayStoreQuarantinedError.html b/docs/classes/_questdb_nodejs-client.QwpReplayStoreQuarantinedError.html index 112f9f156..7af41130b 100644 --- a/docs/classes/_questdb_nodejs-client.QwpReplayStoreQuarantinedError.html +++ b/docs/classes/_questdb_nodejs-client.QwpReplayStoreQuarantinedError.html @@ -1,5 +1,5 @@ QwpReplayStoreQuarantinedError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpReplayStoreQuarantinedError

                                                                                                  A terminal replay slot was preserved under a quarantine pathname.

                                                                                                  -

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  directory: string
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  quarantineDirectory: string
                                                                                                  retryable: boolean = true

                                                                                                  Whether reconnecting and replaying can plausibly clear this failure.

                                                                                                  +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  directory: string
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  quarantineDirectory: string
                                                                                                  retryable: boolean = true

                                                                                                  Whether reconnecting and replaying can plausibly clear this failure.

                                                                                                  Background maintenance and checkpoint faults are parked and cleared on the next successful batch, so a briefly full, read-only or descriptor-starved filesystem is retryable. Structural corruption and a slot lock taken over by another process are verdicts on the journal itself and are not. The ingress connection lives in the browser-safe layer and cannot reference these classes, so it reads this flag structurally.

                                                                                                  -
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpReplayStoreSegmentTooLargeError.html b/docs/classes/_questdb_nodejs-client.QwpReplayStoreSegmentTooLargeError.html index fac355f19..f8320a9bc 100644 --- a/docs/classes/_questdb_nodejs-client.QwpReplayStoreSegmentTooLargeError.html +++ b/docs/classes/_questdb_nodejs-client.QwpReplayStoreSegmentTooLargeError.html @@ -1,4 +1,4 @@ -QwpReplayStoreSegmentTooLargeError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpReplayStoreSegmentTooLargeError

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  constructor +QwpReplayStoreSegmentTooLargeError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpReplayStoreSegmentTooLargeError

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  maxSegmentBytes: number
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  payloadBytes: number
                                                                                                  retryable: boolean = true

                                                                                                  Whether reconnecting and replaying can plausibly clear this failure.

                                                                                                  +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  maxSegmentBytes: number
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  payloadBytes: number
                                                                                                  retryable: boolean = true

                                                                                                  Whether reconnecting and replaying can plausibly clear this failure.

                                                                                                  Background maintenance and checkpoint faults are parked and cleared on the next successful batch, so a briefly full, read-only or descriptor-starved filesystem is retryable. Structural corruption and a slot lock taken over by another process are verdicts on the journal itself and are not. The ingress connection lives in the browser-safe layer and cannot reference these classes, so it reads this flag structurally.

                                                                                                  -
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpResultBatch.html b/docs/classes/_questdb_nodejs-client.QwpResultBatch.html index b635d2050..b401b572f 100644 --- a/docs/classes/_questdb_nodejs-client.QwpResultBatch.html +++ b/docs/classes/_questdb_nodejs-client.QwpResultBatch.html @@ -1,4 +1,4 @@ -QwpResultBatch | QuestDB JavaScript Client - v5.0.0

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  constructor +QwpResultBatch | QuestDB JavaScript Client - v5.0.0
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  batchSequence: bigint
                                                                                                  columns: readonly QwpResultColumn[]
                                                                                                  requestId: bigint
                                                                                                  rowCount: number
                                                                                                  tableName: string

                                                                                                  Methods

                                                                                                  +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  batchSequence: bigint
                                                                                                  columns: readonly QwpResultColumn[]
                                                                                                  requestId: bigint
                                                                                                  rowCount: number
                                                                                                  tableName: string

                                                                                                  Methods

                                                                                                  diff --git a/docs/classes/_questdb_nodejs-client.QwpResultBatchDecoder.html b/docs/classes/_questdb_nodejs-client.QwpResultBatchDecoder.html index ecc6646c6..f4d0299f6 100644 --- a/docs/classes/_questdb_nodejs-client.QwpResultBatchDecoder.html +++ b/docs/classes/_questdb_nodejs-client.QwpResultBatchDecoder.html @@ -1,5 +1,5 @@ QwpResultBatchDecoder | QuestDB JavaScript Client - v5.0.0

                                                                                                  Stateful decoder for connection-scoped QWP result batches.

                                                                                                  -
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  Methods

                                                                                                  absorbDictionary applyCacheReset @@ -17,7 +17,7 @@ only by QWP_MAX_CELLS_PER_BATCH times the pool size, which the cap's own comment puts at roughly half a gigabyte per slot.

                                                                                                  Left undefined the batch is bounded by the cell cap alone, as before.

                                                                                                  -

                                                                                                  Methods

                                                                                                  Methods

                                                                                                  • Applies the delta symbol dictionary carried by a batch whose rows are being discarded, without touching any per-query state.

                                                                                                    The dictionary is connection-scoped and cumulative: the server numbers entries from where the previous batch left off, on the connection rather @@ -31,9 +31,9 @@ asked for.

                                                                                                    The dictionary sits at the front of the body, so this reads only as far as it needs to and never decodes the rows it is throwing away.

                                                                                                    -

                                                                                                    Parameters

                                                                                                    Returns void

                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns QwpResultBatchView

                                                                                                  diff --git a/docs/classes/_questdb_nodejs-client.QwpResultBatchView.html b/docs/classes/_questdb_nodejs-client.QwpResultBatchView.html index 64cd84e5f..2533a358b 100644 --- a/docs/classes/_questdb_nodejs-client.QwpResultBatchView.html +++ b/docs/classes/_questdb_nodejs-client.QwpResultBatchView.html @@ -1,7 +1,7 @@ QwpResultBatchView | QuestDB JavaScript Client - v5.0.0

                                                                                                  Batch-owned reusable view delivered by QwpEgressSession.queryViews(). Access is invalid after the callback returns. materialize() creates an independently owned QwpResultBatch when retention is required.

                                                                                                  -
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Accessors

                                                                                                  Constructors

                                                                                                  Accessors

                                                                                                  Methods

                                                                                                  • Visits rows in index order with one re-pointed row view. The callback is +

                                                                                                  Constructors

                                                                                                  Accessors

                                                                                                  Methods

                                                                                                  • Internal

                                                                                                    Parameters

                                                                                                    • requestId: bigint
                                                                                                    • batchSequence: bigint
                                                                                                    • tableName: string
                                                                                                    • rowCount: number
                                                                                                    • layouts: QwpResultColumnViewLayout[]

                                                                                                    Returns this

                                                                                                  • Internal

                                                                                                    Parameters

                                                                                                    • requestId: bigint
                                                                                                    • batchSequence: bigint
                                                                                                    • tableName: string
                                                                                                    • rowCount: number
                                                                                                    • layouts: QwpResultColumnViewLayout[]

                                                                                                    Returns this

                                                                                                  +

                                                                                                  Parameters

                                                                                                  • rowIndex: number

                                                                                                  Returns QwpResultRowView

                                                                                                  diff --git a/docs/classes/_questdb_nodejs-client.QwpResultColumnView.html b/docs/classes/_questdb_nodejs-client.QwpResultColumnView.html index aefa55c6d..b5e70cfbd 100644 --- a/docs/classes/_questdb_nodejs-client.QwpResultColumnView.html +++ b/docs/classes/_questdb_nodejs-client.QwpResultColumnView.html @@ -2,7 +2,7 @@

                                                                                                  The view and every byte slice returned from it are valid only while the surrounding queryViews() callback is running. Copy data that must outlive the callback.

                                                                                                  -
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  Accessors

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  columnIndex: number

                                                                                                  Accessors

                                                                                                  Methods

                                                                                                  • Raw packed non-null values. Fixed-width values use QWP little-endian +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  columnIndex: number

                                                                                                  Accessors

                                                                                                  Methods

                                                                                                  • Raw packed non-null values. Fixed-width values use QWP little-endian layout; booleans are bit-packed and variable-width columns contain their uint32 offset table. SYMBOL returns undefined because IDs are varints.

                                                                                                    -

                                                                                                    Returns Uint8Array<ArrayBufferLike>

                                                                                                  +

                                                                                                  Returns Uint8Array<ArrayBufferLike>

                                                                                                  diff --git a/docs/classes/_questdb_nodejs-client.QwpResultRowView.html b/docs/classes/_questdb_nodejs-client.QwpResultRowView.html index 45c367236..8ca757682 100644 --- a/docs/classes/_questdb_nodejs-client.QwpResultRowView.html +++ b/docs/classes/_questdb_nodejs-client.QwpResultRowView.html @@ -3,7 +3,7 @@ while the surrounding queryViews() callback is running, and must not be retained across forEachRow() iterations. Byte and array views returned by its accessors remain zero-copy and have the same lifetime.

                                                                                                  -
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Accessors

                                                                                                  Methods

                                                                                                  get @@ -29,10 +29,10 @@ getUuidLow isNull of -

                                                                                                  Constructors

                                                                                                  Accessors

                                                                                                  Methods

                                                                                                  +

                                                                                                  Constructors

                                                                                                  Accessors

                                                                                                  Methods

                                                                                                  diff --git a/docs/classes/_questdb_nodejs-client.QwpRoleMismatchError.html b/docs/classes/_questdb_nodejs-client.QwpRoleMismatchError.html index 2312543f3..f969c9f8b 100644 --- a/docs/classes/_questdb_nodejs-client.QwpRoleMismatchError.html +++ b/docs/classes/_questdb_nodejs-client.QwpRoleMismatchError.html @@ -1,5 +1,5 @@ QwpRoleMismatchError | QuestDB JavaScript Client - v5.0.0

                                                                                                  A connected endpoint advertised a role that does not satisfy target.

                                                                                                  -

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  closeCode?: number
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  retryable?: boolean
                                                                                                  serverRole?: string
                                                                                                  serverZone?: string
                                                                                                  stack?: string
                                                                                                  statusCode?: number
                                                                                                  statusMessage?: string
                                                                                                  target: QwpTarget
                                                                                                  timeoutPhase?: QwpUpgradeTimeoutPhase

                                                                                                  Node opening phase that exceeded its deadline.

                                                                                                  -
                                                                                                  tryNextEndpoint?: boolean
                                                                                                  url?: string | URL
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  closeCode?: number
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  retryable?: boolean
                                                                                                  serverRole?: string
                                                                                                  serverZone?: string
                                                                                                  stack?: string
                                                                                                  statusCode?: number
                                                                                                  statusMessage?: string
                                                                                                  target: QwpTarget
                                                                                                  timeoutPhase?: QwpUpgradeTimeoutPhase

                                                                                                  Node opening phase that exceeded its deadline.

                                                                                                  +
                                                                                                  tryNextEndpoint?: boolean
                                                                                                  url?: string | URL
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes @@ -29,8 +29,8 @@

                                                                                                  If set to a non-number value, or set to a negative number, stack traces will not capture any frames.

                                                                                                  Accessors

                                                                                                  Methods

                                                                                                  • Creates a .stack property on targetObject, which when accessed returns +

                                                                                                    Returns boolean

                                                                                                  Methods

                                                                                                  diff --git a/docs/classes/_questdb_nodejs-client.QwpSenderCloseTimeoutError.html b/docs/classes/_questdb_nodejs-client.QwpSenderCloseTimeoutError.html index 6544e4c81..52d27e82d 100644 --- a/docs/classes/_questdb_nodejs-client.QwpSenderCloseTimeoutError.html +++ b/docs/classes/_questdb_nodejs-client.QwpSenderCloseTimeoutError.html @@ -1,5 +1,5 @@ QwpSenderCloseTimeoutError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpSenderCloseTimeoutError

                                                                                                  close() could not publish and acknowledge all committed ingress frames.

                                                                                                  -

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpSenderCloseTimeoutError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpSenderCloseTimeoutError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  ackedSequence: bigint
                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  stack?: string
                                                                                                  targetSequence: bigint
                                                                                                  timeoutMs: number
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  ackedSequence: bigint
                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  stack?: string
                                                                                                  targetSequence: bigint
                                                                                                  timeoutMs: number
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpSymbolDictionary.html b/docs/classes/_questdb_nodejs-client.QwpSymbolDictionary.html index 96017a320..12dc8c950 100644 --- a/docs/classes/_questdb_nodejs-client.QwpSymbolDictionary.html +++ b/docs/classes/_questdb_nodejs-client.QwpSymbolDictionary.html @@ -1,5 +1,5 @@ QwpSymbolDictionary | QuestDB JavaScript Client - v5.0.0

                                                                                                  Connection-scoped QWP symbol dictionary. IDs are dense from zero.

                                                                                                  -
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Accessors

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Accessors

                                                                                                  Methods

                                                                                                  +

                                                                                                  Constructors

                                                                                                  Accessors

                                                                                                  Methods

                                                                                                  diff --git a/docs/classes/_questdb_nodejs-client.QwpTableBuffer.html b/docs/classes/_questdb_nodejs-client.QwpTableBuffer.html index 2a05ba1ce..d09688cf8 100644 --- a/docs/classes/_questdb_nodejs-client.QwpTableBuffer.html +++ b/docs/classes/_questdb_nodejs-client.QwpTableBuffer.html @@ -1,5 +1,5 @@ QwpTableBuffer | QuestDB JavaScript Client - v5.0.0

                                                                                                  Mutable columnar staging area for one QWP ingress table.

                                                                                                  -
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  Accessors

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  name: string

                                                                                                  Accessors

                                                                                                  Methods

                                                                                                  • Returns null when the current row already contains this column. The first +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  name: string

                                                                                                  Accessors

                                                                                                  Methods

                                                                                                  • Truncates every column back to the last completed row.

                                                                                                    Values are truncated to the committed watermark rather than popped once per non-null marker, because getOrCreateColumn() reserves the current cell as non-null before the caller appends its value. A setter that threw @@ -22,7 +22,7 @@ then deleted the previous completed row's value instead. The table kept that row's non-null marker, so encodeQwpIngressFrame() rejected the whole buffer with a value/marker count mismatch.

                                                                                                    -

                                                                                                    Returns void

                                                                                                  +

                                                                                                  Parameters

                                                                                                  • start: number
                                                                                                  • end: number

                                                                                                  Returns QwpTableBuffer

                                                                                                  diff --git a/docs/classes/_questdb_nodejs-client.QwpTableWriter.html b/docs/classes/_questdb_nodejs-client.QwpTableWriter.html index 2984eea22..23b755905 100644 --- a/docs/classes/_questdb_nodejs-client.QwpTableWriter.html +++ b/docs/classes/_questdb_nodejs-client.QwpTableWriter.html @@ -1,7 +1,7 @@ QwpTableWriter | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpTableWriter<Schema>

                                                                                                  A reusable table-bound writer compiled from a QWP schema.

                                                                                                  -

                                                                                                  Type Parameters

                                                                                                  Index

                                                                                                  Properties

                                                                                                  Type Parameters

                                                                                                  Index

                                                                                                  Properties

                                                                                                  Methods

                                                                                                  Properties

                                                                                                  tableName: string

                                                                                                  Methods

                                                                                                  +

                                                                                                  Properties

                                                                                                  tableName: string

                                                                                                  Methods

                                                                                                  diff --git a/docs/classes/_questdb_nodejs-client.QwpUdpDatagramTooLargeError.html b/docs/classes/_questdb_nodejs-client.QwpUdpDatagramTooLargeError.html index da82c41ce..465bd6935 100644 --- a/docs/classes/_questdb_nodejs-client.QwpUdpDatagramTooLargeError.html +++ b/docs/classes/_questdb_nodejs-client.QwpUdpDatagramTooLargeError.html @@ -1,5 +1,5 @@ QwpUdpDatagramTooLargeError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpUdpDatagramTooLargeError

                                                                                                  A single encoded row cannot fit into the configured UDP datagram.

                                                                                                  -

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpUdpDatagramTooLargeError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy

                                                                                                  • Error
                                                                                                    • QwpUdpDatagramTooLargeError
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  datagramSize: number
                                                                                                  maxDatagramSize: number
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  row: number
                                                                                                  stack?: string
                                                                                                  tableName: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  datagramSize: number
                                                                                                  maxDatagramSize: number
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  row: number
                                                                                                  stack?: string
                                                                                                  tableName: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpUnrecoverableReplayDictionaryError.html b/docs/classes/_questdb_nodejs-client.QwpUnrecoverableReplayDictionaryError.html index f5fe826dd..a957d56b3 100644 --- a/docs/classes/_questdb_nodejs-client.QwpUnrecoverableReplayDictionaryError.html +++ b/docs/classes/_questdb_nodejs-client.QwpUnrecoverableReplayDictionaryError.html @@ -1,6 +1,6 @@ QwpUnrecoverableReplayDictionaryError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Class QwpUnrecoverableReplayDictionaryError

                                                                                                  Recovered delta frames depend on symbol IDs that neither the durable dictionary prefix nor the surviving frames can reconstruct.

                                                                                                  -

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  stack?: string
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/docs/classes/_questdb_nodejs-client.QwpUpgradeError.html b/docs/classes/_questdb_nodejs-client.QwpUpgradeError.html index 6d46ffc88..82d683271 100644 --- a/docs/classes/_questdb_nodejs-client.QwpUpgradeError.html +++ b/docs/classes/_questdb_nodejs-client.QwpUpgradeError.html @@ -1,5 +1,5 @@ QwpUpgradeError | QuestDB JavaScript Client - v5.0.0

                                                                                                  A failure while establishing or validating a QWP WebSocket upgrade.

                                                                                                  -

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  closeCode?: number
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  retryable?: boolean
                                                                                                  serverRole?: string
                                                                                                  serverZone?: string
                                                                                                  stack?: string
                                                                                                  statusCode?: number
                                                                                                  statusMessage?: string
                                                                                                  timeoutPhase?: QwpUpgradeTimeoutPhase

                                                                                                  Node opening phase that exceeded its deadline.

                                                                                                  -
                                                                                                  tryNextEndpoint?: boolean
                                                                                                  url?: string | URL
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames +

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  closeCode?: number
                                                                                                  message: string
                                                                                                  name: string
                                                                                                  retryable?: boolean
                                                                                                  serverRole?: string
                                                                                                  serverZone?: string
                                                                                                  stack?: string
                                                                                                  statusCode?: number
                                                                                                  statusMessage?: string
                                                                                                  timeoutPhase?: QwpUpgradeTimeoutPhase

                                                                                                  Node opening phase that exceeded its deadline.

                                                                                                  +
                                                                                                  tryNextEndpoint?: boolean
                                                                                                  url?: string | URL
                                                                                                  stackTraceLimit: number

                                                                                                  The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

                                                                                                  The default value is 10 but may be set to any valid JavaScript number. Changes @@ -28,8 +28,8 @@

                                                                                                  If set to a non-number value, or set to a negative number, stack traces will not capture any frames.

                                                                                                  Accessors

                                                                                                  Methods

                                                                                                  Methods

                                                                                                  • Closes the row after writing the designated timestamp. On ILP, a row is discarded -- its columns and its table selection alike -- only when it can never be closed, which means it carries no symbol and no column; rows completed earlier remain staged, and the next row starts from @@ -160,7 +160,7 @@

                                                                                                    If timestamp is not an integer or BigInt.

                                                                                                    If unit is 'ns' but timestamp is not a BigInt.

                                                                                                    If unit is not one of 'ns', 'us', or 'ms'.

                                                                                                    -
                                                                                                  • Closes the row without writing a designated timestamp. Designated timestamp will be populated by the server on this record. On ILP, a row is discarded -- its columns and its table selection alike -- only when it can never be closed, which means it carries no symbol and no @@ -174,24 +174,24 @@ rows must retain and resubmit them. QWP retains successfully closed rows for its retry and replay path.

                                                                                                    Returns Promise<void>

                                                                                                    Resolves after the row is closed and any triggered auto-flush completes.

                                                                                                    -
                                                                                                  • Writes a boolean column with its value into the buffer of the sender.
                                                                                                    Use it to insert into BOOLEAN columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name.

                                                                                                    • value: boolean

                                                                                                      Column value, accepts only boolean values. A null or undefined value omits the column entirely (stored as NULL).

                                                                                                    Returns Sender

                                                                                                    Returns with a reference to this sender.

                                                                                                    -
                                                                                                  • Discards the QWP row in progress, including its table selection, while retaining rows that were already completed. The next row starts from table again.

                                                                                                    Returns Sender

                                                                                                    Returns this sender.

                                                                                                    If this sender uses an ILP transport.

                                                                                                    -
                                                                                                  • Closes the connection to the database. QWP publishes completed rows and performs a bounded acknowledgement drain first. Other transports retain their legacy behavior and require an explicit flush().

                                                                                                    -

                                                                                                    Returns Promise<void>

                                                                                                  • Establishes the transport connection for TCP, TCPS, WS, WSS, and UDP. HTTP and HTTPS connect per request and reject this call because no explicit connection step is required.

                                                                                                    Returns Promise<boolean>

                                                                                                    Resolves to true if the client is connected.

                                                                                                    -
                                                                                                  • Writes a decimal value into the buffer using the binary format.

                                                                                                    +
                                                                                                  • Writes a decimal value into the buffer using the binary format.

                                                                                                    Use it to insert into DECIMAL database columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name.

                                                                                                    • unscaled: bigint | Int8Array<ArrayBufferLike>

                                                                                                      The unscaled value of the decimal in two's @@ -210,7 +210,7 @@

                                                                                                    • scale is not an integer between 0 and 76
                                                                                                    • unscaled value contains invalid bytes
                                                                                                    -
                                                                                                  • Writes a decimal value into the buffer using the text format.

                                                                                                    Use it to insert into DECIMAL database columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name.

                                                                                                    • value: string | number

                                                                                                      Column value, accepts only number/string values. A null or undefined value omits the column entirely when decimals are supported; ILP protocol v1/v2 reject the call for every value.

                                                                                                      @@ -219,18 +219,18 @@
                                                                                                      • string value is not a valid decimal representation
                                                                                                      -
                                                                                                  • Writes a 64-bit floating point value into the buffer of the sender.
                                                                                                    Use it to insert into DOUBLE or FLOAT database columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name.

                                                                                                    • value: number

                                                                                                      Column value, accepts only number values. A null or undefined value omits the column entirely (stored as NULL).

                                                                                                    Returns Sender

                                                                                                    Returns with a reference to this sender.

                                                                                                    -
                                                                                                  • Sends the content of the sender's buffer to the database and compacts the buffer. If the last row is not finished it stays in the sender's buffer.

                                                                                                    Returns Promise<boolean>

                                                                                                    Resolves to true when there was data in the buffer to send, and it was sent successfully.

                                                                                                    -
                                                                                                  • Flushes pending rows and returns the highest QWP frame sequence published by this call, or -1n when it published nothing. Non-QWP transports flush normally and return -1n because they do not expose frame sequences.

                                                                                                    -

                                                                                                    Returns Promise<bigint>

                                                                                                  • Flushes pending rows and, for QWP, waits until the server has acknowledged +

                                                                                                    Returns Promise<bigint>

                                                                                                  • Flushes pending rows and, for QWP, waits until the server has acknowledged every frame this sender has published, including the frames a store-and-forward journal recovered once the sender has connected. Resolves false when the QWP ACK watermark makes no progress for @@ -239,30 +239,30 @@ timeoutMs of zero or less flushes and then checks without waiting. Non-QWP transports flush normally and resolve true: they expose no ACK watermark to wait on.

                                                                                                    -

                                                                                                    Parameters

                                                                                                    • OptionaltimeoutMs: number

                                                                                                    Returns Promise<boolean>

                                                                                                  • Writes a 64-bit signed integer into the buffer of the sender.
                                                                                                    Use it to insert into LONG, INT, SHORT and BYTE columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name.

                                                                                                    • value: number | bigint

                                                                                                      Column value, accepts integer or BigInt values. LONG is a 64-bit signed integer, which is wider than the safe integer range of number, so pass a BigInt beyond Number.MAX_SAFE_INTEGER to avoid losing precision. A null or undefined value omits the column entirely (stored as NULL).

                                                                                                    Returns Sender

                                                                                                    Returns with a reference to this sender.

                                                                                                    Error if the value is not an integer or a BigInt

                                                                                                    RangeError if the value does not fit into a 64-bit signed integer

                                                                                                    -

                                                                                                  Returns Sender

                                                                                                  Returns with a reference to this buffer.

                                                                                                  If value is not an integer or BigInt.

                                                                                                  If unit is 'ns' but value is not a BigInt.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/classes/_questdb_nodejs-client.SenderBufferV1.html b/docs/classes/_questdb_nodejs-client.SenderBufferV1.html index c1f2f0bc5..a7c75ae0a 100644 --- a/docs/classes/_questdb_nodejs-client.SenderBufferV1.html +++ b/docs/classes/_questdb_nodejs-client.SenderBufferV1.html @@ -1,6 +1,6 @@ SenderBufferV1 | QuestDB JavaScript Client - v5.0.0

                                                                                                  Buffer implementation for protocol version 1.
                                                                                                  Sends floating point numbers in their text form.

                                                                                                  -

                                                                                                  Hierarchy

                                                                                                  • SenderBufferBase
                                                                                                    • SenderBufferV1
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy

                                                                                                  • SenderBufferBase
                                                                                                    • SenderBufferV1
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  buffer log position @@ -25,13 +25,13 @@

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  buffer: Buffer
                                                                                                  log: Logger
                                                                                                  position: number

                                                                                                  Methods

                                                                                                  • Array columns are not supported in protocol v1.
                                                                                                    +

                                                                                                  Returns SenderBufferV1

                                                                                                  Properties

                                                                                                  buffer: Buffer
                                                                                                  log: Logger
                                                                                                  position: number

                                                                                                  Methods

                                                                                                  • Array columns are not supported in protocol v1.
                                                                                                    The capability check applies even when the value is null or undefined.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name.

                                                                                                    • value: unknown[]

                                                                                                      Array values.

                                                                                                    Returns SenderBuffer

                                                                                                    Returns with a reference to this buffer.

                                                                                                    Error indicating arrays are not supported in v1

                                                                                                    -
                                                                                                  • Closes the row after writing the designated timestamp into the buffer.

                                                                                                    Precision rules:

                                                                                                    • Protocol v2 and higher: @@ -61,19 +61,19 @@

                                                                                                    If the row cannot be closed within max_buf_size. The partial close is rewound, so the same call succeeds once a flush() frees space.

                                                                                                    -
                                                                                                  • Closes the row without writing designated timestamp into the buffer.
                                                                                                    Designated timestamp will be populated by the server on this record.

                                                                                                    -

                                                                                                    Returns void

                                                                                                  • Writes a boolean column with its value into the buffer.
                                                                                                    Use it to insert into BOOLEAN columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name.

                                                                                                    • value: boolean

                                                                                                      Column value, accepts only boolean values. A null or undefined value omits the column entirely (stored as NULL).

                                                                                                    Returns SenderBuffer

                                                                                                    Returns with a reference to this buffer.

                                                                                                    -
                                                                                                  • Checks if the buffer has sufficient capacity for additional data and resizes if needed.

                                                                                                    +
                                                                                                  • Checks if the buffer has sufficient capacity for additional data and resizes if needed.

                                                                                                    Parameters

                                                                                                    • data: string[]

                                                                                                      Array of strings to calculate the required capacity for

                                                                                                    • base: number = 0

                                                                                                      Base number of bytes to add to the calculation

                                                                                                      -

                                                                                                    Returns void

                                                                                                  • Returns the current position of the buffer.
                                                                                                    +

                                                                                                  Returns void

                                                                                                  • Returns the current position of the buffer.
                                                                                                    New data will be written into the buffer starting from this position.

                                                                                                    -

                                                                                                    Returns number

                                                                                                  • Writes a decimal value into the buffer using its binary format.

                                                                                                    +

                                                                                                    Returns number

                                                                                                  • Writes a decimal value into the buffer using its binary format.

                                                                                                    Use it to insert into DECIMAL database columns.

                                                                                                    Decimals are not supported by protocol v1/v2, so this base implementation rejects the call even when the value is null or undefined. Protocol v3 @@ -86,7 +86,7 @@

                                                                                                    If scale is not an integer between 0 and 76. Scale validation runs even when unscaled is null or undefined.

                                                                                                    Indicating decimals are not supported in protocol v1/v2.

                                                                                                    -
                                                                                                  • Writes a decimal value into the buffer using its text format.

                                                                                                    Use it to insert into DECIMAL database columns.

                                                                                                    Decimals are not supported by protocol v1/v2, so this base implementation rejects the call even when the value is null or undefined. Protocol v3 @@ -96,35 +96,35 @@ write.

                                                                                                  Returns SenderBuffer

                                                                                                  Returns with a reference to this buffer.

                                                                                                  Indicating decimals are not supported in protocol v1/v2.

                                                                                                  -
                                                                                                  • Writes a 64-bit floating point value into the buffer using v1 serialization (text format).
                                                                                                    Use it to insert into DOUBLE or FLOAT database columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name.

                                                                                                    • value: number

                                                                                                      Column value, accepts only number values. A null or undefined value omits the column entirely (stored as NULL).

                                                                                                    Returns SenderBuffer

                                                                                                    Returns with a reference to this sender.

                                                                                                    -
                                                                                                  • Writes a 64-bit signed integer into the buffer.
                                                                                                    Use it to insert into LONG, INT, SHORT and BYTE columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name.

                                                                                                    • value: number | bigint

                                                                                                      Column value, accepts integer or BigInt values. LONG is a 64-bit signed integer, which is wider than the safe integer range of number, so pass a BigInt beyond Number.MAX_SAFE_INTEGER to avoid losing precision. A null or undefined value omits the column entirely (stored as NULL).

                                                                                                    Returns SenderBuffer

                                                                                                    Returns with a reference to this buffer.

                                                                                                    Error if the value is not an integer or a BigInt

                                                                                                    RangeError if the value does not fit into a 64-bit signed integer

                                                                                                    -
                                                                                                  • Writes a string column with its value into the buffer.
                                                                                                    Use it to insert into VARCHAR and STRING columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name.

                                                                                                    • value: string

                                                                                                      Column value, accepts only string values. A null or undefined value omits the column entirely (stored as NULL).

                                                                                                    Returns SenderBuffer

                                                                                                    Returns with a reference to this buffer.

                                                                                                    -
                                                                                                  • Writes a symbol name and value into the buffer.
                                                                                                    Use it to insert into SYMBOL columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Symbol name.

                                                                                                    • value: unknown

                                                                                                      Symbol value, toString() is called to extract the actual symbol value from the parameter. A null or undefined value omits the symbol entirely (stored as NULL).

                                                                                                    Returns SenderBuffer

                                                                                                    Returns with a reference to this buffer.

                                                                                                    -
                                                                                                  • Writes a timestamp column and its value into the buffer.

                                                                                                    Use this method to insert data into TIMESTAMP or TIMESTAMP_NS columns.

                                                                                                    Precision rules:

                                                                                                      @@ -148,10 +148,10 @@ even when value is null or undefined).

                                                                                                    If value is not an integer or BigInt.

                                                                                                    If unit is 'ns' but value is not a BigInt.

                                                                                                    -
                                                                                                  • Parameters

                                                                                                    • pos: number = ...

                                                                                                    Returns Buffer

                                                                                                    Returns a cropped buffer ready to send to the server, or null if there is nothing to send.
                                                                                                    +

                                                                                                  • Parameters

                                                                                                    • pos: number = ...

                                                                                                    Returns Buffer

                                                                                                    Returns a cropped buffer ready to send to the server, or null if there is nothing to send.
                                                                                                    The returned buffer is a copy of this buffer. It also compacts the buffer.

                                                                                                    -
                                                                                                  • Parameters

                                                                                                    • pos: number = ...

                                                                                                    Returns Buffer

                                                                                                    Returns a cropped buffer, or null if there is nothing to send.
                                                                                                    +

                                                                                                  • Parameters

                                                                                                    • pos: number = ...

                                                                                                    Returns Buffer

                                                                                                    Returns a cropped buffer, or null if there is nothing to send.
                                                                                                    The returned buffer is backed by this buffer instance, meaning the view can change as the buffer is mutated. Used only in tests to assert the buffer's content.

                                                                                                    -
                                                                                                  +
                                                                                                  diff --git a/docs/classes/_questdb_nodejs-client.SenderBufferV2.html b/docs/classes/_questdb_nodejs-client.SenderBufferV2.html index 57363d9e1..d332d9c49 100644 --- a/docs/classes/_questdb_nodejs-client.SenderBufferV2.html +++ b/docs/classes/_questdb_nodejs-client.SenderBufferV2.html @@ -1,6 +1,6 @@ SenderBufferV2 | QuestDB JavaScript Client - v5.0.0

                                                                                                  Buffer implementation for protocol version 2.
                                                                                                  Sends floating point numbers in binary form, and provides support for arrays.

                                                                                                  -

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  buffer log position @@ -25,7 +25,7 @@

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  buffer: Buffer
                                                                                                  log: Logger
                                                                                                  position: number

                                                                                                  Methods

                                                                                                  • Write an array column with its values into the buffer using v2 format.

                                                                                                    +

                                                                                                  Returns SenderBufferV2

                                                                                                  Properties

                                                                                                  buffer: Buffer
                                                                                                  log: Logger
                                                                                                  position: number

                                                                                                  Methods

                                                                                                  • Write an array column with its values into the buffer using v2 format.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name

                                                                                                    • value: unknown[]

                                                                                                      Array values to write (currently supports double arrays). A null or undefined value omits the column entirely, storing NULL.

                                                                                                    Returns SenderBuffer

                                                                                                    Returns with a reference to this buffer.

                                                                                                    @@ -35,7 +35,7 @@
                                                                                                  • or the shape of the array is irregular: the length of sub-arrays are different
                                                                                                  • or the array is not homogeneous: its elements are not all the same type
                                                                                                  -
                                                                                                  • Closes the row after writing the designated timestamp into the buffer.

                                                                                                    Precision rules:

                                                                                                    • Protocol v2 and higher: @@ -65,19 +65,19 @@

                                                                                                    If the row cannot be closed within max_buf_size. The partial close is rewound, so the same call succeeds once a flush() frees space.

                                                                                                    -
                                                                                                  • Closes the row without writing designated timestamp into the buffer.
                                                                                                    Designated timestamp will be populated by the server on this record.

                                                                                                    -

                                                                                                    Returns void

                                                                                                  • Writes a boolean column with its value into the buffer.
                                                                                                    Use it to insert into BOOLEAN columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name.

                                                                                                    • value: boolean

                                                                                                      Column value, accepts only boolean values. A null or undefined value omits the column entirely (stored as NULL).

                                                                                                    Returns SenderBuffer

                                                                                                    Returns with a reference to this buffer.

                                                                                                    -
                                                                                                  • Checks if the buffer has sufficient capacity for additional data and resizes if needed.

                                                                                                    +
                                                                                                  • Checks if the buffer has sufficient capacity for additional data and resizes if needed.

                                                                                                    Parameters

                                                                                                    • data: string[]

                                                                                                      Array of strings to calculate the required capacity for

                                                                                                    • base: number = 0

                                                                                                      Base number of bytes to add to the calculation

                                                                                                      -

                                                                                                    Returns void

                                                                                                  • Returns the current position of the buffer.
                                                                                                    +

                                                                                                  Returns void

                                                                                                  • Returns the current position of the buffer.
                                                                                                    New data will be written into the buffer starting from this position.

                                                                                                    -

                                                                                                    Returns number

                                                                                                  • Writes a decimal value into the buffer using its binary format.

                                                                                                    +

                                                                                                    Returns number

                                                                                                  • Writes a decimal value into the buffer using its binary format.

                                                                                                    Use it to insert into DECIMAL database columns.

                                                                                                    Decimals are not supported by protocol v1/v2, so this base implementation rejects the call even when the value is null or undefined. Protocol v3 @@ -90,7 +90,7 @@

                                                                                                    If scale is not an integer between 0 and 76. Scale validation runs even when unscaled is null or undefined.

                                                                                                    Indicating decimals are not supported in protocol v1/v2.

                                                                                                    -
                                                                                                  • Writes a decimal value into the buffer using its text format.

                                                                                                    Use it to insert into DECIMAL database columns.

                                                                                                    Decimals are not supported by protocol v1/v2, so this base implementation rejects the call even when the value is null or undefined. Protocol v3 @@ -100,35 +100,35 @@ write.

                                                                                                  Returns SenderBuffer

                                                                                                  Returns with a reference to this buffer.

                                                                                                  Indicating decimals are not supported in protocol v1/v2.

                                                                                                  -
                                                                                                  • Writes a 64-bit floating point value into the buffer using v2 serialization (binary format).
                                                                                                    Use it to insert into DOUBLE or FLOAT database columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name.

                                                                                                    • value: number

                                                                                                      Column value, accepts only number values. A null or undefined value omits the column entirely (stored as NULL).

                                                                                                    Returns SenderBuffer

                                                                                                    Returns with a reference to this buffer.

                                                                                                    -
                                                                                                  • Writes a 64-bit signed integer into the buffer.
                                                                                                    Use it to insert into LONG, INT, SHORT and BYTE columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name.

                                                                                                    • value: number | bigint

                                                                                                      Column value, accepts integer or BigInt values. LONG is a 64-bit signed integer, which is wider than the safe integer range of number, so pass a BigInt beyond Number.MAX_SAFE_INTEGER to avoid losing precision. A null or undefined value omits the column entirely (stored as NULL).

                                                                                                    Returns SenderBuffer

                                                                                                    Returns with a reference to this buffer.

                                                                                                    Error if the value is not an integer or a BigInt

                                                                                                    RangeError if the value does not fit into a 64-bit signed integer

                                                                                                    -
                                                                                                  • Writes a string column with its value into the buffer.
                                                                                                    Use it to insert into VARCHAR and STRING columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name.

                                                                                                    • value: string

                                                                                                      Column value, accepts only string values. A null or undefined value omits the column entirely (stored as NULL).

                                                                                                    Returns SenderBuffer

                                                                                                    Returns with a reference to this buffer.

                                                                                                    -
                                                                                                  • Writes a symbol name and value into the buffer.
                                                                                                    Use it to insert into SYMBOL columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Symbol name.

                                                                                                    • value: unknown

                                                                                                      Symbol value, toString() is called to extract the actual symbol value from the parameter. A null or undefined value omits the symbol entirely (stored as NULL).

                                                                                                    Returns SenderBuffer

                                                                                                    Returns with a reference to this buffer.

                                                                                                    -
                                                                                                  • Writes a timestamp column and its value into the buffer.

                                                                                                    Use this method to insert data into TIMESTAMP or TIMESTAMP_NS columns.

                                                                                                    Precision rules:

                                                                                                      @@ -152,10 +152,10 @@ even when value is null or undefined).

                                                                                                    If value is not an integer or BigInt.

                                                                                                    If unit is 'ns' but value is not a BigInt.

                                                                                                    -
                                                                                                  • Parameters

                                                                                                    • pos: number = ...

                                                                                                    Returns Buffer

                                                                                                    Returns a cropped buffer ready to send to the server, or null if there is nothing to send.
                                                                                                    +

                                                                                                  • Parameters

                                                                                                    • pos: number = ...

                                                                                                    Returns Buffer

                                                                                                    Returns a cropped buffer ready to send to the server, or null if there is nothing to send.
                                                                                                    The returned buffer is a copy of this buffer. It also compacts the buffer.

                                                                                                    -
                                                                                                  • Parameters

                                                                                                    • pos: number = ...

                                                                                                    Returns Buffer

                                                                                                    Returns a cropped buffer, or null if there is nothing to send.
                                                                                                    +

                                                                                                  • Parameters

                                                                                                    • pos: number = ...

                                                                                                    Returns Buffer

                                                                                                    Returns a cropped buffer, or null if there is nothing to send.
                                                                                                    The returned buffer is backed by this buffer instance, meaning the view can change as the buffer is mutated. Used only in tests to assert the buffer's content.

                                                                                                    -
                                                                                                  +
                                                                                                  diff --git a/docs/classes/_questdb_nodejs-client.SenderBufferV3.html b/docs/classes/_questdb_nodejs-client.SenderBufferV3.html index de5622ba7..a746486af 100644 --- a/docs/classes/_questdb_nodejs-client.SenderBufferV3.html +++ b/docs/classes/_questdb_nodejs-client.SenderBufferV3.html @@ -1,6 +1,6 @@ SenderBufferV3 | QuestDB JavaScript Client - v5.0.0

                                                                                                  Buffer implementation for protocol version 3.

                                                                                                  Provides support for decimals.

                                                                                                  -

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  buffer log position @@ -25,7 +25,7 @@

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  buffer: Buffer
                                                                                                  log: Logger
                                                                                                  position: number

                                                                                                  Methods

                                                                                                  • Write an array column with its values into the buffer using v2 format.

                                                                                                    +

                                                                                                  Returns SenderBufferV3

                                                                                                  Properties

                                                                                                  buffer: Buffer
                                                                                                  log: Logger
                                                                                                  position: number

                                                                                                  Methods

                                                                                                  • Write an array column with its values into the buffer using v2 format.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name

                                                                                                    • value: unknown[]

                                                                                                      Array values to write (currently supports double arrays). A null or undefined value omits the column entirely, storing NULL.

                                                                                                    Returns SenderBuffer

                                                                                                    Returns with a reference to this buffer.

                                                                                                    @@ -35,7 +35,7 @@
                                                                                                  • or the shape of the array is irregular: the length of sub-arrays are different
                                                                                                  • or the array is not homogeneous: its elements are not all the same type
                                                                                                  -
                                                                                                  • Closes the row after writing the designated timestamp into the buffer.

                                                                                                    Precision rules:

                                                                                                    • Protocol v2 and higher: @@ -65,19 +65,19 @@

                                                                                                    If the row cannot be closed within max_buf_size. The partial close is rewound, so the same call succeeds once a flush() frees space.

                                                                                                    -
                                                                                                  • Checks if the buffer has sufficient capacity for additional data and resizes if needed.

                                                                                                    Parameters

                                                                                                    • data: string[]

                                                                                                      Array of strings to calculate the required capacity for

                                                                                                    • base: number = 0

                                                                                                      Base number of bytes to add to the calculation

                                                                                                      -

                                                                                                    Returns void

                                                                                                  • Returns the current position of the buffer.
                                                                                                    +

                                                                                                  Returns void

                                                                                                  • Writes a decimal value into the buffer using its binary format.

                                                                                                    Use it to insert into DECIMAL database columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name.

                                                                                                    • unscaled: bigint | Int8Array<ArrayBufferLike>

                                                                                                      The unscaled integer portion of the decimal value.

                                                                                                      @@ -96,7 +96,7 @@
                                                                                                    • scale is not an integer between 0 and 76.
                                                                                                    • unscaled contains invalid bytes.
                                                                                                    -
                                                                                                  • Writes a 64-bit floating point value into the buffer using v2 serialization (binary format).
                                                                                                    Use it to insert into DOUBLE or FLOAT database columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name.

                                                                                                    • value: number

                                                                                                      Column value, accepts only number values. A null or undefined value omits the column entirely (stored as NULL).

                                                                                                    Returns SenderBuffer

                                                                                                    Returns with a reference to this buffer.

                                                                                                    -
                                                                                                  • Writes a 64-bit signed integer into the buffer.
                                                                                                    Use it to insert into LONG, INT, SHORT and BYTE columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name.

                                                                                                    • value: number | bigint

                                                                                                      Column value, accepts integer or BigInt values. LONG is a 64-bit signed integer, which is wider than the safe integer range of number, so pass a BigInt beyond Number.MAX_SAFE_INTEGER to avoid losing precision. A null or undefined value omits the column entirely (stored as NULL).

                                                                                                    Returns SenderBuffer

                                                                                                    Returns with a reference to this buffer.

                                                                                                    Error if the value is not an integer or a BigInt

                                                                                                    RangeError if the value does not fit into a 64-bit signed integer

                                                                                                    -
                                                                                                  • Writes a string column with its value into the buffer.
                                                                                                    Use it to insert into VARCHAR and STRING columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name.

                                                                                                    • value: string

                                                                                                      Column value, accepts only string values. A null or undefined value omits the column entirely (stored as NULL).

                                                                                                    Returns SenderBuffer

                                                                                                    Returns with a reference to this buffer.

                                                                                                    -
                                                                                                  • Writes a symbol name and value into the buffer.
                                                                                                    Use it to insert into SYMBOL columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Symbol name.

                                                                                                    • value: unknown

                                                                                                      Symbol value, toString() is called to extract the actual symbol value from the parameter. A null or undefined value omits the symbol entirely (stored as NULL).

                                                                                                    Returns SenderBuffer

                                                                                                    Returns with a reference to this buffer.

                                                                                                    -
                                                                                                  • Writes a timestamp column and its value into the buffer.

                                                                                                    Use this method to insert data into TIMESTAMP or TIMESTAMP_NS columns.

                                                                                                    Precision rules:

                                                                                                      @@ -162,10 +162,10 @@ even when value is null or undefined).

                                                                                                    If value is not an integer or BigInt.

                                                                                                    If unit is 'ns' but value is not a BigInt.

                                                                                                    -
                                                                                                  • Parameters

                                                                                                    • pos: number = ...

                                                                                                    Returns Buffer

                                                                                                    Returns a cropped buffer, or null if there is nothing to send.
                                                                                                    The returned buffer is backed by this buffer instance, meaning the view can change as the buffer is mutated. Used only in tests to assert the buffer's content.

                                                                                                    -
                                                                                                  +
                                                                                                  diff --git a/docs/classes/_questdb_nodejs-client.SenderOptions.html b/docs/classes/_questdb_nodejs-client.SenderOptions.html index aa2e64235..c1f9ac883 100644 --- a/docs/classes/_questdb_nodejs-client.SenderOptions.html +++ b/docs/classes/_questdb_nodejs-client.SenderOptions.html @@ -124,7 +124,7 @@ Supported by the udp transport only. A connection string rejects it on every other transport, and ws/wss reject it however the sender was built. -
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  addr? agent? auth? @@ -172,7 +172,7 @@
                                                                                                • 'jwk' is a complete EC P-256 private JWK for TCP/TCPS authentication, with the 'kid', 'd', 'x' and 'y' properties, 'kty' set to 'EC' and 'crv' set to 'P-256'. It takes precedence over 'username'/'token' in the configuration string and is rejected for other transports.
                                                                                                • -

                                                                                                  Returns SenderOptions

                                                                                                  Properties

                                                                                                  addr?: string
                                                                                                  agent?: Agent | Agent | Agent
                                                                                                  auth?: { keyId?: string; password?: string; token?: string; username?: string }
                                                                                                  auto_flush?: boolean
                                                                                                  auto_flush_bytes?: number
                                                                                                  auto_flush_interval?: number
                                                                                                  auto_flush_rows?: number
                                                                                                  host?: string
                                                                                                  init_buf_size?: number
                                                                                                  jwk?: Record<string, string>
                                                                                                  log?: Logger
                                                                                                  max_buf_size?: number
                                                                                                  max_datagram_size?: number
                                                                                                  max_name_len?: number
                                                                                                  multicast_ttl?: number
                                                                                                  password?: string
                                                                                                  port?: number
                                                                                                  protocol: string
                                                                                                  protocol_version?: string
                                                                                                  request_min_throughput?: number
                                                                                                  request_timeout?: number
                                                                                                  retry_timeout?: number
                                                                                                  stdlib_http?: boolean
                                                                                                  tls_ca?: PathOrFileDescriptor
                                                                                                  tls_roots?: never
                                                                                                  tls_roots_password?: never
                                                                                                  tls_verify?: boolean
                                                                                                  token?: string
                                                                                                  token_x?: string
                                                                                                  token_y?: string
                                                                                                  username?: string

                                                                                                  Methods

                                                                                                  • Creates a Sender options object by parsing the provided configuration string.

                                                                                                    +

                                                                                                  Returns SenderOptions

                                                                                                  Properties

                                                                                                  addr?: string
                                                                                                  agent?: Agent | Agent | Agent
                                                                                                  auth?: { keyId?: string; password?: string; token?: string; username?: string }
                                                                                                  auto_flush?: boolean
                                                                                                  auto_flush_bytes?: number
                                                                                                  auto_flush_interval?: number
                                                                                                  auto_flush_rows?: number
                                                                                                  host?: string
                                                                                                  init_buf_size?: number
                                                                                                  jwk?: Record<string, string>
                                                                                                  log?: Logger
                                                                                                  max_buf_size?: number
                                                                                                  max_datagram_size?: number
                                                                                                  max_name_len?: number
                                                                                                  multicast_ttl?: number
                                                                                                  password?: string
                                                                                                  port?: number
                                                                                                  protocol: string
                                                                                                  protocol_version?: string
                                                                                                  request_min_throughput?: number
                                                                                                  request_timeout?: number
                                                                                                  retry_timeout?: number
                                                                                                  stdlib_http?: boolean
                                                                                                  tls_ca?: PathOrFileDescriptor
                                                                                                  tls_roots?: never
                                                                                                  tls_roots_password?: never
                                                                                                  tls_verify?: boolean
                                                                                                  token?: string
                                                                                                  token_x?: string
                                                                                                  token_y?: string
                                                                                                  username?: string

                                                                                                  Methods

                                                                                                  • Creates a Sender options object by parsing the provided configuration string.

                                                                                                    Parameters

                                                                                                    • configurationString: string

                                                                                                      Configuration string.

                                                                                                    • OptionalextraOptions: ExtraOptions

                                                                                                      Optional extra configuration.

                                                                                                        @@ -184,7 +184,7 @@ It takes precedence over 'username'/'token' in the configuration string and is rejected for other transports.

                                                                                                    Returns Promise<SenderOptions>

                                                                                                    A Sender configuration object initialized from the provided configuration string.

                                                                                                    -
                                                                                                  • Creates a Sender options object by parsing the configuration string set in the QDB_CLIENT_CONF environment variable.

                                                                                                    Parameters

                                                                                                    • OptionalextraOptions: ExtraOptions

                                                                                                      Optional extra configuration.

                                                                                                      • 'log' is a logging function used by the Sender. @@ -195,10 +195,10 @@ It takes precedence over 'username'/'token' in the configuration string and is rejected for other transports.

                                                                                                    Returns Promise<SenderOptions>

                                                                                                    A Sender configuration object initialized from the QDB_CLIENT_CONF environment variable.

                                                                                                    -
                                                                                                  • Resolves the protocol version, if it is set to 'auto'.
                                                                                                    If TCP transport is used, the protocol version will default to 1. In case of HTTP transport the /settings endpoint of the database is used to find the protocol versions supported by the server, and the highest will be selected. When calling the /settings endpoint the timeout and TLS options are used from the options object.

                                                                                                    Parameters

                                                                                                    • options: SenderOptions

                                                                                                      SenderOptions instance needs resolving protocol version

                                                                                                      -

                                                                                                    Returns Promise<SenderOptions>

                                                                                                  +

                                                                                                  Returns Promise<SenderOptions>

                                                                                                  diff --git a/docs/classes/_questdb_nodejs-client.TcpTransport.html b/docs/classes/_questdb_nodejs-client.TcpTransport.html index f7ec781f2..87024c13f 100644 --- a/docs/classes/_questdb_nodejs-client.TcpTransport.html +++ b/docs/classes/_questdb_nodejs-client.TcpTransport.html @@ -1,6 +1,6 @@ TcpTransport | QuestDB JavaScript Client - v5.0.0

                                                                                                  TCP transport implementation.
                                                                                                  Supports both plain TCP or secure TLS-encrypted connections with configurable JWK token authentication.

                                                                                                  -

                                                                                                  Implements

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Implements

                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Methods

                                                                                                  Constructors

                                                                                                  Methods

                                                                                                  Methods

                                                                                                  • Sends data over the established TCP connection.

                                                                                                    Parameters

                                                                                                    • data: Buffer

                                                                                                      Buffer containing the data to send

                                                                                                    Returns Promise<boolean>

                                                                                                    Promise resolving to true if data was sent successfully

                                                                                                    Error if the data could not be written to the socket

                                                                                                    -
                                                                                                  +
                                                                                                  diff --git a/docs/classes/_questdb_nodejs-client.UndiciTransport.html b/docs/classes/_questdb_nodejs-client.UndiciTransport.html index fbdc744b7..dbfd730cc 100644 --- a/docs/classes/_questdb_nodejs-client.UndiciTransport.html +++ b/docs/classes/_questdb_nodejs-client.UndiciTransport.html @@ -1,7 +1,7 @@ UndiciTransport | QuestDB JavaScript Client - v5.0.0

                                                                                                  HTTP transport implementation using the Undici library.
                                                                                                  Provides high-performance HTTP requests with connection pooling and retry logic.
                                                                                                  Supports both HTTP and HTTPS protocols with configurable authentication.

                                                                                                  -

                                                                                                  Hierarchy

                                                                                                  • HttpTransportBase
                                                                                                    • UndiciTransport
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Hierarchy

                                                                                                  • HttpTransportBase
                                                                                                    • UndiciTransport
                                                                                                  Index

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  host log password @@ -21,14 +21,14 @@

                                                                                                  Constructors

                                                                                                  Properties

                                                                                                  host: string
                                                                                                  log: Logger
                                                                                                  password: string
                                                                                                  port: number
                                                                                                  requestMinThroughput: number
                                                                                                  requestTimeout: number
                                                                                                  retryTimeout: number
                                                                                                  secure: boolean
                                                                                                  tlsCA: Buffer
                                                                                                  tlsVerify: boolean
                                                                                                  token: string
                                                                                                  username: string

                                                                                                  Methods

                                                                                                  Properties

                                                                                                  host: string
                                                                                                  log: Logger
                                                                                                  password: string
                                                                                                  port: number
                                                                                                  requestMinThroughput: number
                                                                                                  requestTimeout: number
                                                                                                  retryTimeout: number
                                                                                                  secure: boolean
                                                                                                  tlsCA: Buffer
                                                                                                  tlsVerify: boolean
                                                                                                  token: string
                                                                                                  username: string

                                                                                                  Methods

                                                                                                  • HTTP transport does not require explicit connection establishment.

                                                                                                    Returns Promise<boolean>

                                                                                                    Error indicating connect is not required for HTTP transport

                                                                                                    -
                                                                                                  • Gets the default auto-flush row count for HTTP transport.

                                                                                                    Returns number

                                                                                                    Default number of rows that trigger auto-flush

                                                                                                    -
                                                                                                  • Sends data to QuestDB using HTTP POST.

                                                                                                    Parameters

                                                                                                    • data: Buffer

                                                                                                      Buffer containing the data to send

                                                                                                    Returns Promise<boolean>

                                                                                                    Promise resolving to true if data was sent successfully

                                                                                                    Error if request fails after all retries or times out

                                                                                                    -
                                                                                                  +
                                                                                                  diff --git a/docs/functions/_questdb_browser-client.addQwpDurableAckWebSocketProtocol.html b/docs/functions/_questdb_browser-client.addQwpDurableAckWebSocketProtocol.html index 9da714fe9..9ea144e4d 100644 --- a/docs/functions/_questdb_browser-client.addQwpDurableAckWebSocketProtocol.html +++ b/docs/functions/_questdb_browser-client.addQwpDurableAckWebSocketProtocol.html @@ -1,2 +1,2 @@ addQwpDurableAckWebSocketProtocol | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function addQwpDurableAckWebSocketProtocol

                                                                                                  • Adds the durable-ACK capability token without mutating user options.

                                                                                                    -

                                                                                                    Parameters

                                                                                                    • protocols: undefined | string | readonly string[]

                                                                                                    Returns string | string[]

                                                                                                  +

                                                                                                  Parameters

                                                                                                  • protocols: undefined | string | readonly string[]

                                                                                                  Returns string | string[]

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.binary.html b/docs/functions/_questdb_browser-client.binary.html index fa6936e39..4302cd9de 100644 --- a/docs/functions/_questdb_browser-client.binary.html +++ b/docs/functions/_questdb_browser-client.binary.html @@ -1,2 +1,2 @@ binary | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<Uint8Array<ArrayBufferLike>>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.bool.html b/docs/functions/_questdb_browser-client.bool.html index cb2abaa2c..e45d9f706 100644 --- a/docs/functions/_questdb_browser-client.bool.html +++ b/docs/functions/_questdb_browser-client.bool.html @@ -1,2 +1,2 @@ bool | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<boolean>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.bootstrapQwpBrowserSession.html b/docs/functions/_questdb_browser-client.bootstrapQwpBrowserSession.html index 707c5d189..05c6b78a1 100644 --- a/docs/functions/_questdb_browser-client.bootstrapQwpBrowserSession.html +++ b/docs/functions/_questdb_browser-client.bootstrapQwpBrowserSession.html @@ -2,4 +2,4 @@ browser needs before opening QWP WebSockets. REST and OIDC tokens both use Bearer authentication. When serviceAccount is present the same request also creates Enterprise's qdbServiceAccount impersonation cookie.

                                                                                                  -

                                                                                                  Returns Promise<QwpBrowserSessionBootstrapResult>

                                                                                                  +

                                                                                                  Returns Promise<QwpBrowserSessionBootstrapResult>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.byte.html b/docs/functions/_questdb_browser-client.byte.html index 8b32c1efe..535075f47 100644 --- a/docs/functions/_questdb_browser-client.byte.html +++ b/docs/functions/_questdb_browser-client.byte.html @@ -1,2 +1,2 @@ byte | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<number>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.char.html b/docs/functions/_questdb_browser-client.char.html index 43080c7ed..ff939b95c 100644 --- a/docs/functions/_questdb_browser-client.char.html +++ b/docs/functions/_questdb_browser-client.char.html @@ -1,2 +1,2 @@ char | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<string>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.concatBytes.html b/docs/functions/_questdb_browser-client.concatBytes.html index 33883b167..74992b3dd 100644 --- a/docs/functions/_questdb_browser-client.concatBytes.html +++ b/docs/functions/_questdb_browser-client.concatBytes.html @@ -1 +1 @@ -concatBytes | QuestDB JavaScript Client - v5.0.0
                                                                                                  +concatBytes | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/functions/_questdb_browser-client.connectQwpBrowserClient.html b/docs/functions/_questdb_browser-client.connectQwpBrowserClient.html index b41808e94..27bbfa763 100644 --- a/docs/functions/_questdb_browser-client.connectQwpBrowserClient.html +++ b/docs/functions/_questdb_browser-client.connectQwpBrowserClient.html @@ -1,2 +1,2 @@ connectQwpBrowserClient | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function connectQwpBrowserClient

                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns Promise<QwpClient>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.connectQwpBrowserEgress.html b/docs/functions/_questdb_browser-client.connectQwpBrowserEgress.html index 0bf6e1972..481b76f96 100644 --- a/docs/functions/_questdb_browser-client.connectQwpBrowserEgress.html +++ b/docs/functions/_questdb_browser-client.connectQwpBrowserEgress.html @@ -1,3 +1,3 @@ connectQwpBrowserEgress | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function connectQwpBrowserEgress

                                                                                                  +

                                                                                                  Returns Promise<QwpEgressSession>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.connectQwpBrowserSender.html b/docs/functions/_questdb_browser-client.connectQwpBrowserSender.html index 8d231a3e7..13583543c 100644 --- a/docs/functions/_questdb_browser-client.connectQwpBrowserSender.html +++ b/docs/functions/_questdb_browser-client.connectQwpBrowserSender.html @@ -1,2 +1,2 @@ connectQwpBrowserSender | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function connectQwpBrowserSender

                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns Promise<QwpSender>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.createQwpBrowserClient.html b/docs/functions/_questdb_browser-client.createQwpBrowserClient.html index 5c36e5231..eacee7d50 100644 --- a/docs/functions/_questdb_browser-client.createQwpBrowserClient.html +++ b/docs/functions/_questdb_browser-client.createQwpBrowserClient.html @@ -1,2 +1,2 @@ createQwpBrowserClient | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function createQwpBrowserClient

                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns QwpClient

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.createQwpBrowserSender.html b/docs/functions/_questdb_browser-client.createQwpBrowserSender.html index 5c38a1273..d1a0c873e 100644 --- a/docs/functions/_questdb_browser-client.createQwpBrowserSender.html +++ b/docs/functions/_questdb_browser-client.createQwpBrowserSender.html @@ -1,3 +1,3 @@ createQwpBrowserSender | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function createQwpBrowserSender

                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns QwpSender

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.createQwpDataLossSenderError.html b/docs/functions/_questdb_browser-client.createQwpDataLossSenderError.html index d97bb24ea..9bbf8ea7e 100644 --- a/docs/functions/_questdb_browser-client.createQwpDataLossSenderError.html +++ b/docs/functions/_questdb_browser-client.createQwpDataLossSenderError.html @@ -1,2 +1,2 @@ createQwpDataLossSenderError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function createQwpDataLossSenderError

                                                                                                  +

                                                                                                  Returns QwpSenderError

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.createQwpProtocolViolationSenderError.html b/docs/functions/_questdb_browser-client.createQwpProtocolViolationSenderError.html index b2bf1970a..c6872643e 100644 --- a/docs/functions/_questdb_browser-client.createQwpProtocolViolationSenderError.html +++ b/docs/functions/_questdb_browser-client.createQwpProtocolViolationSenderError.html @@ -1 +1 @@ -createQwpProtocolViolationSenderError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function createQwpProtocolViolationSenderError

                                                                                                  +createQwpProtocolViolationSenderError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function createQwpProtocolViolationSenderError

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.createQwpSenderError.html b/docs/functions/_questdb_browser-client.createQwpSenderError.html index fedf790af..2deb95feb 100644 --- a/docs/functions/_questdb_browser-client.createQwpSenderError.html +++ b/docs/functions/_questdb_browser-client.createQwpSenderError.html @@ -1 +1 @@ -createQwpSenderError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function createQwpSenderError

                                                                                                  +createQwpSenderError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function createQwpSenderError

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.date.html b/docs/functions/_questdb_browser-client.date.html index 5ebb9e4bc..fc11beec3 100644 --- a/docs/functions/_questdb_browser-client.date.html +++ b/docs/functions/_questdb_browser-client.date.html @@ -1,4 +1,4 @@ date | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<number | bigint>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.decimal128.html b/docs/functions/_questdb_browser-client.decimal128.html index eed70445c..7f32dbb04 100644 --- a/docs/functions/_questdb_browser-client.decimal128.html +++ b/docs/functions/_questdb_browser-client.decimal128.html @@ -1,2 +1,2 @@ decimal128 | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Parameters

                                                                                                  • scale: number

                                                                                                  Returns QwpWriterColumn<QwpDecimalInput>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.decimal256.html b/docs/functions/_questdb_browser-client.decimal256.html index 997fc6e37..05a5230ca 100644 --- a/docs/functions/_questdb_browser-client.decimal256.html +++ b/docs/functions/_questdb_browser-client.decimal256.html @@ -1,2 +1,2 @@ decimal256 | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Parameters

                                                                                                  • scale: number

                                                                                                  Returns QwpWriterColumn<QwpDecimalInput>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.decimal64.html b/docs/functions/_questdb_browser-client.decimal64.html index 22a4d37b4..2ca20b863 100644 --- a/docs/functions/_questdb_browser-client.decimal64.html +++ b/docs/functions/_questdb_browser-client.decimal64.html @@ -1,2 +1,2 @@ decimal64 | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Parameters

                                                                                                  • scale: number

                                                                                                  Returns QwpWriterColumn<QwpDecimalInput>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.decodeQwpContentEncoding.html b/docs/functions/_questdb_browser-client.decodeQwpContentEncoding.html index 24e544e73..5539f4d07 100644 --- a/docs/functions/_questdb_browser-client.decodeQwpContentEncoding.html +++ b/docs/functions/_questdb_browser-client.decodeQwpContentEncoding.html @@ -1,4 +1,4 @@ decodeQwpContentEncoding | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function decodeQwpContentEncoding

                                                                                                  +

                                                                                                  Parameters

                                                                                                  • value: undefined | string

                                                                                                  Returns QwpNegotiatedEgressCompression

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.decodeQwpEgressMessage.html b/docs/functions/_questdb_browser-client.decodeQwpEgressMessage.html index 7463715a6..5d4cc468e 100644 --- a/docs/functions/_questdb_browser-client.decodeQwpEgressMessage.html +++ b/docs/functions/_questdb_browser-client.decodeQwpEgressMessage.html @@ -1,2 +1,5 @@ -decodeQwpEgressMessage | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function decodeQwpEgressMessage

                                                                                                  +decodeQwpEgressMessage | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function decodeQwpEgressMessage

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.decodeQwpEgressMessageWithQueryFlags.html b/docs/functions/_questdb_browser-client.decodeQwpEgressMessageWithQueryFlags.html new file mode 100644 index 000000000..c64e604ef --- /dev/null +++ b/docs/functions/_questdb_browser-client.decodeQwpEgressMessageWithQueryFlags.html @@ -0,0 +1,8 @@ +decodeQwpEgressMessageWithQueryFlags | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function decodeQwpEgressMessageWithQueryFlags

                                                                                                  • Decodes one QWP-framed server-to-client egress message answering a +QUERY_REQUEST sent with queryFlags.

                                                                                                    +

                                                                                                    The flags decide the trailers RESULT_END, EXEC_DONE and QUERY_ERROR end with +-- the row count, the statistics and the error position -- which are read +into the message and must be the last bytes of the frame. Other messages do +not depend on them, and with no flags set this decodes as +decodeQwpEgressMessage does.

                                                                                                    +

                                                                                                    Parameters

                                                                                                    • bytes: Uint8Array
                                                                                                    • queryFlags: number | bigint

                                                                                                    Returns QwpEgressMessage

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.decodeQwpFrame.html b/docs/functions/_questdb_browser-client.decodeQwpFrame.html index 433adc5cd..3958ae76b 100644 --- a/docs/functions/_questdb_browser-client.decodeQwpFrame.html +++ b/docs/functions/_questdb_browser-client.decodeQwpFrame.html @@ -1 +1 @@ -decodeQwpFrame | QuestDB JavaScript Client - v5.0.0
                                                                                                  +decodeQwpFrame | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/functions/_questdb_browser-client.decodeQwpIngressResponse.html b/docs/functions/_questdb_browser-client.decodeQwpIngressResponse.html index e04caead9..3a5bf2880 100644 --- a/docs/functions/_questdb_browser-client.decodeQwpIngressResponse.html +++ b/docs/functions/_questdb_browser-client.decodeQwpIngressResponse.html @@ -1,2 +1,2 @@ decodeQwpIngressResponse | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function decodeQwpIngressResponse

                                                                                                  +

                                                                                                  Parameters

                                                                                                  • payload: Uint8Array

                                                                                                  Returns QwpIngressResponse

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.decodeQwpIngressServerInfo.html b/docs/functions/_questdb_browser-client.decodeQwpIngressServerInfo.html index 9a4c12575..d7abd8d70 100644 --- a/docs/functions/_questdb_browser-client.decodeQwpIngressServerInfo.html +++ b/docs/functions/_questdb_browser-client.decodeQwpIngressServerInfo.html @@ -1,2 +1,2 @@ decodeQwpIngressServerInfo | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function decodeQwpIngressServerInfo

                                                                                                  +

                                                                                                  Parameters

                                                                                                  • payload: Uint8Array

                                                                                                  Returns undefined | QwpIngressServerInfo

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.decodeQwpIngressSymbolDictionaryDelta.html b/docs/functions/_questdb_browser-client.decodeQwpIngressSymbolDictionaryDelta.html index baf1dae8f..ced861998 100644 --- a/docs/functions/_questdb_browser-client.decodeQwpIngressSymbolDictionaryDelta.html +++ b/docs/functions/_questdb_browser-client.decodeQwpIngressSymbolDictionaryDelta.html @@ -1,2 +1,2 @@ decodeQwpIngressSymbolDictionaryDelta | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function decodeQwpIngressSymbolDictionaryDelta

                                                                                                  +

                                                                                                  Parameters

                                                                                                  • bytes: Uint8Array

                                                                                                  Returns undefined | QwpIngressSymbolDictionaryDelta

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.decodeQwpVarint.html b/docs/functions/_questdb_browser-client.decodeQwpVarint.html index 759aae0ee..b08d3f0f1 100644 --- a/docs/functions/_questdb_browser-client.decodeQwpVarint.html +++ b/docs/functions/_questdb_browser-client.decodeQwpVarint.html @@ -1 +1 @@ -decodeQwpVarint | QuestDB JavaScript Client - v5.0.0
                                                                                                  • Parameters

                                                                                                    • bytes: Uint8Array
                                                                                                    • offset: number = 0

                                                                                                    Returns { offset: number; value: bigint }

                                                                                                  +decodeQwpVarint | QuestDB JavaScript Client - v5.0.0
                                                                                                  • Parameters

                                                                                                    • bytes: Uint8Array
                                                                                                    • offset: number = 0

                                                                                                    Returns { offset: number; value: bigint }

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.decodeUtf8.html b/docs/functions/_questdb_browser-client.decodeUtf8.html index 13c756a58..e806ea6ed 100644 --- a/docs/functions/_questdb_browser-client.decodeUtf8.html +++ b/docs/functions/_questdb_browser-client.decodeUtf8.html @@ -1 +1 @@ -decodeUtf8 | QuestDB JavaScript Client - v5.0.0
                                                                                                  +decodeUtf8 | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/functions/_questdb_browser-client.decompressQwpZstdFrame.html b/docs/functions/_questdb_browser-client.decompressQwpZstdFrame.html index c3c56e230..ec8ea1ed6 100644 --- a/docs/functions/_questdb_browser-client.decompressQwpZstdFrame.html +++ b/docs/functions/_questdb_browser-client.decompressQwpZstdFrame.html @@ -1,2 +1,2 @@ decompressQwpZstdFrame | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function decompressQwpZstdFrame

                                                                                                  +

                                                                                                  Parameters

                                                                                                  • frame: Uint8Array

                                                                                                  Returns Uint8Array

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.defaultQwpSenderErrorHandler.html b/docs/functions/_questdb_browser-client.defaultQwpSenderErrorHandler.html index 343646772..1417899ea 100644 --- a/docs/functions/_questdb_browser-client.defaultQwpSenderErrorHandler.html +++ b/docs/functions/_questdb_browser-client.defaultQwpSenderErrorHandler.html @@ -1,3 +1,3 @@ defaultQwpSenderErrorHandler | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function defaultQwpSenderErrorHandler

                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns void

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.designatedTimestamp.html b/docs/functions/_questdb_browser-client.designatedTimestamp.html index c62e3c1b2..9145e6d0f 100644 --- a/docs/functions/_questdb_browser-client.designatedTimestamp.html +++ b/docs/functions/_questdb_browser-client.designatedTimestamp.html @@ -1,2 +1,2 @@ designatedTimestamp | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function designatedTimestamp

                                                                                                  +

                                                                                                  Type Parameters

                                                                                                  Parameters

                                                                                                  Returns QwpWriterColumn<TimestampInput<Unit>, true>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.double.html b/docs/functions/_questdb_browser-client.double.html index aa8855323..1487c80de 100644 --- a/docs/functions/_questdb_browser-client.double.html +++ b/docs/functions/_questdb_browser-client.double.html @@ -1,2 +1,2 @@ double | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<number>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.doubleArray.html b/docs/functions/_questdb_browser-client.doubleArray.html index af840f77a..772b093eb 100644 --- a/docs/functions/_questdb_browser-client.doubleArray.html +++ b/docs/functions/_questdb_browser-client.doubleArray.html @@ -1,2 +1,2 @@ doubleArray | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<QwpDoubleArrayInput>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.encodeQwpAcceptEncoding.html b/docs/functions/_questdb_browser-client.encodeQwpAcceptEncoding.html index 6c36db996..c00ce54ae 100644 --- a/docs/functions/_questdb_browser-client.encodeQwpAcceptEncoding.html +++ b/docs/functions/_questdb_browser-client.encodeQwpAcceptEncoding.html @@ -1,2 +1,2 @@ encodeQwpAcceptEncoding | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function encodeQwpAcceptEncoding

                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns undefined | string

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.encodeQwpBinds.html b/docs/functions/_questdb_browser-client.encodeQwpBinds.html index c53f27175..cee13577c 100644 --- a/docs/functions/_questdb_browser-client.encodeQwpBinds.html +++ b/docs/functions/_questdb_browser-client.encodeQwpBinds.html @@ -1,2 +1,2 @@ encodeQwpBinds | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns QwpEncodedBinds

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.encodeQwpCancel.html b/docs/functions/_questdb_browser-client.encodeQwpCancel.html index 17c9e0dab..431d44937 100644 --- a/docs/functions/_questdb_browser-client.encodeQwpCancel.html +++ b/docs/functions/_questdb_browser-client.encodeQwpCancel.html @@ -1,2 +1,2 @@ encodeQwpCancel | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Parameters

                                                                                                  • request: number | bigint

                                                                                                  Returns Uint8Array

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.encodeQwpCredit.html b/docs/functions/_questdb_browser-client.encodeQwpCredit.html index d2de0fcfb..779f49c60 100644 --- a/docs/functions/_questdb_browser-client.encodeQwpCredit.html +++ b/docs/functions/_questdb_browser-client.encodeQwpCredit.html @@ -1,2 +1,2 @@ encodeQwpCredit | QuestDB JavaScript Client - v5.0.0
                                                                                                  • Encodes the unframed client-to-server CREDIT payload.

                                                                                                    -

                                                                                                    Parameters

                                                                                                    • request: number | bigint
                                                                                                    • additionalBytes: number | bigint

                                                                                                    Returns Uint8Array

                                                                                                  +

                                                                                                  Parameters

                                                                                                  • request: number | bigint
                                                                                                  • additionalBytes: number | bigint

                                                                                                  Returns Uint8Array

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.encodeQwpDurableAckPollFrame.html b/docs/functions/_questdb_browser-client.encodeQwpDurableAckPollFrame.html index 60ced87d6..7cbbce2f8 100644 --- a/docs/functions/_questdb_browser-client.encodeQwpDurableAckPollFrame.html +++ b/docs/functions/_questdb_browser-client.encodeQwpDurableAckPollFrame.html @@ -1,2 +1,2 @@ encodeQwpDurableAckPollFrame | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function encodeQwpDurableAckPollFrame

                                                                                                  +

                                                                                                  Returns Uint8Array

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.encodeQwpFrame.html b/docs/functions/_questdb_browser-client.encodeQwpFrame.html index 20ea77d92..1d1ec727f 100644 --- a/docs/functions/_questdb_browser-client.encodeQwpFrame.html +++ b/docs/functions/_questdb_browser-client.encodeQwpFrame.html @@ -1 +1 @@ -encodeQwpFrame | QuestDB JavaScript Client - v5.0.0
                                                                                                  • Parameters

                                                                                                    • payload: Uint8Array
                                                                                                    • flags: number = 0
                                                                                                    • tableCount: number = 0

                                                                                                    Returns Uint8Array

                                                                                                  +encodeQwpFrame | QuestDB JavaScript Client - v5.0.0
                                                                                                  • Parameters

                                                                                                    • payload: Uint8Array
                                                                                                    • flags: number = 0
                                                                                                    • tableCount: number = 0

                                                                                                    Returns Uint8Array

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.encodeQwpGorilla.html b/docs/functions/_questdb_browser-client.encodeQwpGorilla.html index 8c2c708d7..32551225f 100644 --- a/docs/functions/_questdb_browser-client.encodeQwpGorilla.html +++ b/docs/functions/_questdb_browser-client.encodeQwpGorilla.html @@ -1,2 +1,2 @@ encodeQwpGorilla | QuestDB JavaScript Client - v5.0.0
                                                                                                  • Encodes signed int64 timestamps with the QWP LSB-first Gorilla variant.

                                                                                                    -

                                                                                                    Parameters

                                                                                                    • timestamps: readonly bigint[]

                                                                                                    Returns Uint8Array

                                                                                                  +

                                                                                                  Parameters

                                                                                                  • timestamps: readonly bigint[]

                                                                                                  Returns Uint8Array

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.encodeQwpIngressCommitFrame.html b/docs/functions/_questdb_browser-client.encodeQwpIngressCommitFrame.html index 22efb9a18..05e078a38 100644 --- a/docs/functions/_questdb_browser-client.encodeQwpIngressCommitFrame.html +++ b/docs/functions/_questdb_browser-client.encodeQwpIngressCommitFrame.html @@ -1 +1 @@ -encodeQwpIngressCommitFrame | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function encodeQwpIngressCommitFrame

                                                                                                  +encodeQwpIngressCommitFrame | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function encodeQwpIngressCommitFrame

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.encodeQwpIngressFrame.html b/docs/functions/_questdb_browser-client.encodeQwpIngressFrame.html index cb7e64ac5..996662fab 100644 --- a/docs/functions/_questdb_browser-client.encodeQwpIngressFrame.html +++ b/docs/functions/_questdb_browser-client.encodeQwpIngressFrame.html @@ -1,2 +1,2 @@ encodeQwpIngressFrame | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function encodeQwpIngressFrame

                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns Uint8Array

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.encodeQwpIngressSymbolDictionaryFrame.html b/docs/functions/_questdb_browser-client.encodeQwpIngressSymbolDictionaryFrame.html index 563225026..dc8113d5f 100644 --- a/docs/functions/_questdb_browser-client.encodeQwpIngressSymbolDictionaryFrame.html +++ b/docs/functions/_questdb_browser-client.encodeQwpIngressSymbolDictionaryFrame.html @@ -1,2 +1,2 @@ encodeQwpIngressSymbolDictionaryFrame | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function encodeQwpIngressSymbolDictionaryFrame

                                                                                                  • Encodes a table-less committed dictionary catch-up frame.

                                                                                                    -

                                                                                                    Parameters

                                                                                                    • startId: number
                                                                                                    • entries: readonly string[]

                                                                                                    Returns Uint8Array

                                                                                                  +

                                                                                                  Parameters

                                                                                                  • startId: number
                                                                                                  • entries: readonly string[]

                                                                                                  Returns Uint8Array

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.encodeQwpQueryRequest.html b/docs/functions/_questdb_browser-client.encodeQwpQueryRequest.html index 9cfe3af99..cd92e8597 100644 --- a/docs/functions/_questdb_browser-client.encodeQwpQueryRequest.html +++ b/docs/functions/_questdb_browser-client.encodeQwpQueryRequest.html @@ -1,2 +1,2 @@ encodeQwpQueryRequest | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function encodeQwpQueryRequest

                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns Uint8Array

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.encodeQwpVarint.html b/docs/functions/_questdb_browser-client.encodeQwpVarint.html index de0aed731..716e29dc0 100644 --- a/docs/functions/_questdb_browser-client.encodeQwpVarint.html +++ b/docs/functions/_questdb_browser-client.encodeQwpVarint.html @@ -1 +1 @@ -encodeQwpVarint | QuestDB JavaScript Client - v5.0.0
                                                                                                  +encodeQwpVarint | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/functions/_questdb_browser-client.encodeUtf8.html b/docs/functions/_questdb_browser-client.encodeUtf8.html index c3466ebd9..ae764b905 100644 --- a/docs/functions/_questdb_browser-client.encodeUtf8.html +++ b/docs/functions/_questdb_browser-client.encodeUtf8.html @@ -1 +1 @@ -encodeUtf8 | QuestDB JavaScript Client - v5.0.0
                                                                                                  +encodeUtf8 | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/functions/_questdb_browser-client.flattenQwpArray.html b/docs/functions/_questdb_browser-client.flattenQwpArray.html index 382b7666f..dbaae8263 100644 --- a/docs/functions/_questdb_browser-client.flattenQwpArray.html +++ b/docs/functions/_questdb_browser-client.flattenQwpArray.html @@ -1 +1 @@ -flattenQwpArray | QuestDB JavaScript Client - v5.0.0
                                                                                                  +flattenQwpArray | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/functions/_questdb_browser-client.float32.html b/docs/functions/_questdb_browser-client.float32.html index f7eae5496..dc5f86101 100644 --- a/docs/functions/_questdb_browser-client.float32.html +++ b/docs/functions/_questdb_browser-client.float32.html @@ -1,2 +1,2 @@ float32 | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<number>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.float64.html b/docs/functions/_questdb_browser-client.float64.html index 93472b366..58bd9b323 100644 --- a/docs/functions/_questdb_browser-client.float64.html +++ b/docs/functions/_questdb_browser-client.float64.html @@ -1,2 +1,2 @@ float64 | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<number>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.geohash.html b/docs/functions/_questdb_browser-client.geohash.html index 521374bf0..04e289e44 100644 --- a/docs/functions/_questdb_browser-client.geohash.html +++ b/docs/functions/_questdb_browser-client.geohash.html @@ -1,4 +1,4 @@ geohash | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<QwpGeohashInput>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.int32.html b/docs/functions/_questdb_browser-client.int32.html index 3a1fc77e8..01504ec94 100644 --- a/docs/functions/_questdb_browser-client.int32.html +++ b/docs/functions/_questdb_browser-client.int32.html @@ -1,4 +1,4 @@ int32 | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<number>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.int64.html b/docs/functions/_questdb_browser-client.int64.html index 87fc98380..48032d5d6 100644 --- a/docs/functions/_questdb_browser-client.int64.html +++ b/docs/functions/_questdb_browser-client.int64.html @@ -1,4 +1,4 @@ int64 | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<bigint>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.ipv4.html b/docs/functions/_questdb_browser-client.ipv4.html index b24636fd6..b1d9c4e46 100644 --- a/docs/functions/_questdb_browser-client.ipv4.html +++ b/docs/functions/_questdb_browser-client.ipv4.html @@ -1,2 +1,2 @@ ipv4 | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<QwpIpv4Input>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.isQwpDurableAckWebSocketProtocol.html b/docs/functions/_questdb_browser-client.isQwpDurableAckWebSocketProtocol.html index 54afb3565..3d220d12f 100644 --- a/docs/functions/_questdb_browser-client.isQwpDurableAckWebSocketProtocol.html +++ b/docs/functions/_questdb_browser-client.isQwpDurableAckWebSocketProtocol.html @@ -1,2 +1,2 @@ isQwpDurableAckWebSocketProtocol | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function isQwpDurableAckWebSocketProtocol

                                                                                                  +

                                                                                                  Parameters

                                                                                                  • protocol: undefined | string

                                                                                                  Returns boolean

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.long.html b/docs/functions/_questdb_browser-client.long.html index e1ee45318..3395c6704 100644 --- a/docs/functions/_questdb_browser-client.long.html +++ b/docs/functions/_questdb_browser-client.long.html @@ -1,2 +1,2 @@ long | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<bigint>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.long256.html b/docs/functions/_questdb_browser-client.long256.html index f2af8195e..eb8c5a7dc 100644 --- a/docs/functions/_questdb_browser-client.long256.html +++ b/docs/functions/_questdb_browser-client.long256.html @@ -1,2 +1,2 @@ long256 | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<QwpLong256Input>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.longArray.html b/docs/functions/_questdb_browser-client.longArray.html index b9ce9dd25..e1d833ac3 100644 --- a/docs/functions/_questdb_browser-client.longArray.html +++ b/docs/functions/_questdb_browser-client.longArray.html @@ -1,4 +1,4 @@ longArray | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<QwpLongArrayInput>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.qwpDefaultSenderErrorPolicy.html b/docs/functions/_questdb_browser-client.qwpDefaultSenderErrorPolicy.html index 068c75071..504158806 100644 --- a/docs/functions/_questdb_browser-client.qwpDefaultSenderErrorPolicy.html +++ b/docs/functions/_questdb_browser-client.qwpDefaultSenderErrorPolicy.html @@ -1 +1 @@ -qwpDefaultSenderErrorPolicy | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function qwpDefaultSenderErrorPolicy

                                                                                                  +qwpDefaultSenderErrorPolicy | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function qwpDefaultSenderErrorPolicy

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.qwpGorillaSize.html b/docs/functions/_questdb_browser-client.qwpGorillaSize.html index 68f875644..6f8a49dae 100644 --- a/docs/functions/_questdb_browser-client.qwpGorillaSize.html +++ b/docs/functions/_questdb_browser-client.qwpGorillaSize.html @@ -1,3 +1,3 @@ qwpGorillaSize | QuestDB JavaScript Client - v5.0.0
                                                                                                  • Encoded byte count, or -1 when a delta-of-delta leaves int32 range. Throws when a timestamp is outside the signed int64 wire range.

                                                                                                    -

                                                                                                    Parameters

                                                                                                    • timestamps: readonly bigint[]

                                                                                                    Returns number

                                                                                                  +

                                                                                                  Parameters

                                                                                                  • timestamps: readonly bigint[]

                                                                                                  Returns number

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.qwpSenderErrorCategory.html b/docs/functions/_questdb_browser-client.qwpSenderErrorCategory.html index d647c8cd0..fa124c233 100644 --- a/docs/functions/_questdb_browser-client.qwpSenderErrorCategory.html +++ b/docs/functions/_questdb_browser-client.qwpSenderErrorCategory.html @@ -1 +1 @@ -qwpSenderErrorCategory | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function qwpSenderErrorCategory

                                                                                                  +qwpSenderErrorCategory | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function qwpSenderErrorCategory

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.qwpVarintSize.html b/docs/functions/_questdb_browser-client.qwpVarintSize.html index b2484126c..66650a71f 100644 --- a/docs/functions/_questdb_browser-client.qwpVarintSize.html +++ b/docs/functions/_questdb_browser-client.qwpVarintSize.html @@ -1,2 +1,2 @@ qwpVarintSize | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Parameters

                                                                                                  • value: number | bigint

                                                                                                  Returns number

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.readQwpVarint.html b/docs/functions/_questdb_browser-client.readQwpVarint.html index 307b0901f..cb64e0012 100644 --- a/docs/functions/_questdb_browser-client.readQwpVarint.html +++ b/docs/functions/_questdb_browser-client.readQwpVarint.html @@ -1,2 +1,2 @@ readQwpVarint | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns bigint

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.readQwpVarintNumber.html b/docs/functions/_questdb_browser-client.readQwpVarintNumber.html index 4bb41009b..617ad8d79 100644 --- a/docs/functions/_questdb_browser-client.readQwpVarintNumber.html +++ b/docs/functions/_questdb_browser-client.readQwpVarintNumber.html @@ -1 +1 @@ -readQwpVarintNumber | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function readQwpVarintNumber

                                                                                                  +readQwpVarintNumber | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function readQwpVarintNumber

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.short.html b/docs/functions/_questdb_browser-client.short.html index f8b7c0a83..7188cf95c 100644 --- a/docs/functions/_questdb_browser-client.short.html +++ b/docs/functions/_questdb_browser-client.short.html @@ -1,2 +1,2 @@ short | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<number>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.symbol.html b/docs/functions/_questdb_browser-client.symbol.html index 4fdc0aada..cf8bacb0c 100644 --- a/docs/functions/_questdb_browser-client.symbol.html +++ b/docs/functions/_questdb_browser-client.symbol.html @@ -1,2 +1,2 @@ symbol | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<string>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.timestamp.html b/docs/functions/_questdb_browser-client.timestamp.html index 5b22b99fc..8ac61ad93 100644 --- a/docs/functions/_questdb_browser-client.timestamp.html +++ b/docs/functions/_questdb_browser-client.timestamp.html @@ -1,2 +1,2 @@ timestamp | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Type Parameters

                                                                                                  Parameters

                                                                                                  Returns QwpWriterColumn<TimestampInput<Unit>>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.utf8Length.html b/docs/functions/_questdb_browser-client.utf8Length.html index 44cd093c6..4fc5a289b 100644 --- a/docs/functions/_questdb_browser-client.utf8Length.html +++ b/docs/functions/_questdb_browser-client.utf8Length.html @@ -1 +1 @@ -utf8Length | QuestDB JavaScript Client - v5.0.0
                                                                                                  +utf8Length | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/functions/_questdb_browser-client.uuid.html b/docs/functions/_questdb_browser-client.uuid.html index db8c28c08..aa9032149 100644 --- a/docs/functions/_questdb_browser-client.uuid.html +++ b/docs/functions/_questdb_browser-client.uuid.html @@ -1,2 +1,2 @@ uuid | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<QwpUuidInput>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.varchar.html b/docs/functions/_questdb_browser-client.varchar.html index b0c2853b7..9a6fdb5ba 100644 --- a/docs/functions/_questdb_browser-client.varchar.html +++ b/docs/functions/_questdb_browser-client.varchar.html @@ -1,2 +1,2 @@ varchar | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<string>

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.writeQwpFrameHeader.html b/docs/functions/_questdb_browser-client.writeQwpFrameHeader.html index 3c9bbe66d..ee85f166c 100644 --- a/docs/functions/_questdb_browser-client.writeQwpFrameHeader.html +++ b/docs/functions/_questdb_browser-client.writeQwpFrameHeader.html @@ -1 +1 @@ -writeQwpFrameHeader | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function writeQwpFrameHeader

                                                                                                  +writeQwpFrameHeader | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function writeQwpFrameHeader

                                                                                                  diff --git a/docs/functions/_questdb_browser-client.writeQwpVarint.html b/docs/functions/_questdb_browser-client.writeQwpVarint.html index 95005838b..c16a2274e 100644 --- a/docs/functions/_questdb_browser-client.writeQwpVarint.html +++ b/docs/functions/_questdb_browser-client.writeQwpVarint.html @@ -1,2 +1,2 @@ writeQwpVarint | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns void

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.addQwpDurableAckWebSocketProtocol.html b/docs/functions/_questdb_nodejs-client.addQwpDurableAckWebSocketProtocol.html index 54f00a9d6..bd7060bf9 100644 --- a/docs/functions/_questdb_nodejs-client.addQwpDurableAckWebSocketProtocol.html +++ b/docs/functions/_questdb_nodejs-client.addQwpDurableAckWebSocketProtocol.html @@ -1,2 +1,2 @@ addQwpDurableAckWebSocketProtocol | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function addQwpDurableAckWebSocketProtocol

                                                                                                  • Adds the durable-ACK capability token without mutating user options.

                                                                                                    -

                                                                                                    Parameters

                                                                                                    • protocols: string | readonly string[]

                                                                                                    Returns string | string[]

                                                                                                  +

                                                                                                  Parameters

                                                                                                  • protocols: string | readonly string[]

                                                                                                  Returns string | string[]

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.bigintToTwosComplementBytes.html b/docs/functions/_questdb_nodejs-client.bigintToTwosComplementBytes.html index d835a8c6d..18560f974 100644 --- a/docs/functions/_questdb_nodejs-client.bigintToTwosComplementBytes.html +++ b/docs/functions/_questdb_nodejs-client.bigintToTwosComplementBytes.html @@ -2,4 +2,4 @@ Produces the minimal-width representation that preserves the sign.

                                                                                                  Parameters

                                                                                                  • value: bigint

                                                                                                    The value to serialise

                                                                                                  Returns number[]

                                                                                                  Byte array in big-endian order

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.binary.html b/docs/functions/_questdb_nodejs-client.binary.html index 4e69f3e72..1f818b637 100644 --- a/docs/functions/_questdb_nodejs-client.binary.html +++ b/docs/functions/_questdb_nodejs-client.binary.html @@ -1,2 +1,2 @@ binary | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<Uint8Array<ArrayBufferLike>>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.bool.html b/docs/functions/_questdb_nodejs-client.bool.html index 972bad55d..356e68807 100644 --- a/docs/functions/_questdb_nodejs-client.bool.html +++ b/docs/functions/_questdb_nodejs-client.bool.html @@ -1,2 +1,2 @@ bool | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<boolean>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.byte.html b/docs/functions/_questdb_nodejs-client.byte.html index 8c6e32c5f..2d2a582cf 100644 --- a/docs/functions/_questdb_nodejs-client.byte.html +++ b/docs/functions/_questdb_nodejs-client.byte.html @@ -1,2 +1,2 @@ byte | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<number>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.char.html b/docs/functions/_questdb_nodejs-client.char.html index ec0a05a43..bd42a4486 100644 --- a/docs/functions/_questdb_nodejs-client.char.html +++ b/docs/functions/_questdb_nodejs-client.char.html @@ -1,2 +1,2 @@ char | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<string>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.concatBytes.html b/docs/functions/_questdb_nodejs-client.concatBytes.html index 89de3e6b6..4ad24dc8d 100644 --- a/docs/functions/_questdb_nodejs-client.concatBytes.html +++ b/docs/functions/_questdb_nodejs-client.concatBytes.html @@ -1 +1 @@ -concatBytes | QuestDB JavaScript Client - v5.0.0
                                                                                                  +concatBytes | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.connectQwpNodeClient.html b/docs/functions/_questdb_nodejs-client.connectQwpNodeClient.html index 9d97b13ee..d8368a6bb 100644 --- a/docs/functions/_questdb_nodejs-client.connectQwpNodeClient.html +++ b/docs/functions/_questdb_nodejs-client.connectQwpNodeClient.html @@ -1,3 +1,3 @@ connectQwpNodeClient | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function connectQwpNodeClient

                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns Promise<QwpClient>

                                                                                                • Creates and prewarms a combined Node QWP ingress/egress client.

                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns Promise<QwpClient>

                                                                                                • diff --git a/docs/functions/_questdb_nodejs-client.connectQwpNodeEgress.html b/docs/functions/_questdb_nodejs-client.connectQwpNodeEgress.html index 260a80417..a768ec1ea 100644 --- a/docs/functions/_questdb_nodejs-client.connectQwpNodeEgress.html +++ b/docs/functions/_questdb_nodejs-client.connectQwpNodeEgress.html @@ -1,3 +1,3 @@ connectQwpNodeEgress | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function connectQwpNodeEgress

                                                                                                  +

                                                                                                  Returns Promise<QwpEgressSession>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.connectQwpNodeSender.html b/docs/functions/_questdb_nodejs-client.connectQwpNodeSender.html index 2dff9e551..ada30f4cf 100644 --- a/docs/functions/_questdb_nodejs-client.connectQwpNodeSender.html +++ b/docs/functions/_questdb_nodejs-client.connectQwpNodeSender.html @@ -1,2 +1,2 @@ connectQwpNodeSender | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function connectQwpNodeSender

                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns Promise<QwpSender>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.connectQwpNodeUdpSender.html b/docs/functions/_questdb_nodejs-client.connectQwpNodeUdpSender.html index 237ef5f73..f40c147ba 100644 --- a/docs/functions/_questdb_nodejs-client.connectQwpNodeUdpSender.html +++ b/docs/functions/_questdb_nodejs-client.connectQwpNodeUdpSender.html @@ -1,2 +1,2 @@ connectQwpNodeUdpSender | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function connectQwpNodeUdpSender

                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns Promise<QwpSender>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.createBuffer.html b/docs/functions/_questdb_nodejs-client.createBuffer.html index 2adeab5b4..d015a8bcd 100644 --- a/docs/functions/_questdb_nodejs-client.createBuffer.html +++ b/docs/functions/_questdb_nodejs-client.createBuffer.html @@ -3,4 +3,4 @@ See SenderOptions documentation for detailed description of configuration options.

                                                                                                  Returns SenderBuffer

                                                                                                  A SenderBuffer instance appropriate for the specified protocol version

                                                                                                  Error if protocol version is not specified or is unsupported

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.createQwpDataLossSenderError.html b/docs/functions/_questdb_nodejs-client.createQwpDataLossSenderError.html index a0f36b047..9b3b6b08e 100644 --- a/docs/functions/_questdb_nodejs-client.createQwpDataLossSenderError.html +++ b/docs/functions/_questdb_nodejs-client.createQwpDataLossSenderError.html @@ -1,2 +1,2 @@ createQwpDataLossSenderError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function createQwpDataLossSenderError

                                                                                                  +

                                                                                                  Returns QwpSenderError

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.createQwpNodeClient.html b/docs/functions/_questdb_nodejs-client.createQwpNodeClient.html index bccf1b8cb..a1eb9ee05 100644 --- a/docs/functions/_questdb_nodejs-client.createQwpNodeClient.html +++ b/docs/functions/_questdb_nodejs-client.createQwpNodeClient.html @@ -1,3 +1,3 @@ createQwpNodeClient | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function createQwpNodeClient

                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns QwpClient

                                                                                                • Creates a lazy Node QWP client with bounded sender and query pools.

                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns QwpClient

                                                                                                • diff --git a/docs/functions/_questdb_nodejs-client.createQwpNodeSender.html b/docs/functions/_questdb_nodejs-client.createQwpNodeSender.html index 36d489f4c..a44164d3f 100644 --- a/docs/functions/_questdb_nodejs-client.createQwpNodeSender.html +++ b/docs/functions/_questdb_nodejs-client.createQwpNodeSender.html @@ -1,3 +1,3 @@ createQwpNodeSender | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function createQwpNodeSender

                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns QwpSender

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.createQwpNodeUdpSender.html b/docs/functions/_questdb_nodejs-client.createQwpNodeUdpSender.html index c7c9797e3..2606ca3f9 100644 --- a/docs/functions/_questdb_nodejs-client.createQwpNodeUdpSender.html +++ b/docs/functions/_questdb_nodejs-client.createQwpNodeUdpSender.html @@ -1,4 +1,4 @@ createQwpNodeUdpSender | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function createQwpNodeUdpSender

                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns QwpSender

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.createQwpProtocolViolationSenderError.html b/docs/functions/_questdb_nodejs-client.createQwpProtocolViolationSenderError.html index 3f5146d4a..3dd7cf7e9 100644 --- a/docs/functions/_questdb_nodejs-client.createQwpProtocolViolationSenderError.html +++ b/docs/functions/_questdb_nodejs-client.createQwpProtocolViolationSenderError.html @@ -1 +1 @@ -createQwpProtocolViolationSenderError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function createQwpProtocolViolationSenderError

                                                                                                  +createQwpProtocolViolationSenderError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function createQwpProtocolViolationSenderError

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.createQwpSenderError.html b/docs/functions/_questdb_nodejs-client.createQwpSenderError.html index d6303d5eb..3dbfd1d88 100644 --- a/docs/functions/_questdb_nodejs-client.createQwpSenderError.html +++ b/docs/functions/_questdb_nodejs-client.createQwpSenderError.html @@ -1 +1 @@ -createQwpSenderError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function createQwpSenderError

                                                                                                  +createQwpSenderError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function createQwpSenderError

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.createTransport.html b/docs/functions/_questdb_nodejs-client.createTransport.html index ee1597eb9..813fa6a73 100644 --- a/docs/functions/_questdb_nodejs-client.createTransport.html +++ b/docs/functions/_questdb_nodejs-client.createTransport.html @@ -2,4 +2,4 @@

                                                                                                  Parameters

                                                                                                  • options: SenderOptions

                                                                                                    Sender configuration options including protocol and connection details

                                                                                                  Returns SenderTransport

                                                                                                  Transport instance appropriate for the specified protocol

                                                                                                  Error if protocol or host options are missing or invalid

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.date.html b/docs/functions/_questdb_nodejs-client.date.html index 7b28aaefe..037883d15 100644 --- a/docs/functions/_questdb_nodejs-client.date.html +++ b/docs/functions/_questdb_nodejs-client.date.html @@ -1,4 +1,4 @@ date | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<number | bigint>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.decimal128.html b/docs/functions/_questdb_nodejs-client.decimal128.html index 337dab3ac..5af4d4bbe 100644 --- a/docs/functions/_questdb_nodejs-client.decimal128.html +++ b/docs/functions/_questdb_nodejs-client.decimal128.html @@ -1,2 +1,2 @@ decimal128 | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Parameters

                                                                                                  • scale: number

                                                                                                  Returns QwpWriterColumn<QwpDecimalInput>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.decimal256.html b/docs/functions/_questdb_nodejs-client.decimal256.html index 7b8b8db01..7981ccba9 100644 --- a/docs/functions/_questdb_nodejs-client.decimal256.html +++ b/docs/functions/_questdb_nodejs-client.decimal256.html @@ -1,2 +1,2 @@ decimal256 | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Parameters

                                                                                                  • scale: number

                                                                                                  Returns QwpWriterColumn<QwpDecimalInput>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.decimal64.html b/docs/functions/_questdb_nodejs-client.decimal64.html index 378391657..3b5f87af1 100644 --- a/docs/functions/_questdb_nodejs-client.decimal64.html +++ b/docs/functions/_questdb_nodejs-client.decimal64.html @@ -1,2 +1,2 @@ decimal64 | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Parameters

                                                                                                  • scale: number

                                                                                                  Returns QwpWriterColumn<QwpDecimalInput>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.decodeQwpContentEncoding.html b/docs/functions/_questdb_nodejs-client.decodeQwpContentEncoding.html index 06f94e690..b7e389510 100644 --- a/docs/functions/_questdb_nodejs-client.decodeQwpContentEncoding.html +++ b/docs/functions/_questdb_nodejs-client.decodeQwpContentEncoding.html @@ -1,4 +1,4 @@ decodeQwpContentEncoding | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function decodeQwpContentEncoding

                                                                                                  +

                                                                                                  Parameters

                                                                                                  • value: string

                                                                                                  Returns QwpNegotiatedEgressCompression

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.decodeQwpEgressMessage.html b/docs/functions/_questdb_nodejs-client.decodeQwpEgressMessage.html index fa99ebfd9..eb999d13d 100644 --- a/docs/functions/_questdb_nodejs-client.decodeQwpEgressMessage.html +++ b/docs/functions/_questdb_nodejs-client.decodeQwpEgressMessage.html @@ -1,2 +1,5 @@ -decodeQwpEgressMessage | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function decodeQwpEgressMessage

                                                                                                  +decodeQwpEgressMessage | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function decodeQwpEgressMessage

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.decodeQwpEgressMessageWithQueryFlags.html b/docs/functions/_questdb_nodejs-client.decodeQwpEgressMessageWithQueryFlags.html new file mode 100644 index 000000000..fa38e8659 --- /dev/null +++ b/docs/functions/_questdb_nodejs-client.decodeQwpEgressMessageWithQueryFlags.html @@ -0,0 +1,8 @@ +decodeQwpEgressMessageWithQueryFlags | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function decodeQwpEgressMessageWithQueryFlags

                                                                                                  • Decodes one QWP-framed server-to-client egress message answering a +QUERY_REQUEST sent with queryFlags.

                                                                                                    +

                                                                                                    The flags decide the trailers RESULT_END, EXEC_DONE and QUERY_ERROR end with +-- the row count, the statistics and the error position -- which are read +into the message and must be the last bytes of the frame. Other messages do +not depend on them, and with no flags set this decodes as +decodeQwpEgressMessage does.

                                                                                                    +

                                                                                                    Parameters

                                                                                                    • bytes: Uint8Array
                                                                                                    • queryFlags: number | bigint

                                                                                                    Returns QwpEgressMessage

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.decodeQwpFrame.html b/docs/functions/_questdb_nodejs-client.decodeQwpFrame.html index 77e7b938c..8c062833d 100644 --- a/docs/functions/_questdb_nodejs-client.decodeQwpFrame.html +++ b/docs/functions/_questdb_nodejs-client.decodeQwpFrame.html @@ -1 +1 @@ -decodeQwpFrame | QuestDB JavaScript Client - v5.0.0
                                                                                                  +decodeQwpFrame | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.decodeQwpIngressResponse.html b/docs/functions/_questdb_nodejs-client.decodeQwpIngressResponse.html index 2fb0f0acc..473bd45b8 100644 --- a/docs/functions/_questdb_nodejs-client.decodeQwpIngressResponse.html +++ b/docs/functions/_questdb_nodejs-client.decodeQwpIngressResponse.html @@ -1,2 +1,2 @@ decodeQwpIngressResponse | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function decodeQwpIngressResponse

                                                                                                  +

                                                                                                  Parameters

                                                                                                  • payload: Uint8Array

                                                                                                  Returns QwpIngressResponse

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.decodeQwpIngressServerInfo.html b/docs/functions/_questdb_nodejs-client.decodeQwpIngressServerInfo.html index 28964aae9..060da9a8d 100644 --- a/docs/functions/_questdb_nodejs-client.decodeQwpIngressServerInfo.html +++ b/docs/functions/_questdb_nodejs-client.decodeQwpIngressServerInfo.html @@ -1,2 +1,2 @@ decodeQwpIngressServerInfo | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function decodeQwpIngressServerInfo

                                                                                                  +

                                                                                                  Parameters

                                                                                                  • payload: Uint8Array

                                                                                                  Returns QwpIngressServerInfo

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.decodeQwpIngressSymbolDictionaryDelta.html b/docs/functions/_questdb_nodejs-client.decodeQwpIngressSymbolDictionaryDelta.html index 654e32a98..015409ba8 100644 --- a/docs/functions/_questdb_nodejs-client.decodeQwpIngressSymbolDictionaryDelta.html +++ b/docs/functions/_questdb_nodejs-client.decodeQwpIngressSymbolDictionaryDelta.html @@ -1,2 +1,2 @@ decodeQwpIngressSymbolDictionaryDelta | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function decodeQwpIngressSymbolDictionaryDelta

                                                                                                  +

                                                                                                  Parameters

                                                                                                  • bytes: Uint8Array

                                                                                                  Returns QwpIngressSymbolDictionaryDelta

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.decodeQwpVarint.html b/docs/functions/_questdb_nodejs-client.decodeQwpVarint.html index 54a7b3cca..291603b7b 100644 --- a/docs/functions/_questdb_nodejs-client.decodeQwpVarint.html +++ b/docs/functions/_questdb_nodejs-client.decodeQwpVarint.html @@ -1 +1 @@ -decodeQwpVarint | QuestDB JavaScript Client - v5.0.0
                                                                                                  • Parameters

                                                                                                    • bytes: Uint8Array
                                                                                                    • offset: number = 0

                                                                                                    Returns { offset: number; value: bigint }

                                                                                                  +decodeQwpVarint | QuestDB JavaScript Client - v5.0.0
                                                                                                  • Parameters

                                                                                                    • bytes: Uint8Array
                                                                                                    • offset: number = 0

                                                                                                    Returns { offset: number; value: bigint }

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.decodeUtf8.html b/docs/functions/_questdb_nodejs-client.decodeUtf8.html index 8ad577ed9..e06313e41 100644 --- a/docs/functions/_questdb_nodejs-client.decodeUtf8.html +++ b/docs/functions/_questdb_nodejs-client.decodeUtf8.html @@ -1 +1 @@ -decodeUtf8 | QuestDB JavaScript Client - v5.0.0
                                                                                                  +decodeUtf8 | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.decompressQwpZstdFrame.html b/docs/functions/_questdb_nodejs-client.decompressQwpZstdFrame.html index 8ba2092f9..a12fc2346 100644 --- a/docs/functions/_questdb_nodejs-client.decompressQwpZstdFrame.html +++ b/docs/functions/_questdb_nodejs-client.decompressQwpZstdFrame.html @@ -1,2 +1,2 @@ decompressQwpZstdFrame | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function decompressQwpZstdFrame

                                                                                                  +

                                                                                                  Parameters

                                                                                                  • frame: Uint8Array

                                                                                                  Returns Uint8Array

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.defaultQwpSenderErrorHandler.html b/docs/functions/_questdb_nodejs-client.defaultQwpSenderErrorHandler.html index 6a8bc5751..c88333103 100644 --- a/docs/functions/_questdb_nodejs-client.defaultQwpSenderErrorHandler.html +++ b/docs/functions/_questdb_nodejs-client.defaultQwpSenderErrorHandler.html @@ -1,3 +1,3 @@ defaultQwpSenderErrorHandler | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function defaultQwpSenderErrorHandler

                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns void

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.designatedTimestamp.html b/docs/functions/_questdb_nodejs-client.designatedTimestamp.html index e84c65cc8..396651015 100644 --- a/docs/functions/_questdb_nodejs-client.designatedTimestamp.html +++ b/docs/functions/_questdb_nodejs-client.designatedTimestamp.html @@ -1,2 +1,2 @@ designatedTimestamp | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function designatedTimestamp

                                                                                                  +

                                                                                                  Type Parameters

                                                                                                  Parameters

                                                                                                  Returns QwpWriterColumn<TimestampInput<Unit>, true>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.double.html b/docs/functions/_questdb_nodejs-client.double.html index ab8f7082d..940e36e76 100644 --- a/docs/functions/_questdb_nodejs-client.double.html +++ b/docs/functions/_questdb_nodejs-client.double.html @@ -1,2 +1,2 @@ double | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<number>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.doubleArray.html b/docs/functions/_questdb_nodejs-client.doubleArray.html index 95a89daa9..ca25743da 100644 --- a/docs/functions/_questdb_nodejs-client.doubleArray.html +++ b/docs/functions/_questdb_nodejs-client.doubleArray.html @@ -1,2 +1,2 @@ doubleArray | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<QwpDoubleArrayInput>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.encodeQwpAcceptEncoding.html b/docs/functions/_questdb_nodejs-client.encodeQwpAcceptEncoding.html index 005e06dfe..aa4ba394b 100644 --- a/docs/functions/_questdb_nodejs-client.encodeQwpAcceptEncoding.html +++ b/docs/functions/_questdb_nodejs-client.encodeQwpAcceptEncoding.html @@ -1,2 +1,2 @@ encodeQwpAcceptEncoding | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function encodeQwpAcceptEncoding

                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns string

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.encodeQwpBinds.html b/docs/functions/_questdb_nodejs-client.encodeQwpBinds.html index 8199ab549..1e76daa0a 100644 --- a/docs/functions/_questdb_nodejs-client.encodeQwpBinds.html +++ b/docs/functions/_questdb_nodejs-client.encodeQwpBinds.html @@ -1,2 +1,2 @@ encodeQwpBinds | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns QwpEncodedBinds

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.encodeQwpCancel.html b/docs/functions/_questdb_nodejs-client.encodeQwpCancel.html index 066ec1231..bb3443890 100644 --- a/docs/functions/_questdb_nodejs-client.encodeQwpCancel.html +++ b/docs/functions/_questdb_nodejs-client.encodeQwpCancel.html @@ -1,2 +1,2 @@ encodeQwpCancel | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Parameters

                                                                                                  • request: number | bigint

                                                                                                  Returns Uint8Array

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.encodeQwpCredit.html b/docs/functions/_questdb_nodejs-client.encodeQwpCredit.html index 10a2509c0..fee94b619 100644 --- a/docs/functions/_questdb_nodejs-client.encodeQwpCredit.html +++ b/docs/functions/_questdb_nodejs-client.encodeQwpCredit.html @@ -1,2 +1,2 @@ encodeQwpCredit | QuestDB JavaScript Client - v5.0.0
                                                                                                  • Encodes the unframed client-to-server CREDIT payload.

                                                                                                    -

                                                                                                    Parameters

                                                                                                    • request: number | bigint
                                                                                                    • additionalBytes: number | bigint

                                                                                                    Returns Uint8Array

                                                                                                  +

                                                                                                  Parameters

                                                                                                  • request: number | bigint
                                                                                                  • additionalBytes: number | bigint

                                                                                                  Returns Uint8Array

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.encodeQwpDurableAckPollFrame.html b/docs/functions/_questdb_nodejs-client.encodeQwpDurableAckPollFrame.html index 95b11c40d..989b0b90f 100644 --- a/docs/functions/_questdb_nodejs-client.encodeQwpDurableAckPollFrame.html +++ b/docs/functions/_questdb_nodejs-client.encodeQwpDurableAckPollFrame.html @@ -1,2 +1,2 @@ encodeQwpDurableAckPollFrame | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function encodeQwpDurableAckPollFrame

                                                                                                  +

                                                                                                  Returns Uint8Array

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.encodeQwpFrame.html b/docs/functions/_questdb_nodejs-client.encodeQwpFrame.html index 64e8fccac..431c99b9c 100644 --- a/docs/functions/_questdb_nodejs-client.encodeQwpFrame.html +++ b/docs/functions/_questdb_nodejs-client.encodeQwpFrame.html @@ -1 +1 @@ -encodeQwpFrame | QuestDB JavaScript Client - v5.0.0
                                                                                                  • Parameters

                                                                                                    • payload: Uint8Array
                                                                                                    • flags: number = 0
                                                                                                    • tableCount: number = 0

                                                                                                    Returns Uint8Array

                                                                                                  +encodeQwpFrame | QuestDB JavaScript Client - v5.0.0
                                                                                                  • Parameters

                                                                                                    • payload: Uint8Array
                                                                                                    • flags: number = 0
                                                                                                    • tableCount: number = 0

                                                                                                    Returns Uint8Array

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.encodeQwpGorilla.html b/docs/functions/_questdb_nodejs-client.encodeQwpGorilla.html index a9162c95f..4756adb78 100644 --- a/docs/functions/_questdb_nodejs-client.encodeQwpGorilla.html +++ b/docs/functions/_questdb_nodejs-client.encodeQwpGorilla.html @@ -1,2 +1,2 @@ encodeQwpGorilla | QuestDB JavaScript Client - v5.0.0
                                                                                                  • Encodes signed int64 timestamps with the QWP LSB-first Gorilla variant.

                                                                                                    -

                                                                                                    Parameters

                                                                                                    • timestamps: readonly bigint[]

                                                                                                    Returns Uint8Array

                                                                                                  +

                                                                                                  Parameters

                                                                                                  • timestamps: readonly bigint[]

                                                                                                  Returns Uint8Array

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.encodeQwpIngressCommitFrame.html b/docs/functions/_questdb_nodejs-client.encodeQwpIngressCommitFrame.html index b77764df7..1a5fc1611 100644 --- a/docs/functions/_questdb_nodejs-client.encodeQwpIngressCommitFrame.html +++ b/docs/functions/_questdb_nodejs-client.encodeQwpIngressCommitFrame.html @@ -1 +1 @@ -encodeQwpIngressCommitFrame | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function encodeQwpIngressCommitFrame

                                                                                                  +encodeQwpIngressCommitFrame | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function encodeQwpIngressCommitFrame

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.encodeQwpIngressFrame.html b/docs/functions/_questdb_nodejs-client.encodeQwpIngressFrame.html index 18433f4fa..053f588f0 100644 --- a/docs/functions/_questdb_nodejs-client.encodeQwpIngressFrame.html +++ b/docs/functions/_questdb_nodejs-client.encodeQwpIngressFrame.html @@ -1,2 +1,2 @@ encodeQwpIngressFrame | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function encodeQwpIngressFrame

                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns Uint8Array

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.encodeQwpIngressSymbolDictionaryFrame.html b/docs/functions/_questdb_nodejs-client.encodeQwpIngressSymbolDictionaryFrame.html index 7b9d9d8ed..3d8ac3599 100644 --- a/docs/functions/_questdb_nodejs-client.encodeQwpIngressSymbolDictionaryFrame.html +++ b/docs/functions/_questdb_nodejs-client.encodeQwpIngressSymbolDictionaryFrame.html @@ -1,2 +1,2 @@ encodeQwpIngressSymbolDictionaryFrame | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function encodeQwpIngressSymbolDictionaryFrame

                                                                                                  • Encodes a table-less committed dictionary catch-up frame.

                                                                                                    -

                                                                                                    Parameters

                                                                                                    • startId: number
                                                                                                    • entries: readonly string[]

                                                                                                    Returns Uint8Array

                                                                                                  +

                                                                                                  Parameters

                                                                                                  • startId: number
                                                                                                  • entries: readonly string[]

                                                                                                  Returns Uint8Array

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.encodeQwpQueryRequest.html b/docs/functions/_questdb_nodejs-client.encodeQwpQueryRequest.html index 82a278d33..bb334ca54 100644 --- a/docs/functions/_questdb_nodejs-client.encodeQwpQueryRequest.html +++ b/docs/functions/_questdb_nodejs-client.encodeQwpQueryRequest.html @@ -1,2 +1,2 @@ encodeQwpQueryRequest | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function encodeQwpQueryRequest

                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns Uint8Array

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.encodeQwpVarint.html b/docs/functions/_questdb_nodejs-client.encodeQwpVarint.html index 75ba852fe..e981effed 100644 --- a/docs/functions/_questdb_nodejs-client.encodeQwpVarint.html +++ b/docs/functions/_questdb_nodejs-client.encodeQwpVarint.html @@ -1 +1 @@ -encodeQwpVarint | QuestDB JavaScript Client - v5.0.0
                                                                                                  +encodeQwpVarint | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.encodeUtf8.html b/docs/functions/_questdb_nodejs-client.encodeUtf8.html index 97d6c80cb..5aee5b0fa 100644 --- a/docs/functions/_questdb_nodejs-client.encodeUtf8.html +++ b/docs/functions/_questdb_nodejs-client.encodeUtf8.html @@ -1 +1 @@ -encodeUtf8 | QuestDB JavaScript Client - v5.0.0
                                                                                                  +encodeUtf8 | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.flattenQwpArray.html b/docs/functions/_questdb_nodejs-client.flattenQwpArray.html index f4957dfdf..5f14f54eb 100644 --- a/docs/functions/_questdb_nodejs-client.flattenQwpArray.html +++ b/docs/functions/_questdb_nodejs-client.flattenQwpArray.html @@ -1 +1 @@ -flattenQwpArray | QuestDB JavaScript Client - v5.0.0
                                                                                                  +flattenQwpArray | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.float32.html b/docs/functions/_questdb_nodejs-client.float32.html index 7202a7923..a44ae1de1 100644 --- a/docs/functions/_questdb_nodejs-client.float32.html +++ b/docs/functions/_questdb_nodejs-client.float32.html @@ -1,2 +1,2 @@ float32 | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<number>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.float64.html b/docs/functions/_questdb_nodejs-client.float64.html index 865d21f9a..a542a5c41 100644 --- a/docs/functions/_questdb_nodejs-client.float64.html +++ b/docs/functions/_questdb_nodejs-client.float64.html @@ -1,2 +1,2 @@ float64 | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<number>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.geohash.html b/docs/functions/_questdb_nodejs-client.geohash.html index d8dcbf606..6f7e72d98 100644 --- a/docs/functions/_questdb_nodejs-client.geohash.html +++ b/docs/functions/_questdb_nodejs-client.geohash.html @@ -1,4 +1,4 @@ geohash | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<QwpGeohashInput>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.int32.html b/docs/functions/_questdb_nodejs-client.int32.html index ca3bb450a..6f9000037 100644 --- a/docs/functions/_questdb_nodejs-client.int32.html +++ b/docs/functions/_questdb_nodejs-client.int32.html @@ -1,4 +1,4 @@ int32 | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<number>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.int64.html b/docs/functions/_questdb_nodejs-client.int64.html index 67e02fb45..9b0e50361 100644 --- a/docs/functions/_questdb_nodejs-client.int64.html +++ b/docs/functions/_questdb_nodejs-client.int64.html @@ -1,4 +1,4 @@ int64 | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<bigint>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.ipv4.html b/docs/functions/_questdb_nodejs-client.ipv4.html index 46d4d20b0..261ff5515 100644 --- a/docs/functions/_questdb_nodejs-client.ipv4.html +++ b/docs/functions/_questdb_nodejs-client.ipv4.html @@ -1,2 +1,2 @@ ipv4 | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<QwpIpv4Input>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.isQwpDurableAckWebSocketProtocol.html b/docs/functions/_questdb_nodejs-client.isQwpDurableAckWebSocketProtocol.html index 844cd98cb..a5b5ba305 100644 --- a/docs/functions/_questdb_nodejs-client.isQwpDurableAckWebSocketProtocol.html +++ b/docs/functions/_questdb_nodejs-client.isQwpDurableAckWebSocketProtocol.html @@ -1,2 +1,2 @@ isQwpDurableAckWebSocketProtocol | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function isQwpDurableAckWebSocketProtocol

                                                                                                  +

                                                                                                  Parameters

                                                                                                  • protocol: string

                                                                                                  Returns boolean

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.long.html b/docs/functions/_questdb_nodejs-client.long.html index c9072ac2d..3b59937d8 100644 --- a/docs/functions/_questdb_nodejs-client.long.html +++ b/docs/functions/_questdb_nodejs-client.long.html @@ -1,2 +1,2 @@ long | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<bigint>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.long256.html b/docs/functions/_questdb_nodejs-client.long256.html index 790735d1e..e023453c2 100644 --- a/docs/functions/_questdb_nodejs-client.long256.html +++ b/docs/functions/_questdb_nodejs-client.long256.html @@ -1,2 +1,2 @@ long256 | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<QwpLong256Input>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.longArray.html b/docs/functions/_questdb_nodejs-client.longArray.html index e577c4af9..c54f51646 100644 --- a/docs/functions/_questdb_nodejs-client.longArray.html +++ b/docs/functions/_questdb_nodejs-client.longArray.html @@ -1,4 +1,4 @@ longArray | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<QwpLongArrayInput>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.parseQwpNodeClientConfig.html b/docs/functions/_questdb_nodejs-client.parseQwpNodeClientConfig.html index e42a4e320..c462eb1fd 100644 --- a/docs/functions/_questdb_nodejs-client.parseQwpNodeClientConfig.html +++ b/docs/functions/_questdb_nodejs-client.parseQwpNodeClientConfig.html @@ -1,2 +1,2 @@ parseQwpNodeClientConfig | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function parseQwpNodeClientConfig

                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns QwpNodeClientOptions

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.qwpDefaultSenderErrorPolicy.html b/docs/functions/_questdb_nodejs-client.qwpDefaultSenderErrorPolicy.html index 9a3651558..5f9906c3e 100644 --- a/docs/functions/_questdb_nodejs-client.qwpDefaultSenderErrorPolicy.html +++ b/docs/functions/_questdb_nodejs-client.qwpDefaultSenderErrorPolicy.html @@ -1 +1 @@ -qwpDefaultSenderErrorPolicy | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function qwpDefaultSenderErrorPolicy

                                                                                                  +qwpDefaultSenderErrorPolicy | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function qwpDefaultSenderErrorPolicy

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.qwpGorillaSize.html b/docs/functions/_questdb_nodejs-client.qwpGorillaSize.html index 82e069cc8..5f21fa88d 100644 --- a/docs/functions/_questdb_nodejs-client.qwpGorillaSize.html +++ b/docs/functions/_questdb_nodejs-client.qwpGorillaSize.html @@ -1,3 +1,3 @@ qwpGorillaSize | QuestDB JavaScript Client - v5.0.0
                                                                                                  • Encoded byte count, or -1 when a delta-of-delta leaves int32 range. Throws when a timestamp is outside the signed int64 wire range.

                                                                                                    -

                                                                                                    Parameters

                                                                                                    • timestamps: readonly bigint[]

                                                                                                    Returns number

                                                                                                  +

                                                                                                  Parameters

                                                                                                  • timestamps: readonly bigint[]

                                                                                                  Returns number

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.qwpSenderErrorCategory.html b/docs/functions/_questdb_nodejs-client.qwpSenderErrorCategory.html index 6f87db244..1f93b5f4f 100644 --- a/docs/functions/_questdb_nodejs-client.qwpSenderErrorCategory.html +++ b/docs/functions/_questdb_nodejs-client.qwpSenderErrorCategory.html @@ -1 +1 @@ -qwpSenderErrorCategory | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function qwpSenderErrorCategory

                                                                                                  +qwpSenderErrorCategory | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function qwpSenderErrorCategory

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.qwpVarintSize.html b/docs/functions/_questdb_nodejs-client.qwpVarintSize.html index 6777f7502..97299b874 100644 --- a/docs/functions/_questdb_nodejs-client.qwpVarintSize.html +++ b/docs/functions/_questdb_nodejs-client.qwpVarintSize.html @@ -1,2 +1,2 @@ qwpVarintSize | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Parameters

                                                                                                  • value: number | bigint

                                                                                                  Returns number

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.readQwpVarint.html b/docs/functions/_questdb_nodejs-client.readQwpVarint.html index 12ecf5254..104563001 100644 --- a/docs/functions/_questdb_nodejs-client.readQwpVarint.html +++ b/docs/functions/_questdb_nodejs-client.readQwpVarint.html @@ -1,2 +1,2 @@ readQwpVarint | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns bigint

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.readQwpVarintNumber.html b/docs/functions/_questdb_nodejs-client.readQwpVarintNumber.html index a82b841b7..58c47c3d5 100644 --- a/docs/functions/_questdb_nodejs-client.readQwpVarintNumber.html +++ b/docs/functions/_questdb_nodejs-client.readQwpVarintNumber.html @@ -1 +1 @@ -readQwpVarintNumber | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function readQwpVarintNumber

                                                                                                  +readQwpVarintNumber | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function readQwpVarintNumber

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.retryQwpNodeOrphanSlot.html b/docs/functions/_questdb_nodejs-client.retryQwpNodeOrphanSlot.html index 4b0754c70..0ce862a3f 100644 --- a/docs/functions/_questdb_nodejs-client.retryQwpNodeOrphanSlot.html +++ b/docs/functions/_questdb_nodejs-client.retryQwpNodeOrphanSlot.html @@ -1,2 +1,2 @@ retryQwpNodeOrphanSlot | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function retryQwpNodeOrphanSlot

                                                                                                  +

                                                                                                  Parameters

                                                                                                  • directory: string

                                                                                                  Returns Promise<void>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.short.html b/docs/functions/_questdb_nodejs-client.short.html index 487674d89..45423a651 100644 --- a/docs/functions/_questdb_nodejs-client.short.html +++ b/docs/functions/_questdb_nodejs-client.short.html @@ -1,2 +1,2 @@ short | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<number>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.symbol.html b/docs/functions/_questdb_nodejs-client.symbol.html index 28df1760f..5041ec08d 100644 --- a/docs/functions/_questdb_nodejs-client.symbol.html +++ b/docs/functions/_questdb_nodejs-client.symbol.html @@ -1,2 +1,2 @@ symbol | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<string>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.timestamp.html b/docs/functions/_questdb_nodejs-client.timestamp.html index 2340afabb..6eacd599c 100644 --- a/docs/functions/_questdb_nodejs-client.timestamp.html +++ b/docs/functions/_questdb_nodejs-client.timestamp.html @@ -1,2 +1,2 @@ timestamp | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Type Parameters

                                                                                                  Parameters

                                                                                                  Returns QwpWriterColumn<TimestampInput<Unit>>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.utf8Length.html b/docs/functions/_questdb_nodejs-client.utf8Length.html index 339dd9184..2723d69b8 100644 --- a/docs/functions/_questdb_nodejs-client.utf8Length.html +++ b/docs/functions/_questdb_nodejs-client.utf8Length.html @@ -1 +1 @@ -utf8Length | QuestDB JavaScript Client - v5.0.0
                                                                                                  +utf8Length | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.uuid.html b/docs/functions/_questdb_nodejs-client.uuid.html index 6123cbfcf..9bc89cf97 100644 --- a/docs/functions/_questdb_nodejs-client.uuid.html +++ b/docs/functions/_questdb_nodejs-client.uuid.html @@ -1,2 +1,2 @@ uuid | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<QwpUuidInput>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.varchar.html b/docs/functions/_questdb_nodejs-client.varchar.html index 14f73ae04..5e9fd4564 100644 --- a/docs/functions/_questdb_nodejs-client.varchar.html +++ b/docs/functions/_questdb_nodejs-client.varchar.html @@ -1,2 +1,2 @@ varchar | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Returns QwpWriterColumn<string>

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.writeQwpFrameHeader.html b/docs/functions/_questdb_nodejs-client.writeQwpFrameHeader.html index d1cf47731..519e5ecd3 100644 --- a/docs/functions/_questdb_nodejs-client.writeQwpFrameHeader.html +++ b/docs/functions/_questdb_nodejs-client.writeQwpFrameHeader.html @@ -1 +1 @@ -writeQwpFrameHeader | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function writeQwpFrameHeader

                                                                                                  +writeQwpFrameHeader | QuestDB JavaScript Client - v5.0.0

                                                                                                  Function writeQwpFrameHeader

                                                                                                  diff --git a/docs/functions/_questdb_nodejs-client.writeQwpVarint.html b/docs/functions/_questdb_nodejs-client.writeQwpVarint.html index 24cc158dd..ef679418f 100644 --- a/docs/functions/_questdb_nodejs-client.writeQwpVarint.html +++ b/docs/functions/_questdb_nodejs-client.writeQwpVarint.html @@ -1,2 +1,2 @@ writeQwpVarint | QuestDB JavaScript Client - v5.0.0
                                                                                                  +

                                                                                                  Parameters

                                                                                                  Returns void

                                                                                                  diff --git a/docs/hierarchy.html b/docs/hierarchy.html index d6af6ac75..c156b913c 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -1 +1 @@ -QuestDB JavaScript Client - v5.0.0
                                                                                                  +QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/index.html b/docs/index.html index 4f89edd82..6eedd2d3c 100644 --- a/docs/index.html +++ b/docs/index.html @@ -308,6 +308,15 @@

                                                                                                  Returns Promise<void>

                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpEncodedBinds.html b/docs/interfaces/_questdb_browser-client.QwpEncodedBinds.html index 137131ada..ebfa07498 100644 --- a/docs/interfaces/_questdb_browser-client.QwpEncodedBinds.html +++ b/docs/interfaces/_questdb_browser-client.QwpEncodedBinds.html @@ -1,3 +1,3 @@ -QwpEncodedBinds | QuestDB JavaScript Client - v5.0.0
                                                                                                  interface QwpEncodedBinds {
                                                                                                      count: number;
                                                                                                      payload: Uint8Array;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  count +QwpEncodedBinds | QuestDB JavaScript Client - v5.0.0
                                                                                                  interface QwpEncodedBinds {
                                                                                                      count: number;
                                                                                                      payload: Uint8Array;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  count: number
                                                                                                  payload: Uint8Array
                                                                                                  +

                                                                                                  Properties

                                                                                                  count: number
                                                                                                  payload: Uint8Array
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpExecDoneMessage.html b/docs/interfaces/_questdb_browser-client.QwpExecDoneMessage.html index 714c2bac6..d6dc2062c 100644 --- a/docs/interfaces/_questdb_browser-client.QwpExecDoneMessage.html +++ b/docs/interfaces/_questdb_browser-client.QwpExecDoneMessage.html @@ -1,9 +1,11 @@ -QwpExecDoneMessage | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpExecDoneMessage

                                                                                                  interface QwpExecDoneMessage {
                                                                                                      flags: number;
                                                                                                      kind: "exec-done";
                                                                                                      operationType: number;
                                                                                                      payloadLength: number;
                                                                                                      requestId: bigint;
                                                                                                      rowsAffected: bigint;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  flags +QwpExecDoneMessage | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpExecDoneMessage

                                                                                                  interface QwpExecDoneMessage {
                                                                                                      flags: number;
                                                                                                      kind: "exec-done";
                                                                                                      operationType: number;
                                                                                                      payloadLength: number;
                                                                                                      requestId: bigint;
                                                                                                      rowsAffected: bigint;
                                                                                                      stats?: QwpQueryStats;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  flags: number
                                                                                                  kind: "exec-done"
                                                                                                  operationType: number
                                                                                                  payloadLength: number
                                                                                                  requestId: bigint
                                                                                                  rowsAffected: bigint
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  flags: number
                                                                                                  kind: "exec-done"
                                                                                                  operationType: number
                                                                                                  payloadLength: number
                                                                                                  requestId: bigint
                                                                                                  rowsAffected: bigint

                                                                                                  Present when the query asked for it (QWP_QUERY_FLAG_STATS).

                                                                                                  +
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpFailoverAttempt.html b/docs/interfaces/_questdb_browser-client.QwpFailoverAttempt.html index 473b40ae1..35c627e8e 100644 --- a/docs/interfaces/_questdb_browser-client.QwpFailoverAttempt.html +++ b/docs/interfaces/_questdb_browser-client.QwpFailoverAttempt.html @@ -1,3 +1,3 @@ -QwpFailoverAttempt | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpFailoverAttempt

                                                                                                  interface QwpFailoverAttempt {
                                                                                                      endpoint: string | URL;
                                                                                                      error: unknown;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  endpoint +QwpFailoverAttempt | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpFailoverAttempt

                                                                                                  interface QwpFailoverAttempt {
                                                                                                      endpoint: string | URL;
                                                                                                      error: unknown;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  endpoint: string | URL
                                                                                                  error: unknown
                                                                                                  +

                                                                                                  Properties

                                                                                                  endpoint: string | URL
                                                                                                  error: unknown
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpFrame.html b/docs/interfaces/_questdb_browser-client.QwpFrame.html index 5523099b7..59ca36ea9 100644 --- a/docs/interfaces/_questdb_browser-client.QwpFrame.html +++ b/docs/interfaces/_questdb_browser-client.QwpFrame.html @@ -1,6 +1,6 @@ -QwpFrame | QuestDB JavaScript Client - v5.0.0
                                                                                                  interface QwpFrame {
                                                                                                      flags: number;
                                                                                                      payload: Uint8Array;
                                                                                                      payloadLength: number;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  flags +QwpFrame | QuestDB JavaScript Client - v5.0.0
                                                                                                  interface QwpFrame {
                                                                                                      flags: number;
                                                                                                      payload: Uint8Array;
                                                                                                      payloadLength: number;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  flags: number
                                                                                                  payload: Uint8Array
                                                                                                  payloadLength: number
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  flags: number
                                                                                                  payload: Uint8Array
                                                                                                  payloadLength: number
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpFrameHeader.html b/docs/interfaces/_questdb_browser-client.QwpFrameHeader.html index b3973cf02..f595c333b 100644 --- a/docs/interfaces/_questdb_browser-client.QwpFrameHeader.html +++ b/docs/interfaces/_questdb_browser-client.QwpFrameHeader.html @@ -1,5 +1,5 @@ -QwpFrameHeader | QuestDB JavaScript Client - v5.0.0
                                                                                                  interface QwpFrameHeader {
                                                                                                      flags: number;
                                                                                                      payloadLength: number;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  flags +QwpFrameHeader | QuestDB JavaScript Client - v5.0.0
                                                                                                  interface QwpFrameHeader {
                                                                                                      flags: number;
                                                                                                      payloadLength: number;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  flags: number
                                                                                                  payloadLength: number
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  flags: number
                                                                                                  payloadLength: number
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpGeohashValue.html b/docs/interfaces/_questdb_browser-client.QwpGeohashValue.html index a60fe542a..46d659473 100644 --- a/docs/interfaces/_questdb_browser-client.QwpGeohashValue.html +++ b/docs/interfaces/_questdb_browser-client.QwpGeohashValue.html @@ -1,3 +1,3 @@ -QwpGeohashValue | QuestDB JavaScript Client - v5.0.0
                                                                                                  interface QwpGeohashValue {
                                                                                                      bits: bigint;
                                                                                                      precisionBits: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  bits +QwpGeohashValue | QuestDB JavaScript Client - v5.0.0
                                                                                                  interface QwpGeohashValue {
                                                                                                      bits: bigint;
                                                                                                      precisionBits: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  bits: bigint
                                                                                                  precisionBits: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  bits: bigint
                                                                                                  precisionBits: number
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpHandshakeMetadata.html b/docs/interfaces/_questdb_browser-client.QwpHandshakeMetadata.html index 6b7135d40..89d675039 100644 --- a/docs/interfaces/_questdb_browser-client.QwpHandshakeMetadata.html +++ b/docs/interfaces/_questdb_browser-client.QwpHandshakeMetadata.html @@ -1,5 +1,5 @@ QwpHandshakeMetadata | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpHandshakeMetadata

                                                                                                  Metadata negotiated during the QWP WebSocket upgrade.

                                                                                                  -
                                                                                                  interface QwpHandshakeMetadata {
                                                                                                      contentEncoding?: string;
                                                                                                      durableAckEnabled?: boolean;
                                                                                                      maxBatchSizeBytes?: number;
                                                                                                      negotiatedCompression?: QwpNegotiatedEgressCompression;
                                                                                                      qwpVersion: number;
                                                                                                      serverRole?: string;
                                                                                                      serverZone?: string;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpHandshakeMetadata {
                                                                                                      contentEncoding?: string;
                                                                                                      durableAckEnabled?: boolean;
                                                                                                      maxBatchSizeBytes?: number;
                                                                                                      negotiatedCompression?: QwpNegotiatedEgressCompression;
                                                                                                      qwpVersion: number;
                                                                                                      serverRole?: string;
                                                                                                      serverZone?: string;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  contentEncoding?: string

                                                                                                  Server-selected egress content encoding, when advertised.

                                                                                                  -
                                                                                                  durableAckEnabled?: boolean

                                                                                                  Whether the server confirmed durable-ACK support.

                                                                                                  -
                                                                                                  maxBatchSizeBytes?: number

                                                                                                  Server's hard ingress WebSocket-payload cap, when advertised.

                                                                                                  -
                                                                                                  negotiatedCompression?: QwpNegotiatedEgressCompression

                                                                                                  Parsed effective egress codec and level selected by the server.

                                                                                                  -
                                                                                                  qwpVersion: number

                                                                                                  QWP protocol version selected by the server.

                                                                                                  -
                                                                                                  serverRole?: string

                                                                                                  Server role advertised on a successful upgrade, when available.

                                                                                                  -
                                                                                                  serverZone?: string

                                                                                                  Server zone advertised on a successful upgrade, when available.

                                                                                                  -
                                                                                                  +
                                                                                                  durableAckEnabled?: boolean

                                                                                                  Whether the server confirmed durable-ACK support.

                                                                                                  +
                                                                                                  maxBatchSizeBytes?: number

                                                                                                  Server's hard ingress WebSocket-payload cap, when advertised.

                                                                                                  +
                                                                                                  negotiatedCompression?: QwpNegotiatedEgressCompression

                                                                                                  Parsed effective egress codec and level selected by the server.

                                                                                                  +
                                                                                                  qwpVersion: number

                                                                                                  QWP protocol version selected by the server.

                                                                                                  +
                                                                                                  serverRole?: string

                                                                                                  Server role advertised on a successful upgrade, when available.

                                                                                                  +
                                                                                                  serverZone?: string

                                                                                                  Server zone advertised on a successful upgrade, when available.

                                                                                                  +
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpIngressEncodeOptions.html b/docs/interfaces/_questdb_browser-client.QwpIngressEncodeOptions.html index 8b08384ce..b52f18117 100644 --- a/docs/interfaces/_questdb_browser-client.QwpIngressEncodeOptions.html +++ b/docs/interfaces/_questdb_browser-client.QwpIngressEncodeOptions.html @@ -1,7 +1,7 @@ -QwpIngressEncodeOptions | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressEncodeOptions

                                                                                                  interface QwpIngressEncodeOptions {
                                                                                                      confirmedMaxSymbolId?: number;
                                                                                                      deferCommit?: boolean;
                                                                                                      dictionary?: QwpSymbolDictionary;
                                                                                                      gorilla?: boolean;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  confirmedMaxSymbolId? +QwpIngressEncodeOptions | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressEncodeOptions

                                                                                                  interface QwpIngressEncodeOptions {
                                                                                                      confirmedMaxSymbolId?: number;
                                                                                                      deferCommit?: boolean;
                                                                                                      dictionary?: QwpSymbolDictionary;
                                                                                                      gorilla?: boolean;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  confirmedMaxSymbolId?: number

                                                                                                  Highest global symbol ID already published on this logical connection.

                                                                                                  -
                                                                                                  deferCommit?: boolean
                                                                                                  dictionary?: QwpSymbolDictionary

                                                                                                  Present means connection-scoped delta dictionary mode.

                                                                                                  -
                                                                                                  gorilla?: boolean
                                                                                                  +
                                                                                                  deferCommit?: boolean
                                                                                                  dictionary?: QwpSymbolDictionary

                                                                                                  Present means connection-scoped delta dictionary mode.

                                                                                                  +
                                                                                                  gorilla?: boolean
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpIngressErrorEvent.html b/docs/interfaces/_questdb_browser-client.QwpIngressErrorEvent.html index 79281275e..3b27d163b 100644 --- a/docs/interfaces/_questdb_browser-client.QwpIngressErrorEvent.html +++ b/docs/interfaces/_questdb_browser-client.QwpIngressErrorEvent.html @@ -1,8 +1,8 @@ -QwpIngressErrorEvent | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressErrorEvent

                                                                                                  interface QwpIngressErrorEvent {
                                                                                                      error: Error;
                                                                                                      metrics: QwpIngressMetrics;
                                                                                                      response?: QwpIngressResponse;
                                                                                                      senderError?: QwpSenderError;
                                                                                                      terminal: boolean;
                                                                                                      timestampMs: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  error +QwpIngressErrorEvent | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressErrorEvent

                                                                                                  interface QwpIngressErrorEvent {
                                                                                                      error: Error;
                                                                                                      metrics: QwpIngressMetrics;
                                                                                                      response?: QwpIngressResponse;
                                                                                                      senderError?: QwpSenderError;
                                                                                                      terminal: boolean;
                                                                                                      timestampMs: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  error: Error
                                                                                                  senderError?: QwpSenderError

                                                                                                  Present for a classified server rejection.

                                                                                                  -
                                                                                                  terminal: boolean
                                                                                                  timestampMs: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  error: Error
                                                                                                  senderError?: QwpSenderError

                                                                                                  Present for a classified server rejection.

                                                                                                  +
                                                                                                  terminal: boolean
                                                                                                  timestampMs: number
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpIngressMetrics.html b/docs/interfaces/_questdb_browser-client.QwpIngressMetrics.html index 84f68b032..a5a7ff902 100644 --- a/docs/interfaces/_questdb_browser-client.QwpIngressMetrics.html +++ b/docs/interfaces/_questdb_browser-client.QwpIngressMetrics.html @@ -1,5 +1,5 @@ QwpIngressMetrics | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressMetrics

                                                                                                  Immutable point-in-time ingress telemetry, safe in browsers and Node.js.

                                                                                                  -
                                                                                                  interface QwpIngressMetrics {
                                                                                                      ackedSequence: bigint;
                                                                                                      deliveredConnectionNotifications: number;
                                                                                                      deliveredErrorNotifications: number;
                                                                                                      deliveredProgressNotifications: number;
                                                                                                      droppedConnectionNotifications: number;
                                                                                                      droppedErrorNotifications: number;
                                                                                                      droppedProgressNotifications: number;
                                                                                                      lastError?: Error;
                                                                                                      memoryReplayMaxBytes?: number;
                                                                                                      memoryReplayUsedBytes?: number;
                                                                                                      pendingDurableTables: number;
                                                                                                      pendingReplayBytes: number;
                                                                                                      pendingReplayFrames: number;
                                                                                                      publishedSequence: bigint;
                                                                                                      replayAcknowledgedFrameSequence?: bigint;
                                                                                                      replayPublishedFrameSequence?: bigint;
                                                                                                      totalAcks: number;
                                                                                                      totalBytesPublished: number;
                                                                                                      totalBytesReplayed: number;
                                                                                                      totalBytesSent: number;
                                                                                                      totalDurableAcks: number;
                                                                                                      totalErrors: number;
                                                                                                      totalFailovers: number;
                                                                                                      totalFramesPublished: number;
                                                                                                      totalFramesReplayed: number;
                                                                                                      totalFramesSent: number;
                                                                                                      totalMemoryReplayAppendTimeouts: number;
                                                                                                      totalMemoryReplayBackpressureStalls: number;
                                                                                                      totalNacks: number;
                                                                                                      totalReconnectAttempts: number;
                                                                                                      totalReconnectErrors: number;
                                                                                                      totalReconnectsSucceeded: number;
                                                                                                      waitingMemoryReplayAppends: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpIngressMetrics {
                                                                                                      ackedSequence: bigint;
                                                                                                      deliveredConnectionNotifications: number;
                                                                                                      deliveredErrorNotifications: number;
                                                                                                      deliveredProgressNotifications: number;
                                                                                                      droppedConnectionNotifications: number;
                                                                                                      droppedErrorNotifications: number;
                                                                                                      droppedProgressNotifications: number;
                                                                                                      lastError?: Error;
                                                                                                      memoryReplayMaxBytes?: number;
                                                                                                      memoryReplayUsedBytes?: number;
                                                                                                      pendingDurableTables: number;
                                                                                                      pendingReplayBytes: number;
                                                                                                      pendingReplayFrames: number;
                                                                                                      publishedSequence: bigint;
                                                                                                      replayAcknowledgedFrameSequence?: bigint;
                                                                                                      replayPublishedFrameSequence?: bigint;
                                                                                                      totalAcks: number;
                                                                                                      totalBytesPublished: number;
                                                                                                      totalBytesReplayed: number;
                                                                                                      totalBytesSent: number;
                                                                                                      totalDurableAcks: number;
                                                                                                      totalErrors: number;
                                                                                                      totalFailovers: number;
                                                                                                      totalFramesPublished: number;
                                                                                                      totalFramesReplayed: number;
                                                                                                      totalFramesSent: number;
                                                                                                      totalMemoryReplayAppendTimeouts: number;
                                                                                                      totalMemoryReplayBackpressureStalls: number;
                                                                                                      totalNacks: number;
                                                                                                      totalReconnectAttempts: number;
                                                                                                      totalReconnectErrors: number;
                                                                                                      totalReconnectsSucceeded: number;
                                                                                                      waitingMemoryReplayAppends: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  ackedSequence: bigint

                                                                                                  Highest client-session sequence covered by a successful cumulative ACK.

                                                                                                  -
                                                                                                  deliveredConnectionNotifications: number
                                                                                                  deliveredErrorNotifications: number
                                                                                                  deliveredProgressNotifications: number
                                                                                                  droppedConnectionNotifications: number
                                                                                                  droppedErrorNotifications: number
                                                                                                  droppedProgressNotifications: number
                                                                                                  lastError?: Error
                                                                                                  memoryReplayMaxBytes?: number
                                                                                                  memoryReplayUsedBytes?: number
                                                                                                  pendingDurableTables: number
                                                                                                  pendingReplayBytes: number
                                                                                                  pendingReplayFrames: number
                                                                                                  publishedSequence: bigint

                                                                                                  Highest client-session sequence allocated, or -1 before the first send.

                                                                                                  -
                                                                                                  replayAcknowledgedFrameSequence?: bigint

                                                                                                  Trim watermark; in durable-ACK mode it advances only after durability.

                                                                                                  -
                                                                                                  replayPublishedFrameSequence?: bigint

                                                                                                  Stable store-and-forward watermark; absent without reconnect/replay.

                                                                                                  -
                                                                                                  totalAcks: number
                                                                                                  totalBytesPublished: number
                                                                                                  totalBytesReplayed: number
                                                                                                  totalBytesSent: number
                                                                                                  totalDurableAcks: number
                                                                                                  totalErrors: number
                                                                                                  totalFailovers: number
                                                                                                  totalFramesPublished: number
                                                                                                  totalFramesReplayed: number
                                                                                                  totalFramesSent: number

                                                                                                  Physical sends; includes replay and dictionary catch-up when available.

                                                                                                  -
                                                                                                  totalMemoryReplayAppendTimeouts: number
                                                                                                  totalMemoryReplayBackpressureStalls: number
                                                                                                  totalNacks: number
                                                                                                  totalReconnectAttempts: number
                                                                                                  totalReconnectErrors: number
                                                                                                  totalReconnectsSucceeded: number
                                                                                                  waitingMemoryReplayAppends: number
                                                                                                  +
                                                                                                  deliveredConnectionNotifications: number
                                                                                                  deliveredErrorNotifications: number
                                                                                                  deliveredProgressNotifications: number
                                                                                                  droppedConnectionNotifications: number
                                                                                                  droppedErrorNotifications: number
                                                                                                  droppedProgressNotifications: number
                                                                                                  lastError?: Error
                                                                                                  memoryReplayMaxBytes?: number
                                                                                                  memoryReplayUsedBytes?: number
                                                                                                  pendingDurableTables: number
                                                                                                  pendingReplayBytes: number
                                                                                                  pendingReplayFrames: number
                                                                                                  publishedSequence: bigint

                                                                                                  Highest client-session sequence allocated, or -1 before the first send.

                                                                                                  +
                                                                                                  replayAcknowledgedFrameSequence?: bigint

                                                                                                  Trim watermark; in durable-ACK mode it advances only after durability.

                                                                                                  +
                                                                                                  replayPublishedFrameSequence?: bigint

                                                                                                  Stable store-and-forward watermark; absent without reconnect/replay.

                                                                                                  +
                                                                                                  totalAcks: number
                                                                                                  totalBytesPublished: number
                                                                                                  totalBytesReplayed: number
                                                                                                  totalBytesSent: number
                                                                                                  totalDurableAcks: number
                                                                                                  totalErrors: number
                                                                                                  totalFailovers: number
                                                                                                  totalFramesPublished: number
                                                                                                  totalFramesReplayed: number
                                                                                                  totalFramesSent: number

                                                                                                  Physical sends; includes replay and dictionary catch-up when available.

                                                                                                  +
                                                                                                  totalMemoryReplayAppendTimeouts: number
                                                                                                  totalMemoryReplayBackpressureStalls: number
                                                                                                  totalNacks: number
                                                                                                  totalReconnectAttempts: number
                                                                                                  totalReconnectErrors: number
                                                                                                  totalReconnectsSucceeded: number
                                                                                                  waitingMemoryReplayAppends: number
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpIngressProgressEvent.html b/docs/interfaces/_questdb_browser-client.QwpIngressProgressEvent.html index f8a8d1c68..834a337ee 100644 --- a/docs/interfaces/_questdb_browser-client.QwpIngressProgressEvent.html +++ b/docs/interfaces/_questdb_browser-client.QwpIngressProgressEvent.html @@ -1,6 +1,6 @@ -QwpIngressProgressEvent | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressProgressEvent

                                                                                                  interface QwpIngressProgressEvent {
                                                                                                      kind: QwpIngressProgressKind;
                                                                                                      metrics: QwpIngressMetrics;
                                                                                                      response?: QwpIngressResponse;
                                                                                                      sequence?: bigint;
                                                                                                      timestampMs: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  kind +QwpIngressProgressEvent | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressProgressEvent

                                                                                                  interface QwpIngressProgressEvent {
                                                                                                      kind: QwpIngressProgressKind;
                                                                                                      metrics: QwpIngressMetrics;
                                                                                                      response?: QwpIngressResponse;
                                                                                                      sequence?: bigint;
                                                                                                      timestampMs: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  sequence?: bigint
                                                                                                  timestampMs: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  sequence?: bigint
                                                                                                  timestampMs: number
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpIngressReconnectOptions.html b/docs/interfaces/_questdb_browser-client.QwpIngressReconnectOptions.html index 758988504..2dda8ad70 100644 --- a/docs/interfaces/_questdb_browser-client.QwpIngressReconnectOptions.html +++ b/docs/interfaces/_questdb_browser-client.QwpIngressReconnectOptions.html @@ -4,7 +4,7 @@ not stopped by any configured limit. Transport and endpoint failures are retried until close(), and only a terminal error ends the session. reconnectMaxDurationMs bounds a synchronous initial connect only.

                                                                                                  -
                                                                                                  interface QwpIngressReconnectOptions {
                                                                                                      maxFrameRejections?: number;
                                                                                                      onEvent?: (event: QwpReconnectEvent) => void;
                                                                                                      poisonMinEscalationWindowMs?: number;
                                                                                                      reconnectInitialBackoffMs?: number;
                                                                                                      reconnectMaxBackoffMs?: number;
                                                                                                      reconnectMaxDurationMs?: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpIngressReconnectOptions {
                                                                                                      maxFrameRejections?: number;
                                                                                                      onEvent?: (event: QwpReconnectEvent) => void;
                                                                                                      poisonMinEscalationWindowMs?: number;
                                                                                                      reconnectInitialBackoffMs?: number;
                                                                                                      reconnectMaxBackoffMs?: number;
                                                                                                      reconnectMaxDurationMs?: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  maxFrameRejections?: number

                                                                                                  Consecutive retriable rejections of one frame before it is treated as poison and retained for inspection. Defaults to 4.

                                                                                                  -
                                                                                                  onEvent?: (event: QwpReconnectEvent) => void
                                                                                                  poisonMinEscalationWindowMs?: number

                                                                                                  Minimum time the same frame must remain suspect before repeated +

                                                                                                  onEvent?: (event: QwpReconnectEvent) => void
                                                                                                  poisonMinEscalationWindowMs?: number

                                                                                                  Minimum time the same frame must remain suspect before repeated rejections or non-orderly closes become terminal. Defaults to 5 seconds; zero escalates as soon as maxFrameRejections is reached.

                                                                                                  -
                                                                                                  reconnectInitialBackoffMs?: number

                                                                                                  Full-jitter ceiling before the first failed connection sweep is retried. +

                                                                                                  reconnectInitialBackoffMs?: number

                                                                                                  Full-jitter ceiling before the first failed connection sweep is retried. Must not exceed 2_147_483_647ms. Defaults to 100ms.

                                                                                                  -
                                                                                                  reconnectMaxBackoffMs?: number

                                                                                                  Full-jitter exponential-backoff ceiling. Must not exceed 2_147_483_647ms. +

                                                                                                  reconnectMaxBackoffMs?: number

                                                                                                  Full-jitter exponential-backoff ceiling. Must not exceed 2_147_483_647ms. Defaults to 5 seconds.

                                                                                                  -
                                                                                                  reconnectMaxDurationMs?: number

                                                                                                  How long a synchronous initial connect keeps retrying before it fails +

                                                                                                  reconnectMaxDurationMs?: number

                                                                                                  How long a synchronous initial connect keeps retrying before it fails with QwpReconnectExhaustedError. Defaults to 5 minutes. Zero allows one attempt and no retries, as in the Rust and Python clients; the attempt itself is not cut short. Reconnects after the first connection do not @@ -27,4 +27,4 @@ background (initialConnectMode "async", which Node's initial_connect_retry=async and the pooled client's lazy_connect also select): both retry until close() or a terminal error.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpIngressResponse.html b/docs/interfaces/_questdb_browser-client.QwpIngressResponse.html index 987f505c1..2e0f231bf 100644 --- a/docs/interfaces/_questdb_browser-client.QwpIngressResponse.html +++ b/docs/interfaces/_questdb_browser-client.QwpIngressResponse.html @@ -1,5 +1,5 @@ -QwpIngressResponse | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressResponse

                                                                                                  interface QwpIngressResponse {
                                                                                                      errorMessage?: string;
                                                                                                      sequence: null | bigint;
                                                                                                      status: number;
                                                                                                      tables: QwpIngressTableResult[];
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  errorMessage? +QwpIngressResponse | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressResponse

                                                                                                  interface QwpIngressResponse {
                                                                                                      errorMessage?: string;
                                                                                                      sequence: null | bigint;
                                                                                                      status: number;
                                                                                                      tables: QwpIngressTableResult[];
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  errorMessage?: string
                                                                                                  sequence: null | bigint
                                                                                                  status: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  errorMessage?: string
                                                                                                  sequence: null | bigint
                                                                                                  status: number
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpIngressServerInfo.html b/docs/interfaces/_questdb_browser-client.QwpIngressServerInfo.html index 960f5a54f..84fed18c5 100644 --- a/docs/interfaces/_questdb_browser-client.QwpIngressServerInfo.html +++ b/docs/interfaces/_questdb_browser-client.QwpIngressServerInfo.html @@ -1,8 +1,8 @@ QwpIngressServerInfo | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressServerInfo

                                                                                                  What the browser-requested ingress SERVER_INFO frame reports.

                                                                                                  -
                                                                                                  interface QwpIngressServerInfo {
                                                                                                      durableAckEnabled: boolean;
                                                                                                      maxBatchSizeBytes: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpIngressServerInfo {
                                                                                                      durableAckEnabled: boolean;
                                                                                                      maxBatchSizeBytes: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  durableAckEnabled: boolean

                                                                                                  Whether this connection negotiated durable acknowledgements. This is the only durable-ACK verdict a browser can read: the confirmation header is invisible to page JavaScript and the subprotocol echo confirms the negotiation dialect, not the capability.

                                                                                                  -
                                                                                                  maxBatchSizeBytes: number
                                                                                                  +
                                                                                                  maxBatchSizeBytes: number
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpIngressSymbolDictionaryDelta.html b/docs/interfaces/_questdb_browser-client.QwpIngressSymbolDictionaryDelta.html index 9b94d352c..2a1243012 100644 --- a/docs/interfaces/_questdb_browser-client.QwpIngressSymbolDictionaryDelta.html +++ b/docs/interfaces/_questdb_browser-client.QwpIngressSymbolDictionaryDelta.html @@ -1,3 +1,3 @@ -QwpIngressSymbolDictionaryDelta | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressSymbolDictionaryDelta

                                                                                                  interface QwpIngressSymbolDictionaryDelta {
                                                                                                      entries: readonly string[];
                                                                                                      startId: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  entries +QwpIngressSymbolDictionaryDelta | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressSymbolDictionaryDelta

                                                                                                  interface QwpIngressSymbolDictionaryDelta {
                                                                                                      entries: readonly string[];
                                                                                                      startId: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  entries: readonly string[]
                                                                                                  startId: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  entries: readonly string[]
                                                                                                  startId: number
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpIngressTableResult.html b/docs/interfaces/_questdb_browser-client.QwpIngressTableResult.html index b3f1e0030..0ecaf83bb 100644 --- a/docs/interfaces/_questdb_browser-client.QwpIngressTableResult.html +++ b/docs/interfaces/_questdb_browser-client.QwpIngressTableResult.html @@ -1,3 +1,3 @@ -QwpIngressTableResult | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressTableResult

                                                                                                  interface QwpIngressTableResult {
                                                                                                      name: string;
                                                                                                      sequenceTransaction: bigint;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  name +QwpIngressTableResult | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressTableResult

                                                                                                  interface QwpIngressTableResult {
                                                                                                      name: string;
                                                                                                      sequenceTransaction: bigint;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  name: string
                                                                                                  sequenceTransaction: bigint
                                                                                                  +

                                                                                                  Properties

                                                                                                  name: string
                                                                                                  sequenceTransaction: bigint
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpLong256Value.html b/docs/interfaces/_questdb_browser-client.QwpLong256Value.html index 23e23fde5..a567debf7 100644 --- a/docs/interfaces/_questdb_browser-client.QwpLong256Value.html +++ b/docs/interfaces/_questdb_browser-client.QwpLong256Value.html @@ -1,3 +1,3 @@ -QwpLong256Value | QuestDB JavaScript Client - v5.0.0
                                                                                                  interface QwpLong256Value {
                                                                                                      words: readonly [bigint, bigint, bigint, bigint];
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  words +QwpLong256Value | QuestDB JavaScript Client - v5.0.0
                                                                                                  interface QwpLong256Value {
                                                                                                      words: readonly [bigint, bigint, bigint, bigint];
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  words: readonly [bigint, bigint, bigint, bigint]

                                                                                                  Little-endian 64-bit words; word 0 is least significant.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpPoolSlotReservation.html b/docs/interfaces/_questdb_browser-client.QwpPoolSlotReservation.html index e478eb2f6..f690e9726 100644 --- a/docs/interfaces/_questdb_browser-client.QwpPoolSlotReservation.html +++ b/docs/interfaces/_questdb_browser-client.QwpPoolSlotReservation.html @@ -1,5 +1,5 @@ QwpPoolSlotReservation | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpPoolSlotReservationInternal

                                                                                                  Cross-owner reservation for stable pooled sender slot indexes.

                                                                                                  -
                                                                                                  interface QwpPoolSlotReservation {
                                                                                                      onAvailable(listener: () => void): () => void;
                                                                                                      release(slot: number): void;
                                                                                                      tryReserve(slot: number): boolean;
                                                                                                  }
                                                                                                  Index

                                                                                                  Methods

                                                                                                  interface QwpPoolSlotReservation {
                                                                                                      onAvailable(listener: () => void): () => void;
                                                                                                      release(slot: number): void;
                                                                                                      tryReserve(slot: number): boolean;
                                                                                                  }
                                                                                                  Index

                                                                                                  Methods

                                                                                                  +

                                                                                                  Methods

                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpQueryErrorMessage.html b/docs/interfaces/_questdb_browser-client.QwpQueryErrorMessage.html index b814cae1d..90f326123 100644 --- a/docs/interfaces/_questdb_browser-client.QwpQueryErrorMessage.html +++ b/docs/interfaces/_questdb_browser-client.QwpQueryErrorMessage.html @@ -1,9 +1,16 @@ -QwpQueryErrorMessage | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpQueryErrorMessage

                                                                                                  interface QwpQueryErrorMessage {
                                                                                                      flags: number;
                                                                                                      kind: "query-error";
                                                                                                      message: string;
                                                                                                      payloadLength: number;
                                                                                                      requestId: bigint;
                                                                                                      status: number;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  flags +QwpQueryErrorMessage | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpQueryErrorMessage

                                                                                                  interface QwpQueryErrorMessage {
                                                                                                      flags: number;
                                                                                                      kind: "query-error";
                                                                                                      message: string;
                                                                                                      payloadLength: number;
                                                                                                      position?: number;
                                                                                                      requestId: bigint;
                                                                                                      status: number;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  flags: number
                                                                                                  kind: "query-error"
                                                                                                  message: string
                                                                                                  payloadLength: number
                                                                                                  requestId: bigint
                                                                                                  status: number
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  flags: number
                                                                                                  kind: "query-error"
                                                                                                  message: string
                                                                                                  payloadLength: number
                                                                                                  position?: number

                                                                                                  UTF-16 offset into the SQL text the error points at: an index into the +JavaScript string the query was issued with. Present when the query asked +for it (QWP_QUERY_FLAG_ERROR_POSITION) and the SQL engine raised the +error, which it does not for a protocol error, a CANCEL the client sent or +an oversized row. It is 0 when the engine named no position, as for a +query timeout on the server or CANCEL QUERY.

                                                                                                  +
                                                                                                  requestId: bigint
                                                                                                  status: number
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpQueryRequest.html b/docs/interfaces/_questdb_browser-client.QwpQueryRequest.html index 3fad082d8..78a6199a2 100644 --- a/docs/interfaces/_questdb_browser-client.QwpQueryRequest.html +++ b/docs/interfaces/_questdb_browser-client.QwpQueryRequest.html @@ -1,13 +1,23 @@ -QwpQueryRequest | QuestDB JavaScript Client - v5.0.0
                                                                                                  interface QwpQueryRequest {
                                                                                                      bindCount?: number;
                                                                                                      bindPayload?: Uint8Array<ArrayBufferLike>;
                                                                                                      binds?: QwpBindSetter;
                                                                                                      initialCredit?: number | bigint;
                                                                                                      queryFlags?: number | bigint;
                                                                                                      requestId: number | bigint;
                                                                                                      sql: string;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  bindCount? +QwpQueryRequest | QuestDB JavaScript Client - v5.0.0
                                                                                                  interface QwpQueryRequest {
                                                                                                      bindCount?: number;
                                                                                                      bindPayload?: Uint8Array<ArrayBufferLike>;
                                                                                                      binds?: QwpBindSetter;
                                                                                                      initialCredit?: number | bigint;
                                                                                                      maxRows?: number | bigint;
                                                                                                      queryFlags?: number | bigint;
                                                                                                      requestId: number | bigint;
                                                                                                      skipRows?: number | bigint;
                                                                                                      sql: string;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  bindCount?: number

                                                                                                  Advanced escape hatch for an already encoded bind section.

                                                                                                  -
                                                                                                  bindPayload?: Uint8Array<ArrayBufferLike>

                                                                                                  Advanced escape hatch for an already encoded bind section.

                                                                                                  -

                                                                                                  Browser-safe typed positional binds.

                                                                                                  -
                                                                                                  initialCredit?: number | bigint

                                                                                                  Zero means unbounded.

                                                                                                  -
                                                                                                  queryFlags?: number | bigint

                                                                                                  Append only after SERVER_INFO advertises QUERY_FLAGS.

                                                                                                  -
                                                                                                  requestId: number | bigint
                                                                                                  sql: string
                                                                                                  +
                                                                                                  bindPayload?: Uint8Array<ArrayBufferLike>

                                                                                                  Advanced escape hatch for an already encoded bind section.

                                                                                                  +

                                                                                                  Browser-safe typed positional binds.

                                                                                                  +
                                                                                                  initialCredit?: number | bigint

                                                                                                  Zero means unbounded.

                                                                                                  +
                                                                                                  maxRows?: number | bigint

                                                                                                  max_rows, the most rows to stream. Required by, and only allowed with, +QWP_QUERY_FLAG_MAX_ROWS in queryFlags. At most 2^63 - 1.

                                                                                                  +
                                                                                                  queryFlags?: number | bigint

                                                                                                  Append only after SERVER_INFO advertises QUERY_FLAGS, and set the +query-details bits only after it advertises QUERY_DETAILS: a server +without that capability ignores them, and streams every row whatever +skipRows and maxRows say.

                                                                                                  +
                                                                                                  requestId: number | bigint
                                                                                                  skipRows?: number | bigint

                                                                                                  skip_rows, the rows to leave out at the start of the result set. +Required by, and only allowed with, QWP_QUERY_FLAG_SKIP_ROWS in +queryFlags. At most 2^63 - 1.

                                                                                                  +
                                                                                                  sql: string
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpQueryStats.html b/docs/interfaces/_questdb_browser-client.QwpQueryStats.html new file mode 100644 index 000000000..b949d9795 --- /dev/null +++ b/docs/interfaces/_questdb_browser-client.QwpQueryStats.html @@ -0,0 +1,19 @@ +QwpQueryStats | QuestDB JavaScript Client - v5.0.0

                                                                                                  Execution statistics of one query, measured on the server. A completion +carries them when its query asked for them (QWP_QUERY_FLAG_STATS).

                                                                                                  +
                                                                                                  interface QwpQueryStats {
                                                                                                      clientWaitNanos: bigint;
                                                                                                      compileNanos: bigint;
                                                                                                      countNanos: bigint;
                                                                                                      executeNanos: bigint;
                                                                                                      jitCompiled: boolean;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  clientWaitNanos: bigint

                                                                                                  Nanoseconds the query waited for the client: to read results, or to grant +flow-control credit.

                                                                                                  +
                                                                                                  compileNanos: bigint

                                                                                                  Nanoseconds spent compiling the SQL, every attempt included; zero when +the server reused a cached plan.

                                                                                                  +
                                                                                                  countNanos: bigint

                                                                                                  Nanoseconds spent counting the rows past the end of the row window, for +QWP_QUERY_FLAG_COUNT_ROWS. Zero when the stream read every row, as it +does unless maxRows ends it first: the rows skipRows leaves out are +counted as they are skipped, within executeNanos.

                                                                                                  +
                                                                                                  executeNanos: bigint

                                                                                                  Nanoseconds from the server receiving the request to its terminal +response. Includes the other three durations.

                                                                                                  +
                                                                                                  jitCompiled: boolean

                                                                                                  Whether the query's filter ran as JIT-compiled native code.

                                                                                                  +
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpReconnectEvent.html b/docs/interfaces/_questdb_browser-client.QwpReconnectEvent.html index 33c0f0724..360a0ff34 100644 --- a/docs/interfaces/_questdb_browser-client.QwpReconnectEvent.html +++ b/docs/interfaces/_questdb_browser-client.QwpReconnectEvent.html @@ -1,4 +1,4 @@ -QwpReconnectEvent | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpReconnectEvent

                                                                                                  interface QwpReconnectEvent {
                                                                                                      attempt: number;
                                                                                                      cause?: unknown;
                                                                                                      endpoint?: string | URL;
                                                                                                      episodeMs?: number;
                                                                                                      kind: QwpReconnectEventKind;
                                                                                                      previousEndpoint?: string | URL;
                                                                                                      timestampMs: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  attempt +QwpReconnectEvent | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpReconnectEvent

                                                                                                  interface QwpReconnectEvent {
                                                                                                      attempt: number;
                                                                                                      cause?: unknown;
                                                                                                      endpoint?: string | URL;
                                                                                                      episodeMs?: number;
                                                                                                      kind: QwpReconnectEventKind;
                                                                                                      previousEndpoint?: string | URL;
                                                                                                      timestampMs: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  attempt: number

                                                                                                  One-based reconnect sweep number; zero for lifecycle-only events.

                                                                                                  -
                                                                                                  cause?: unknown
                                                                                                  endpoint?: string | URL

                                                                                                  The endpoint the event concerns; for all-endpoints-unreachable, the last +

                                                                                                  cause?: unknown
                                                                                                  endpoint?: string | URL

                                                                                                  The endpoint the event concerns; for all-endpoints-unreachable, the last endpoint the sweep tried.

                                                                                                  -
                                                                                                  episodeMs?: number

                                                                                                  Elapsed time in the current consecutive capability-gap episode.

                                                                                                  -
                                                                                                  previousEndpoint?: string | URL
                                                                                                  timestampMs: number
                                                                                                  +
                                                                                                  episodeMs?: number

                                                                                                  Elapsed time in the current consecutive capability-gap episode.

                                                                                                  +
                                                                                                  previousEndpoint?: string | URL
                                                                                                  timestampMs: number
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpResourcePoolMetrics.html b/docs/interfaces/_questdb_browser-client.QwpResourcePoolMetrics.html index e6dbef38c..c03ea58cc 100644 --- a/docs/interfaces/_questdb_browser-client.QwpResourcePoolMetrics.html +++ b/docs/interfaces/_questdb_browser-client.QwpResourcePoolMetrics.html @@ -1,8 +1,8 @@ -QwpResourcePoolMetrics | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpResourcePoolMetrics

                                                                                                  interface QwpResourcePoolMetrics {
                                                                                                      available: number;
                                                                                                      creating: number;
                                                                                                      leased: number;
                                                                                                      maximum: number;
                                                                                                      minimum: number;
                                                                                                      total: number;
                                                                                                      waiting: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  available +QwpResourcePoolMetrics | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpResourcePoolMetrics

                                                                                                  interface QwpResourcePoolMetrics {
                                                                                                      available: number;
                                                                                                      creating: number;
                                                                                                      leased: number;
                                                                                                      maximum: number;
                                                                                                      minimum: number;
                                                                                                      total: number;
                                                                                                      waiting: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  available: number
                                                                                                  creating: number
                                                                                                  leased: number
                                                                                                  maximum: number
                                                                                                  minimum: number
                                                                                                  total: number
                                                                                                  waiting: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  available: number
                                                                                                  creating: number
                                                                                                  leased: number
                                                                                                  maximum: number
                                                                                                  minimum: number
                                                                                                  total: number
                                                                                                  waiting: number
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpResultArrayValue.html b/docs/interfaces/_questdb_browser-client.QwpResultArrayValue.html index 449ff550b..0eda7b698 100644 --- a/docs/interfaces/_questdb_browser-client.QwpResultArrayValue.html +++ b/docs/interfaces/_questdb_browser-client.QwpResultArrayValue.html @@ -1,3 +1,3 @@ -QwpResultArrayValue | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpResultArrayValue

                                                                                                  interface QwpResultArrayValue {
                                                                                                      dimensions: readonly number[];
                                                                                                      values: readonly number[] | readonly bigint[];
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  dimensions +QwpResultArrayValue | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpResultArrayValue

                                                                                                  interface QwpResultArrayValue {
                                                                                                      dimensions: readonly number[];
                                                                                                      values: readonly number[] | readonly bigint[];
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  dimensions: readonly number[]
                                                                                                  values: readonly number[] | readonly bigint[]
                                                                                                  +

                                                                                                  Properties

                                                                                                  dimensions: readonly number[]
                                                                                                  values: readonly number[] | readonly bigint[]
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpResultBatchMessage.html b/docs/interfaces/_questdb_browser-client.QwpResultBatchMessage.html index 25de9ea31..73866ee7e 100644 --- a/docs/interfaces/_questdb_browser-client.QwpResultBatchMessage.html +++ b/docs/interfaces/_questdb_browser-client.QwpResultBatchMessage.html @@ -1,4 +1,4 @@ -QwpResultBatchMessage | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpResultBatchMessage

                                                                                                  interface QwpResultBatchMessage {
                                                                                                      batchSequence: bigint;
                                                                                                      body: Uint8Array;
                                                                                                      flags: number;
                                                                                                      kind: "result-batch";
                                                                                                      payloadLength: number;
                                                                                                      requestId: bigint;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  batchSequence +QwpResultBatchMessage | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpResultBatchMessage

                                                                                                  interface QwpResultBatchMessage {
                                                                                                      batchSequence: bigint;
                                                                                                      body: Uint8Array;
                                                                                                      flags: number;
                                                                                                      kind: "result-batch";
                                                                                                      payloadLength: number;
                                                                                                      requestId: bigint;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  batchSequence: bigint
                                                                                                  body: Uint8Array

                                                                                                  Raw or Zstd-compressed delta dictionary and columnar table block; decoded +

                                                                                                  Properties

                                                                                                  batchSequence: bigint
                                                                                                  body: Uint8Array

                                                                                                  Raw or Zstd-compressed delta dictionary and columnar table block; decoded by the batch decoder according to the frame flags.

                                                                                                  -
                                                                                                  flags: number
                                                                                                  kind: "result-batch"
                                                                                                  payloadLength: number
                                                                                                  requestId: bigint
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  +
                                                                                                  flags: number
                                                                                                  kind: "result-batch"
                                                                                                  payloadLength: number
                                                                                                  requestId: bigint
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpResultColumn.html b/docs/interfaces/_questdb_browser-client.QwpResultColumn.html index fc9a6b7fe..814ab976c 100644 --- a/docs/interfaces/_questdb_browser-client.QwpResultColumn.html +++ b/docs/interfaces/_questdb_browser-client.QwpResultColumn.html @@ -1,6 +1,6 @@ -QwpResultColumn | QuestDB JavaScript Client - v5.0.0
                                                                                                  interface QwpResultColumn {
                                                                                                      name: string;
                                                                                                      precisionBits?: number;
                                                                                                      scale?: number;
                                                                                                      type: QwpColumnType;
                                                                                                      values: readonly QwpResultValue[];
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  name +QwpResultColumn | QuestDB JavaScript Client - v5.0.0
                                                                                                  interface QwpResultColumn {
                                                                                                      name: string;
                                                                                                      precisionBits?: number;
                                                                                                      scale?: number;
                                                                                                      type: QwpColumnType;
                                                                                                      values: readonly QwpResultValue[];
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  name: string
                                                                                                  precisionBits?: number
                                                                                                  scale?: number
                                                                                                  values: readonly QwpResultValue[]
                                                                                                  +

                                                                                                  Properties

                                                                                                  name: string
                                                                                                  precisionBits?: number
                                                                                                  scale?: number
                                                                                                  values: readonly QwpResultValue[]
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpResultColumnSchema.html b/docs/interfaces/_questdb_browser-client.QwpResultColumnSchema.html index 05352ab5f..07ebe94a0 100644 --- a/docs/interfaces/_questdb_browser-client.QwpResultColumnSchema.html +++ b/docs/interfaces/_questdb_browser-client.QwpResultColumnSchema.html @@ -1,3 +1,3 @@ -QwpResultColumnSchema | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpResultColumnSchema

                                                                                                  interface QwpResultColumnSchema {
                                                                                                      name: string;
                                                                                                      type: QwpColumnType;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  name +QwpResultColumnSchema | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpResultColumnSchema

                                                                                                  interface QwpResultColumnSchema {
                                                                                                      name: string;
                                                                                                      type: QwpColumnType;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  name: string
                                                                                                  +

                                                                                                  Properties

                                                                                                  name: string
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpResultEndMessage.html b/docs/interfaces/_questdb_browser-client.QwpResultEndMessage.html index 16479022e..434d3e59f 100644 --- a/docs/interfaces/_questdb_browser-client.QwpResultEndMessage.html +++ b/docs/interfaces/_questdb_browser-client.QwpResultEndMessage.html @@ -1,9 +1,15 @@ -QwpResultEndMessage | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpResultEndMessage

                                                                                                  interface QwpResultEndMessage {
                                                                                                      finalSequence: bigint;
                                                                                                      flags: number;
                                                                                                      kind: "result-end";
                                                                                                      payloadLength: number;
                                                                                                      requestId: bigint;
                                                                                                      tableCount: number;
                                                                                                      totalRows: bigint;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  finalSequence +QwpResultEndMessage | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpResultEndMessage

                                                                                                  interface QwpResultEndMessage {
                                                                                                      finalSequence: bigint;
                                                                                                      flags: number;
                                                                                                      kind: "result-end";
                                                                                                      payloadLength: number;
                                                                                                      requestId: bigint;
                                                                                                      rowCount?: bigint;
                                                                                                      stats?: QwpQueryStats;
                                                                                                      tableCount: number;
                                                                                                      totalRows: bigint;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  finalSequence: bigint
                                                                                                  flags: number
                                                                                                  kind: "result-end"
                                                                                                  payloadLength: number
                                                                                                  requestId: bigint
                                                                                                  tableCount: number
                                                                                                  totalRows: bigint
                                                                                                  version: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  finalSequence: bigint
                                                                                                  flags: number
                                                                                                  kind: "result-end"
                                                                                                  payloadLength: number
                                                                                                  requestId: bigint
                                                                                                  rowCount?: bigint

                                                                                                  Rows in the whole result set, whatever the row window left out of the +stream. Present when the query asked for it (QWP_QUERY_FLAG_COUNT_ROWS).

                                                                                                  +

                                                                                                  Present when the query asked for it (QWP_QUERY_FLAG_STATS).

                                                                                                  +
                                                                                                  tableCount: number
                                                                                                  totalRows: bigint

                                                                                                  Rows the stream carried: those the row window let through.

                                                                                                  +
                                                                                                  version: number
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpRoutingOptions.html b/docs/interfaces/_questdb_browser-client.QwpRoutingOptions.html index 48eb22001..c7c9e09a1 100644 --- a/docs/interfaces/_questdb_browser-client.QwpRoutingOptions.html +++ b/docs/interfaces/_questdb_browser-client.QwpRoutingOptions.html @@ -3,8 +3,8 @@ or a primary still catching up, answers the /write/v4 upgrade with 421 and the role it holds, and the endpoint sweep moves on, so a sender reaches the primary whatever role or zone it could ask for.

                                                                                                  -
                                                                                                  interface QwpRoutingOptions {
                                                                                                      target?: QwpTarget;
                                                                                                      zone?: string;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpRoutingOptions {
                                                                                                      target?: QwpTarget;
                                                                                                      zone?: string;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  target?: QwpTarget

                                                                                                  Selects any readable node, a primary/standalone node, or a replica.

                                                                                                  -
                                                                                                  zone?: string

                                                                                                  Opaque, case-insensitive preferred zone; cross-zone fallback stays enabled.

                                                                                                  -
                                                                                                  +
                                                                                                  zone?: string

                                                                                                  Opaque, case-insensitive preferred zone; cross-zone fallback stays enabled.

                                                                                                  +
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpSenderError.html b/docs/interfaces/_questdb_browser-client.QwpSenderError.html index ab7187898..9a7b127aa 100644 --- a/docs/interfaces/_questdb_browser-client.QwpSenderError.html +++ b/docs/interfaces/_questdb_browser-client.QwpSenderError.html @@ -1,5 +1,5 @@ QwpSenderError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Immutable Java-parity context for an ingress rejection or data loss.

                                                                                                  -
                                                                                                  interface QwpSenderError {
                                                                                                      appliedPolicy: QwpSenderErrorPolicy;
                                                                                                      category: QwpSenderErrorCategory;
                                                                                                      detectedAtMs: number;
                                                                                                      fromFsn?: bigint;
                                                                                                      messageSequence?: bigint;
                                                                                                      quarantinedPath?: string;
                                                                                                      serverMessage?: string;
                                                                                                      serverStatusByte?: number;
                                                                                                      tableName?: string;
                                                                                                      toFsn?: bigint;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpSenderError {
                                                                                                      appliedPolicy: QwpSenderErrorPolicy;
                                                                                                      category: QwpSenderErrorCategory;
                                                                                                      detectedAtMs: number;
                                                                                                      fromFsn?: bigint;
                                                                                                      messageSequence?: bigint;
                                                                                                      quarantinedPath?: string;
                                                                                                      serverMessage?: string;
                                                                                                      serverStatusByte?: number;
                                                                                                      tableName?: string;
                                                                                                      toFsn?: bigint;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  appliedPolicy: QwpSenderErrorPolicy
                                                                                                  detectedAtMs: number
                                                                                                  fromFsn?: bigint

                                                                                                  Inclusive stable store-and-forward frame-sequence range.

                                                                                                  -
                                                                                                  messageSequence?: bigint
                                                                                                  quarantinedPath?: string

                                                                                                  Preserved on-disk bytes for a data-loss/quarantine notification.

                                                                                                  -
                                                                                                  serverMessage?: string
                                                                                                  serverStatusByte?: number
                                                                                                  tableName?: string
                                                                                                  toFsn?: bigint
                                                                                                  +

                                                                                                  Properties

                                                                                                  appliedPolicy: QwpSenderErrorPolicy
                                                                                                  detectedAtMs: number
                                                                                                  fromFsn?: bigint

                                                                                                  Inclusive stable store-and-forward frame-sequence range.

                                                                                                  +
                                                                                                  messageSequence?: bigint
                                                                                                  quarantinedPath?: string

                                                                                                  Preserved on-disk bytes for a data-loss/quarantine notification.

                                                                                                  +
                                                                                                  serverMessage?: string
                                                                                                  serverStatusByte?: number
                                                                                                  tableName?: string
                                                                                                  toFsn?: bigint
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpSenderErrorResponseContext.html b/docs/interfaces/_questdb_browser-client.QwpSenderErrorResponseContext.html index 0f1a2ac63..7ff081e9d 100644 --- a/docs/interfaces/_questdb_browser-client.QwpSenderErrorResponseContext.html +++ b/docs/interfaces/_questdb_browser-client.QwpSenderErrorResponseContext.html @@ -1,7 +1,7 @@ -QwpSenderErrorResponseContext | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpSenderErrorResponseContext

                                                                                                  interface QwpSenderErrorResponseContext {
                                                                                                      appliedPolicy?: QwpSenderErrorPolicy;
                                                                                                      detectedAtMs?: number;
                                                                                                      fromFsn?: bigint;
                                                                                                      messageSequence?: bigint;
                                                                                                      tableName?: string;
                                                                                                      toFsn?: bigint;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  appliedPolicy? +QwpSenderErrorResponseContext | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpSenderErrorResponseContext

                                                                                                  interface QwpSenderErrorResponseContext {
                                                                                                      appliedPolicy?: QwpSenderErrorPolicy;
                                                                                                      detectedAtMs?: number;
                                                                                                      fromFsn?: bigint;
                                                                                                      messageSequence?: bigint;
                                                                                                      tableName?: string;
                                                                                                      toFsn?: bigint;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  appliedPolicy?: QwpSenderErrorPolicy
                                                                                                  detectedAtMs?: number
                                                                                                  fromFsn?: bigint
                                                                                                  messageSequence?: bigint
                                                                                                  tableName?: string
                                                                                                  toFsn?: bigint
                                                                                                  +

                                                                                                  Properties

                                                                                                  appliedPolicy?: QwpSenderErrorPolicy
                                                                                                  detectedAtMs?: number
                                                                                                  fromFsn?: bigint
                                                                                                  messageSequence?: bigint
                                                                                                  tableName?: string
                                                                                                  toFsn?: bigint
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpSenderMetrics.html b/docs/interfaces/_questdb_browser-client.QwpSenderMetrics.html index 88351425e..dee0a0f33 100644 --- a/docs/interfaces/_questdb_browser-client.QwpSenderMetrics.html +++ b/docs/interfaces/_questdb_browser-client.QwpSenderMetrics.html @@ -1,5 +1,5 @@ QwpSenderMetrics | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpSenderMetrics

                                                                                                  Immutable high-level sender counters plus the active ingress snapshot.

                                                                                                  -
                                                                                                  interface QwpSenderMetrics {
                                                                                                      autoFlushBytes: number;
                                                                                                      closed: boolean;
                                                                                                      closing: boolean;
                                                                                                      connected: boolean;
                                                                                                      deferredRows: number;
                                                                                                      effectiveAutoFlushBytes: number;
                                                                                                      ingress?: QwpIngressMetrics;
                                                                                                      pendingBytes: number;
                                                                                                      pendingRows: number;
                                                                                                      totalFlushes: number;
                                                                                                      totalFlushFailures: number;
                                                                                                      totalRowsPublished: number;
                                                                                                      totalRowsStaged: number;
                                                                                                      totalTransactionsCommitted: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpSenderMetrics {
                                                                                                      autoFlushBytes: number;
                                                                                                      closed: boolean;
                                                                                                      closing: boolean;
                                                                                                      connected: boolean;
                                                                                                      deferredRows: number;
                                                                                                      effectiveAutoFlushBytes: number;
                                                                                                      ingress?: QwpIngressMetrics;
                                                                                                      pendingBytes: number;
                                                                                                      pendingRows: number;
                                                                                                      totalFlushes: number;
                                                                                                      totalFlushFailures: number;
                                                                                                      totalRowsPublished: number;
                                                                                                      totalRowsStaged: number;
                                                                                                      totalTransactionsCommitted: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  autoFlushBytes: number
                                                                                                  closed: boolean
                                                                                                  closing: boolean
                                                                                                  connected: boolean
                                                                                                  deferredRows: number
                                                                                                  effectiveAutoFlushBytes: number
                                                                                                  pendingBytes: number

                                                                                                  Estimated raw column-buffer bytes currently staged.

                                                                                                  -
                                                                                                  pendingRows: number
                                                                                                  totalFlushes: number
                                                                                                  totalFlushFailures: number
                                                                                                  totalRowsPublished: number

                                                                                                  Rows whose encoded frames have entered the ingress session.

                                                                                                  -
                                                                                                  totalRowsStaged: number
                                                                                                  totalTransactionsCommitted: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  autoFlushBytes: number
                                                                                                  closed: boolean
                                                                                                  closing: boolean
                                                                                                  connected: boolean
                                                                                                  deferredRows: number
                                                                                                  effectiveAutoFlushBytes: number
                                                                                                  pendingBytes: number

                                                                                                  Estimated raw column-buffer bytes currently staged.

                                                                                                  +
                                                                                                  pendingRows: number
                                                                                                  totalFlushes: number
                                                                                                  totalFlushFailures: number
                                                                                                  totalRowsPublished: number

                                                                                                  Rows whose encoded frames have entered the ingress session.

                                                                                                  +
                                                                                                  totalRowsStaged: number
                                                                                                  totalTransactionsCommitted: number
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpServerInfoMessage.html b/docs/interfaces/_questdb_browser-client.QwpServerInfoMessage.html index 2b62af36b..6ac276ae2 100644 --- a/docs/interfaces/_questdb_browser-client.QwpServerInfoMessage.html +++ b/docs/interfaces/_questdb_browser-client.QwpServerInfoMessage.html @@ -1,5 +1,5 @@ QwpServerInfoMessage | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpServerInfoMessage

                                                                                                  Immutable endpoint metadata from the most recent successful egress bind.

                                                                                                  -
                                                                                                  interface QwpServerInfoMessage {
                                                                                                      capabilities: number;
                                                                                                      clusterId: string;
                                                                                                      compressionCodec: null | number;
                                                                                                      compressionLevel: null | number;
                                                                                                      epoch: bigint;
                                                                                                      flags: number;
                                                                                                      kind: "server-info";
                                                                                                      nodeId: string;
                                                                                                      payloadLength: number;
                                                                                                      role: number;
                                                                                                      serverWallNanoseconds: bigint;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                      zoneId: null | string;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpServerInfoMessage {
                                                                                                      capabilities: number;
                                                                                                      clusterId: string;
                                                                                                      compressionCodec: null | number;
                                                                                                      compressionLevel: null | number;
                                                                                                      epoch: bigint;
                                                                                                      flags: number;
                                                                                                      kind: "server-info";
                                                                                                      nodeId: string;
                                                                                                      payloadLength: number;
                                                                                                      role: number;
                                                                                                      serverWallNanoseconds: bigint;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                      zoneId: null | string;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  capabilities: number
                                                                                                  clusterId: string
                                                                                                  compressionCodec: null | number
                                                                                                  compressionLevel: null | number
                                                                                                  epoch: bigint
                                                                                                  flags: number
                                                                                                  kind: "server-info"
                                                                                                  nodeId: string
                                                                                                  payloadLength: number
                                                                                                  role: number
                                                                                                  serverWallNanoseconds: bigint
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  zoneId: null | string
                                                                                                  +

                                                                                                  Properties

                                                                                                  capabilities: number
                                                                                                  clusterId: string
                                                                                                  compressionCodec: null | number
                                                                                                  compressionLevel: null | number
                                                                                                  epoch: bigint
                                                                                                  flags: number
                                                                                                  kind: "server-info"
                                                                                                  nodeId: string
                                                                                                  payloadLength: number
                                                                                                  role: number
                                                                                                  serverWallNanoseconds: bigint
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  zoneId: null | string
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpSymbolValue.html b/docs/interfaces/_questdb_browser-client.QwpSymbolValue.html index b8c4b150c..ad5631094 100644 --- a/docs/interfaces/_questdb_browser-client.QwpSymbolValue.html +++ b/docs/interfaces/_questdb_browser-client.QwpSymbolValue.html @@ -1,3 +1,3 @@ -QwpSymbolValue | QuestDB JavaScript Client - v5.0.0
                                                                                                  interface QwpSymbolValue {
                                                                                                      id: number;
                                                                                                      text: string;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  id +QwpSymbolValue | QuestDB JavaScript Client - v5.0.0
                                                                                                  interface QwpSymbolValue {
                                                                                                      id: number;
                                                                                                      text: string;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  id: number
                                                                                                  text: string
                                                                                                  +

                                                                                                  Properties

                                                                                                  id: number
                                                                                                  text: string
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpUpgradeErrorDetails.html b/docs/interfaces/_questdb_browser-client.QwpUpgradeErrorDetails.html index 4cc7fbe67..97c5e88f2 100644 --- a/docs/interfaces/_questdb_browser-client.QwpUpgradeErrorDetails.html +++ b/docs/interfaces/_questdb_browser-client.QwpUpgradeErrorDetails.html @@ -1,4 +1,4 @@ -QwpUpgradeErrorDetails | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpUpgradeErrorDetails

                                                                                                  interface QwpUpgradeErrorDetails {
                                                                                                      cause?: unknown;
                                                                                                      closeCode?: number;
                                                                                                      kind: QwpUpgradeErrorKind;
                                                                                                      retryable?: boolean;
                                                                                                      serverRole?: string;
                                                                                                      serverZone?: string;
                                                                                                      statusCode?: number;
                                                                                                      statusMessage?: string;
                                                                                                      timeoutPhase?: QwpUpgradeTimeoutPhase;
                                                                                                      tryNextEndpoint?: boolean;
                                                                                                      url?: string | URL;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  cause? +QwpUpgradeErrorDetails | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpUpgradeErrorDetails

                                                                                                  interface QwpUpgradeErrorDetails {
                                                                                                      cause?: unknown;
                                                                                                      closeCode?: number;
                                                                                                      kind: QwpUpgradeErrorKind;
                                                                                                      retryable?: boolean;
                                                                                                      serverRole?: string;
                                                                                                      serverZone?: string;
                                                                                                      statusCode?: number;
                                                                                                      statusMessage?: string;
                                                                                                      timeoutPhase?: QwpUpgradeTimeoutPhase;
                                                                                                      tryNextEndpoint?: boolean;
                                                                                                      url?: string | URL;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  closeCode?: number
                                                                                                  retryable?: boolean

                                                                                                  Whether a later retry against the configured endpoint set may recover.

                                                                                                  -
                                                                                                  serverRole?: string
                                                                                                  serverZone?: string
                                                                                                  statusCode?: number
                                                                                                  statusMessage?: string
                                                                                                  timeoutPhase?: QwpUpgradeTimeoutPhase
                                                                                                  tryNextEndpoint?: boolean

                                                                                                  Whether failover code should try another endpoint before surfacing this.

                                                                                                  -
                                                                                                  url?: string | URL
                                                                                                  +

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  closeCode?: number
                                                                                                  retryable?: boolean

                                                                                                  Whether a later retry against the configured endpoint set may recover.

                                                                                                  +
                                                                                                  serverRole?: string
                                                                                                  serverZone?: string
                                                                                                  statusCode?: number
                                                                                                  statusMessage?: string
                                                                                                  timeoutPhase?: QwpUpgradeTimeoutPhase
                                                                                                  tryNextEndpoint?: boolean

                                                                                                  Whether failover code should try another endpoint before surfacing this.

                                                                                                  +
                                                                                                  url?: string | URL
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpUuidValue.html b/docs/interfaces/_questdb_browser-client.QwpUuidValue.html index 9aeea087c..36ea392b0 100644 --- a/docs/interfaces/_questdb_browser-client.QwpUuidValue.html +++ b/docs/interfaces/_questdb_browser-client.QwpUuidValue.html @@ -1,3 +1,3 @@ -QwpUuidValue | QuestDB JavaScript Client - v5.0.0
                                                                                                  interface QwpUuidValue {
                                                                                                      high: bigint;
                                                                                                      low: bigint;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  high +QwpUuidValue | QuestDB JavaScript Client - v5.0.0
                                                                                                  interface QwpUuidValue {
                                                                                                      high: bigint;
                                                                                                      low: bigint;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  high: bigint
                                                                                                  low: bigint
                                                                                                  +

                                                                                                  Properties

                                                                                                  high: bigint
                                                                                                  low: bigint
                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpWebSocketLike.html b/docs/interfaces/_questdb_browser-client.QwpWebSocketLike.html index ba4520959..0d5d447b7 100644 --- a/docs/interfaces/_questdb_browser-client.QwpWebSocketLike.html +++ b/docs/interfaces/_questdb_browser-client.QwpWebSocketLike.html @@ -1,4 +1,4 @@ -QwpWebSocketLike | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpWebSocketLike

                                                                                                  interface QwpWebSocketLike {
                                                                                                      binaryType: string;
                                                                                                      bufferedAmount?: number;
                                                                                                      protocol?: string;
                                                                                                      readyState: number;
                                                                                                      addEventListener(
                                                                                                          type: "open",
                                                                                                          listener: (event: unknown) => void,
                                                                                                          options?: { once?: boolean },
                                                                                                      ): void;
                                                                                                      addEventListener(
                                                                                                          type: "message",
                                                                                                          listener: (event: QwpWebSocketMessageEvent) => void,
                                                                                                      ): void;
                                                                                                      addEventListener(
                                                                                                          type: "error",
                                                                                                          listener: (event: unknown) => void,
                                                                                                          options?: { once?: boolean },
                                                                                                      ): void;
                                                                                                      addEventListener(
                                                                                                          type: "close",
                                                                                                          listener: (event: QwpWebSocketCloseEvent) => void,
                                                                                                          options?: { once?: boolean },
                                                                                                      ): void;
                                                                                                      close(code?: number, reason?: string): void;
                                                                                                      ping(): void;
                                                                                                      removeEventListener(type: "open", listener: (event: unknown) => void): void;
                                                                                                      removeEventListener(
                                                                                                          type: "message",
                                                                                                          listener: (event: QwpWebSocketMessageEvent) => void,
                                                                                                      ): void;
                                                                                                      removeEventListener(
                                                                                                          type: "error",
                                                                                                          listener: (event: unknown) => void,
                                                                                                      ): void;
                                                                                                      removeEventListener(
                                                                                                          type: "close",
                                                                                                          listener: (event: QwpWebSocketCloseEvent) => void,
                                                                                                      ): void;
                                                                                                      send(data: Uint8Array): void;
                                                                                                      sendWithCallback(data: Uint8Array, callback: (error?: Error) => void): void;
                                                                                                      terminate(): void;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  binaryType +QwpWebSocketLike | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpWebSocketLike

                                                                                                  interface QwpWebSocketLike {
                                                                                                      binaryType: string;
                                                                                                      bufferedAmount?: number;
                                                                                                      protocol?: string;
                                                                                                      readyState: number;
                                                                                                      addEventListener(
                                                                                                          type: "open",
                                                                                                          listener: (event: unknown) => void,
                                                                                                          options?: { once?: boolean },
                                                                                                      ): void;
                                                                                                      addEventListener(
                                                                                                          type: "message",
                                                                                                          listener: (event: QwpWebSocketMessageEvent) => void,
                                                                                                      ): void;
                                                                                                      addEventListener(
                                                                                                          type: "error",
                                                                                                          listener: (event: unknown) => void,
                                                                                                          options?: { once?: boolean },
                                                                                                      ): void;
                                                                                                      addEventListener(
                                                                                                          type: "close",
                                                                                                          listener: (event: QwpWebSocketCloseEvent) => void,
                                                                                                          options?: { once?: boolean },
                                                                                                      ): void;
                                                                                                      close(code?: number, reason?: string): void;
                                                                                                      ping(): void;
                                                                                                      removeEventListener(type: "open", listener: (event: unknown) => void): void;
                                                                                                      removeEventListener(
                                                                                                          type: "message",
                                                                                                          listener: (event: QwpWebSocketMessageEvent) => void,
                                                                                                      ): void;
                                                                                                      removeEventListener(
                                                                                                          type: "error",
                                                                                                          listener: (event: unknown) => void,
                                                                                                      ): void;
                                                                                                      removeEventListener(
                                                                                                          type: "close",
                                                                                                          listener: (event: QwpWebSocketCloseEvent) => void,
                                                                                                      ): void;
                                                                                                      send(data: Uint8Array): void;
                                                                                                      sendWithCallback(data: Uint8Array, callback: (error?: Error) => void): void;
                                                                                                      terminate(): void;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  binaryType: string
                                                                                                  bufferedAmount?: number

                                                                                                  Number of application bytes queued by WHATWG-compatible WebSockets.

                                                                                                  -
                                                                                                  protocol?: string

                                                                                                  WebSocket subprotocol selected by the server, or an empty string.

                                                                                                  -
                                                                                                  readyState: number

                                                                                                  Methods

                                                                                                  +

                                                                                                  Properties

                                                                                                  binaryType: string
                                                                                                  bufferedAmount?: number

                                                                                                  Number of application bytes queued by WHATWG-compatible WebSockets.

                                                                                                  +
                                                                                                  protocol?: string

                                                                                                  WebSocket subprotocol selected by the server, or an empty string.

                                                                                                  +
                                                                                                  readyState: number

                                                                                                  Methods

                                                                                                  diff --git a/docs/interfaces/_questdb_browser-client.QwpWriterColumn.html b/docs/interfaces/_questdb_browser-client.QwpWriterColumn.html index b93fb1d62..0a6f6ca00 100644 --- a/docs/interfaces/_questdb_browser-client.QwpWriterColumn.html +++ b/docs/interfaces/_questdb_browser-client.QwpWriterColumn.html @@ -1,5 +1,5 @@ QwpWriterColumn | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpWriterColumn<T, DesignatedTimestamp>

                                                                                                  A reusable, immutable column definition for a compiled QWP table writer.

                                                                                                  -
                                                                                                  interface QwpWriterColumn<T, DesignatedTimestamp extends boolean = false> {
                                                                                                      __qwpWriterInput?: T;
                                                                                                      designatedTimestamp: DesignatedTimestamp;
                                                                                                      kind: QwpWriterColumnKind;
                                                                                                      precisionBits?: number;
                                                                                                      scale?: number;
                                                                                                      unit?: QwpTimestampUnit;
                                                                                                  }

                                                                                                  Type Parameters

                                                                                                  • T
                                                                                                  • DesignatedTimestamp extends boolean = false
                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpWriterColumn<T, DesignatedTimestamp extends boolean = false> {
                                                                                                      __qwpWriterInput?: T;
                                                                                                      designatedTimestamp: DesignatedTimestamp;
                                                                                                      kind: QwpWriterColumnKind;
                                                                                                      precisionBits?: number;
                                                                                                      scale?: number;
                                                                                                      unit?: QwpTimestampUnit;
                                                                                                  }

                                                                                                  Type Parameters

                                                                                                  • T
                                                                                                  • DesignatedTimestamp extends boolean = false
                                                                                                  Index

                                                                                                  Properties

                                                                                                  __qwpWriterInput? designatedTimestamp kind precisionBits? @@ -14,6 +14,6 @@ silently accept anything. A shared property name resolves structurally across bundles, which is what keeps row typing alive for consumers of the published package.

                                                                                                  -
                                                                                                  designatedTimestamp: DesignatedTimestamp
                                                                                                  precisionBits?: number

                                                                                                  GEOHASH precision in bits, fixed for the whole column.

                                                                                                  -
                                                                                                  scale?: number

                                                                                                  DECIMAL scale, fixed for the whole column.

                                                                                                  -
                                                                                                  +
                                                                                                  designatedTimestamp: DesignatedTimestamp
                                                                                                  precisionBits?: number

                                                                                                  GEOHASH precision in bits, fixed for the whole column.

                                                                                                  +
                                                                                                  scale?: number

                                                                                                  DECIMAL scale, fixed for the whole column.

                                                                                                  +
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpArrayValue.html b/docs/interfaces/_questdb_nodejs-client.QwpArrayValue.html index bb958c37f..8f0dc94b7 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpArrayValue.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpArrayValue.html @@ -1,4 +1,4 @@ -QwpArrayValue | QuestDB JavaScript Client - v5.0.0
                                                                                                  interface QwpArrayValue {
                                                                                                      dimensions: number[];
                                                                                                      values: (number | bigint)[];
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  dimensions +QwpArrayValue | QuestDB JavaScript Client - v5.0.0
                                                                                                  interface QwpArrayValue {
                                                                                                      dimensions: number[];
                                                                                                      values: (number | bigint)[];
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  dimensions: number[]
                                                                                                  values: (number | bigint)[]

                                                                                                  DOUBLE_ARRAY uses numbers; LONG_ARRAY uses safe integers or signed int64 bigints.

                                                                                                  -
                                                                                                  +

                                                                                                  Properties

                                                                                                  dimensions: number[]
                                                                                                  values: (number | bigint)[]

                                                                                                  DOUBLE_ARRAY uses numbers; LONG_ARRAY uses safe integers or signed int64 bigints.

                                                                                                  +
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpCacheResetMessage.html b/docs/interfaces/_questdb_nodejs-client.QwpCacheResetMessage.html index 80c372d49..1a0d1c31f 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpCacheResetMessage.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpCacheResetMessage.html @@ -1,7 +1,7 @@ -QwpCacheResetMessage | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpCacheResetMessage

                                                                                                  interface QwpCacheResetMessage {
                                                                                                      flags: number;
                                                                                                      kind: "cache-reset";
                                                                                                      payloadLength: number;
                                                                                                      resetMask: number;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  flags +QwpCacheResetMessage | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpCacheResetMessage

                                                                                                  interface QwpCacheResetMessage {
                                                                                                      flags: number;
                                                                                                      kind: "cache-reset";
                                                                                                      payloadLength: number;
                                                                                                      resetMask: number;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  flags: number
                                                                                                  kind: "cache-reset"
                                                                                                  payloadLength: number
                                                                                                  resetMask: number
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  flags: number
                                                                                                  kind: "cache-reset"
                                                                                                  payloadLength: number
                                                                                                  resetMask: number
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpClientFactories.html b/docs/interfaces/_questdb_nodejs-client.QwpClientFactories.html index abd726b39..1869d65ca 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpClientFactories.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpClientFactories.html @@ -1,9 +1,9 @@ -QwpClientFactories | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpClientFactories

                                                                                                  interface QwpClientFactories {
                                                                                                      senderSlotReservation?: QwpPoolSlotReservation;
                                                                                                      close(): void | Promise<void>;
                                                                                                      createQuerySession(
                                                                                                          slot: number,
                                                                                                          signal?: AbortSignal,
                                                                                                      ): Promise<QwpEgressSession>;
                                                                                                      createSender(slot: number, signal?: AbortSignal): Promise<QwpSender>;
                                                                                                      start(): void | Promise<void>;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  senderSlotReservation? +QwpClientFactories | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpClientFactories

                                                                                                  interface QwpClientFactories {
                                                                                                      senderSlotReservation?: QwpPoolSlotReservation;
                                                                                                      close(): void | Promise<void>;
                                                                                                      createQuerySession(
                                                                                                          slot: number,
                                                                                                          signal?: AbortSignal,
                                                                                                      ): Promise<QwpEgressSession>;
                                                                                                      createSender(slot: number, signal?: AbortSignal): Promise<QwpSender>;
                                                                                                      start(): void | Promise<void>;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  senderSlotReservation?: QwpPoolSlotReservation

                                                                                                  Coordinates stable persistent sender slots with recovery.

                                                                                                  -

                                                                                                  Methods

                                                                                                  +

                                                                                                  Methods

                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpClientMetrics.html b/docs/interfaces/_questdb_nodejs-client.QwpClientMetrics.html index 989d9124e..cc21b0dac 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpClientMetrics.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpClientMetrics.html @@ -1,5 +1,5 @@ -QwpClientMetrics | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpClientMetrics

                                                                                                  interface QwpClientMetrics {
                                                                                                      closed: boolean;
                                                                                                      closing: boolean;
                                                                                                      queries: QwpResourcePoolMetrics;
                                                                                                      senders: QwpResourcePoolMetrics;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  closed +QwpClientMetrics | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpClientMetrics

                                                                                                  interface QwpClientMetrics {
                                                                                                      closed: boolean;
                                                                                                      closing: boolean;
                                                                                                      queries: QwpResourcePoolMetrics;
                                                                                                      senders: QwpResourcePoolMetrics;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  closed: boolean
                                                                                                  closing: boolean
                                                                                                  +

                                                                                                  Properties

                                                                                                  closed: boolean
                                                                                                  closing: boolean
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpClientPoolOptions.html b/docs/interfaces/_questdb_nodejs-client.QwpClientPoolOptions.html index 937920b25..9934f980a 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpClientPoolOptions.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpClientPoolOptions.html @@ -1,4 +1,4 @@ -QwpClientPoolOptions | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpClientPoolOptions

                                                                                                  interface QwpClientPoolOptions {
                                                                                                      acquireTimeoutMs?: number;
                                                                                                      housekeepingIntervalMs?: number;
                                                                                                      idleTimeoutMs?: number;
                                                                                                      maxLifetimeMs?: number;
                                                                                                      queryPoolMax?: number;
                                                                                                      queryPoolMin?: number;
                                                                                                      senderPoolMax?: number;
                                                                                                      senderPoolMin?: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  acquireTimeoutMs? +QwpClientPoolOptions | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpClientPoolOptions

                                                                                                  interface QwpClientPoolOptions {
                                                                                                      acquireTimeoutMs?: number;
                                                                                                      housekeepingIntervalMs?: number;
                                                                                                      idleTimeoutMs?: number;
                                                                                                      maxLifetimeMs?: number;
                                                                                                      queryPoolMax?: number;
                                                                                                      queryPoolMin?: number;
                                                                                                      senderPoolMax?: number;
                                                                                                      senderPoolMin?: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  acquireTimeoutMs? housekeepingIntervalMs? idleTimeoutMs? maxLifetimeMs? @@ -10,17 +10,17 @@ The shutdown wait is capped at 5 seconds. Defaults to 5 seconds. Capped at 2,147,483,647ms (the host timer ceiling); a larger value throws a RangeError.

                                                                                                  -
                                                                                                  housekeepingIntervalMs?: number

                                                                                                  Idle/lifetime sweep interval. Defaults to 5s and must be at least 100ms. +

                                                                                                  housekeepingIntervalMs?: number

                                                                                                  Idle/lifetime sweep interval. Defaults to 5s and must be at least 100ms. Capped at 2,147,483,647ms (the host timer ceiling); a larger value throws a RangeError.

                                                                                                  -
                                                                                                  idleTimeoutMs?: number

                                                                                                  Idle time before an excess pooled connection is closed. Defaults to 60s; +

                                                                                                  idleTimeoutMs?: number

                                                                                                  Idle time before an excess pooled connection is closed. Defaults to 60s; zero disables. Not capped at the host timer ceiling: compared against elapsed time only.

                                                                                                  -
                                                                                                  maxLifetimeMs?: number

                                                                                                  Maximum pooled connection age before recycling it while idle. Defaults to +

                                                                                                  maxLifetimeMs?: number

                                                                                                  Maximum pooled connection age before recycling it while idle. Defaults to 30m; zero disables. Not capped at the host timer ceiling: compared against elapsed time only.

                                                                                                  -
                                                                                                  queryPoolMax?: number

                                                                                                  Maximum concurrently borrowed query connections. Defaults to 4.

                                                                                                  -
                                                                                                  queryPoolMin?: number

                                                                                                  Warm egress connections created by connect(). Defaults to 1.

                                                                                                  -
                                                                                                  senderPoolMax?: number

                                                                                                  Maximum concurrently borrowed ingress senders. Defaults to 4.

                                                                                                  -
                                                                                                  senderPoolMin?: number

                                                                                                  Warm ingress connections created by connect(). Defaults to 1.

                                                                                                  -
                                                                                                  +
                                                                                                  queryPoolMax?: number

                                                                                                  Maximum concurrently borrowed query connections. Defaults to 4.

                                                                                                  +
                                                                                                  queryPoolMin?: number

                                                                                                  Warm egress connections created by connect(). Defaults to 1.

                                                                                                  +
                                                                                                  senderPoolMax?: number

                                                                                                  Maximum concurrently borrowed ingress senders. Defaults to 4.

                                                                                                  +
                                                                                                  senderPoolMin?: number

                                                                                                  Warm ingress connections created by connect(). Defaults to 1.

                                                                                                  +
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpColumnBuffer.html b/docs/interfaces/_questdb_nodejs-client.QwpColumnBuffer.html index 9961a2716..24881c1d7 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpColumnBuffer.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpColumnBuffer.html @@ -1,4 +1,4 @@ -QwpColumnBuffer | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpColumnBuffer

                                                                                                  interface QwpColumnBuffer {
                                                                                                      committedValues: number;
                                                                                                      decimalScale?: number;
                                                                                                      geohashPrecision?: number;
                                                                                                      name: string;
                                                                                                      nulls: boolean[];
                                                                                                      size: number;
                                                                                                      type: QwpColumnType;
                                                                                                      values: unknown[];
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  committedValues +QwpColumnBuffer | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpColumnBuffer

                                                                                                  interface QwpColumnBuffer {
                                                                                                      committedValues: number;
                                                                                                      decimalScale?: number;
                                                                                                      geohashPrecision?: number;
                                                                                                      name: string;
                                                                                                      nulls: boolean[];
                                                                                                      size: number;
                                                                                                      type: QwpColumnType;
                                                                                                      values: unknown[];
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  committedValues: number

                                                                                                  Length values had when the last row completed -- everything past it belongs to the row in progress. rollbackRow() truncates to this mark; see the failure it exists to prevent there. Maintained by QwpTableBuffer.

                                                                                                  -
                                                                                                  decimalScale?: number
                                                                                                  geohashPrecision?: number
                                                                                                  name: string
                                                                                                  nulls: boolean[]

                                                                                                  One entry per row; true means NULL.

                                                                                                  -
                                                                                                  size: number

                                                                                                  Rows accounted for so far, including nulls.

                                                                                                  -
                                                                                                  values: unknown[]

                                                                                                  Non-null values only; QWP compacts values around the null bitmap. +

                                                                                                  decimalScale?: number
                                                                                                  geohashPrecision?: number
                                                                                                  name: string
                                                                                                  nulls: boolean[]

                                                                                                  One entry per row; true means NULL.

                                                                                                  +
                                                                                                  size: number

                                                                                                  Rows accounted for so far, including nulls.

                                                                                                  +
                                                                                                  values: unknown[]

                                                                                                  Non-null values only; QWP compacts values around the null bitmap. LONG, DATE, and TIMESTAMP values accept safe integer numbers or signed int64 bigints. LONG_ARRAY applies the same rule to every element.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpConnectionCloseInfo.html b/docs/interfaces/_questdb_nodejs-client.QwpConnectionCloseInfo.html index da17bd996..2d8a36f3b 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpConnectionCloseInfo.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpConnectionCloseInfo.html @@ -1,4 +1,4 @@ -QwpConnectionCloseInfo | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpConnectionCloseInfo

                                                                                                  interface QwpConnectionCloseInfo {
                                                                                                      code: number;
                                                                                                      reason: string;
                                                                                                      wasClean: boolean;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  code +QwpConnectionCloseInfo | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpConnectionCloseInfo

                                                                                                  interface QwpConnectionCloseInfo {
                                                                                                      code: number;
                                                                                                      reason: string;
                                                                                                      wasClean: boolean;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  code: number
                                                                                                  reason: string
                                                                                                  wasClean: boolean
                                                                                                  +

                                                                                                  Properties

                                                                                                  code: number
                                                                                                  reason: string
                                                                                                  wasClean: boolean
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpDecimalValue.html b/docs/interfaces/_questdb_nodejs-client.QwpDecimalValue.html index d6d199642..879ab5d4f 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpDecimalValue.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpDecimalValue.html @@ -1,3 +1,3 @@ -QwpDecimalValue | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpDecimalValue

                                                                                                  interface QwpDecimalValue {
                                                                                                      scale: number;
                                                                                                      unscaled: bigint;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  scale +QwpDecimalValue | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpDecimalValue

                                                                                                  interface QwpDecimalValue {
                                                                                                      scale: number;
                                                                                                      unscaled: bigint;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  scale: number
                                                                                                  unscaled: bigint
                                                                                                  +

                                                                                                  Properties

                                                                                                  scale: number
                                                                                                  unscaled: bigint
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpEgressFailoverResetEvent.html b/docs/interfaces/_questdb_nodejs-client.QwpEgressFailoverResetEvent.html index b8baee889..df86f94c3 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpEgressFailoverResetEvent.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpEgressFailoverResetEvent.html @@ -2,11 +2,11 @@ replacement connection. It fires on every reconnect that replays a query, whether the new connection reached another endpoint (a failed-over event) or the same one (reconnected).

                                                                                                  -
                                                                                                  interface QwpEgressFailoverResetEvent {
                                                                                                      cause?: unknown;
                                                                                                      endpoint?: string | URL;
                                                                                                      previousEndpoint?: string | URL;
                                                                                                      requestId: bigint;
                                                                                                      serverInfo: QwpServerInfoMessage;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpEgressFailoverResetEvent {
                                                                                                      cause?: unknown;
                                                                                                      endpoint?: string | URL;
                                                                                                      previousEndpoint?: string | URL;
                                                                                                      requestId: bigint;
                                                                                                      serverInfo: QwpServerInfoMessage;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  endpoint?: string | URL
                                                                                                  previousEndpoint?: string | URL
                                                                                                  requestId: bigint

                                                                                                  Client request being re-executed on the replacement connection.

                                                                                                  -

                                                                                                  Authoritative SERVER_INFO received from the replacement endpoint.

                                                                                                  -
                                                                                                  +

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  endpoint?: string | URL
                                                                                                  previousEndpoint?: string | URL
                                                                                                  requestId: bigint

                                                                                                  Client request being re-executed on the replacement connection.

                                                                                                  +

                                                                                                  Authoritative SERVER_INFO received from the replacement endpoint.

                                                                                                  +
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpEgressMetrics.html b/docs/interfaces/_questdb_nodejs-client.QwpEgressMetrics.html index f79cab11d..7e073b8fa 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpEgressMetrics.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpEgressMetrics.html @@ -1,4 +1,4 @@ QwpEgressMetrics | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpEgressMetrics

                                                                                                  Immutable notification-inbox counters for an egress session.

                                                                                                  -
                                                                                                  interface QwpEgressMetrics {
                                                                                                      deliveredConnectionNotifications: number;
                                                                                                      droppedConnectionNotifications: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpEgressMetrics {
                                                                                                      deliveredConnectionNotifications: number;
                                                                                                      droppedConnectionNotifications: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  deliveredConnectionNotifications: number
                                                                                                  droppedConnectionNotifications: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  deliveredConnectionNotifications: number
                                                                                                  droppedConnectionNotifications: number
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpEgressQueryOptions.html b/docs/interfaces/_questdb_nodejs-client.QwpEgressQueryOptions.html index 7be276dfb..8aa6ca515 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpEgressQueryOptions.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpEgressQueryOptions.html @@ -1,25 +1,69 @@ -QwpEgressQueryOptions | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpEgressQueryOptions

                                                                                                  interface QwpEgressQueryOptions {
                                                                                                      autoCredit?: boolean;
                                                                                                      bindCount?: number;
                                                                                                      bindPayload?: Uint8Array;
                                                                                                      binds?: QwpBindSetter;
                                                                                                      initialCredit?: number | bigint;
                                                                                                      onFailoverReset?: (
                                                                                                          event: QwpEgressFailoverResetEvent,
                                                                                                      ) => void | Promise<void>;
                                                                                                      resetDictionary?: boolean;
                                                                                                      timeoutMs?: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  autoCredit? +QwpEgressQueryOptions | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpEgressQueryOptions

                                                                                                  interface QwpEgressQueryOptions {
                                                                                                      autoCredit?: boolean;
                                                                                                      bindCount?: number;
                                                                                                      bindPayload?: Uint8Array;
                                                                                                      binds?: QwpBindSetter;
                                                                                                      countRows?: boolean;
                                                                                                      errorPosition?: boolean;
                                                                                                      initialCredit?: number | bigint;
                                                                                                      maxRows?: number | bigint;
                                                                                                      onFailoverReset?: (
                                                                                                          event: QwpEgressFailoverResetEvent,
                                                                                                      ) => void | Promise<void>;
                                                                                                      resetDictionary?: boolean;
                                                                                                      skipRows?: number | bigint;
                                                                                                      stats?: boolean;
                                                                                                      timeoutMs?: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  autoCredit?: boolean

                                                                                                  Replenishes positive initial credit by each RESULT_BATCH wire size after the async iterator advances past that batch. Defaults to true.

                                                                                                  -
                                                                                                  bindCount?: number

                                                                                                  Advanced escape hatch for an already encoded bind section.

                                                                                                  -
                                                                                                  bindPayload?: Uint8Array

                                                                                                  Advanced escape hatch for an already encoded bind section.

                                                                                                  -

                                                                                                  Sets typed positional parameters; index 0 maps to SQL placeholder $1.

                                                                                                  -
                                                                                                  initialCredit?: number | bigint

                                                                                                  Overrides session send-ahead credit. Zero explicitly disables flow control.

                                                                                                  -
                                                                                                  onFailoverReset?: (event: QwpEgressFailoverResetEvent) => void | Promise<void>

                                                                                                  Notification before this query is replayed after failover. Use it to clear +

                                                                                                  bindCount?: number

                                                                                                  Advanced escape hatch for an already encoded bind section.

                                                                                                  +
                                                                                                  bindPayload?: Uint8Array

                                                                                                  Advanced escape hatch for an already encoded bind section.

                                                                                                  +

                                                                                                  Sets typed positional parameters; index 0 maps to SQL placeholder $1.

                                                                                                  +
                                                                                                  countRows?: boolean

                                                                                                  Ask the server for the number of rows in the whole result set, which the +result's completion then carries as rowCount, whatever skipRows and +maxRows leave out of the stream. When maxRows ends the stream first, +the server counts the remaining rows without sending them. Ignored by +statements, and silently omitted when the server does not advertise +QUERY_DETAILS.

                                                                                                  +
                                                                                                  errorPosition?: boolean

                                                                                                  Ask the server where in the SQL text a query error points. A +QwpEgressQueryError then carries position, the UTF-16 offset +into sql -- a JavaScript string index -- and the bare message, without +the [n] prefix, a position or an error number, that QuestDB otherwise +adds. An error the SQL engine raises without a position of its own +reports 0, the start of the text, as /exec does: a query timeout on the +server, or a query cancelled there with CANCEL QUERY. Errors that do not +come from the SQL engine, such as the cancellation cancel() sends, carry +no position.

                                                                                                  +

                                                                                                  Silently omitted, like stats and countRows, when the server does not +advertise QUERY_DETAILS, so it is safe during a rolling upgrade.

                                                                                                  +
                                                                                                  initialCredit?: number | bigint

                                                                                                  Overrides session send-ahead credit. Zero explicitly disables flow control.

                                                                                                  +
                                                                                                  maxRows?: number | bigint

                                                                                                  The most rows to stream, after skipRows. Zero streams only the schema, +in one empty batch. Unbounded by default. A non-negative safe integer, or +a bigint no greater than 2^63 - 1. A server with QUERY_DETAILS ignores it +for statements. Like skipRows, it requires that capability, statements +included.

                                                                                                  +
                                                                                                  onFailoverReset?: (event: QwpEgressFailoverResetEvent) => void | Promise<void>

                                                                                                  Notification before this query is replayed after failover. Use it to clear results already consumed from the old connection. Overrides the session's onFailoverReset for this query; the callback is awaited before replay. The query's timeout keeps running meanwhile, and a query whose timeout expires first is not replayed.

                                                                                                  -
                                                                                                  resetDictionary?: boolean

                                                                                                  Ask a capable server to reset its connection-scoped symbol dictionary. +

                                                                                                  resetDictionary?: boolean

                                                                                                  Ask a capable server to reset its connection-scoped symbol dictionary. Silently omitted when the server lacks QUERY_FLAGS for rolling upgrades.

                                                                                                  -
                                                                                                  timeoutMs?: number

                                                                                                  Per-query timeout overriding the session default; zero disables it.

                                                                                                  +
                                                                                                  skipRows?: number | bigint

                                                                                                  Rows to leave out at the start of the result set, like the offset of SQL +LIMIT. Zero, the default, leaves out none. A non-negative safe integer, +or a bigint no greater than 2^63 - 1. A server with QUERY_DETAILS ignores +it for statements.

                                                                                                  +

                                                                                                  A row window cannot be dropped the way the reports above are: a server +without QUERY_DETAILS would stream the whole result. The query fails with +QwpEgressRowWindowUnsupportedError instead. query() rejects at +once if the currently bound endpoint lacks the capability. A query that +failover would replay on such an endpoint fails through its completion +and iteration, and so does one issued during a reconnect that reaches +such an endpoint, although its query() call resolves. A statement fails +the same way, since the client cannot tell it from a query before +sending it.

                                                                                                  +
                                                                                                  stats?: boolean

                                                                                                  Ask the server for execution statistics -- compile, execution, counting +and client-wait times, and JIT use -- which the completion then carries +as stats, for a result and for a statement alike. Silently omitted when +the server does not advertise QUERY_DETAILS.

                                                                                                  +
                                                                                                  timeoutMs?: number

                                                                                                  Per-query timeout overriding the session default; zero disables it.

                                                                                                  It bounds the whole query, measured from the query() call: waiting for a previous query to drain, any reconnect, server execution, and the time spent consuming results, which is not interrupted. Once it expires no @@ -32,4 +76,4 @@ connection is lost, the timeout is reported at once and the query is not replayed. Capped at 2,147,483,647ms (the host timer ceiling); a larger value throws a RangeError.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpEgressReconnectOptions.html b/docs/interfaces/_questdb_nodejs-client.QwpEgressReconnectOptions.html index 3e92322a2..156a04570 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpEgressReconnectOptions.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpEgressReconnectOptions.html @@ -1,17 +1,17 @@ QwpEgressReconnectOptions | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpEgressReconnectOptions

                                                                                                  Egress failover policy: the reconnect option of an egress session. Unlike ingress, each failover episode is bounded, so a caller waiting for a query result is not left waiting through a long outage.

                                                                                                  -
                                                                                                  interface QwpEgressReconnectOptions {
                                                                                                      failoverBackoffInitialMs?: number;
                                                                                                      failoverBackoffMaxMs?: number;
                                                                                                      failoverMaxAttempts?: number;
                                                                                                      failoverMaxDurationMs?: number;
                                                                                                      onEvent?: (event: QwpReconnectEvent) => void;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpEgressReconnectOptions {
                                                                                                      failoverBackoffInitialMs?: number;
                                                                                                      failoverBackoffMaxMs?: number;
                                                                                                      failoverMaxAttempts?: number;
                                                                                                      failoverMaxDurationMs?: number;
                                                                                                      onEvent?: (event: QwpReconnectEvent) => void;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  failoverBackoffInitialMs?: number

                                                                                                  Full-jitter ceiling before the first failed connection sweep is retried. Must not exceed 2_147_483_647ms. Defaults to 50ms.

                                                                                                  -
                                                                                                  failoverBackoffMaxMs?: number

                                                                                                  Full-jitter exponential-backoff ceiling. Must not exceed 2_147_483_647ms. +

                                                                                                  failoverBackoffMaxMs?: number

                                                                                                  Full-jitter exponential-backoff ceiling. Must not exceed 2_147_483_647ms. Defaults to 1 second.

                                                                                                  -
                                                                                                  failoverMaxAttempts?: number

                                                                                                  Maximum connection sweeps per failover episode; zero is unlimited. +

                                                                                                  failoverMaxAttempts?: number

                                                                                                  Maximum connection sweeps per failover episode; zero is unlimited. Defaults to 8.

                                                                                                  -
                                                                                                  failoverMaxDurationMs?: number

                                                                                                  Deadline for one failover episode; zero disables it. Defaults to 30 +

                                                                                                  failoverMaxDurationMs?: number

                                                                                                  Deadline for one failover episode; zero disables it. Defaults to 30 seconds.

                                                                                                  -
                                                                                                  onEvent?: (event: QwpReconnectEvent) => void
                                                                                                  +
                                                                                                  onEvent?: (event: QwpReconnectEvent) => void
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpEgressViewQuery.html b/docs/interfaces/_questdb_nodejs-client.QwpEgressViewQuery.html index 20955e976..5b2521857 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpEgressViewQuery.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpEgressViewQuery.html @@ -1,12 +1,16 @@ QwpEgressViewQuery | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpEgressViewQuery

                                                                                                  Control handle returned by queryViews().

                                                                                                  -
                                                                                                  interface QwpEgressViewQuery {
                                                                                                      completion: Promise<QwpQueryCompletion>;
                                                                                                      requestId: bigint;
                                                                                                      awaitCompletion(timeoutMs: number): Promise<boolean>;
                                                                                                      cancel(): Promise<void>;
                                                                                                      grantCredit(additionalBytes: number | bigint): Promise<void>;
                                                                                                      isDone(): boolean;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpEgressViewQuery {
                                                                                                      completion: Promise<QwpQueryCompletion>;
                                                                                                      requestId: bigint;
                                                                                                      awaitCompletion(timeoutMs: number): Promise<boolean>;
                                                                                                      cancel(): Promise<void>;
                                                                                                      grantCredit(additionalBytes: number | bigint): Promise<void>;
                                                                                                      isDone(): boolean;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  completion: Promise<QwpQueryCompletion>
                                                                                                  requestId: bigint

                                                                                                  Methods

                                                                                                  • Cancels the query: no further batch reaches the callback, and the outcome +

                                                                                                  Properties

                                                                                                  completion: Promise<QwpQueryCompletion>
                                                                                                  requestId: bigint

                                                                                                  Methods

                                                                                                  +QwpEgressQuery.cancel. Once the query has ended, it resolves +without sending anything.

                                                                                                  +

                                                                                                  Returns Promise<void>

                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpEncodedBinds.html b/docs/interfaces/_questdb_nodejs-client.QwpEncodedBinds.html index dae6db3b6..64431b76f 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpEncodedBinds.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpEncodedBinds.html @@ -1,3 +1,3 @@ -QwpEncodedBinds | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpEncodedBinds

                                                                                                  interface QwpEncodedBinds {
                                                                                                      count: number;
                                                                                                      payload: Uint8Array;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  count +QwpEncodedBinds | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpEncodedBinds

                                                                                                  interface QwpEncodedBinds {
                                                                                                      count: number;
                                                                                                      payload: Uint8Array;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  count: number
                                                                                                  payload: Uint8Array
                                                                                                  +

                                                                                                  Properties

                                                                                                  count: number
                                                                                                  payload: Uint8Array
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpExecDoneMessage.html b/docs/interfaces/_questdb_nodejs-client.QwpExecDoneMessage.html index ed142df23..3d7109056 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpExecDoneMessage.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpExecDoneMessage.html @@ -1,9 +1,11 @@ -QwpExecDoneMessage | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpExecDoneMessage

                                                                                                  interface QwpExecDoneMessage {
                                                                                                      flags: number;
                                                                                                      kind: "exec-done";
                                                                                                      operationType: number;
                                                                                                      payloadLength: number;
                                                                                                      requestId: bigint;
                                                                                                      rowsAffected: bigint;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  flags +QwpExecDoneMessage | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpExecDoneMessage

                                                                                                  interface QwpExecDoneMessage {
                                                                                                      flags: number;
                                                                                                      kind: "exec-done";
                                                                                                      operationType: number;
                                                                                                      payloadLength: number;
                                                                                                      requestId: bigint;
                                                                                                      rowsAffected: bigint;
                                                                                                      stats?: QwpQueryStats;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  flags: number
                                                                                                  kind: "exec-done"
                                                                                                  operationType: number
                                                                                                  payloadLength: number
                                                                                                  requestId: bigint
                                                                                                  rowsAffected: bigint
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  flags: number
                                                                                                  kind: "exec-done"
                                                                                                  operationType: number
                                                                                                  payloadLength: number
                                                                                                  requestId: bigint
                                                                                                  rowsAffected: bigint

                                                                                                  Present when the query asked for it (QWP_QUERY_FLAG_STATS).

                                                                                                  +
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpFailoverAttempt.html b/docs/interfaces/_questdb_nodejs-client.QwpFailoverAttempt.html index 82ee98d81..09866007d 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpFailoverAttempt.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpFailoverAttempt.html @@ -1,3 +1,3 @@ -QwpFailoverAttempt | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpFailoverAttempt

                                                                                                  interface QwpFailoverAttempt {
                                                                                                      endpoint: string | URL;
                                                                                                      error: unknown;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  endpoint +QwpFailoverAttempt | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpFailoverAttempt

                                                                                                  interface QwpFailoverAttempt {
                                                                                                      endpoint: string | URL;
                                                                                                      error: unknown;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  endpoint: string | URL
                                                                                                  error: unknown
                                                                                                  +

                                                                                                  Properties

                                                                                                  endpoint: string | URL
                                                                                                  error: unknown
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpFrame.html b/docs/interfaces/_questdb_nodejs-client.QwpFrame.html index e3db0973e..7ccbfd217 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpFrame.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpFrame.html @@ -1,6 +1,6 @@ -QwpFrame | QuestDB JavaScript Client - v5.0.0
                                                                                                  interface QwpFrame {
                                                                                                      flags: number;
                                                                                                      payload: Uint8Array;
                                                                                                      payloadLength: number;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  flags +QwpFrame | QuestDB JavaScript Client - v5.0.0
                                                                                                  interface QwpFrame {
                                                                                                      flags: number;
                                                                                                      payload: Uint8Array;
                                                                                                      payloadLength: number;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  flags: number
                                                                                                  payload: Uint8Array
                                                                                                  payloadLength: number
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  flags: number
                                                                                                  payload: Uint8Array
                                                                                                  payloadLength: number
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpFrameHeader.html b/docs/interfaces/_questdb_nodejs-client.QwpFrameHeader.html index 2fd73b962..ab61d4752 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpFrameHeader.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpFrameHeader.html @@ -1,5 +1,5 @@ -QwpFrameHeader | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpFrameHeader

                                                                                                  interface QwpFrameHeader {
                                                                                                      flags: number;
                                                                                                      payloadLength: number;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  flags +QwpFrameHeader | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpFrameHeader

                                                                                                  interface QwpFrameHeader {
                                                                                                      flags: number;
                                                                                                      payloadLength: number;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  flags: number
                                                                                                  payloadLength: number
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  flags: number
                                                                                                  payloadLength: number
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpGeohashValue.html b/docs/interfaces/_questdb_nodejs-client.QwpGeohashValue.html index 3b2f3b405..679542b10 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpGeohashValue.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpGeohashValue.html @@ -1,3 +1,3 @@ -QwpGeohashValue | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpGeohashValue

                                                                                                  interface QwpGeohashValue {
                                                                                                      bits: bigint;
                                                                                                      precisionBits: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  bits +QwpGeohashValue | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpGeohashValue

                                                                                                  interface QwpGeohashValue {
                                                                                                      bits: bigint;
                                                                                                      precisionBits: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  bits: bigint
                                                                                                  precisionBits: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  bits: bigint
                                                                                                  precisionBits: number
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpHandshakeMetadata.html b/docs/interfaces/_questdb_nodejs-client.QwpHandshakeMetadata.html index ed64960b2..86348ae58 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpHandshakeMetadata.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpHandshakeMetadata.html @@ -1,5 +1,5 @@ QwpHandshakeMetadata | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpHandshakeMetadata

                                                                                                  Metadata negotiated during the QWP WebSocket upgrade.

                                                                                                  -
                                                                                                  interface QwpHandshakeMetadata {
                                                                                                      contentEncoding?: string;
                                                                                                      durableAckEnabled?: boolean;
                                                                                                      maxBatchSizeBytes?: number;
                                                                                                      negotiatedCompression?: QwpNegotiatedEgressCompression;
                                                                                                      qwpVersion: number;
                                                                                                      serverRole?: string;
                                                                                                      serverZone?: string;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpHandshakeMetadata {
                                                                                                      contentEncoding?: string;
                                                                                                      durableAckEnabled?: boolean;
                                                                                                      maxBatchSizeBytes?: number;
                                                                                                      negotiatedCompression?: QwpNegotiatedEgressCompression;
                                                                                                      qwpVersion: number;
                                                                                                      serverRole?: string;
                                                                                                      serverZone?: string;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  contentEncoding?: string

                                                                                                  Server-selected egress content encoding, when advertised.

                                                                                                  -
                                                                                                  durableAckEnabled?: boolean

                                                                                                  Whether the server confirmed durable-ACK support.

                                                                                                  -
                                                                                                  maxBatchSizeBytes?: number

                                                                                                  Server's hard ingress WebSocket-payload cap, when advertised.

                                                                                                  -
                                                                                                  negotiatedCompression?: QwpNegotiatedEgressCompression

                                                                                                  Parsed effective egress codec and level selected by the server.

                                                                                                  -
                                                                                                  qwpVersion: number

                                                                                                  QWP protocol version selected by the server.

                                                                                                  -
                                                                                                  serverRole?: string

                                                                                                  Server role advertised on a successful upgrade, when available.

                                                                                                  -
                                                                                                  serverZone?: string

                                                                                                  Server zone advertised on a successful upgrade, when available.

                                                                                                  -
                                                                                                  +
                                                                                                  durableAckEnabled?: boolean

                                                                                                  Whether the server confirmed durable-ACK support.

                                                                                                  +
                                                                                                  maxBatchSizeBytes?: number

                                                                                                  Server's hard ingress WebSocket-payload cap, when advertised.

                                                                                                  +
                                                                                                  negotiatedCompression?: QwpNegotiatedEgressCompression

                                                                                                  Parsed effective egress codec and level selected by the server.

                                                                                                  +
                                                                                                  qwpVersion: number

                                                                                                  QWP protocol version selected by the server.

                                                                                                  +
                                                                                                  serverRole?: string

                                                                                                  Server role advertised on a successful upgrade, when available.

                                                                                                  +
                                                                                                  serverZone?: string

                                                                                                  Server zone advertised on a successful upgrade, when available.

                                                                                                  +
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpIngressEncodeOptions.html b/docs/interfaces/_questdb_nodejs-client.QwpIngressEncodeOptions.html index d2b7a5200..f8b23cabd 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpIngressEncodeOptions.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpIngressEncodeOptions.html @@ -1,7 +1,7 @@ -QwpIngressEncodeOptions | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressEncodeOptions

                                                                                                  interface QwpIngressEncodeOptions {
                                                                                                      confirmedMaxSymbolId?: number;
                                                                                                      deferCommit?: boolean;
                                                                                                      dictionary?: QwpSymbolDictionary;
                                                                                                      gorilla?: boolean;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  confirmedMaxSymbolId? +QwpIngressEncodeOptions | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressEncodeOptions

                                                                                                  interface QwpIngressEncodeOptions {
                                                                                                      confirmedMaxSymbolId?: number;
                                                                                                      deferCommit?: boolean;
                                                                                                      dictionary?: QwpSymbolDictionary;
                                                                                                      gorilla?: boolean;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  confirmedMaxSymbolId?: number

                                                                                                  Highest global symbol ID already published on this logical connection.

                                                                                                  -
                                                                                                  deferCommit?: boolean
                                                                                                  dictionary?: QwpSymbolDictionary

                                                                                                  Present means connection-scoped delta dictionary mode.

                                                                                                  -
                                                                                                  gorilla?: boolean
                                                                                                  +
                                                                                                  deferCommit?: boolean
                                                                                                  dictionary?: QwpSymbolDictionary

                                                                                                  Present means connection-scoped delta dictionary mode.

                                                                                                  +
                                                                                                  gorilla?: boolean
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpIngressErrorEvent.html b/docs/interfaces/_questdb_nodejs-client.QwpIngressErrorEvent.html index f29c6588e..cc4dd847e 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpIngressErrorEvent.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpIngressErrorEvent.html @@ -1,8 +1,8 @@ -QwpIngressErrorEvent | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressErrorEvent

                                                                                                  interface QwpIngressErrorEvent {
                                                                                                      error: Error;
                                                                                                      metrics: QwpIngressMetrics;
                                                                                                      response?: QwpIngressResponse;
                                                                                                      senderError?: QwpSenderError;
                                                                                                      terminal: boolean;
                                                                                                      timestampMs: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  error +QwpIngressErrorEvent | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressErrorEvent

                                                                                                  interface QwpIngressErrorEvent {
                                                                                                      error: Error;
                                                                                                      metrics: QwpIngressMetrics;
                                                                                                      response?: QwpIngressResponse;
                                                                                                      senderError?: QwpSenderError;
                                                                                                      terminal: boolean;
                                                                                                      timestampMs: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  error: Error
                                                                                                  senderError?: QwpSenderError

                                                                                                  Present for a classified server rejection.

                                                                                                  -
                                                                                                  terminal: boolean
                                                                                                  timestampMs: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  error: Error
                                                                                                  senderError?: QwpSenderError

                                                                                                  Present for a classified server rejection.

                                                                                                  +
                                                                                                  terminal: boolean
                                                                                                  timestampMs: number
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpIngressMetrics.html b/docs/interfaces/_questdb_nodejs-client.QwpIngressMetrics.html index a9797175b..74fc7a49d 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpIngressMetrics.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpIngressMetrics.html @@ -1,5 +1,5 @@ QwpIngressMetrics | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressMetrics

                                                                                                  Immutable point-in-time ingress telemetry, safe in browsers and Node.js.

                                                                                                  -
                                                                                                  interface QwpIngressMetrics {
                                                                                                      ackedSequence: bigint;
                                                                                                      deliveredConnectionNotifications: number;
                                                                                                      deliveredErrorNotifications: number;
                                                                                                      deliveredProgressNotifications: number;
                                                                                                      droppedConnectionNotifications: number;
                                                                                                      droppedErrorNotifications: number;
                                                                                                      droppedProgressNotifications: number;
                                                                                                      lastError?: Error;
                                                                                                      memoryReplayMaxBytes?: number;
                                                                                                      memoryReplayUsedBytes?: number;
                                                                                                      pendingDurableTables: number;
                                                                                                      pendingReplayBytes: number;
                                                                                                      pendingReplayFrames: number;
                                                                                                      publishedSequence: bigint;
                                                                                                      replayAcknowledgedFrameSequence?: bigint;
                                                                                                      replayPublishedFrameSequence?: bigint;
                                                                                                      totalAcks: number;
                                                                                                      totalBytesPublished: number;
                                                                                                      totalBytesReplayed: number;
                                                                                                      totalBytesSent: number;
                                                                                                      totalDurableAcks: number;
                                                                                                      totalErrors: number;
                                                                                                      totalFailovers: number;
                                                                                                      totalFramesPublished: number;
                                                                                                      totalFramesReplayed: number;
                                                                                                      totalFramesSent: number;
                                                                                                      totalMemoryReplayAppendTimeouts: number;
                                                                                                      totalMemoryReplayBackpressureStalls: number;
                                                                                                      totalNacks: number;
                                                                                                      totalReconnectAttempts: number;
                                                                                                      totalReconnectErrors: number;
                                                                                                      totalReconnectsSucceeded: number;
                                                                                                      waitingMemoryReplayAppends: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpIngressMetrics {
                                                                                                      ackedSequence: bigint;
                                                                                                      deliveredConnectionNotifications: number;
                                                                                                      deliveredErrorNotifications: number;
                                                                                                      deliveredProgressNotifications: number;
                                                                                                      droppedConnectionNotifications: number;
                                                                                                      droppedErrorNotifications: number;
                                                                                                      droppedProgressNotifications: number;
                                                                                                      lastError?: Error;
                                                                                                      memoryReplayMaxBytes?: number;
                                                                                                      memoryReplayUsedBytes?: number;
                                                                                                      pendingDurableTables: number;
                                                                                                      pendingReplayBytes: number;
                                                                                                      pendingReplayFrames: number;
                                                                                                      publishedSequence: bigint;
                                                                                                      replayAcknowledgedFrameSequence?: bigint;
                                                                                                      replayPublishedFrameSequence?: bigint;
                                                                                                      totalAcks: number;
                                                                                                      totalBytesPublished: number;
                                                                                                      totalBytesReplayed: number;
                                                                                                      totalBytesSent: number;
                                                                                                      totalDurableAcks: number;
                                                                                                      totalErrors: number;
                                                                                                      totalFailovers: number;
                                                                                                      totalFramesPublished: number;
                                                                                                      totalFramesReplayed: number;
                                                                                                      totalFramesSent: number;
                                                                                                      totalMemoryReplayAppendTimeouts: number;
                                                                                                      totalMemoryReplayBackpressureStalls: number;
                                                                                                      totalNacks: number;
                                                                                                      totalReconnectAttempts: number;
                                                                                                      totalReconnectErrors: number;
                                                                                                      totalReconnectsSucceeded: number;
                                                                                                      waitingMemoryReplayAppends: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  ackedSequence: bigint

                                                                                                  Highest client-session sequence covered by a successful cumulative ACK.

                                                                                                  -
                                                                                                  deliveredConnectionNotifications: number
                                                                                                  deliveredErrorNotifications: number
                                                                                                  deliveredProgressNotifications: number
                                                                                                  droppedConnectionNotifications: number
                                                                                                  droppedErrorNotifications: number
                                                                                                  droppedProgressNotifications: number
                                                                                                  lastError?: Error
                                                                                                  memoryReplayMaxBytes?: number
                                                                                                  memoryReplayUsedBytes?: number
                                                                                                  pendingDurableTables: number
                                                                                                  pendingReplayBytes: number
                                                                                                  pendingReplayFrames: number
                                                                                                  publishedSequence: bigint

                                                                                                  Highest client-session sequence allocated, or -1 before the first send.

                                                                                                  -
                                                                                                  replayAcknowledgedFrameSequence?: bigint

                                                                                                  Trim watermark; in durable-ACK mode it advances only after durability.

                                                                                                  -
                                                                                                  replayPublishedFrameSequence?: bigint

                                                                                                  Stable store-and-forward watermark; absent without reconnect/replay.

                                                                                                  -
                                                                                                  totalAcks: number
                                                                                                  totalBytesPublished: number
                                                                                                  totalBytesReplayed: number
                                                                                                  totalBytesSent: number
                                                                                                  totalDurableAcks: number
                                                                                                  totalErrors: number
                                                                                                  totalFailovers: number
                                                                                                  totalFramesPublished: number
                                                                                                  totalFramesReplayed: number
                                                                                                  totalFramesSent: number

                                                                                                  Physical sends; includes replay and dictionary catch-up when available.

                                                                                                  -
                                                                                                  totalMemoryReplayAppendTimeouts: number
                                                                                                  totalMemoryReplayBackpressureStalls: number
                                                                                                  totalNacks: number
                                                                                                  totalReconnectAttempts: number
                                                                                                  totalReconnectErrors: number
                                                                                                  totalReconnectsSucceeded: number
                                                                                                  waitingMemoryReplayAppends: number
                                                                                                  +
                                                                                                  deliveredConnectionNotifications: number
                                                                                                  deliveredErrorNotifications: number
                                                                                                  deliveredProgressNotifications: number
                                                                                                  droppedConnectionNotifications: number
                                                                                                  droppedErrorNotifications: number
                                                                                                  droppedProgressNotifications: number
                                                                                                  lastError?: Error
                                                                                                  memoryReplayMaxBytes?: number
                                                                                                  memoryReplayUsedBytes?: number
                                                                                                  pendingDurableTables: number
                                                                                                  pendingReplayBytes: number
                                                                                                  pendingReplayFrames: number
                                                                                                  publishedSequence: bigint

                                                                                                  Highest client-session sequence allocated, or -1 before the first send.

                                                                                                  +
                                                                                                  replayAcknowledgedFrameSequence?: bigint

                                                                                                  Trim watermark; in durable-ACK mode it advances only after durability.

                                                                                                  +
                                                                                                  replayPublishedFrameSequence?: bigint

                                                                                                  Stable store-and-forward watermark; absent without reconnect/replay.

                                                                                                  +
                                                                                                  totalAcks: number
                                                                                                  totalBytesPublished: number
                                                                                                  totalBytesReplayed: number
                                                                                                  totalBytesSent: number
                                                                                                  totalDurableAcks: number
                                                                                                  totalErrors: number
                                                                                                  totalFailovers: number
                                                                                                  totalFramesPublished: number
                                                                                                  totalFramesReplayed: number
                                                                                                  totalFramesSent: number

                                                                                                  Physical sends; includes replay and dictionary catch-up when available.

                                                                                                  +
                                                                                                  totalMemoryReplayAppendTimeouts: number
                                                                                                  totalMemoryReplayBackpressureStalls: number
                                                                                                  totalNacks: number
                                                                                                  totalReconnectAttempts: number
                                                                                                  totalReconnectErrors: number
                                                                                                  totalReconnectsSucceeded: number
                                                                                                  waitingMemoryReplayAppends: number
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpIngressProgressEvent.html b/docs/interfaces/_questdb_nodejs-client.QwpIngressProgressEvent.html index 97b7587ba..c0494a296 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpIngressProgressEvent.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpIngressProgressEvent.html @@ -1,6 +1,6 @@ -QwpIngressProgressEvent | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressProgressEvent

                                                                                                  interface QwpIngressProgressEvent {
                                                                                                      kind: QwpIngressProgressKind;
                                                                                                      metrics: QwpIngressMetrics;
                                                                                                      response?: QwpIngressResponse;
                                                                                                      sequence?: bigint;
                                                                                                      timestampMs: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  kind +QwpIngressProgressEvent | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressProgressEvent

                                                                                                  interface QwpIngressProgressEvent {
                                                                                                      kind: QwpIngressProgressKind;
                                                                                                      metrics: QwpIngressMetrics;
                                                                                                      response?: QwpIngressResponse;
                                                                                                      sequence?: bigint;
                                                                                                      timestampMs: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  sequence?: bigint
                                                                                                  timestampMs: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  sequence?: bigint
                                                                                                  timestampMs: number
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpIngressReconnectOptions.html b/docs/interfaces/_questdb_nodejs-client.QwpIngressReconnectOptions.html index 90385f375..bb46f3a9f 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpIngressReconnectOptions.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpIngressReconnectOptions.html @@ -4,7 +4,7 @@ not stopped by any configured limit. Transport and endpoint failures are retried until close(), and only a terminal error ends the session. reconnectMaxDurationMs bounds a synchronous initial connect only.

                                                                                                  -
                                                                                                  interface QwpIngressReconnectOptions {
                                                                                                      maxFrameRejections?: number;
                                                                                                      onEvent?: (event: QwpReconnectEvent) => void;
                                                                                                      poisonMinEscalationWindowMs?: number;
                                                                                                      reconnectInitialBackoffMs?: number;
                                                                                                      reconnectMaxBackoffMs?: number;
                                                                                                      reconnectMaxDurationMs?: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpIngressReconnectOptions {
                                                                                                      maxFrameRejections?: number;
                                                                                                      onEvent?: (event: QwpReconnectEvent) => void;
                                                                                                      poisonMinEscalationWindowMs?: number;
                                                                                                      reconnectInitialBackoffMs?: number;
                                                                                                      reconnectMaxBackoffMs?: number;
                                                                                                      reconnectMaxDurationMs?: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  maxFrameRejections?: number

                                                                                                  Consecutive retriable rejections of one frame before it is treated as poison and retained for inspection. Defaults to 4.

                                                                                                  -
                                                                                                  onEvent?: (event: QwpReconnectEvent) => void
                                                                                                  poisonMinEscalationWindowMs?: number

                                                                                                  Minimum time the same frame must remain suspect before repeated +

                                                                                                  onEvent?: (event: QwpReconnectEvent) => void
                                                                                                  poisonMinEscalationWindowMs?: number

                                                                                                  Minimum time the same frame must remain suspect before repeated rejections or non-orderly closes become terminal. Defaults to 5 seconds; zero escalates as soon as maxFrameRejections is reached.

                                                                                                  -
                                                                                                  reconnectInitialBackoffMs?: number

                                                                                                  Full-jitter ceiling before the first failed connection sweep is retried. +

                                                                                                  reconnectInitialBackoffMs?: number

                                                                                                  Full-jitter ceiling before the first failed connection sweep is retried. Must not exceed 2_147_483_647ms. Defaults to 100ms.

                                                                                                  -
                                                                                                  reconnectMaxBackoffMs?: number

                                                                                                  Full-jitter exponential-backoff ceiling. Must not exceed 2_147_483_647ms. +

                                                                                                  reconnectMaxBackoffMs?: number

                                                                                                  Full-jitter exponential-backoff ceiling. Must not exceed 2_147_483_647ms. Defaults to 5 seconds.

                                                                                                  -
                                                                                                  reconnectMaxDurationMs?: number

                                                                                                  How long a synchronous initial connect keeps retrying before it fails +

                                                                                                  reconnectMaxDurationMs?: number

                                                                                                  How long a synchronous initial connect keeps retrying before it fails with QwpReconnectExhaustedError. Defaults to 5 minutes. Zero allows one attempt and no retries, as in the Rust and Python clients; the attempt itself is not cut short. Reconnects after the first connection do not @@ -27,4 +27,4 @@ background (initialConnectMode "async", which Node's initial_connect_retry=async and the pooled client's lazy_connect also select): both retry until close() or a terminal error.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpIngressResponse.html b/docs/interfaces/_questdb_nodejs-client.QwpIngressResponse.html index 7b3bb6d77..924f5bd16 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpIngressResponse.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpIngressResponse.html @@ -1,5 +1,5 @@ -QwpIngressResponse | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressResponse

                                                                                                  interface QwpIngressResponse {
                                                                                                      errorMessage?: string;
                                                                                                      sequence: bigint;
                                                                                                      status: number;
                                                                                                      tables: QwpIngressTableResult[];
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  errorMessage? +QwpIngressResponse | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressResponse

                                                                                                  interface QwpIngressResponse {
                                                                                                      errorMessage?: string;
                                                                                                      sequence: bigint;
                                                                                                      status: number;
                                                                                                      tables: QwpIngressTableResult[];
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  errorMessage?: string
                                                                                                  sequence: bigint
                                                                                                  status: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  errorMessage?: string
                                                                                                  sequence: bigint
                                                                                                  status: number
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpIngressServerInfo.html b/docs/interfaces/_questdb_nodejs-client.QwpIngressServerInfo.html index 41d6431d3..7e85a06e9 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpIngressServerInfo.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpIngressServerInfo.html @@ -1,8 +1,8 @@ QwpIngressServerInfo | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressServerInfo

                                                                                                  What the browser-requested ingress SERVER_INFO frame reports.

                                                                                                  -
                                                                                                  interface QwpIngressServerInfo {
                                                                                                      durableAckEnabled: boolean;
                                                                                                      maxBatchSizeBytes: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpIngressServerInfo {
                                                                                                      durableAckEnabled: boolean;
                                                                                                      maxBatchSizeBytes: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  durableAckEnabled: boolean

                                                                                                  Whether this connection negotiated durable acknowledgements. This is the only durable-ACK verdict a browser can read: the confirmation header is invisible to page JavaScript and the subprotocol echo confirms the negotiation dialect, not the capability.

                                                                                                  -
                                                                                                  maxBatchSizeBytes: number
                                                                                                  +
                                                                                                  maxBatchSizeBytes: number
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpIngressSymbolDictionaryDelta.html b/docs/interfaces/_questdb_nodejs-client.QwpIngressSymbolDictionaryDelta.html index 4176d149e..56506cb9f 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpIngressSymbolDictionaryDelta.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpIngressSymbolDictionaryDelta.html @@ -1,3 +1,3 @@ -QwpIngressSymbolDictionaryDelta | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressSymbolDictionaryDelta

                                                                                                  interface QwpIngressSymbolDictionaryDelta {
                                                                                                      entries: readonly string[];
                                                                                                      startId: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  entries +QwpIngressSymbolDictionaryDelta | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressSymbolDictionaryDelta

                                                                                                  interface QwpIngressSymbolDictionaryDelta {
                                                                                                      entries: readonly string[];
                                                                                                      startId: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  entries: readonly string[]
                                                                                                  startId: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  entries: readonly string[]
                                                                                                  startId: number
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpIngressTableResult.html b/docs/interfaces/_questdb_nodejs-client.QwpIngressTableResult.html index c91e56431..87b8198b1 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpIngressTableResult.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpIngressTableResult.html @@ -1,3 +1,3 @@ -QwpIngressTableResult | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressTableResult

                                                                                                  interface QwpIngressTableResult {
                                                                                                      name: string;
                                                                                                      sequenceTransaction: bigint;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  name +QwpIngressTableResult | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpIngressTableResult

                                                                                                  interface QwpIngressTableResult {
                                                                                                      name: string;
                                                                                                      sequenceTransaction: bigint;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  name: string
                                                                                                  sequenceTransaction: bigint
                                                                                                  +

                                                                                                  Properties

                                                                                                  name: string
                                                                                                  sequenceTransaction: bigint
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpLong256Value.html b/docs/interfaces/_questdb_nodejs-client.QwpLong256Value.html index ab1befd48..0f05bc08e 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpLong256Value.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpLong256Value.html @@ -1,3 +1,3 @@ -QwpLong256Value | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpLong256Value

                                                                                                  interface QwpLong256Value {
                                                                                                      words: readonly [bigint, bigint, bigint, bigint];
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  words +QwpLong256Value | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpLong256Value

                                                                                                  interface QwpLong256Value {
                                                                                                      words: readonly [bigint, bigint, bigint, bigint];
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  words: readonly [bigint, bigint, bigint, bigint]

                                                                                                  Little-endian 64-bit words; word 0 is least significant.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpNodeClientConfigOptions.html b/docs/interfaces/_questdb_nodejs-client.QwpNodeClientConfigOptions.html index b45b54aaf..ab8027a54 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpNodeClientConfigOptions.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpNodeClientConfigOptions.html @@ -1,13 +1,13 @@ QwpNodeClientConfigOptions | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpNodeClientConfigOptions

                                                                                                  Typed overrides for a ws/wss cluster string, in the sections of QwpNodeClientOptions. They take precedence after the complete string has been validated; the endpoints themselves always come from addr.

                                                                                                  -
                                                                                                  interface QwpNodeClientConfigOptions {
                                                                                                      cluster?: Partial<Omit<QwpNodeWebSocketOptions, "url" | "failoverUrls">>;
                                                                                                      egress?: Omit<
                                                                                                          QwpNodeEgressOptions,
                                                                                                          "url"
                                                                                                          | "failoverUrls"
                                                                                                          | "authorization",
                                                                                                      >;
                                                                                                      ingress?: Omit<
                                                                                                          QwpNodeIngressOptions,
                                                                                                          "url"
                                                                                                          | "failoverUrls"
                                                                                                          | "authorization",
                                                                                                      >;
                                                                                                      lazyConnect?: boolean;
                                                                                                      pool?: QwpClientPoolOptions;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpNodeClientConfigOptions {
                                                                                                      cluster?: Partial<Omit<QwpNodeWebSocketOptions, "url" | "failoverUrls">>;
                                                                                                      egress?: Omit<
                                                                                                          QwpNodeEgressOptions,
                                                                                                          "url"
                                                                                                          | "failoverUrls"
                                                                                                          | "authorization",
                                                                                                      >;
                                                                                                      ingress?: Omit<
                                                                                                          QwpNodeIngressOptions,
                                                                                                          "url"
                                                                                                          | "failoverUrls"
                                                                                                          | "authorization",
                                                                                                      >;
                                                                                                      lazyConnect?: boolean;
                                                                                                      pool?: QwpClientPoolOptions;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  cluster?: Partial<Omit<QwpNodeWebSocketOptions, "url" | "failoverUrls">>

                                                                                                  Connection overrides both sides share.

                                                                                                  -
                                                                                                  egress?: Omit<QwpNodeEgressOptions, "url" | "failoverUrls" | "authorization">

                                                                                                  Egress overrides.

                                                                                                  -
                                                                                                  ingress?: Omit<QwpNodeIngressOptions, "url" | "failoverUrls" | "authorization">

                                                                                                  Ingress overrides; storeAndForward may supply or override sf_dir.

                                                                                                  -
                                                                                                  lazyConnect?: boolean

                                                                                                  Overrides the lazy_connect key.

                                                                                                  -
                                                                                                  +
                                                                                                  egress?: Omit<QwpNodeEgressOptions, "url" | "failoverUrls" | "authorization">

                                                                                                  Egress overrides.

                                                                                                  +
                                                                                                  ingress?: Omit<QwpNodeIngressOptions, "url" | "failoverUrls" | "authorization">

                                                                                                  Ingress overrides; storeAndForward may supply or override sf_dir.

                                                                                                  +
                                                                                                  lazyConnect?: boolean

                                                                                                  Overrides the lazy_connect key.

                                                                                                  +
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpNodeClientOptions.html b/docs/interfaces/_questdb_nodejs-client.QwpNodeClientOptions.html index 8d1d8cd89..5a55b7136 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpNodeClientOptions.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpNodeClientOptions.html @@ -1,7 +1,7 @@ QwpNodeClientOptions | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpNodeClientOptions

                                                                                                  Node configuration for a combined pooled QWP ingress/egress client. One endpoint list and authentication are shared, while side-specific options remain explicit.

                                                                                                  -
                                                                                                  interface QwpNodeClientOptions {
                                                                                                      cluster: QwpNodeWebSocketOptions;
                                                                                                      egress?: Omit<
                                                                                                          QwpNodeEgressOptions,
                                                                                                          "url"
                                                                                                          | "failoverUrls"
                                                                                                          | "authorization",
                                                                                                      >;
                                                                                                      ingress?: Omit<
                                                                                                          QwpNodeIngressOptions,
                                                                                                          "url"
                                                                                                          | "failoverUrls"
                                                                                                          | "authorization",
                                                                                                      >;
                                                                                                      lazyConnect?: boolean;
                                                                                                      pool?: QwpClientPoolOptions;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpNodeClientOptions {
                                                                                                      cluster: QwpNodeWebSocketOptions;
                                                                                                      egress?: Omit<
                                                                                                          QwpNodeEgressOptions,
                                                                                                          "url"
                                                                                                          | "failoverUrls"
                                                                                                          | "authorization",
                                                                                                      >;
                                                                                                      ingress?: Omit<
                                                                                                          QwpNodeIngressOptions,
                                                                                                          "url"
                                                                                                          | "failoverUrls"
                                                                                                          | "authorization",
                                                                                                      >;
                                                                                                      lazyConnect?: boolean;
                                                                                                      pool?: QwpClientPoolOptions;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  Endpoints, authentication and the connection settings both sides share. Each URL may be an origin, a reverse-proxy base path, or an existing /write/v4 or /read/v1 endpoint; each side derives its own route.

                                                                                                  -
                                                                                                  egress?: Omit<QwpNodeEgressOptions, "url" | "failoverUrls" | "authorization">

                                                                                                  The query sessions' options, on the same terms as ingress.

                                                                                                  -
                                                                                                  ingress?: Omit<QwpNodeIngressOptions, "url" | "failoverUrls" | "authorization">

                                                                                                  The pooled senders' options. url, failoverUrls and authorization +

                                                                                                  egress?: Omit<QwpNodeEgressOptions, "url" | "failoverUrls" | "authorization">

                                                                                                  The query sessions' options, on the same terms as ingress.

                                                                                                  +
                                                                                                  ingress?: Omit<QwpNodeIngressOptions, "url" | "failoverUrls" | "authorization">

                                                                                                  The pooled senders' options. url, failoverUrls and authorization belong to cluster; any other connection setting given here overrides the cluster's for ingress only.

                                                                                                  -
                                                                                                  lazyConnect?: boolean

                                                                                                  Coordinates a non-blocking startup: ingress connects in the background, +

                                                                                                  lazyConnect?: boolean

                                                                                                  Coordinates a non-blocking startup: ingress connects in the background, using memory replay when store-and-forward is absent, and the egress pool remains cold until the first query. Conflicts with a positive queryPoolMin, an ingress initialConnectMode other than async, or ingress reconnect: false. This is the typed spelling of the lazy_connect key, which, as in the Java, Rust and Python clients, only the pooled client applies.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpNodeEgressOptions.html b/docs/interfaces/_questdb_nodejs-client.QwpNodeEgressOptions.html index 7cc1add72..fff3c15a5 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpNodeEgressOptions.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpNodeEgressOptions.html @@ -1,7 +1,7 @@ QwpNodeEgressOptions | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpNodeEgressOptions

                                                                                                  Everything a Node QWP query session takes: the connection, endpoint routing, result compression, and the session's flow control, deadlines and failover.

                                                                                                  -
                                                                                                  interface QwpNodeEgressOptions {
                                                                                                      agent?: Agent;
                                                                                                      authorization?: string;
                                                                                                      authTimeoutMs?: number;
                                                                                                      bufferPoolSize?: number;
                                                                                                      cancelDrainTimeoutMs?: number;
                                                                                                      clientId?: string;
                                                                                                      closeTimeoutMs?: number;
                                                                                                      compression?: QwpEgressCompression;
                                                                                                      compressionLevel?: number;
                                                                                                      connectionListenerInboxCapacity?: number;
                                                                                                      connectTimeoutMs?: number;
                                                                                                      failoverUrls?: readonly (string | URL)[];
                                                                                                      headers?: Record<string, string>;
                                                                                                      initialCredit?: number | bigint;
                                                                                                      maxBatchRows?: number;
                                                                                                      maxVersion?: number;
                                                                                                      onFailoverReset?: (
                                                                                                          event: QwpEgressFailoverResetEvent,
                                                                                                      ) => void | Promise<void>;
                                                                                                      protocols?: string | string[];
                                                                                                      queryTimeoutMs?: number;
                                                                                                      reconnect?: false | QwpEgressReconnectOptions;
                                                                                                      sendTimeoutMs?: number;
                                                                                                      serverInfoTimeoutMs?: number;
                                                                                                      target?: QwpTarget;
                                                                                                      url: string | URL;
                                                                                                      webSocketFactory?: (
                                                                                                          url: string | URL,
                                                                                                          options: {
                                                                                                              agent?: Agent;
                                                                                                              headers: Record<string, string>;
                                                                                                              onConnected: () => void;
                                                                                                              onUpgrade: (headers: IncomingHttpHeaders) => void;
                                                                                                              onUpgradeRejected: (rejection: QwpNodeUpgradeRejection) => void;
                                                                                                              protocols?: string | string[];
                                                                                                          },
                                                                                                      ) => QwpWebSocketLike;
                                                                                                      zone?: string;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpNodeEgressOptions {
                                                                                                      agent?: Agent;
                                                                                                      authorization?: string;
                                                                                                      authTimeoutMs?: number;
                                                                                                      bufferPoolSize?: number;
                                                                                                      cancelDrainTimeoutMs?: number;
                                                                                                      clientId?: string;
                                                                                                      closeTimeoutMs?: number;
                                                                                                      compression?: QwpEgressCompression;
                                                                                                      compressionLevel?: number;
                                                                                                      connectionListenerInboxCapacity?: number;
                                                                                                      connectTimeoutMs?: number;
                                                                                                      failoverUrls?: readonly (string | URL)[];
                                                                                                      headers?: Record<string, string>;
                                                                                                      initialCredit?: number | bigint;
                                                                                                      maxBatchRows?: number;
                                                                                                      maxVersion?: number;
                                                                                                      onFailoverReset?: (
                                                                                                          event: QwpEgressFailoverResetEvent,
                                                                                                      ) => void | Promise<void>;
                                                                                                      protocols?: string | string[];
                                                                                                      queryTimeoutMs?: number;
                                                                                                      reconnect?: false | QwpEgressReconnectOptions;
                                                                                                      sendTimeoutMs?: number;
                                                                                                      serverInfoTimeoutMs?: number;
                                                                                                      target?: QwpTarget;
                                                                                                      url: string | URL;
                                                                                                      webSocketFactory?: (
                                                                                                          url: string | URL,
                                                                                                          options: {
                                                                                                              agent?: Agent;
                                                                                                              headers: Record<string, string>;
                                                                                                              onConnected: () => void;
                                                                                                              onUpgrade: (headers: IncomingHttpHeaders) => void;
                                                                                                              onUpgradeRejected: (rejection: QwpNodeUpgradeRejection) => void;
                                                                                                              protocols?: string | string[];
                                                                                                          },
                                                                                                      ) => QwpWebSocketLike;
                                                                                                      zone?: string;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  agent?: Agent

                                                                                                  Optional HTTP(S) agent used for the WebSocket upgrade.

                                                                                                  -
                                                                                                  authorization?: string
                                                                                                  authTimeoutMs?: number

                                                                                                  Time allowed after TCP/TLS connection for HTTP authentication and the +

                                                                                                  authorization?: string
                                                                                                  authTimeoutMs?: number

                                                                                                  Time allowed after TCP/TLS connection for HTTP authentication and the WebSocket upgrade.

                                                                                                  Defaults to connectTimeoutMs when that is set, and to 15s otherwise, so narrowing only the connect deadline bounds the whole opening rather than being exceeded by a default nobody chose. Set this to give the slower phase its own budget. Capped at 2,147,483,647ms (the host timer ceiling); a larger value throws a RangeError.

                                                                                                  -
                                                                                                  bufferPoolSize?: number

                                                                                                  Maximum decoded batches waiting for a consumer. Defaults to 4.

                                                                                                  -
                                                                                                  cancelDrainTimeoutMs?: number

                                                                                                  Maximum wait for a terminal response after CANCEL, and the grace period of +

                                                                                                  bufferPoolSize?: number

                                                                                                  Maximum decoded batches waiting for a consumer. Defaults to 4.

                                                                                                  +
                                                                                                  cancelDrainTimeoutMs?: number

                                                                                                  Maximum wait for a terminal response after CANCEL, and the grace period of a query timeout: how long an expired query may take to end before its caller is released, and how long its connection may then take to drain it. A connection that has not drained the query by then is closed: a @@ -54,45 +54,45 @@ QwpEgressQueryCancelTimeoutError as well.

                                                                                                  Defaults to 5 seconds. Capped at 2,147,483,647ms (the host timer ceiling); a larger value throws a RangeError.

                                                                                                  -
                                                                                                  clientId?: string
                                                                                                  closeTimeoutMs?: number

                                                                                                  Maximum time allowed for a graceful WebSocket close. Defaults to 15s. +

                                                                                                  clientId?: string
                                                                                                  closeTimeoutMs?: number

                                                                                                  Maximum time allowed for a graceful WebSocket close. Defaults to 15s. Capped at 2,147,483,647ms (the host timer ceiling); a larger value throws a RangeError.

                                                                                                  -
                                                                                                  compression?: QwpEgressCompression

                                                                                                  Requests Zstd-compressed result batches. The default is raw, which +

                                                                                                  compression?: QwpEgressCompression

                                                                                                  Requests Zstd-compressed result batches. The default is raw, which preserves compatibility with servers that predate QWP compression. auto currently advertises the same ordered preference as zstd.

                                                                                                  -
                                                                                                  compressionLevel?: number

                                                                                                  Zstd level hint sent to the server. Must be between 1 and 22, and only +

                                                                                                  compressionLevel?: number

                                                                                                  Zstd level hint sent to the server. Must be between 1 and 22, and only takes effect alongside compression; the default raw sends no accept-encoding header for a level to travel on.

                                                                                                  -
                                                                                                  connectionListenerInboxCapacity?: number

                                                                                                  Bounded inbox depth for reconnect.onEvent. Defaults to 64, matching +

                                                                                                  connectionListenerInboxCapacity?: number

                                                                                                  Bounded inbox depth for reconnect.onEvent. Defaults to 64, matching ingress. Overflow drops the oldest pending notification.

                                                                                                  -
                                                                                                  connectTimeoutMs?: number

                                                                                                  Node TCP/TLS connection deadline, or the complete opening deadline in a +

                                                                                                  connectTimeoutMs?: number

                                                                                                  Node TCP/TLS connection deadline, or the complete opening deadline in a browser. Defaults to 15s. Capped at 2,147,483,647ms (the host timer ceiling); a larger value throws a RangeError.

                                                                                                  -
                                                                                                  failoverUrls?: readonly (string | URL)[]

                                                                                                  Additional endpoints attempted in order when the preferred endpoint fails.

                                                                                                  -
                                                                                                  headers?: Record<string, string>
                                                                                                  initialCredit?: number | bigint

                                                                                                  Default per-query send-ahead credit. Defaults to zero (unbounded).

                                                                                                  -
                                                                                                  maxBatchRows?: number

                                                                                                  Requests a server-side RESULT_BATCH row cap, and rejects a batch that +

                                                                                                  failoverUrls?: readonly (string | URL)[]

                                                                                                  Additional endpoints attempted in order when the preferred endpoint fails.

                                                                                                  +
                                                                                                  headers?: Record<string, string>
                                                                                                  initialCredit?: number | bigint

                                                                                                  Default per-query send-ahead credit. Defaults to zero (unbounded).

                                                                                                  +
                                                                                                  maxBatchRows?: number

                                                                                                  Requests a server-side RESULT_BATCH row cap, and rejects a batch that declares more rows: decoder scratch is sized from the declared row count and retained for the session's lifetime.

                                                                                                  -
                                                                                                  maxVersion?: number
                                                                                                  onFailoverReset?: (event: QwpEgressFailoverResetEvent) => void | Promise<void>

                                                                                                  Default notification immediately before an active query is re-executed. +

                                                                                                  maxVersion?: number
                                                                                                  onFailoverReset?: (event: QwpEgressFailoverResetEvent) => void | Promise<void>

                                                                                                  Default notification immediately before an active query is re-executed. Not-yet-consumed batches are discarded automatically; callers that retain an already-consumed prefix should discard it here. A query's own onFailoverReset overrides this callback, which is important for pooled sessions whose request IDs may overlap.

                                                                                                  -
                                                                                                  protocols?: string | string[]
                                                                                                  queryTimeoutMs?: number

                                                                                                  Default per-query timeout, measured from the query() call. Zero or +

                                                                                                  protocols?: string | string[]
                                                                                                  queryTimeoutMs?: number

                                                                                                  Default per-query timeout, measured from the query() call. Zero or undefined disables query timeouts. Once it expires no further batch is delivered and the query is cancelled; see QwpEgressQueryOptions.timeoutMs for how the outcome is reported. The connect-string key is query_timeout_ms. Capped at 2,147,483,647ms (the host timer ceiling); a larger value throws a RangeError.

                                                                                                  -
                                                                                                  reconnect?: false | QwpEgressReconnectOptions

                                                                                                  Bounded failover policy. Failover and at-least-once active-query replay +

                                                                                                  reconnect?: false | QwpEgressReconnectOptions

                                                                                                  Bounded failover policy. Failover and at-least-once active-query replay are enabled by default; set false to keep one fixed connection.

                                                                                                  -
                                                                                                  sendTimeoutMs?: number

                                                                                                  Maximum time a send may remain queued by the WebSocket. Defaults to 15s. +

                                                                                                  sendTimeoutMs?: number

                                                                                                  Maximum time a send may remain queued by the WebSocket. Defaults to 15s. Capped at 2,147,483,647ms (the host timer ceiling); a larger value throws a RangeError.

                                                                                                  -
                                                                                                  serverInfoTimeoutMs?: number

                                                                                                  SERVER_INFO handshake deadline. Defaults to 5 seconds. Capped at +

                                                                                                  serverInfoTimeoutMs?: number

                                                                                                  SERVER_INFO handshake deadline. Defaults to 5 seconds. Capped at 2,147,483,647ms (the host timer ceiling); a larger value throws a RangeError.

                                                                                                  -
                                                                                                  target?: QwpTarget

                                                                                                  Selects any readable node, a primary/standalone node, or a replica.

                                                                                                  -
                                                                                                  url: string | URL
                                                                                                  webSocketFactory?: (
                                                                                                      url: string | URL,
                                                                                                      options: {
                                                                                                          agent?: Agent;
                                                                                                          headers: Record<string, string>;
                                                                                                          onConnected: () => void;
                                                                                                          onUpgrade: (headers: IncomingHttpHeaders) => void;
                                                                                                          onUpgradeRejected: (rejection: QwpNodeUpgradeRejection) => void;
                                                                                                          protocols?: string | string[];
                                                                                                      },
                                                                                                  ) => QwpWebSocketLike

                                                                                                  Test hook; defaults to the Node-only ws implementation.

                                                                                                  -
                                                                                                  zone?: string

                                                                                                  Opaque, case-insensitive preferred zone; cross-zone fallback stays enabled.

                                                                                                  -
                                                                                                  +
                                                                                                  target?: QwpTarget

                                                                                                  Selects any readable node, a primary/standalone node, or a replica.

                                                                                                  +
                                                                                                  url: string | URL
                                                                                                  webSocketFactory?: (
                                                                                                      url: string | URL,
                                                                                                      options: {
                                                                                                          agent?: Agent;
                                                                                                          headers: Record<string, string>;
                                                                                                          onConnected: () => void;
                                                                                                          onUpgrade: (headers: IncomingHttpHeaders) => void;
                                                                                                          onUpgradeRejected: (rejection: QwpNodeUpgradeRejection) => void;
                                                                                                          protocols?: string | string[];
                                                                                                      },
                                                                                                  ) => QwpWebSocketLike

                                                                                                  Test hook; defaults to the Node-only ws implementation.

                                                                                                  +
                                                                                                  zone?: string

                                                                                                  Opaque, case-insensitive preferred zone; cross-zone fallback stays enabled.

                                                                                                  +
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpNodeIngressOptions.html b/docs/interfaces/_questdb_nodejs-client.QwpNodeIngressOptions.html index 7bb179595..f0270c724 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpNodeIngressOptions.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpNodeIngressOptions.html @@ -4,7 +4,7 @@

                                                                                                  There is no target or zone. Only the primary accepts writes, and the endpoint sweep reaches it through the 421 each replica answers the upgrade with; both route query sessions, on QwpNodeEgressOptions.

                                                                                                  -
                                                                                                  interface QwpNodeIngressOptions {
                                                                                                      ackTimeoutMs?: number;
                                                                                                      agent?: Agent;
                                                                                                      authorization?: string;
                                                                                                      authTimeoutMs?: number;
                                                                                                      autoFlush?: boolean;
                                                                                                      autoFlushBytes?: number;
                                                                                                      autoFlushIntervalMs?: number;
                                                                                                      autoFlushRows?: number;
                                                                                                      clientId?: string;
                                                                                                      closeFlushTimeoutMs?: number;
                                                                                                      closeTimeoutMs?: number;
                                                                                                      connectionListenerInboxCapacity?: number;
                                                                                                      connectTimeoutMs?: number;
                                                                                                      durableAckKeepaliveMs?: number;
                                                                                                      errorInboxCapacity?: number;
                                                                                                      failoverUrls?: readonly (string | URL)[];
                                                                                                      gorilla?: boolean;
                                                                                                      headers?: Record<string, string>;
                                                                                                      initialConnectMode?: QwpInitialConnectMode;
                                                                                                      log?: QwpSenderLogger;
                                                                                                      maxBatchSizeBytes?: number;
                                                                                                      maxNameLength?: number;
                                                                                                      maxVersion?: number;
                                                                                                      memoryReplayAppendDeadlineMs?: number;
                                                                                                      memoryReplayMaxBytes?: number;
                                                                                                      onDurableAck?: (response: QwpIngressResponse) => void;
                                                                                                      onError?: (event: QwpIngressErrorEvent) => void;
                                                                                                      onProgress?: (event: QwpIngressProgressEvent) => void;
                                                                                                      onResponse?: (response: QwpIngressResponse) => void;
                                                                                                      onSenderError?: (error: QwpSenderError) => void;
                                                                                                      protocols?: string | string[];
                                                                                                      reconnect?: false | QwpIngressReconnectOptions;
                                                                                                      requestDurableAck?: boolean;
                                                                                                      senderId?: string;
                                                                                                      sendTimeoutMs?: number;
                                                                                                      storeAndForward?: QwpNodeStoreAndForwardOptions;
                                                                                                      symbolDictionary?: "full" | "delta";
                                                                                                      transactional?: boolean;
                                                                                                      url: string | URL;
                                                                                                      webSocketFactory?: (
                                                                                                          url: string | URL,
                                                                                                          options: {
                                                                                                              agent?: Agent;
                                                                                                              headers: Record<string, string>;
                                                                                                              onConnected: () => void;
                                                                                                              onUpgrade: (headers: IncomingHttpHeaders) => void;
                                                                                                              onUpgradeRejected: (rejection: QwpNodeUpgradeRejection) => void;
                                                                                                              protocols?: string | string[];
                                                                                                          },
                                                                                                      ) => QwpWebSocketLike;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpNodeIngressOptions {
                                                                                                      ackTimeoutMs?: number;
                                                                                                      agent?: Agent;
                                                                                                      authorization?: string;
                                                                                                      authTimeoutMs?: number;
                                                                                                      autoFlush?: boolean;
                                                                                                      autoFlushBytes?: number;
                                                                                                      autoFlushIntervalMs?: number;
                                                                                                      autoFlushRows?: number;
                                                                                                      clientId?: string;
                                                                                                      closeFlushTimeoutMs?: number;
                                                                                                      closeTimeoutMs?: number;
                                                                                                      connectionListenerInboxCapacity?: number;
                                                                                                      connectTimeoutMs?: number;
                                                                                                      durableAckKeepaliveMs?: number;
                                                                                                      errorInboxCapacity?: number;
                                                                                                      failoverUrls?: readonly (string | URL)[];
                                                                                                      gorilla?: boolean;
                                                                                                      headers?: Record<string, string>;
                                                                                                      initialConnectMode?: QwpInitialConnectMode;
                                                                                                      log?: QwpSenderLogger;
                                                                                                      maxBatchSizeBytes?: number;
                                                                                                      maxNameLength?: number;
                                                                                                      maxVersion?: number;
                                                                                                      memoryReplayAppendDeadlineMs?: number;
                                                                                                      memoryReplayMaxBytes?: number;
                                                                                                      onDurableAck?: (response: QwpIngressResponse) => void;
                                                                                                      onError?: (event: QwpIngressErrorEvent) => void;
                                                                                                      onProgress?: (event: QwpIngressProgressEvent) => void;
                                                                                                      onResponse?: (response: QwpIngressResponse) => void;
                                                                                                      onSenderError?: (error: QwpSenderError) => void;
                                                                                                      protocols?: string | string[];
                                                                                                      reconnect?: false | QwpIngressReconnectOptions;
                                                                                                      requestDurableAck?: boolean;
                                                                                                      senderId?: string;
                                                                                                      sendTimeoutMs?: number;
                                                                                                      storeAndForward?: QwpNodeStoreAndForwardOptions;
                                                                                                      symbolDictionary?: "full" | "delta";
                                                                                                      transactional?: boolean;
                                                                                                      url: string | URL;
                                                                                                      webSocketFactory?: (
                                                                                                          url: string | URL,
                                                                                                          options: {
                                                                                                              agent?: Agent;
                                                                                                              headers: Record<string, string>;
                                                                                                              onConnected: () => void;
                                                                                                              onUpgrade: (headers: IncomingHttpHeaders) => void;
                                                                                                              onUpgradeRejected: (rejection: QwpNodeUpgradeRejection) => void;
                                                                                                              protocols?: string | string[];
                                                                                                          },
                                                                                                      ) => QwpWebSocketLike;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  ackTimeoutMs? agent? authorization? authTimeoutMs? @@ -48,47 +48,47 @@ how long a wait may go without the ACK watermark advancing. Defaults to 15 seconds. Capped at 2,147,483,647ms (the host timer ceiling); a larger value throws a RangeError.

                                                                                                  -
                                                                                                  agent?: Agent

                                                                                                  Optional HTTP(S) agent used for the WebSocket upgrade.

                                                                                                  -
                                                                                                  authorization?: string
                                                                                                  authTimeoutMs?: number

                                                                                                  Time allowed after TCP/TLS connection for HTTP authentication and the +

                                                                                                  agent?: Agent

                                                                                                  Optional HTTP(S) agent used for the WebSocket upgrade.

                                                                                                  +
                                                                                                  authorization?: string
                                                                                                  authTimeoutMs?: number

                                                                                                  Time allowed after TCP/TLS connection for HTTP authentication and the WebSocket upgrade.

                                                                                                  Defaults to connectTimeoutMs when that is set, and to 15s otherwise, so narrowing only the connect deadline bounds the whole opening rather than being exceeded by a default nobody chose. Set this to give the slower phase its own budget. Capped at 2,147,483,647ms (the host timer ceiling); a larger value throws a RangeError.

                                                                                                  -
                                                                                                  autoFlush?: boolean
                                                                                                  autoFlushBytes?: number

                                                                                                  Soft threshold for estimated buffered column bytes. Zero disables the byte +

                                                                                                  autoFlush?: boolean
                                                                                                  autoFlushBytes?: number

                                                                                                  Soft threshold for estimated buffered column bytes. Zero disables the byte trigger. Defaults to zero and is clamped below a connected server's batch cap; exact encoded frames remain subject to the protocol batch limit.

                                                                                                  -
                                                                                                  autoFlushIntervalMs?: number

                                                                                                  Not capped at the host timer ceiling: compared against elapsed time only.

                                                                                                  -
                                                                                                  autoFlushRows?: number
                                                                                                  clientId?: string
                                                                                                  closeFlushTimeoutMs?: number

                                                                                                  Maximum time close() spends publishing queued rows and waiting for the +

                                                                                                  autoFlushIntervalMs?: number

                                                                                                  Not capped at the host timer ceiling: compared against elapsed time only.

                                                                                                  +
                                                                                                  autoFlushRows?: number
                                                                                                  clientId?: string
                                                                                                  closeFlushTimeoutMs?: number

                                                                                                  Maximum time close() spends publishing queued rows and waiting for the server ACK watermark. Zero or a negative value skips the ACK wait, but RAM-backed frames still have up to 5 seconds to reach the socket before close() reports a timeout; if the session can no longer send them at all, close() rejects with its failure. Defaults to 5 seconds. Capped at 2,147,483,647ms (the host timer ceiling); a larger value throws a RangeError.

                                                                                                  -
                                                                                                  closeTimeoutMs?: number

                                                                                                  Maximum time allowed for a graceful WebSocket close. Defaults to 15s. +

                                                                                                  closeTimeoutMs?: number

                                                                                                  Maximum time allowed for a graceful WebSocket close. Defaults to 15s. Capped at 2,147,483,647ms (the host timer ceiling); a larger value throws a RangeError.

                                                                                                  -
                                                                                                  connectionListenerInboxCapacity?: number

                                                                                                  Bounded reconnect-listener inbox. Oldest pending events are dropped when +

                                                                                                  connectionListenerInboxCapacity?: number

                                                                                                  Bounded reconnect-listener inbox. Oldest pending events are dropped when full. Defaults to 64, matching the Java client.

                                                                                                  -
                                                                                                  connectTimeoutMs?: number

                                                                                                  Node TCP/TLS connection deadline, or the complete opening deadline in a +

                                                                                                  connectTimeoutMs?: number

                                                                                                  Node TCP/TLS connection deadline, or the complete opening deadline in a browser. Defaults to 15s. Capped at 2,147,483,647ms (the host timer ceiling); a larger value throws a RangeError.

                                                                                                  -
                                                                                                  durableAckKeepaliveMs?: number

                                                                                                  Durable-ACK keepalive interval. While committed table transactions await +

                                                                                                  durableAckKeepaliveMs?: number

                                                                                                  Durable-ACK keepalive interval. While committed table transactions await durable upload, Node transports send WebSocket PING frames and browser transports send table-less QWP poll frames. Takes effect only with requestDurableAck: true, where it defaults to 200ms; otherwise it is ignored, as in the Java and Rust clients. Zero disables the keepalive but still tracks durable progress. Capped at 2,147,483,647ms (the host timer ceiling); a larger value throws a RangeError.

                                                                                                  -
                                                                                                  errorInboxCapacity?: number

                                                                                                  Bounded typed/legacy error inbox. Oldest pending errors are dropped when +

                                                                                                  errorInboxCapacity?: number

                                                                                                  Bounded typed/legacy error inbox. Oldest pending errors are dropped when full. Defaults to 256, matching the Java client.

                                                                                                  -
                                                                                                  failoverUrls?: readonly (string | URL)[]

                                                                                                  Additional endpoints attempted in order when the preferred endpoint fails.

                                                                                                  -
                                                                                                  gorilla?: boolean

                                                                                                  Gorilla-compresses TIMESTAMP and TIMESTAMP_NANOS columns; a column whose +

                                                                                                  failoverUrls?: readonly (string | URL)[]

                                                                                                  Additional endpoints attempted in order when the preferred endpoint fails.

                                                                                                  +
                                                                                                  gorilla?: boolean

                                                                                                  Gorilla-compresses TIMESTAMP and TIMESTAMP_NANOS columns; a column whose deltas the encoding cannot represent is sent raw. Defaults to true. UDP senders always disable it.

                                                                                                  -
                                                                                                  headers?: Record<string, string>
                                                                                                  initialConnectMode?: QwpInitialConnectMode

                                                                                                  Startup policy when no server is reachable; the typed spelling of the +

                                                                                                  headers?: Record<string, string>
                                                                                                  initialConnectMode?: QwpInitialConnectMode

                                                                                                  Startup policy when no server is reachable; the typed spelling of the initial_connect_retry configuration-string key.

                                                                                                  • "off" makes one pass over the endpoints and fails fast.
                                                                                                  • @@ -105,15 +105,15 @@ reconnectInitialBackoffMs or reconnectMaxBackoffMs is set. "sync" and "async" require reconnection, so they cannot be combined with reconnect: false.

                                                                                                    -
                                                                                                  maxBatchSizeBytes?: number

                                                                                                  Optional local ingress frame cap. Browsers cannot read WebSocket upgrade +

                                                                                                  maxBatchSizeBytes?: number

                                                                                                  Optional local ingress frame cap. Browsers cannot read WebSocket upgrade headers, so browser applications should set this to the server's configured QWP cap. When the server also advertises a cap, the smaller value wins. Table batches are split at row boundaries automatically; an individual row that cannot fit is rejected with QwpBatchTooLargeError before it is sent.

                                                                                                  -
                                                                                                  maxNameLength?: number

                                                                                                  Maximum UTF-8 byte length of table and column names. Defaults to 127.

                                                                                                  -
                                                                                                  maxVersion?: number
                                                                                                  memoryReplayAppendDeadlineMs?: number

                                                                                                  Maximum time a memory replay append waits for ACK-driven trimming after +

                                                                                                  maxNameLength?: number

                                                                                                  Maximum UTF-8 byte length of table and column names. Defaults to 127.

                                                                                                  +
                                                                                                  maxVersion?: number
                                                                                                  memoryReplayAppendDeadlineMs?: number

                                                                                                  Maximum time a memory replay append waits for ACK-driven trimming after reaching memoryReplayMaxBytes. Defaults to 30 seconds.

                                                                                                  -
                                                                                                  memoryReplayMaxBytes?: number

                                                                                                  Target cap for the built-in memory-only replay queue. Each queued frame +

                                                                                                  memoryReplayMaxBytes?: number

                                                                                                  Target cap for the built-in memory-only replay queue. Each queued frame counts its payload plus 1 KiB for the bookkeeping it keeps in memory, so the cap bounds the memory a backlog of small frames takes as well; the default holds about 127,000 one-row frames. Defaults to 128 MiB. A @@ -124,13 +124,13 @@ trim frames awaiting durability. This applies in browsers and non-persistent Node sessions; a Node store-and-forward journal is bounded by its own maxBytes instead.

                                                                                                  -
                                                                                                  onDurableAck?: (response: QwpIngressResponse) => void
                                                                                                  onError?: (event: QwpIngressErrorEvent) => void

                                                                                                  Server rejections and terminal session failures. A waitForAck() that times +

                                                                                                  onDurableAck?: (response: QwpIngressResponse) => void
                                                                                                  onError?: (event: QwpIngressErrorEvent) => void

                                                                                                  Server rejections and terminal session failures. A waitForAck() that times out is reported only to its caller.

                                                                                                  -
                                                                                                  onProgress?: (event: QwpIngressProgressEvent) => void

                                                                                                  Monotonic send/accept/durability notifications. Callback errors are ignored.

                                                                                                  -
                                                                                                  onResponse?: (response: QwpIngressResponse) => void
                                                                                                  onSenderError?: (error: QwpSenderError) => void

                                                                                                  Java-parity typed server-rejection and data-loss notifications. When +

                                                                                                  onProgress?: (event: QwpIngressProgressEvent) => void

                                                                                                  Monotonic send/accept/durability notifications. Callback errors are ignored.

                                                                                                  +
                                                                                                  onResponse?: (response: QwpIngressResponse) => void
                                                                                                  onSenderError?: (error: QwpSenderError) => void

                                                                                                  Java-parity typed server-rejection and data-loss notifications. When omitted, the default handler logs retriable errors at warn and terminal errors or abandoned data at error.

                                                                                                  -
                                                                                                  protocols?: string | string[]
                                                                                                  reconnect?: false | QwpIngressReconnectOptions

                                                                                                  Reconnection and at-least-once replay policy. Reconnection is +

                                                                                                  protocols?: string | string[]
                                                                                                  reconnect?: false | QwpIngressReconnectOptions

                                                                                                  Reconnection and at-least-once replay policy. Reconnection is enabled by default for factory-created sessions; set false to keep one fixed connection. Browser and non-persistent Node replay is memory-only. When initialConnectMode is not set, the first connect is a single attempt @@ -142,25 +142,25 @@

                                                                                                  An ACK lost during disconnect can cause a frame to be replayed after the server accepted it; configure server-side deduplication when duplicates are not acceptable.

                                                                                                  -
                                                                                                  requestDurableAck?: boolean

                                                                                                  Requests durable ACKs on the /write/v4 upgrade; connecting fails with +

                                                                                                  requestDurableAck?: boolean

                                                                                                  Requests durable ACKs on the /write/v4 upgrade; connecting fails with QwpDurableAckUnavailableError when the server does not confirm them. durableAckKeepaliveMs takes effect only alongside it.

                                                                                                  -
                                                                                                  senderId?: string

                                                                                                  Names this sender's journal slot below storeAndForward.directory, the +

                                                                                                  senderId?: string

                                                                                                  Names this sender's journal slot below storeAndForward.directory, the slot root: the journal is <directory>/<senderId>, and a pooled client's are <directory>/<senderId>-<slot>. Defaults to default, as the sender_id key does. Letters, digits, underscores and hyphens only; it is not sent to the server.

                                                                                                  -
                                                                                                  sendTimeoutMs?: number

                                                                                                  Maximum time a send may remain queued by the WebSocket. Defaults to 15s. +

                                                                                                  sendTimeoutMs?: number

                                                                                                  Maximum time a send may remain queued by the WebSocket. Defaults to 15s. Capped at 2,147,483,647ms (the host timer ceiling); a larger value throws a RangeError.

                                                                                                  -

                                                                                                  Upgrades the default in-memory ingress replay to persistent Node +

                                                                                                  Upgrades the default in-memory ingress replay to persistent Node store-and-forward, journalled in this sender's senderId slot below the configured directory. No two live senders may share a slot.

                                                                                                  -
                                                                                                  symbolDictionary?: "full" | "delta"

                                                                                                  Connection-scoped symbol dictionary deltas are the default; full opts +

                                                                                                  symbolDictionary?: "full" | "delta"

                                                                                                  Connection-scoped symbol dictionary deltas are the default; full opts out, so every frame carries its own dictionaries. UDP senders always use full.

                                                                                                  -
                                                                                                  transactional?: boolean

                                                                                                  Keep auto-flushed rows in an open server-side transaction. An explicit +

                                                                                                  transactional?: boolean

                                                                                                  Keep auto-flushed rows in an open server-side transaction. An explicit flush() closes the transaction. QWP transactions are atomic per table, rather than across every table in a multi-table flush.

                                                                                                  -
                                                                                                  url: string | URL
                                                                                                  webSocketFactory?: (
                                                                                                      url: string | URL,
                                                                                                      options: {
                                                                                                          agent?: Agent;
                                                                                                          headers: Record<string, string>;
                                                                                                          onConnected: () => void;
                                                                                                          onUpgrade: (headers: IncomingHttpHeaders) => void;
                                                                                                          onUpgradeRejected: (rejection: QwpNodeUpgradeRejection) => void;
                                                                                                          protocols?: string | string[];
                                                                                                      },
                                                                                                  ) => QwpWebSocketLike

                                                                                                  Test hook; defaults to the Node-only ws implementation.

                                                                                                  -
                                                                                                  +
                                                                                                  url: string | URL
                                                                                                  webSocketFactory?: (
                                                                                                      url: string | URL,
                                                                                                      options: {
                                                                                                          agent?: Agent;
                                                                                                          headers: Record<string, string>;
                                                                                                          onConnected: () => void;
                                                                                                          onUpgrade: (headers: IncomingHttpHeaders) => void;
                                                                                                          onUpgradeRejected: (rejection: QwpNodeUpgradeRejection) => void;
                                                                                                          protocols?: string | string[];
                                                                                                      },
                                                                                                  ) => QwpWebSocketLike

                                                                                                  Test hook; defaults to the Node-only ws implementation.

                                                                                                  +
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpNodeOrphanDrainEvent.html b/docs/interfaces/_questdb_nodejs-client.QwpNodeOrphanDrainEvent.html index 288396c9f..95f688417 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpNodeOrphanDrainEvent.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpNodeOrphanDrainEvent.html @@ -1,4 +1,4 @@ -QwpNodeOrphanDrainEvent | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpNodeOrphanDrainEvent

                                                                                                  interface QwpNodeOrphanDrainEvent {
                                                                                                      attempt?: number;
                                                                                                      directory?: string;
                                                                                                      episodeMs?: number;
                                                                                                      error?: Error;
                                                                                                      kind: QwpNodeOrphanDrainEventKind;
                                                                                                      metrics: QwpNodeOrphanDrainerMetrics;
                                                                                                      senderError?: QwpSenderError;
                                                                                                      timestampMs: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  attempt? +QwpNodeOrphanDrainEvent | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpNodeOrphanDrainEvent

                                                                                                  interface QwpNodeOrphanDrainEvent {
                                                                                                      attempt?: number;
                                                                                                      directory?: string;
                                                                                                      episodeMs?: number;
                                                                                                      error?: Error;
                                                                                                      kind: QwpNodeOrphanDrainEventKind;
                                                                                                      metrics: QwpNodeOrphanDrainerMetrics;
                                                                                                      senderError?: QwpSenderError;
                                                                                                      timestampMs: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  attempt?: number

                                                                                                  One-based attempt in the current capability/topology episode.

                                                                                                  -
                                                                                                  directory?: string
                                                                                                  episodeMs?: number

                                                                                                  Elapsed time in the current consecutive capability-gap episode.

                                                                                                  -
                                                                                                  error?: Error
                                                                                                  senderError?: QwpSenderError

                                                                                                  Present when a failed slot has been abandoned behind its sentinel.

                                                                                                  -
                                                                                                  timestampMs: number
                                                                                                  +
                                                                                                  directory?: string
                                                                                                  episodeMs?: number

                                                                                                  Elapsed time in the current consecutive capability-gap episode.

                                                                                                  +
                                                                                                  error?: Error
                                                                                                  senderError?: QwpSenderError

                                                                                                  Present when a failed slot has been abandoned behind its sentinel.

                                                                                                  +
                                                                                                  timestampMs: number
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpNodeOrphanDrainerMetrics.html b/docs/interfaces/_questdb_nodejs-client.QwpNodeOrphanDrainerMetrics.html index 60848cc3c..47c1bcf23 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpNodeOrphanDrainerMetrics.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpNodeOrphanDrainerMetrics.html @@ -1,4 +1,4 @@ -QwpNodeOrphanDrainerMetrics | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpNodeOrphanDrainerMetrics

                                                                                                  interface QwpNodeOrphanDrainerMetrics {
                                                                                                      active: number;
                                                                                                      closed: boolean;
                                                                                                      closing: boolean;
                                                                                                      deliveredErrorNotifications: number;
                                                                                                      deliveredNotifications: number;
                                                                                                      discovered: number;
                                                                                                      drained: number;
                                                                                                      droppedErrorNotifications: number;
                                                                                                      droppedNotifications: number;
                                                                                                      failed: number;
                                                                                                      locked: number;
                                                                                                      queued: number;
                                                                                                      retrying: number;
                                                                                                      scanFailures: number;
                                                                                                      scans: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  active +QwpNodeOrphanDrainerMetrics | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpNodeOrphanDrainerMetrics

                                                                                                  interface QwpNodeOrphanDrainerMetrics {
                                                                                                      active: number;
                                                                                                      closed: boolean;
                                                                                                      closing: boolean;
                                                                                                      deliveredErrorNotifications: number;
                                                                                                      deliveredNotifications: number;
                                                                                                      discovered: number;
                                                                                                      drained: number;
                                                                                                      droppedErrorNotifications: number;
                                                                                                      droppedNotifications: number;
                                                                                                      failed: number;
                                                                                                      locked: number;
                                                                                                      queued: number;
                                                                                                      retrying: number;
                                                                                                      scanFailures: number;
                                                                                                      scans: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  active: number
                                                                                                  closed: boolean
                                                                                                  closing: boolean
                                                                                                  deliveredErrorNotifications: number
                                                                                                  deliveredNotifications: number
                                                                                                  discovered: number
                                                                                                  drained: number
                                                                                                  droppedErrorNotifications: number
                                                                                                  droppedNotifications: number
                                                                                                  failed: number
                                                                                                  locked: number
                                                                                                  queued: number
                                                                                                  retrying: number

                                                                                                  Transient drain or terminal-marker writes awaiting retry.

                                                                                                  -
                                                                                                  scanFailures: number
                                                                                                  scans: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  active: number
                                                                                                  closed: boolean
                                                                                                  closing: boolean
                                                                                                  deliveredErrorNotifications: number
                                                                                                  deliveredNotifications: number
                                                                                                  discovered: number
                                                                                                  drained: number
                                                                                                  droppedErrorNotifications: number
                                                                                                  droppedNotifications: number
                                                                                                  failed: number
                                                                                                  locked: number
                                                                                                  queued: number
                                                                                                  retrying: number

                                                                                                  Transient drain or terminal-marker writes awaiting retry.

                                                                                                  +
                                                                                                  scanFailures: number
                                                                                                  scans: number
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpNodeReplayDataLossReport.html b/docs/interfaces/_questdb_nodejs-client.QwpNodeReplayDataLossReport.html index 1b5f6f034..73eda47aa 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpNodeReplayDataLossReport.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpNodeReplayDataLossReport.html @@ -2,12 +2,12 @@ failing recovery when the damage sits in the active segment, matching the Java client, which zeroes an active torn tail by policy and reports the residue through a WARN plus MmapSegment.tornTailBytes().

                                                                                                  -
                                                                                                  interface QwpNodeReplayDataLossReport {
                                                                                                      directory: string;
                                                                                                      discardedBytes: number;
                                                                                                      reason: string;
                                                                                                      segmentFile: string;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpNodeReplayDataLossReport {
                                                                                                      directory: string;
                                                                                                      discardedBytes: number;
                                                                                                      reason: string;
                                                                                                      segmentFile: string;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  directory: string
                                                                                                  discardedBytes: number

                                                                                                  Bytes at and after the damaged record that recovery could not retain.

                                                                                                  +

                                                                                                  Properties

                                                                                                  directory: string
                                                                                                  discardedBytes: number

                                                                                                  Bytes at and after the damaged record that recovery could not retain.

                                                                                                  Zero means a loss was detected whose extent the journal cannot measure -- a segment whose records are gone leaves nothing to count. Treat it as "unknown", not as "nothing lost", and read reason.

                                                                                                  -
                                                                                                  reason: string
                                                                                                  segmentFile: string
                                                                                                  +
                                                                                                  reason: string
                                                                                                  segmentFile: string
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpNodeReplayRecoveryEvent.html b/docs/interfaces/_questdb_nodejs-client.QwpNodeReplayRecoveryEvent.html index faeea7b92..eadaba927 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpNodeReplayRecoveryEvent.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpNodeReplayRecoveryEvent.html @@ -1,7 +1,7 @@ QwpNodeReplayRecoveryEvent | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpNodeReplayRecoveryEvent

                                                                                                  Notification that an unreplayable foreground slot was preserved aside.

                                                                                                  -
                                                                                                  interface QwpNodeReplayRecoveryEvent {
                                                                                                      directory: string;
                                                                                                      error: QwpReplayStoreQuarantinedError;
                                                                                                      quarantineDirectory: string;
                                                                                                      senderError: QwpSenderError;
                                                                                                      timestampMs: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpNodeReplayRecoveryEvent {
                                                                                                      directory: string;
                                                                                                      error: QwpReplayStoreQuarantinedError;
                                                                                                      quarantineDirectory: string;
                                                                                                      senderError: QwpSenderError;
                                                                                                      timestampMs: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  directory: string
                                                                                                  quarantineDirectory: string
                                                                                                  senderError: QwpSenderError
                                                                                                  timestampMs: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  directory: string
                                                                                                  quarantineDirectory: string
                                                                                                  senderError: QwpSenderError
                                                                                                  timestampMs: number
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpNodeStoreAndForwardOptions.html b/docs/interfaces/_questdb_nodejs-client.QwpNodeStoreAndForwardOptions.html index a60781daf..b5dd62edb 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpNodeStoreAndForwardOptions.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpNodeStoreAndForwardOptions.html @@ -1,7 +1,7 @@ QwpNodeStoreAndForwardOptions | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpNodeStoreAndForwardOptions

                                                                                                  Node store-and-forward: a crash-safe journal that keeps each frame on disk until the server acknowledges it, and the recovery of journals that terminated producers left behind.

                                                                                                  -
                                                                                                  interface QwpNodeStoreAndForwardOptions {
                                                                                                      appendDeadlineMs?: number;
                                                                                                      backpressurePolicy?: QwpSfBackpressurePolicy;
                                                                                                      catchUpCapGapMinEscalationWindowMs?: number;
                                                                                                      checkpointIntervalMs?: number;
                                                                                                      directory: string;
                                                                                                      drainOrphans?: boolean;
                                                                                                      durability?: QwpSfDurability;
                                                                                                      maxBackgroundDrainers?: number;
                                                                                                      maxBytes?: number;
                                                                                                      maxSegmentBytes?: number;
                                                                                                      onOrphanDrainEvent?: (event: QwpNodeOrphanDrainEvent) => void;
                                                                                                      onRecoveryDataLoss?: (report: QwpNodeReplayDataLossReport) => void;
                                                                                                      onRecoveryQuarantine?: (event: QwpNodeReplayRecoveryEvent) => void;
                                                                                                      orphanScanIntervalMs?: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpNodeStoreAndForwardOptions {
                                                                                                      appendDeadlineMs?: number;
                                                                                                      backpressurePolicy?: QwpSfBackpressurePolicy;
                                                                                                      catchUpCapGapMinEscalationWindowMs?: number;
                                                                                                      checkpointIntervalMs?: number;
                                                                                                      directory: string;
                                                                                                      drainOrphans?: boolean;
                                                                                                      durability?: QwpSfDurability;
                                                                                                      maxBackgroundDrainers?: number;
                                                                                                      maxBytes?: number;
                                                                                                      maxSegmentBytes?: number;
                                                                                                      onOrphanDrainEvent?: (event: QwpNodeOrphanDrainEvent) => void;
                                                                                                      onRecoveryDataLoss?: (report: QwpNodeReplayDataLossReport) => void;
                                                                                                      onRecoveryQuarantine?: (event: QwpNodeReplayRecoveryEvent) => void;
                                                                                                      orphanScanIntervalMs?: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  appendDeadlineMs?: number

                                                                                                  Per-append capacity or retryable store-fault deadline. Defaults to 30 seconds.

                                                                                                  -
                                                                                                  backpressurePolicy?: QwpSfBackpressurePolicy

                                                                                                  Behavior when maxBytes is exhausted. wait pauses the append until ACK +

                                                                                                  backpressurePolicy?: QwpSfBackpressurePolicy

                                                                                                  Behavior when maxBytes is exhausted. wait pauses the append until ACK trimming frees space or its deadline expires; error fails it at once with QwpReplayStoreFullError. Defaults to wait, as a connect string does.

                                                                                                  This decides journal exhaustion only. A transient retryable fault parks until appendDeadlineMs under either policy, so the only errors an append surfaces are exhaustion and that deadline.

                                                                                                  -
                                                                                                  catchUpCapGapMinEscalationWindowMs?: number

                                                                                                  Minimum time an orphan slot's symbol catch-up cap gap must persist before +

                                                                                                  catchUpCapGapMinEscalationWindowMs?: number

                                                                                                  Minimum time an orphan slot's symbol catch-up cap gap must persist before it is quarantined. The gap must also be observed 16 times. Defaults to five minutes; zero uses the observation threshold alone.

                                                                                                  -
                                                                                                  checkpointIntervalMs?: number

                                                                                                  Periodic durability checkpoint cadence. Defaults to 5 seconds.

                                                                                                  -
                                                                                                  directory: string

                                                                                                  The slot root. Each sender journals into its own slot below it: +

                                                                                                  checkpointIntervalMs?: number

                                                                                                  Periodic durability checkpoint cadence. Defaults to 5 seconds.

                                                                                                  +
                                                                                                  directory: string

                                                                                                  The slot root. Each sender journals into its own slot below it: <directory>/<senderId>, with senderId defaulting to default, or <directory>/<senderId>-<slot> for a pooled sender. This is the layout sf_dir and sender_id describe in a connect string.

                                                                                                  -
                                                                                                  drainOrphans?: boolean

                                                                                                  Adopts sibling replay slots left by terminated producers. Standalone +

                                                                                                  drainOrphans?: boolean

                                                                                                  Adopts sibling replay slots left by terminated producers. Standalone senders default this to false; pooled clients always recover their own idle in-range and out-of-range <senderId>-N slots.

                                                                                                  -
                                                                                                  durability?: QwpSfDurability

                                                                                                  Local persistence barrier. append fsyncs every frame before its append +

                                                                                                  durability?: QwpSfDurability

                                                                                                  Local persistence barrier. append fsyncs every frame before its append resolves, periodic checkpoints dirty files in the background, and memory relies on OS page-cache writeback, which normally survives a process failure but makes no power-loss promise. Defaults to memory, as sf_durability does; choose append for a journal that has to survive power loss.

                                                                                                  -
                                                                                                  maxBackgroundDrainers?: number

                                                                                                  Maximum sibling slots drained concurrently. Defaults to 4.

                                                                                                  -
                                                                                                  maxBytes?: number

                                                                                                  Target maximum journal size including fixed segment reservations and +

                                                                                                  maxBackgroundDrainers?: number

                                                                                                  Maximum sibling slots drained concurrently. Defaults to 4.

                                                                                                  +
                                                                                                  maxBytes?: number

                                                                                                  Target maximum journal size including fixed segment reservations and symbol metadata. Defaults to 10 GiB. The current symbol dictionary may exceed this target so it cannot consume the journal's live frame budget before a drained close retires that dictionary generation.

                                                                                                  @@ -57,19 +57,19 @@ 24-byte SFA header and the 8-byte frame header. A smaller target throws a RangeError, because no append could ever reserve its first segment and no acknowledgement could ever free room for one.

                                                                                                  -
                                                                                                  maxSegmentBytes?: number

                                                                                                  Maximum QWP frame payload and target segment data size. Each fixed segment +

                                                                                                  maxSegmentBytes?: number

                                                                                                  Maximum QWP frame payload and target segment data size. Each fixed segment reserves this value plus one record header and its 24-byte SFA header, so a maximum-sized frame still fits. Defaults to 4 MiB. maxBytes must leave room for one whole segment of this size plus those 32 bytes of headers.

                                                                                                  -
                                                                                                  onOrphanDrainEvent?: (event: QwpNodeOrphanDrainEvent) => void

                                                                                                  Receives isolated scanner, drainer, durable-ACK capability-gap, and +

                                                                                                  onOrphanDrainEvent?: (event: QwpNodeOrphanDrainEvent) => void

                                                                                                  Receives isolated scanner, drainer, durable-ACK capability-gap, and primary-unavailable lifecycle notifications.

                                                                                                  -
                                                                                                  onRecoveryDataLoss?: (report: QwpNodeReplayDataLossReport) => void

                                                                                                  Reports journal bytes abandoned during recovery. Defaults to logging at +

                                                                                                  onRecoveryDataLoss?: (report: QwpNodeReplayDataLossReport) => void

                                                                                                  Reports journal bytes abandoned during recovery. Defaults to logging at error level; recovery still succeeds, so this must never be silent.

                                                                                                  -
                                                                                                  onRecoveryQuarantine?: (event: QwpNodeReplayRecoveryEvent) => void

                                                                                                  Receives a data-loss notification when corrupt foreground replay bytes are +

                                                                                                  onRecoveryQuarantine?: (event: QwpNodeReplayRecoveryEvent) => void

                                                                                                  Receives a data-loss notification when corrupt foreground replay bytes are preserved under an .unreplayable-N pathname and a fresh slot is opened.

                                                                                                  -
                                                                                                  orphanScanIntervalMs?: number

                                                                                                  Periodic rescan cadence; zero disables the timer. Pooled ownership +

                                                                                                  orphanScanIntervalMs?: number

                                                                                                  Periodic rescan cadence; zero disables the timer. Pooled ownership changes can still trigger a scan. Defaults to 30 seconds. Capped at 2,147,483,647ms (the host timer ceiling); a larger value throws a RangeError.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpNodeUdpOptions.html b/docs/interfaces/_questdb_nodejs-client.QwpNodeUdpOptions.html index 0e0de4721..a9d263239 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpNodeUdpOptions.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpNodeUdpOptions.html @@ -1,7 +1,7 @@ QwpNodeUdpOptions | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpNodeUdpOptions

                                                                                                  Everything a Node QWP-over-UDP sender takes: the datagram socket and row buffering. Every datagram is self-contained and none is ever part of a transaction, so the sender's transactional and encoding options are absent.

                                                                                                  -
                                                                                                  interface QwpNodeUdpOptions {
                                                                                                      autoFlush?: boolean;
                                                                                                      autoFlushBytes?: number;
                                                                                                      autoFlushIntervalMs?: number;
                                                                                                      autoFlushRows?: number;
                                                                                                      closeFlushTimeoutMs?: number;
                                                                                                      host: string;
                                                                                                      log?: QwpSenderLogger;
                                                                                                      maxDatagramSize?: number;
                                                                                                      maxNameLength?: number;
                                                                                                      multicastInterface?: string;
                                                                                                      multicastTtl?: number;
                                                                                                      onError?: (error: Error) => void;
                                                                                                      port?: number;
                                                                                                      socketFactory?: () => QwpNodeUdpSocketLike;
                                                                                                  }

                                                                                                  Hierarchy

                                                                                                  • Omit<QwpSenderOptions, "transactional" | "gorilla" | "symbolDictionary">
                                                                                                    • QwpNodeUdpOptions
                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpNodeUdpOptions {
                                                                                                      autoFlush?: boolean;
                                                                                                      autoFlushBytes?: number;
                                                                                                      autoFlushIntervalMs?: number;
                                                                                                      autoFlushRows?: number;
                                                                                                      closeFlushTimeoutMs?: number;
                                                                                                      host: string;
                                                                                                      log?: QwpSenderLogger;
                                                                                                      maxDatagramSize?: number;
                                                                                                      maxNameLength?: number;
                                                                                                      multicastInterface?: string;
                                                                                                      multicastTtl?: number;
                                                                                                      onError?: (error: Error) => void;
                                                                                                      port?: number;
                                                                                                      socketFactory?: () => QwpNodeUdpSocketLike;
                                                                                                  }

                                                                                                  Hierarchy

                                                                                                  • Omit<QwpSenderOptions, "transactional" | "gorilla" | "symbolDictionary">
                                                                                                    • QwpNodeUdpOptions
                                                                                                  Index

                                                                                                  Properties

                                                                                                  autoFlush?: boolean
                                                                                                  autoFlushBytes?: number

                                                                                                  Soft threshold for estimated buffered column bytes; zero disables the +

                                                                                                  Properties

                                                                                                  autoFlush?: boolean
                                                                                                  autoFlushBytes?: number

                                                                                                  Soft threshold for estimated buffered column bytes; zero disables the byte trigger. Defaults to maxDatagramSize.

                                                                                                  -
                                                                                                  autoFlushIntervalMs?: number

                                                                                                  Not capped at the host timer ceiling: compared against elapsed time only.

                                                                                                  -
                                                                                                  autoFlushRows?: number
                                                                                                  closeFlushTimeoutMs?: number

                                                                                                  Maximum time close() spends publishing queued rows and waiting for the +

                                                                                                  autoFlushIntervalMs?: number

                                                                                                  Not capped at the host timer ceiling: compared against elapsed time only.

                                                                                                  +
                                                                                                  autoFlushRows?: number
                                                                                                  closeFlushTimeoutMs?: number

                                                                                                  Maximum time close() spends publishing queued rows and waiting for the server ACK watermark. Zero or a negative value skips the ACK wait, but RAM-backed frames still have up to 5 seconds to reach the socket before close() reports a timeout; if the session can no longer send them at all, close() rejects with its failure. Defaults to 5 seconds. Capped at 2,147,483,647ms (the host timer ceiling); a larger value throws a RangeError.

                                                                                                  -
                                                                                                  host: string

                                                                                                  Destination hostname or IPv4 address.

                                                                                                  -
                                                                                                  maxDatagramSize?: number

                                                                                                  Maximum encoded datagram size. Defaults to 1400 bytes.

                                                                                                  -
                                                                                                  maxNameLength?: number

                                                                                                  Maximum UTF-8 byte length of table and column names. Defaults to 127.

                                                                                                  -
                                                                                                  multicastInterface?: string

                                                                                                  Optional local IPv4 interface used for multicast traffic.

                                                                                                  -
                                                                                                  multicastTtl?: number

                                                                                                  IPv4 multicast TTL from 0 through 255. Defaults to 0.

                                                                                                  -
                                                                                                  onError?: (error: Error) => void

                                                                                                  Receives isolated local socket errors; UDP has no server acknowledgement.

                                                                                                  -
                                                                                                  port?: number

                                                                                                  Destination port. Defaults to the Java QWP UDP port, 9007.

                                                                                                  -
                                                                                                  socketFactory?: () => QwpNodeUdpSocketLike

                                                                                                  Test hook.

                                                                                                  -
                                                                                                  +
                                                                                                  host: string

                                                                                                  Destination hostname or IPv4 address.

                                                                                                  +
                                                                                                  maxDatagramSize?: number

                                                                                                  Maximum encoded datagram size. Defaults to 1400 bytes.

                                                                                                  +
                                                                                                  maxNameLength?: number

                                                                                                  Maximum UTF-8 byte length of table and column names. Defaults to 127.

                                                                                                  +
                                                                                                  multicastInterface?: string

                                                                                                  Optional local IPv4 interface used for multicast traffic.

                                                                                                  +
                                                                                                  multicastTtl?: number

                                                                                                  IPv4 multicast TTL from 0 through 255. Defaults to 0.

                                                                                                  +
                                                                                                  onError?: (error: Error) => void

                                                                                                  Receives isolated local socket errors; UDP has no server acknowledgement.

                                                                                                  +
                                                                                                  port?: number

                                                                                                  Destination port. Defaults to the Java QWP UDP port, 9007.

                                                                                                  +
                                                                                                  socketFactory?: () => QwpNodeUdpSocketLike

                                                                                                  Test hook.

                                                                                                  +
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpNodeUdpSocketLike.html b/docs/interfaces/_questdb_nodejs-client.QwpNodeUdpSocketLike.html index b8fa33984..96ce4e025 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpNodeUdpSocketLike.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpNodeUdpSocketLike.html @@ -1,8 +1,8 @@ QwpNodeUdpSocketLike | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpNodeUdpSocketLike

                                                                                                  Minimal injectable UDP socket surface used by the Node QWP sender.

                                                                                                  -
                                                                                                  interface QwpNodeUdpSocketLike {
                                                                                                      bind(port: number, address: string, callback: () => void): void;
                                                                                                      close(callback: () => void): void;
                                                                                                      on(event: "error", listener: (error: Error) => void): unknown;
                                                                                                      send(
                                                                                                          message: Uint8Array,
                                                                                                          port: number,
                                                                                                          address: string,
                                                                                                          callback: (error: Error, bytes: number) => void,
                                                                                                      ): void;
                                                                                                      setMulticastInterface(multicastInterface: string): void;
                                                                                                      setMulticastTTL(ttl: number): number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Methods

                                                                                                  interface QwpNodeUdpSocketLike {
                                                                                                      bind(port: number, address: string, callback: () => void): void;
                                                                                                      close(callback: () => void): void;
                                                                                                      on(event: "error", listener: (error: Error) => void): unknown;
                                                                                                      send(
                                                                                                          message: Uint8Array,
                                                                                                          port: number,
                                                                                                          address: string,
                                                                                                          callback: (error: Error, bytes: number) => void,
                                                                                                      ): void;
                                                                                                      setMulticastInterface(multicastInterface: string): void;
                                                                                                      setMulticastTTL(ttl: number): number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Methods

                                                                                                  • Parameters

                                                                                                    • message: Uint8Array
                                                                                                    • port: number
                                                                                                    • address: string
                                                                                                    • callback: (error: Error, bytes: number) => void

                                                                                                    Returns void

                                                                                                  +

                                                                                                  Methods

                                                                                                  • Parameters

                                                                                                    • message: Uint8Array
                                                                                                    • port: number
                                                                                                    • address: string
                                                                                                    • callback: (error: Error, bytes: number) => void

                                                                                                    Returns void

                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpNodeUpgradeRejection.html b/docs/interfaces/_questdb_nodejs-client.QwpNodeUpgradeRejection.html index e6e8dcf74..41b4ed2f7 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpNodeUpgradeRejection.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpNodeUpgradeRejection.html @@ -1,4 +1,4 @@ -QwpNodeUpgradeRejection | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpNodeUpgradeRejection

                                                                                                  interface QwpNodeUpgradeRejection {
                                                                                                      headers: IncomingHttpHeaders;
                                                                                                      statusCode: number;
                                                                                                      statusMessage?: string;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  headers +QwpNodeUpgradeRejection | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpNodeUpgradeRejection

                                                                                                  interface QwpNodeUpgradeRejection {
                                                                                                      headers: IncomingHttpHeaders;
                                                                                                      statusCode: number;
                                                                                                      statusMessage?: string;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  headers: IncomingHttpHeaders
                                                                                                  statusCode: number
                                                                                                  statusMessage?: string
                                                                                                  +

                                                                                                  Properties

                                                                                                  headers: IncomingHttpHeaders
                                                                                                  statusCode: number
                                                                                                  statusMessage?: string
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpNodeWebSocketOptions.html b/docs/interfaces/_questdb_nodejs-client.QwpNodeWebSocketOptions.html index d67be939a..69b6e1e05 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpNodeWebSocketOptions.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpNodeWebSocketOptions.html @@ -1,7 +1,7 @@ QwpNodeWebSocketOptions | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpNodeWebSocketOptions

                                                                                                  Node WebSocket connection settings: endpoints, upgrade headers, the TLS agent, authentication and opening deadlines. A pooled client's cluster takes these, and the ingress and egress options extend them.

                                                                                                  -
                                                                                                  interface QwpNodeWebSocketOptions {
                                                                                                      agent?: Agent;
                                                                                                      authorization?: string;
                                                                                                      authTimeoutMs?: number;
                                                                                                      clientId?: string;
                                                                                                      closeTimeoutMs?: number;
                                                                                                      connectTimeoutMs?: number;
                                                                                                      failoverUrls?: readonly (string | URL)[];
                                                                                                      headers?: Record<string, string>;
                                                                                                      maxVersion?: number;
                                                                                                      protocols?: string | string[];
                                                                                                      sendTimeoutMs?: number;
                                                                                                      url: string | URL;
                                                                                                      webSocketFactory?: (
                                                                                                          url: string | URL,
                                                                                                          options: {
                                                                                                              agent?: Agent;
                                                                                                              headers: Record<string, string>;
                                                                                                              onConnected: () => void;
                                                                                                              onUpgrade: (headers: IncomingHttpHeaders) => void;
                                                                                                              onUpgradeRejected: (rejection: QwpNodeUpgradeRejection) => void;
                                                                                                              protocols?: string | string[];
                                                                                                          },
                                                                                                      ) => QwpWebSocketLike;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpNodeWebSocketOptions {
                                                                                                      agent?: Agent;
                                                                                                      authorization?: string;
                                                                                                      authTimeoutMs?: number;
                                                                                                      clientId?: string;
                                                                                                      closeTimeoutMs?: number;
                                                                                                      connectTimeoutMs?: number;
                                                                                                      failoverUrls?: readonly (string | URL)[];
                                                                                                      headers?: Record<string, string>;
                                                                                                      maxVersion?: number;
                                                                                                      protocols?: string | string[];
                                                                                                      sendTimeoutMs?: number;
                                                                                                      url: string | URL;
                                                                                                      webSocketFactory?: (
                                                                                                          url: string | URL,
                                                                                                          options: {
                                                                                                              agent?: Agent;
                                                                                                              headers: Record<string, string>;
                                                                                                              onConnected: () => void;
                                                                                                              onUpgrade: (headers: IncomingHttpHeaders) => void;
                                                                                                              onUpgradeRejected: (rejection: QwpNodeUpgradeRejection) => void;
                                                                                                              protocols?: string | string[];
                                                                                                          },
                                                                                                      ) => QwpWebSocketLike;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  agent?: Agent

                                                                                                  Optional HTTP(S) agent used for the WebSocket upgrade.

                                                                                                  -
                                                                                                  authorization?: string
                                                                                                  authTimeoutMs?: number

                                                                                                  Time allowed after TCP/TLS connection for HTTP authentication and the +

                                                                                                  authorization?: string
                                                                                                  authTimeoutMs?: number

                                                                                                  Time allowed after TCP/TLS connection for HTTP authentication and the WebSocket upgrade.

                                                                                                  Defaults to connectTimeoutMs when that is set, and to 15s otherwise, so narrowing only the connect deadline bounds the whole opening rather than being exceeded by a default nobody chose. Set this to give the slower phase its own budget. Capped at 2,147,483,647ms (the host timer ceiling); a larger value throws a RangeError.

                                                                                                  -
                                                                                                  clientId?: string
                                                                                                  closeTimeoutMs?: number

                                                                                                  Maximum time allowed for a graceful WebSocket close. Defaults to 15s. +

                                                                                                  clientId?: string
                                                                                                  closeTimeoutMs?: number

                                                                                                  Maximum time allowed for a graceful WebSocket close. Defaults to 15s. Capped at 2,147,483,647ms (the host timer ceiling); a larger value throws a RangeError.

                                                                                                  -
                                                                                                  connectTimeoutMs?: number

                                                                                                  Node TCP/TLS connection deadline, or the complete opening deadline in a +

                                                                                                  connectTimeoutMs?: number

                                                                                                  Node TCP/TLS connection deadline, or the complete opening deadline in a browser. Defaults to 15s. Capped at 2,147,483,647ms (the host timer ceiling); a larger value throws a RangeError.

                                                                                                  -
                                                                                                  failoverUrls?: readonly (string | URL)[]

                                                                                                  Additional endpoints attempted in order when the preferred endpoint fails.

                                                                                                  -
                                                                                                  headers?: Record<string, string>
                                                                                                  maxVersion?: number
                                                                                                  protocols?: string | string[]
                                                                                                  sendTimeoutMs?: number

                                                                                                  Maximum time a send may remain queued by the WebSocket. Defaults to 15s. +

                                                                                                  failoverUrls?: readonly (string | URL)[]

                                                                                                  Additional endpoints attempted in order when the preferred endpoint fails.

                                                                                                  +
                                                                                                  headers?: Record<string, string>
                                                                                                  maxVersion?: number
                                                                                                  protocols?: string | string[]
                                                                                                  sendTimeoutMs?: number

                                                                                                  Maximum time a send may remain queued by the WebSocket. Defaults to 15s. Capped at 2,147,483,647ms (the host timer ceiling); a larger value throws a RangeError.

                                                                                                  -
                                                                                                  url: string | URL
                                                                                                  webSocketFactory?: (
                                                                                                      url: string | URL,
                                                                                                      options: {
                                                                                                          agent?: Agent;
                                                                                                          headers: Record<string, string>;
                                                                                                          onConnected: () => void;
                                                                                                          onUpgrade: (headers: IncomingHttpHeaders) => void;
                                                                                                          onUpgradeRejected: (rejection: QwpNodeUpgradeRejection) => void;
                                                                                                          protocols?: string | string[];
                                                                                                      },
                                                                                                  ) => QwpWebSocketLike

                                                                                                  Test hook; defaults to the Node-only ws implementation.

                                                                                                  -
                                                                                                  +
                                                                                                  url: string | URL
                                                                                                  webSocketFactory?: (
                                                                                                      url: string | URL,
                                                                                                      options: {
                                                                                                          agent?: Agent;
                                                                                                          headers: Record<string, string>;
                                                                                                          onConnected: () => void;
                                                                                                          onUpgrade: (headers: IncomingHttpHeaders) => void;
                                                                                                          onUpgradeRejected: (rejection: QwpNodeUpgradeRejection) => void;
                                                                                                          protocols?: string | string[];
                                                                                                      },
                                                                                                  ) => QwpWebSocketLike

                                                                                                  Test hook; defaults to the Node-only ws implementation.

                                                                                                  +
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpPoolSlotReservation.html b/docs/interfaces/_questdb_nodejs-client.QwpPoolSlotReservation.html index e0210c81f..ce76626b9 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpPoolSlotReservation.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpPoolSlotReservation.html @@ -1,5 +1,5 @@ QwpPoolSlotReservation | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpPoolSlotReservationInternal

                                                                                                  Cross-owner reservation for stable pooled sender slot indexes.

                                                                                                  -
                                                                                                  interface QwpPoolSlotReservation {
                                                                                                      onAvailable(listener: () => void): () => void;
                                                                                                      release(slot: number): void;
                                                                                                      tryReserve(slot: number): boolean;
                                                                                                  }
                                                                                                  Index

                                                                                                  Methods

                                                                                                  interface QwpPoolSlotReservation {
                                                                                                      onAvailable(listener: () => void): () => void;
                                                                                                      release(slot: number): void;
                                                                                                      tryReserve(slot: number): boolean;
                                                                                                  }
                                                                                                  Index

                                                                                                  Methods

                                                                                                  +

                                                                                                  Methods

                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpQueryErrorMessage.html b/docs/interfaces/_questdb_nodejs-client.QwpQueryErrorMessage.html index ec502a7bf..4951261ad 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpQueryErrorMessage.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpQueryErrorMessage.html @@ -1,9 +1,16 @@ -QwpQueryErrorMessage | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpQueryErrorMessage

                                                                                                  interface QwpQueryErrorMessage {
                                                                                                      flags: number;
                                                                                                      kind: "query-error";
                                                                                                      message: string;
                                                                                                      payloadLength: number;
                                                                                                      requestId: bigint;
                                                                                                      status: number;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  flags +QwpQueryErrorMessage | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpQueryErrorMessage

                                                                                                  interface QwpQueryErrorMessage {
                                                                                                      flags: number;
                                                                                                      kind: "query-error";
                                                                                                      message: string;
                                                                                                      payloadLength: number;
                                                                                                      position?: number;
                                                                                                      requestId: bigint;
                                                                                                      status: number;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  flags: number
                                                                                                  kind: "query-error"
                                                                                                  message: string
                                                                                                  payloadLength: number
                                                                                                  requestId: bigint
                                                                                                  status: number
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  flags: number
                                                                                                  kind: "query-error"
                                                                                                  message: string
                                                                                                  payloadLength: number
                                                                                                  position?: number

                                                                                                  UTF-16 offset into the SQL text the error points at: an index into the +JavaScript string the query was issued with. Present when the query asked +for it (QWP_QUERY_FLAG_ERROR_POSITION) and the SQL engine raised the +error, which it does not for a protocol error, a CANCEL the client sent or +an oversized row. It is 0 when the engine named no position, as for a +query timeout on the server or CANCEL QUERY.

                                                                                                  +
                                                                                                  requestId: bigint
                                                                                                  status: number
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpQueryRequest.html b/docs/interfaces/_questdb_nodejs-client.QwpQueryRequest.html index 9231ab3af..23b65754e 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpQueryRequest.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpQueryRequest.html @@ -1,13 +1,23 @@ -QwpQueryRequest | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpQueryRequest

                                                                                                  interface QwpQueryRequest {
                                                                                                      bindCount?: number;
                                                                                                      bindPayload?: Uint8Array;
                                                                                                      binds?: QwpBindSetter;
                                                                                                      initialCredit?: number | bigint;
                                                                                                      queryFlags?: number | bigint;
                                                                                                      requestId: number | bigint;
                                                                                                      sql: string;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  bindCount? +QwpQueryRequest | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpQueryRequest

                                                                                                  interface QwpQueryRequest {
                                                                                                      bindCount?: number;
                                                                                                      bindPayload?: Uint8Array;
                                                                                                      binds?: QwpBindSetter;
                                                                                                      initialCredit?: number | bigint;
                                                                                                      maxRows?: number | bigint;
                                                                                                      queryFlags?: number | bigint;
                                                                                                      requestId: number | bigint;
                                                                                                      skipRows?: number | bigint;
                                                                                                      sql: string;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  bindCount?: number

                                                                                                  Advanced escape hatch for an already encoded bind section.

                                                                                                  -
                                                                                                  bindPayload?: Uint8Array

                                                                                                  Advanced escape hatch for an already encoded bind section.

                                                                                                  -

                                                                                                  Browser-safe typed positional binds.

                                                                                                  -
                                                                                                  initialCredit?: number | bigint

                                                                                                  Zero means unbounded.

                                                                                                  -
                                                                                                  queryFlags?: number | bigint

                                                                                                  Append only after SERVER_INFO advertises QUERY_FLAGS.

                                                                                                  -
                                                                                                  requestId: number | bigint
                                                                                                  sql: string
                                                                                                  +
                                                                                                  bindPayload?: Uint8Array

                                                                                                  Advanced escape hatch for an already encoded bind section.

                                                                                                  +

                                                                                                  Browser-safe typed positional binds.

                                                                                                  +
                                                                                                  initialCredit?: number | bigint

                                                                                                  Zero means unbounded.

                                                                                                  +
                                                                                                  maxRows?: number | bigint

                                                                                                  max_rows, the most rows to stream. Required by, and only allowed with, +QWP_QUERY_FLAG_MAX_ROWS in queryFlags. At most 2^63 - 1.

                                                                                                  +
                                                                                                  queryFlags?: number | bigint

                                                                                                  Append only after SERVER_INFO advertises QUERY_FLAGS, and set the +query-details bits only after it advertises QUERY_DETAILS: a server +without that capability ignores them, and streams every row whatever +skipRows and maxRows say.

                                                                                                  +
                                                                                                  requestId: number | bigint
                                                                                                  skipRows?: number | bigint

                                                                                                  skip_rows, the rows to leave out at the start of the result set. +Required by, and only allowed with, QWP_QUERY_FLAG_SKIP_ROWS in +queryFlags. At most 2^63 - 1.

                                                                                                  +
                                                                                                  sql: string
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpQueryStats.html b/docs/interfaces/_questdb_nodejs-client.QwpQueryStats.html new file mode 100644 index 000000000..aba4ee734 --- /dev/null +++ b/docs/interfaces/_questdb_nodejs-client.QwpQueryStats.html @@ -0,0 +1,19 @@ +QwpQueryStats | QuestDB JavaScript Client - v5.0.0

                                                                                                  Execution statistics of one query, measured on the server. A completion +carries them when its query asked for them (QWP_QUERY_FLAG_STATS).

                                                                                                  +
                                                                                                  interface QwpQueryStats {
                                                                                                      clientWaitNanos: bigint;
                                                                                                      compileNanos: bigint;
                                                                                                      countNanos: bigint;
                                                                                                      executeNanos: bigint;
                                                                                                      jitCompiled: boolean;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  clientWaitNanos: bigint

                                                                                                  Nanoseconds the query waited for the client: to read results, or to grant +flow-control credit.

                                                                                                  +
                                                                                                  compileNanos: bigint

                                                                                                  Nanoseconds spent compiling the SQL, every attempt included; zero when +the server reused a cached plan.

                                                                                                  +
                                                                                                  countNanos: bigint

                                                                                                  Nanoseconds spent counting the rows past the end of the row window, for +QWP_QUERY_FLAG_COUNT_ROWS. Zero when the stream read every row, as it +does unless maxRows ends it first: the rows skipRows leaves out are +counted as they are skipped, within executeNanos.

                                                                                                  +
                                                                                                  executeNanos: bigint

                                                                                                  Nanoseconds from the server receiving the request to its terminal +response. Includes the other three durations.

                                                                                                  +
                                                                                                  jitCompiled: boolean

                                                                                                  Whether the query's filter ran as JIT-compiled native code.

                                                                                                  +
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpReconnectEvent.html b/docs/interfaces/_questdb_nodejs-client.QwpReconnectEvent.html index b2fa514c6..ffe1f8309 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpReconnectEvent.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpReconnectEvent.html @@ -1,4 +1,4 @@ -QwpReconnectEvent | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpReconnectEvent

                                                                                                  interface QwpReconnectEvent {
                                                                                                      attempt: number;
                                                                                                      cause?: unknown;
                                                                                                      endpoint?: string | URL;
                                                                                                      episodeMs?: number;
                                                                                                      kind: QwpReconnectEventKind;
                                                                                                      previousEndpoint?: string | URL;
                                                                                                      timestampMs: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  attempt +QwpReconnectEvent | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpReconnectEvent

                                                                                                  interface QwpReconnectEvent {
                                                                                                      attempt: number;
                                                                                                      cause?: unknown;
                                                                                                      endpoint?: string | URL;
                                                                                                      episodeMs?: number;
                                                                                                      kind: QwpReconnectEventKind;
                                                                                                      previousEndpoint?: string | URL;
                                                                                                      timestampMs: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  attempt: number

                                                                                                  One-based reconnect sweep number; zero for lifecycle-only events.

                                                                                                  -
                                                                                                  cause?: unknown
                                                                                                  endpoint?: string | URL

                                                                                                  The endpoint the event concerns; for all-endpoints-unreachable, the last +

                                                                                                  cause?: unknown
                                                                                                  endpoint?: string | URL

                                                                                                  The endpoint the event concerns; for all-endpoints-unreachable, the last endpoint the sweep tried.

                                                                                                  -
                                                                                                  episodeMs?: number

                                                                                                  Elapsed time in the current consecutive capability-gap episode.

                                                                                                  -
                                                                                                  previousEndpoint?: string | URL
                                                                                                  timestampMs: number
                                                                                                  +
                                                                                                  episodeMs?: number

                                                                                                  Elapsed time in the current consecutive capability-gap episode.

                                                                                                  +
                                                                                                  previousEndpoint?: string | URL
                                                                                                  timestampMs: number
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpResourcePoolMetrics.html b/docs/interfaces/_questdb_nodejs-client.QwpResourcePoolMetrics.html index ccb554f87..f6cac39e9 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpResourcePoolMetrics.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpResourcePoolMetrics.html @@ -1,8 +1,8 @@ -QwpResourcePoolMetrics | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpResourcePoolMetrics

                                                                                                  interface QwpResourcePoolMetrics {
                                                                                                      available: number;
                                                                                                      creating: number;
                                                                                                      leased: number;
                                                                                                      maximum: number;
                                                                                                      minimum: number;
                                                                                                      total: number;
                                                                                                      waiting: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  available +QwpResourcePoolMetrics | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpResourcePoolMetrics

                                                                                                  interface QwpResourcePoolMetrics {
                                                                                                      available: number;
                                                                                                      creating: number;
                                                                                                      leased: number;
                                                                                                      maximum: number;
                                                                                                      minimum: number;
                                                                                                      total: number;
                                                                                                      waiting: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  available: number
                                                                                                  creating: number
                                                                                                  leased: number
                                                                                                  maximum: number
                                                                                                  minimum: number
                                                                                                  total: number
                                                                                                  waiting: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  available: number
                                                                                                  creating: number
                                                                                                  leased: number
                                                                                                  maximum: number
                                                                                                  minimum: number
                                                                                                  total: number
                                                                                                  waiting: number
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpResultArrayValue.html b/docs/interfaces/_questdb_nodejs-client.QwpResultArrayValue.html index 7743045b2..ad1486f12 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpResultArrayValue.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpResultArrayValue.html @@ -1,3 +1,3 @@ -QwpResultArrayValue | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpResultArrayValue

                                                                                                  interface QwpResultArrayValue {
                                                                                                      dimensions: readonly number[];
                                                                                                      values: readonly number[] | readonly bigint[];
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  dimensions +QwpResultArrayValue | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpResultArrayValue

                                                                                                  interface QwpResultArrayValue {
                                                                                                      dimensions: readonly number[];
                                                                                                      values: readonly number[] | readonly bigint[];
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  dimensions: readonly number[]
                                                                                                  values: readonly number[] | readonly bigint[]
                                                                                                  +

                                                                                                  Properties

                                                                                                  dimensions: readonly number[]
                                                                                                  values: readonly number[] | readonly bigint[]
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpResultBatchMessage.html b/docs/interfaces/_questdb_nodejs-client.QwpResultBatchMessage.html index 37150d46f..2fce4a027 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpResultBatchMessage.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpResultBatchMessage.html @@ -1,4 +1,4 @@ -QwpResultBatchMessage | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpResultBatchMessage

                                                                                                  interface QwpResultBatchMessage {
                                                                                                      batchSequence: bigint;
                                                                                                      body: Uint8Array;
                                                                                                      flags: number;
                                                                                                      kind: "result-batch";
                                                                                                      payloadLength: number;
                                                                                                      requestId: bigint;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  batchSequence +QwpResultBatchMessage | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpResultBatchMessage

                                                                                                  interface QwpResultBatchMessage {
                                                                                                      batchSequence: bigint;
                                                                                                      body: Uint8Array;
                                                                                                      flags: number;
                                                                                                      kind: "result-batch";
                                                                                                      payloadLength: number;
                                                                                                      requestId: bigint;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  batchSequence: bigint
                                                                                                  body: Uint8Array

                                                                                                  Raw or Zstd-compressed delta dictionary and columnar table block; decoded +

                                                                                                  Properties

                                                                                                  batchSequence: bigint
                                                                                                  body: Uint8Array

                                                                                                  Raw or Zstd-compressed delta dictionary and columnar table block; decoded by the batch decoder according to the frame flags.

                                                                                                  -
                                                                                                  flags: number
                                                                                                  kind: "result-batch"
                                                                                                  payloadLength: number
                                                                                                  requestId: bigint
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  +
                                                                                                  flags: number
                                                                                                  kind: "result-batch"
                                                                                                  payloadLength: number
                                                                                                  requestId: bigint
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpResultColumn.html b/docs/interfaces/_questdb_nodejs-client.QwpResultColumn.html index 1f6c9340a..4d11c9106 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpResultColumn.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpResultColumn.html @@ -1,6 +1,6 @@ -QwpResultColumn | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpResultColumn

                                                                                                  interface QwpResultColumn {
                                                                                                      name: string;
                                                                                                      precisionBits?: number;
                                                                                                      scale?: number;
                                                                                                      type: QwpColumnType;
                                                                                                      values: readonly QwpResultValue[];
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  name +QwpResultColumn | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpResultColumn

                                                                                                  interface QwpResultColumn {
                                                                                                      name: string;
                                                                                                      precisionBits?: number;
                                                                                                      scale?: number;
                                                                                                      type: QwpColumnType;
                                                                                                      values: readonly QwpResultValue[];
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  name: string
                                                                                                  precisionBits?: number
                                                                                                  scale?: number
                                                                                                  values: readonly QwpResultValue[]
                                                                                                  +

                                                                                                  Properties

                                                                                                  name: string
                                                                                                  precisionBits?: number
                                                                                                  scale?: number
                                                                                                  values: readonly QwpResultValue[]
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpResultColumnSchema.html b/docs/interfaces/_questdb_nodejs-client.QwpResultColumnSchema.html index 8d072bd27..de2603ca0 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpResultColumnSchema.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpResultColumnSchema.html @@ -1,3 +1,3 @@ -QwpResultColumnSchema | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpResultColumnSchema

                                                                                                  interface QwpResultColumnSchema {
                                                                                                      name: string;
                                                                                                      type: QwpColumnType;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  name +QwpResultColumnSchema | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpResultColumnSchema

                                                                                                  interface QwpResultColumnSchema {
                                                                                                      name: string;
                                                                                                      type: QwpColumnType;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  name: string
                                                                                                  +

                                                                                                  Properties

                                                                                                  name: string
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpResultEndMessage.html b/docs/interfaces/_questdb_nodejs-client.QwpResultEndMessage.html index a808dec04..c4189595c 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpResultEndMessage.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpResultEndMessage.html @@ -1,9 +1,15 @@ -QwpResultEndMessage | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpResultEndMessage

                                                                                                  interface QwpResultEndMessage {
                                                                                                      finalSequence: bigint;
                                                                                                      flags: number;
                                                                                                      kind: "result-end";
                                                                                                      payloadLength: number;
                                                                                                      requestId: bigint;
                                                                                                      tableCount: number;
                                                                                                      totalRows: bigint;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  finalSequence +QwpResultEndMessage | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpResultEndMessage

                                                                                                  interface QwpResultEndMessage {
                                                                                                      finalSequence: bigint;
                                                                                                      flags: number;
                                                                                                      kind: "result-end";
                                                                                                      payloadLength: number;
                                                                                                      requestId: bigint;
                                                                                                      rowCount?: bigint;
                                                                                                      stats?: QwpQueryStats;
                                                                                                      tableCount: number;
                                                                                                      totalRows: bigint;
                                                                                                      version: number;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  finalSequence: bigint
                                                                                                  flags: number
                                                                                                  kind: "result-end"
                                                                                                  payloadLength: number
                                                                                                  requestId: bigint
                                                                                                  tableCount: number
                                                                                                  totalRows: bigint
                                                                                                  version: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  finalSequence: bigint
                                                                                                  flags: number
                                                                                                  kind: "result-end"
                                                                                                  payloadLength: number
                                                                                                  requestId: bigint
                                                                                                  rowCount?: bigint

                                                                                                  Rows in the whole result set, whatever the row window left out of the +stream. Present when the query asked for it (QWP_QUERY_FLAG_COUNT_ROWS).

                                                                                                  +

                                                                                                  Present when the query asked for it (QWP_QUERY_FLAG_STATS).

                                                                                                  +
                                                                                                  tableCount: number
                                                                                                  totalRows: bigint

                                                                                                  Rows the stream carried: those the row window let through.

                                                                                                  +
                                                                                                  version: number
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpRoutingOptions.html b/docs/interfaces/_questdb_nodejs-client.QwpRoutingOptions.html index fd24752e9..d1016238a 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpRoutingOptions.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpRoutingOptions.html @@ -3,8 +3,8 @@ or a primary still catching up, answers the /write/v4 upgrade with 421 and the role it holds, and the endpoint sweep moves on, so a sender reaches the primary whatever role or zone it could ask for.

                                                                                                  -
                                                                                                  interface QwpRoutingOptions {
                                                                                                      target?: QwpTarget;
                                                                                                      zone?: string;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpRoutingOptions {
                                                                                                      target?: QwpTarget;
                                                                                                      zone?: string;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  target?: QwpTarget

                                                                                                  Selects any readable node, a primary/standalone node, or a replica.

                                                                                                  -
                                                                                                  zone?: string

                                                                                                  Opaque, case-insensitive preferred zone; cross-zone fallback stays enabled.

                                                                                                  -
                                                                                                  +
                                                                                                  zone?: string

                                                                                                  Opaque, case-insensitive preferred zone; cross-zone fallback stays enabled.

                                                                                                  +
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpSenderError.html b/docs/interfaces/_questdb_nodejs-client.QwpSenderError.html index adbc4ee7a..7c96828ba 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpSenderError.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpSenderError.html @@ -1,5 +1,5 @@ QwpSenderError | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpSenderError

                                                                                                  Immutable Java-parity context for an ingress rejection or data loss.

                                                                                                  -
                                                                                                  interface QwpSenderError {
                                                                                                      appliedPolicy: QwpSenderErrorPolicy;
                                                                                                      category: QwpSenderErrorCategory;
                                                                                                      detectedAtMs: number;
                                                                                                      fromFsn?: bigint;
                                                                                                      messageSequence?: bigint;
                                                                                                      quarantinedPath?: string;
                                                                                                      serverMessage?: string;
                                                                                                      serverStatusByte?: number;
                                                                                                      tableName?: string;
                                                                                                      toFsn?: bigint;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpSenderError {
                                                                                                      appliedPolicy: QwpSenderErrorPolicy;
                                                                                                      category: QwpSenderErrorCategory;
                                                                                                      detectedAtMs: number;
                                                                                                      fromFsn?: bigint;
                                                                                                      messageSequence?: bigint;
                                                                                                      quarantinedPath?: string;
                                                                                                      serverMessage?: string;
                                                                                                      serverStatusByte?: number;
                                                                                                      tableName?: string;
                                                                                                      toFsn?: bigint;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  appliedPolicy: QwpSenderErrorPolicy
                                                                                                  detectedAtMs: number
                                                                                                  fromFsn?: bigint

                                                                                                  Inclusive stable store-and-forward frame-sequence range.

                                                                                                  -
                                                                                                  messageSequence?: bigint
                                                                                                  quarantinedPath?: string

                                                                                                  Preserved on-disk bytes for a data-loss/quarantine notification.

                                                                                                  -
                                                                                                  serverMessage?: string
                                                                                                  serverStatusByte?: number
                                                                                                  tableName?: string
                                                                                                  toFsn?: bigint
                                                                                                  +

                                                                                                  Properties

                                                                                                  appliedPolicy: QwpSenderErrorPolicy
                                                                                                  detectedAtMs: number
                                                                                                  fromFsn?: bigint

                                                                                                  Inclusive stable store-and-forward frame-sequence range.

                                                                                                  +
                                                                                                  messageSequence?: bigint
                                                                                                  quarantinedPath?: string

                                                                                                  Preserved on-disk bytes for a data-loss/quarantine notification.

                                                                                                  +
                                                                                                  serverMessage?: string
                                                                                                  serverStatusByte?: number
                                                                                                  tableName?: string
                                                                                                  toFsn?: bigint
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpSenderErrorResponseContext.html b/docs/interfaces/_questdb_nodejs-client.QwpSenderErrorResponseContext.html index 8a29b1846..b3f522f1f 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpSenderErrorResponseContext.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpSenderErrorResponseContext.html @@ -1,7 +1,7 @@ -QwpSenderErrorResponseContext | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpSenderErrorResponseContext

                                                                                                  interface QwpSenderErrorResponseContext {
                                                                                                      appliedPolicy?: QwpSenderErrorPolicy;
                                                                                                      detectedAtMs?: number;
                                                                                                      fromFsn?: bigint;
                                                                                                      messageSequence?: bigint;
                                                                                                      tableName?: string;
                                                                                                      toFsn?: bigint;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  appliedPolicy? +QwpSenderErrorResponseContext | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpSenderErrorResponseContext

                                                                                                  interface QwpSenderErrorResponseContext {
                                                                                                      appliedPolicy?: QwpSenderErrorPolicy;
                                                                                                      detectedAtMs?: number;
                                                                                                      fromFsn?: bigint;
                                                                                                      messageSequence?: bigint;
                                                                                                      tableName?: string;
                                                                                                      toFsn?: bigint;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  appliedPolicy?: QwpSenderErrorPolicy
                                                                                                  detectedAtMs?: number
                                                                                                  fromFsn?: bigint
                                                                                                  messageSequence?: bigint
                                                                                                  tableName?: string
                                                                                                  toFsn?: bigint
                                                                                                  +

                                                                                                  Properties

                                                                                                  appliedPolicy?: QwpSenderErrorPolicy
                                                                                                  detectedAtMs?: number
                                                                                                  fromFsn?: bigint
                                                                                                  messageSequence?: bigint
                                                                                                  tableName?: string
                                                                                                  toFsn?: bigint
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpSenderMetrics.html b/docs/interfaces/_questdb_nodejs-client.QwpSenderMetrics.html index 21540e09d..a0bae508f 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpSenderMetrics.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpSenderMetrics.html @@ -1,5 +1,5 @@ QwpSenderMetrics | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpSenderMetrics

                                                                                                  Immutable high-level sender counters plus the active ingress snapshot.

                                                                                                  -
                                                                                                  interface QwpSenderMetrics {
                                                                                                      autoFlushBytes: number;
                                                                                                      closed: boolean;
                                                                                                      closing: boolean;
                                                                                                      connected: boolean;
                                                                                                      deferredRows: number;
                                                                                                      effectiveAutoFlushBytes: number;
                                                                                                      ingress?: QwpIngressMetrics;
                                                                                                      pendingBytes: number;
                                                                                                      pendingRows: number;
                                                                                                      totalFlushes: number;
                                                                                                      totalFlushFailures: number;
                                                                                                      totalRowsPublished: number;
                                                                                                      totalRowsStaged: number;
                                                                                                      totalTransactionsCommitted: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpSenderMetrics {
                                                                                                      autoFlushBytes: number;
                                                                                                      closed: boolean;
                                                                                                      closing: boolean;
                                                                                                      connected: boolean;
                                                                                                      deferredRows: number;
                                                                                                      effectiveAutoFlushBytes: number;
                                                                                                      ingress?: QwpIngressMetrics;
                                                                                                      pendingBytes: number;
                                                                                                      pendingRows: number;
                                                                                                      totalFlushes: number;
                                                                                                      totalFlushFailures: number;
                                                                                                      totalRowsPublished: number;
                                                                                                      totalRowsStaged: number;
                                                                                                      totalTransactionsCommitted: number;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  autoFlushBytes: number
                                                                                                  closed: boolean
                                                                                                  closing: boolean
                                                                                                  connected: boolean
                                                                                                  deferredRows: number
                                                                                                  effectiveAutoFlushBytes: number
                                                                                                  pendingBytes: number

                                                                                                  Estimated raw column-buffer bytes currently staged.

                                                                                                  -
                                                                                                  pendingRows: number
                                                                                                  totalFlushes: number
                                                                                                  totalFlushFailures: number
                                                                                                  totalRowsPublished: number

                                                                                                  Rows whose encoded frames have entered the ingress session.

                                                                                                  -
                                                                                                  totalRowsStaged: number
                                                                                                  totalTransactionsCommitted: number
                                                                                                  +

                                                                                                  Properties

                                                                                                  autoFlushBytes: number
                                                                                                  closed: boolean
                                                                                                  closing: boolean
                                                                                                  connected: boolean
                                                                                                  deferredRows: number
                                                                                                  effectiveAutoFlushBytes: number
                                                                                                  pendingBytes: number

                                                                                                  Estimated raw column-buffer bytes currently staged.

                                                                                                  +
                                                                                                  pendingRows: number
                                                                                                  totalFlushes: number
                                                                                                  totalFlushFailures: number
                                                                                                  totalRowsPublished: number

                                                                                                  Rows whose encoded frames have entered the ingress session.

                                                                                                  +
                                                                                                  totalRowsStaged: number
                                                                                                  totalTransactionsCommitted: number
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpServerInfoMessage.html b/docs/interfaces/_questdb_nodejs-client.QwpServerInfoMessage.html index a2dcdb6fd..dc67b1274 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpServerInfoMessage.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpServerInfoMessage.html @@ -1,5 +1,5 @@ QwpServerInfoMessage | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpServerInfoMessage

                                                                                                  Immutable endpoint metadata from the most recent successful egress bind.

                                                                                                  -
                                                                                                  interface QwpServerInfoMessage {
                                                                                                      capabilities: number;
                                                                                                      clusterId: string;
                                                                                                      compressionCodec: number;
                                                                                                      compressionLevel: number;
                                                                                                      epoch: bigint;
                                                                                                      flags: number;
                                                                                                      kind: "server-info";
                                                                                                      nodeId: string;
                                                                                                      payloadLength: number;
                                                                                                      role: number;
                                                                                                      serverWallNanoseconds: bigint;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                      zoneId: string;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpServerInfoMessage {
                                                                                                      capabilities: number;
                                                                                                      clusterId: string;
                                                                                                      compressionCodec: number;
                                                                                                      compressionLevel: number;
                                                                                                      epoch: bigint;
                                                                                                      flags: number;
                                                                                                      kind: "server-info";
                                                                                                      nodeId: string;
                                                                                                      payloadLength: number;
                                                                                                      role: number;
                                                                                                      serverWallNanoseconds: bigint;
                                                                                                      tableCount: number;
                                                                                                      version: number;
                                                                                                      zoneId: string;
                                                                                                  }

                                                                                                  Hierarchy (View Summary)

                                                                                                  Index

                                                                                                  Properties

                                                                                                  capabilities: number
                                                                                                  clusterId: string
                                                                                                  compressionCodec: number
                                                                                                  compressionLevel: number
                                                                                                  epoch: bigint
                                                                                                  flags: number
                                                                                                  kind: "server-info"
                                                                                                  nodeId: string
                                                                                                  payloadLength: number
                                                                                                  role: number
                                                                                                  serverWallNanoseconds: bigint
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  zoneId: string
                                                                                                  +

                                                                                                  Properties

                                                                                                  capabilities: number
                                                                                                  clusterId: string
                                                                                                  compressionCodec: number
                                                                                                  compressionLevel: number
                                                                                                  epoch: bigint
                                                                                                  flags: number
                                                                                                  kind: "server-info"
                                                                                                  nodeId: string
                                                                                                  payloadLength: number
                                                                                                  role: number
                                                                                                  serverWallNanoseconds: bigint
                                                                                                  tableCount: number
                                                                                                  version: number
                                                                                                  zoneId: string
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpSymbolValue.html b/docs/interfaces/_questdb_nodejs-client.QwpSymbolValue.html index 9248df2bf..5a92e3092 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpSymbolValue.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpSymbolValue.html @@ -1,3 +1,3 @@ -QwpSymbolValue | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpSymbolValue

                                                                                                  interface QwpSymbolValue {
                                                                                                      id: number;
                                                                                                      text: string;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  id +QwpSymbolValue | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpSymbolValue

                                                                                                  interface QwpSymbolValue {
                                                                                                      id: number;
                                                                                                      text: string;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  id: number
                                                                                                  text: string
                                                                                                  +

                                                                                                  Properties

                                                                                                  id: number
                                                                                                  text: string
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpUpgradeErrorDetails.html b/docs/interfaces/_questdb_nodejs-client.QwpUpgradeErrorDetails.html index 2b2b6833c..931b464fb 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpUpgradeErrorDetails.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpUpgradeErrorDetails.html @@ -1,4 +1,4 @@ -QwpUpgradeErrorDetails | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpUpgradeErrorDetails

                                                                                                  interface QwpUpgradeErrorDetails {
                                                                                                      cause?: unknown;
                                                                                                      closeCode?: number;
                                                                                                      kind: QwpUpgradeErrorKind;
                                                                                                      retryable?: boolean;
                                                                                                      serverRole?: string;
                                                                                                      serverZone?: string;
                                                                                                      statusCode?: number;
                                                                                                      statusMessage?: string;
                                                                                                      timeoutPhase?: QwpUpgradeTimeoutPhase;
                                                                                                      tryNextEndpoint?: boolean;
                                                                                                      url?: string | URL;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  cause? +QwpUpgradeErrorDetails | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpUpgradeErrorDetails

                                                                                                  interface QwpUpgradeErrorDetails {
                                                                                                      cause?: unknown;
                                                                                                      closeCode?: number;
                                                                                                      kind: QwpUpgradeErrorKind;
                                                                                                      retryable?: boolean;
                                                                                                      serverRole?: string;
                                                                                                      serverZone?: string;
                                                                                                      statusCode?: number;
                                                                                                      statusMessage?: string;
                                                                                                      timeoutPhase?: QwpUpgradeTimeoutPhase;
                                                                                                      tryNextEndpoint?: boolean;
                                                                                                      url?: string | URL;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  closeCode?: number
                                                                                                  retryable?: boolean

                                                                                                  Whether a later retry against the configured endpoint set may recover.

                                                                                                  -
                                                                                                  serverRole?: string
                                                                                                  serverZone?: string
                                                                                                  statusCode?: number
                                                                                                  statusMessage?: string
                                                                                                  timeoutPhase?: QwpUpgradeTimeoutPhase
                                                                                                  tryNextEndpoint?: boolean

                                                                                                  Whether failover code should try another endpoint before surfacing this.

                                                                                                  -
                                                                                                  url?: string | URL
                                                                                                  +

                                                                                                  Properties

                                                                                                  cause?: unknown
                                                                                                  closeCode?: number
                                                                                                  retryable?: boolean

                                                                                                  Whether a later retry against the configured endpoint set may recover.

                                                                                                  +
                                                                                                  serverRole?: string
                                                                                                  serverZone?: string
                                                                                                  statusCode?: number
                                                                                                  statusMessage?: string
                                                                                                  timeoutPhase?: QwpUpgradeTimeoutPhase
                                                                                                  tryNextEndpoint?: boolean

                                                                                                  Whether failover code should try another endpoint before surfacing this.

                                                                                                  +
                                                                                                  url?: string | URL
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpUuidValue.html b/docs/interfaces/_questdb_nodejs-client.QwpUuidValue.html index 0373230e8..0566cb364 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpUuidValue.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpUuidValue.html @@ -1,3 +1,3 @@ -QwpUuidValue | QuestDB JavaScript Client - v5.0.0
                                                                                                  interface QwpUuidValue {
                                                                                                      high: bigint;
                                                                                                      low: bigint;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  high +QwpUuidValue | QuestDB JavaScript Client - v5.0.0
                                                                                                  interface QwpUuidValue {
                                                                                                      high: bigint;
                                                                                                      low: bigint;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  high: bigint
                                                                                                  low: bigint
                                                                                                  +

                                                                                                  Properties

                                                                                                  high: bigint
                                                                                                  low: bigint
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpWebSocketLike.html b/docs/interfaces/_questdb_nodejs-client.QwpWebSocketLike.html index 26f4d3498..d57953645 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpWebSocketLike.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpWebSocketLike.html @@ -1,4 +1,4 @@ -QwpWebSocketLike | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpWebSocketLike

                                                                                                  interface QwpWebSocketLike {
                                                                                                      binaryType: string;
                                                                                                      bufferedAmount?: number;
                                                                                                      protocol?: string;
                                                                                                      readyState: number;
                                                                                                      addEventListener(
                                                                                                          type: "open",
                                                                                                          listener: (event: unknown) => void,
                                                                                                          options?: { once?: boolean },
                                                                                                      ): void;
                                                                                                      addEventListener(
                                                                                                          type: "message",
                                                                                                          listener: (event: QwpWebSocketMessageEvent) => void,
                                                                                                      ): void;
                                                                                                      addEventListener(
                                                                                                          type: "error",
                                                                                                          listener: (event: unknown) => void,
                                                                                                          options?: { once?: boolean },
                                                                                                      ): void;
                                                                                                      addEventListener(
                                                                                                          type: "close",
                                                                                                          listener: (event: QwpWebSocketCloseEvent) => void,
                                                                                                          options?: { once?: boolean },
                                                                                                      ): void;
                                                                                                      close(code?: number, reason?: string): void;
                                                                                                      ping(): void;
                                                                                                      removeEventListener(type: "open", listener: (event: unknown) => void): void;
                                                                                                      removeEventListener(
                                                                                                          type: "message",
                                                                                                          listener: (event: QwpWebSocketMessageEvent) => void,
                                                                                                      ): void;
                                                                                                      removeEventListener(
                                                                                                          type: "error",
                                                                                                          listener: (event: unknown) => void,
                                                                                                      ): void;
                                                                                                      removeEventListener(
                                                                                                          type: "close",
                                                                                                          listener: (event: QwpWebSocketCloseEvent) => void,
                                                                                                      ): void;
                                                                                                      send(data: Uint8Array): void;
                                                                                                      sendWithCallback(data: Uint8Array, callback: (error?: Error) => void): void;
                                                                                                      terminate(): void;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  binaryType +QwpWebSocketLike | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpWebSocketLike

                                                                                                  interface QwpWebSocketLike {
                                                                                                      binaryType: string;
                                                                                                      bufferedAmount?: number;
                                                                                                      protocol?: string;
                                                                                                      readyState: number;
                                                                                                      addEventListener(
                                                                                                          type: "open",
                                                                                                          listener: (event: unknown) => void,
                                                                                                          options?: { once?: boolean },
                                                                                                      ): void;
                                                                                                      addEventListener(
                                                                                                          type: "message",
                                                                                                          listener: (event: QwpWebSocketMessageEvent) => void,
                                                                                                      ): void;
                                                                                                      addEventListener(
                                                                                                          type: "error",
                                                                                                          listener: (event: unknown) => void,
                                                                                                          options?: { once?: boolean },
                                                                                                      ): void;
                                                                                                      addEventListener(
                                                                                                          type: "close",
                                                                                                          listener: (event: QwpWebSocketCloseEvent) => void,
                                                                                                          options?: { once?: boolean },
                                                                                                      ): void;
                                                                                                      close(code?: number, reason?: string): void;
                                                                                                      ping(): void;
                                                                                                      removeEventListener(type: "open", listener: (event: unknown) => void): void;
                                                                                                      removeEventListener(
                                                                                                          type: "message",
                                                                                                          listener: (event: QwpWebSocketMessageEvent) => void,
                                                                                                      ): void;
                                                                                                      removeEventListener(
                                                                                                          type: "error",
                                                                                                          listener: (event: unknown) => void,
                                                                                                      ): void;
                                                                                                      removeEventListener(
                                                                                                          type: "close",
                                                                                                          listener: (event: QwpWebSocketCloseEvent) => void,
                                                                                                      ): void;
                                                                                                      send(data: Uint8Array): void;
                                                                                                      sendWithCallback(data: Uint8Array, callback: (error?: Error) => void): void;
                                                                                                      terminate(): void;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  binaryType: string
                                                                                                  bufferedAmount?: number

                                                                                                  Number of application bytes queued by WHATWG-compatible WebSockets.

                                                                                                  -
                                                                                                  protocol?: string

                                                                                                  WebSocket subprotocol selected by the server, or an empty string.

                                                                                                  -
                                                                                                  readyState: number

                                                                                                  Methods

                                                                                                  +

                                                                                                  Properties

                                                                                                  binaryType: string
                                                                                                  bufferedAmount?: number

                                                                                                  Number of application bytes queued by WHATWG-compatible WebSockets.

                                                                                                  +
                                                                                                  protocol?: string

                                                                                                  WebSocket subprotocol selected by the server, or an empty string.

                                                                                                  +
                                                                                                  readyState: number

                                                                                                  Methods

                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.QwpWriterColumn.html b/docs/interfaces/_questdb_nodejs-client.QwpWriterColumn.html index 10b285ca4..4556eb077 100644 --- a/docs/interfaces/_questdb_nodejs-client.QwpWriterColumn.html +++ b/docs/interfaces/_questdb_nodejs-client.QwpWriterColumn.html @@ -1,5 +1,5 @@ QwpWriterColumn | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface QwpWriterColumn<T, DesignatedTimestamp>

                                                                                                  A reusable, immutable column definition for a compiled QWP table writer.

                                                                                                  -
                                                                                                  interface QwpWriterColumn<T, DesignatedTimestamp extends boolean = false> {
                                                                                                      __qwpWriterInput?: T;
                                                                                                      designatedTimestamp: DesignatedTimestamp;
                                                                                                      kind: QwpWriterColumnKind;
                                                                                                      precisionBits?: number;
                                                                                                      scale?: number;
                                                                                                      unit?: QwpTimestampUnit;
                                                                                                  }

                                                                                                  Type Parameters

                                                                                                  • T
                                                                                                  • DesignatedTimestamp extends boolean = false
                                                                                                  Index

                                                                                                  Properties

                                                                                                  interface QwpWriterColumn<T, DesignatedTimestamp extends boolean = false> {
                                                                                                      __qwpWriterInput?: T;
                                                                                                      designatedTimestamp: DesignatedTimestamp;
                                                                                                      kind: QwpWriterColumnKind;
                                                                                                      precisionBits?: number;
                                                                                                      scale?: number;
                                                                                                      unit?: QwpTimestampUnit;
                                                                                                  }

                                                                                                  Type Parameters

                                                                                                  • T
                                                                                                  • DesignatedTimestamp extends boolean = false
                                                                                                  Index

                                                                                                  Properties

                                                                                                  __qwpWriterInput? designatedTimestamp kind precisionBits? @@ -14,6 +14,6 @@ silently accept anything. A shared property name resolves structurally across bundles, which is what keeps row typing alive for consumers of the published package.

                                                                                                  -
                                                                                                  designatedTimestamp: DesignatedTimestamp
                                                                                                  precisionBits?: number

                                                                                                  GEOHASH precision in bits, fixed for the whole column.

                                                                                                  -
                                                                                                  scale?: number

                                                                                                  DECIMAL scale, fixed for the whole column.

                                                                                                  -
                                                                                                  +
                                                                                                  designatedTimestamp: DesignatedTimestamp
                                                                                                  precisionBits?: number

                                                                                                  GEOHASH precision in bits, fixed for the whole column.

                                                                                                  +
                                                                                                  scale?: number

                                                                                                  DECIMAL scale, fixed for the whole column.

                                                                                                  +
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.SenderBuffer.html b/docs/interfaces/_questdb_nodejs-client.SenderBuffer.html index bf766aec2..cb5091f49 100644 --- a/docs/interfaces/_questdb_nodejs-client.SenderBuffer.html +++ b/docs/interfaces/_questdb_nodejs-client.SenderBuffer.html @@ -1,6 +1,6 @@ SenderBuffer | QuestDB JavaScript Client - v5.0.0

                                                                                                  Buffer used by the Sender for data serialization.
                                                                                                  Provides methods for writing different data types into the buffer.

                                                                                                  -
                                                                                                  interface SenderBuffer {
                                                                                                      arrayColumn(name: string, value: unknown[]): SenderBuffer;
                                                                                                      at(timestamp: number | bigint, unit?: TimestampUnit): void;
                                                                                                      atNow(): void;
                                                                                                      booleanColumn(name: string, value: boolean): SenderBuffer;
                                                                                                      currentPosition(): number;
                                                                                                      decimalColumn(
                                                                                                          name: string,
                                                                                                          unscaled: bigint | Int8Array<ArrayBufferLike>,
                                                                                                          scale: number,
                                                                                                      ): SenderBuffer;
                                                                                                      decimalColumnText(name: string, value: string | number): SenderBuffer;
                                                                                                      floatColumn(name: string, value: number): SenderBuffer;
                                                                                                      intColumn(name: string, value: number | bigint): SenderBuffer;
                                                                                                      reset(): SenderBuffer;
                                                                                                      stringColumn(name: string, value: string): SenderBuffer;
                                                                                                      symbol(name: string, value: unknown): SenderBuffer;
                                                                                                      table(table: string): SenderBuffer;
                                                                                                      timestampColumn(
                                                                                                          name: string,
                                                                                                          value: number | bigint,
                                                                                                          unit?: TimestampUnit,
                                                                                                      ): SenderBuffer;
                                                                                                      toBufferNew(pos?: number): Buffer<ArrayBufferLike>;
                                                                                                      toBufferView(pos?: number): Buffer;
                                                                                                  }
                                                                                                  Index

                                                                                                  Methods

                                                                                                  interface SenderBuffer {
                                                                                                      arrayColumn(name: string, value: unknown[]): SenderBuffer;
                                                                                                      at(timestamp: number | bigint, unit?: TimestampUnit): void;
                                                                                                      atNow(): void;
                                                                                                      booleanColumn(name: string, value: boolean): SenderBuffer;
                                                                                                      currentPosition(): number;
                                                                                                      decimalColumn(
                                                                                                          name: string,
                                                                                                          unscaled: bigint | Int8Array<ArrayBufferLike>,
                                                                                                          scale: number,
                                                                                                      ): SenderBuffer;
                                                                                                      decimalColumnText(name: string, value: string | number): SenderBuffer;
                                                                                                      floatColumn(name: string, value: number): SenderBuffer;
                                                                                                      intColumn(name: string, value: number | bigint): SenderBuffer;
                                                                                                      reset(): SenderBuffer;
                                                                                                      stringColumn(name: string, value: string): SenderBuffer;
                                                                                                      symbol(name: string, value: unknown): SenderBuffer;
                                                                                                      table(table: string): SenderBuffer;
                                                                                                      timestampColumn(
                                                                                                          name: string,
                                                                                                          value: number | bigint,
                                                                                                          unit?: TimestampUnit,
                                                                                                      ): SenderBuffer;
                                                                                                      toBufferNew(pos?: number): Buffer<ArrayBufferLike>;
                                                                                                      toBufferView(pos?: number): Buffer;
                                                                                                  }
                                                                                                  Index

                                                                                                  Methods

                                                                                                  arrayColumn at atNow booleanColumn @@ -26,7 +26,7 @@
                                                                                                • or the shape of the array is irregular: the length of sub-arrays are different
                                                                                                • or the array is not homogeneous: its elements are not all the same type
                                                                                                • -
                                                                                                  • Closes the row after writing the designated timestamp into the buffer.

                                                                                                    Precision rules:

                                                                                                    • Protocol v2 and higher: @@ -56,17 +56,17 @@

                                                                                                    If the row cannot be closed within max_buf_size. The partial close is rewound, so the same call succeeds once a flush() frees space.

                                                                                                    -
                                                                                                  • Writes a boolean column with its value into the buffer. Use it to insert into BOOLEAN columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name.

                                                                                                    • value: boolean

                                                                                                      Column value, accepts only boolean values. A null or undefined value omits the column entirely (stored as NULL).

                                                                                                    Returns SenderBuffer

                                                                                                    Returns with a reference to this buffer.

                                                                                                    -
                                                                                                  • Returns the current position of the buffer. New data will be written into the buffer starting from this position.

                                                                                                    Returns number

                                                                                                    The current write position in the buffer

                                                                                                    -
                                                                                                  • Writes a decimal value into the buffer using its binary format.

                                                                                                    Use it to insert into DECIMAL database columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name.

                                                                                                    • unscaled: bigint | Int8Array<ArrayBufferLike>

                                                                                                      The unscaled integer portion of the decimal value.

                                                                                                      @@ -87,7 +87,7 @@
                                                                                                    • scale is not an integer between 0 and 76.
                                                                                                    • unscaled contains invalid bytes.
                                                                                                    -
                                                                                                  • Writes a decimal value into the buffer using its text format.

                                                                                                    Use it to insert into DECIMAL database columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name.

                                                                                                    • value: string | number

                                                                                                      The decimal value to write.

                                                                                                      @@ -103,35 +103,35 @@
                                                                                                      • The provided string is not a valid decimal representation.
                                                                                                      -
                                                                                                  • Writes a 64-bit floating point value into the buffer. Use it to insert into DOUBLE or FLOAT database columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name.

                                                                                                    • value: number

                                                                                                      Column value, accepts only number values. A null or undefined value omits the column entirely (stored as NULL).

                                                                                                    Returns SenderBuffer

                                                                                                    Returns with a reference to this buffer.

                                                                                                    -
                                                                                                  • Writes a 64-bit signed integer into the buffer. Use it to insert into LONG, INT, SHORT and BYTE columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name.

                                                                                                    • value: number | bigint

                                                                                                      Column value, accepts integer or BigInt values. LONG is a 64-bit signed integer, which is wider than the safe integer range of number, so pass a BigInt beyond Number.MAX_SAFE_INTEGER to avoid losing precision. A null or undefined value omits the column entirely (stored as NULL).

                                                                                                    Returns SenderBuffer

                                                                                                    Returns with a reference to this buffer.

                                                                                                    Error if the value is not an integer or a BigInt

                                                                                                    RangeError if the value does not fit into a 64-bit signed integer

                                                                                                    -
                                                                                                  • Writes a string column with its value into the buffer. Use it to insert into VARCHAR and STRING columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Column name.

                                                                                                    • value: string

                                                                                                      Column value, accepts only string values. A null or undefined value omits the column entirely (stored as NULL).

                                                                                                    Returns SenderBuffer

                                                                                                    Returns with a reference to this buffer.

                                                                                                    -
                                                                                                  • Writes a symbol name and value into the buffer. Use it to insert into SYMBOL columns.

                                                                                                    Parameters

                                                                                                    • name: string

                                                                                                      Symbol name.

                                                                                                    • value: unknown

                                                                                                      Symbol value, toString() is called to extract the actual symbol value from the parameter. A null or undefined value omits the symbol entirely (stored as NULL).

                                                                                                    Returns SenderBuffer

                                                                                                    Returns with a reference to this buffer.

                                                                                                    -
                                                                                                  • Writes a timestamp column and its value into the buffer.

                                                                                                    Use this method to insert data into TIMESTAMP or TIMESTAMP_NS columns.

                                                                                                    Precision rules:

                                                                                                      @@ -155,14 +155,14 @@

                                                                                                    If unit is 'ns' but value is not a BigInt.

                                                                                                    If unit is not one of 'ns', 'us', or 'ms'. This validation runs even when value is null or undefined.

                                                                                                    -
                                                                                                  • Returns a cropped buffer ready to send to the server, or null if there is nothing to send. The returned buffer is a copy of this buffer. It also compacts the buffer.

                                                                                                    Parameters

                                                                                                    • Optionalpos: number

                                                                                                      Optional position parameter

                                                                                                    Returns Buffer<ArrayBufferLike>

                                                                                                    A copy of the buffer ready to send, or null

                                                                                                    -
                                                                                                  • Returns a cropped buffer, or null if there is nothing to send. The returned buffer is backed by this buffer instance, meaning the view can change as the buffer is mutated. Used only in tests to assert the buffer's content.

                                                                                                    Parameters

                                                                                                    • Optionalpos: number

                                                                                                      Optional position parameter

                                                                                                    Returns Buffer

                                                                                                    A view of the buffer

                                                                                                    -
                                                                                                  +
                                                                                                  diff --git a/docs/interfaces/_questdb_nodejs-client.SenderTransport.html b/docs/interfaces/_questdb_nodejs-client.SenderTransport.html index b9285b2a4..5996f3105 100644 --- a/docs/interfaces/_questdb_nodejs-client.SenderTransport.html +++ b/docs/interfaces/_questdb_nodejs-client.SenderTransport.html @@ -1,18 +1,18 @@ SenderTransport | QuestDB JavaScript Client - v5.0.0

                                                                                                  Interface SenderTransport

                                                                                                  Interface for QuestDB transport implementations.
                                                                                                  Defines the contract for different transport protocols (HTTP/HTTPS/TCP/TCPS).

                                                                                                  -
                                                                                                  interface SenderTransport {
                                                                                                      close(): Promise<void>;
                                                                                                      connect(): Promise<boolean>;
                                                                                                      getDefaultAutoFlushRows(): number;
                                                                                                      send(data: Buffer): Promise<boolean>;
                                                                                                  }

                                                                                                  Implemented by

                                                                                                  Index

                                                                                                  Methods

                                                                                                  interface SenderTransport {
                                                                                                      close(): Promise<void>;
                                                                                                      connect(): Promise<boolean>;
                                                                                                      getDefaultAutoFlushRows(): number;
                                                                                                      send(data: Buffer): Promise<boolean>;
                                                                                                  }

                                                                                                  Implemented by

                                                                                                  Index

                                                                                                  Methods

                                                                                                  • Closes the connection to the database server. Should not be called on HTTP transports.

                                                                                                    Returns Promise<void>

                                                                                                    Promise that resolves when the connection is closed

                                                                                                    -
                                                                                                  • Establishes a connection to the database server. Should not be called on HTTP transports.

                                                                                                    Returns Promise<boolean>

                                                                                                    Promise resolving to true if connection is successful

                                                                                                    -
                                                                                                  • Sends the data to the database server.

                                                                                                    Parameters

                                                                                                    • data: Buffer

                                                                                                      Buffer containing the data to send

                                                                                                    Returns Promise<boolean>

                                                                                                    Promise resolving to true if data was sent successfully

                                                                                                    -
                                                                                                  +
                                                                                                  diff --git a/docs/media/QWP.md b/docs/media/QWP.md index 12ef603fb..cb3e4b680 100644 --- a/docs/media/QWP.md +++ b/docs/media/QWP.md @@ -1533,7 +1533,11 @@ statement that completed anyway, or a result that ended with nothing withheld, succeeds. A query sends at most one `CANCEL`. `cancel()` settles once its `CANCEL` has been sent, or once a reconnect has taken it over: the frame then follows the replayed request, so a callback that awaits `cancel()` does not hold up the -reconnect that has to drain it first. +reconnect that has to drain it first. Once a query has ended, `cancel()` and +`grantCredit()` resolve without sending anything, even if the session has since +closed or failed, so a timer or an `AbortSignal` listener that fires after +completion may still call them. Neither throws: every failure, such as an invalid +credit amount, rejects the promise it returns. `await query.awaitCompletion(timeoutMs)` bounds only the caller's wait and returns `false` without cancelling when the timeout expires, matching Java @@ -1553,8 +1557,12 @@ client discards, and ends a round trip after that. Without flow control (`initialCredit: 0`, the default) QuestDB does not read the connection while it streams a result: it sends the rest of the result before it sees the `CANCEL`, and the client discards it. If the server does not terminate the query within the bound, -its connection is closed, which is what ends the query on the server. A query ended -with `query.cancel()` then fails with `QwpEgressQueryCancelTimeoutError`; one already +its connection is closed, which is what ends the query on the server. A browser +cannot drop a connection itself, only send a close and wait for the server's reply. +Without flow control QuestDB reads that close only once the query has finished or +failed, so in a browser closing does not stop such a query until the browser abandons +the closing handshake, after 60 seconds in Chromium. When the bound expires, a query +ended with `query.cancel()` fails with `QwpEgressQueryCancelTimeoutError`; one already released by its timeout or by breaking out of `for await` keeps the error it was released with. A reconnecting session, the default, opens a new connection for the next query instead of failing. This client-initiated replacement emits `disconnected` @@ -1663,6 +1671,101 @@ const session = await connectQwpBrowserEgress({ }); ``` +### Error positions, statistics, row counts and paging + +Per-query options ask QuestDB for what `/exec` reports besides the rows: where an +error points in the SQL text, how long the query took, and how many rows a result +has while it is read one page at a time. They need a server whose `SERVER_INFO` +advertises the `QUERY_DETAILS` capability (`QWP_EGRESS_CAPABILITY.QUERY_DETAILS`). + +```typescript +import { QwpEgressQueryError } from "@questdb/browser-client"; + +const pageSize = 100; +const offset = 2 * pageSize; +try { + const page = await session.query(sql, { + skipRows: offset, + maxRows: pageSize, + countRows: true, + stats: true, + errorPosition: true, + }); + for await (const batch of page) render(batch); + const completion = await page.completion; + if (completion.kind === "result-end") { + // totalRows counts the rows of this page, rowCount those of the result. + showPager(offset, completion.totalRows, completion.rowCount); + } + showTimings(completion.stats); +} catch (error) { + if (error instanceof QwpEgressQueryError && error.position !== undefined) { + highlight(sql, error.position, error.message); + } + throw error; +} +``` + +- `errorPosition: true` makes a `QwpEgressQueryError` carry `position`, the UTF-16 + offset into the SQL text the error points at. That is an index into the + JavaScript string the query was issued with, so `sql.slice(error.position)` + starts where the error does, whatever non-ASCII text precedes it. The message is + then bare, without the `[n]` prefix, a position or an error number, that QuestDB + otherwise puts in front of it. An error the SQL engine raises without a position + of its own reports 0, the start of the text, as `/exec` does: a query timeout on + the server and a query cancelled there with `CANCEL QUERY` are among them. An + error that does not come from the SQL engine, such as a protocol error, a row + too large for the server's send buffer or the cancellation `cancel()` sends, + carries no position, and neither does the error for a request the server + rejected before reading its options. +- `stats: true` adds `stats` to the completion of a result (`RESULT_END`) and of a + statement (`EXEC_DONE`), as `QwpQueryStats`: `compileNanos`, zero when the + server reused a cached plan; `executeNanos`, from the server receiving the + request to its terminal response, the other durations included; `countNanos`, + spent counting the rows past the end of the row window for `countRows`, which + is zero unless `maxRows` ended the stream first; `clientWaitNanos`, the time + the query waited for this client to read results or grant credit; and + `jitCompiled`, whether its filter ran as JIT-compiled native code. Errors carry + no statistics. +- `countRows: true` adds `rowCount` to a result's completion: the rows in the + whole result set, whatever `skipRows` and `maxRows` leave out, while + `totalRows` still counts the rows the stream carried. When `maxRows` ends the + stream first, the server counts the remaining rows without sending them, which + can take as long as reading them and runs under the server's query timeout. +- `skipRows` and `maxRows` bound the rows a query streams, like SQL + `LIMIT skipRows, skipRows + maxRows` around it: the first `skipRows` rows are + left out, and at most `maxRows` follow. `maxRows: 0` streams only the schema, in + one empty batch. Both take a non-negative safe integer or a `bigint` up to + 2^63 - 1. A server with `QUERY_DETAILS` ignores the window and the row count + for statements. + +The client drops `errorPosition`, `stats` and `countRows` on an endpoint without +`QUERY_DETAILS`, as it drops `resetDictionary` on one without `QUERY_FLAGS`, so +they are safe during a rolling upgrade: the reports are simply absent. A row +window cannot be dropped that way, because such a server would stream the whole +result. A query with a positive `skipRows` or any `maxRows` therefore rejects with +`QwpEgressRowWindowUnsupportedError` before anything is sent, and so does a +statement: the client cannot tell the two apart before sending them. Failover +applies the same rules: a replay asks the endpoint it reaches for the details that +endpoint supports, and a query whose row window it cannot honour fails with +`QwpEgressRowWindowUnsupportedError` instead of being replayed. A query issued +while the session is reconnecting is checked twice: against `session.serverInfo`, +which still describes the lost endpoint, and then against the endpoint the +reconnect reaches. If only the second lacks `QUERY_DETAILS`, nothing is sent and +`query()` still resolves, but the query's `completion` and iteration reject with +`QwpEgressRowWindowUnsupportedError`. Check +`session.serverInfo.capabilities & QWP_EGRESS_CAPABILITY.QUERY_DETAILS` to choose +between a row window and SQL `LIMIT` in advance. + +The low-level `encodeQwpQueryRequest()` takes the raw flags +(`QWP_QUERY_FLAG_ERROR_POSITION`, `QWP_QUERY_FLAG_STATS`, +`QWP_QUERY_FLAG_COUNT_ROWS`, `QWP_QUERY_FLAG_SKIP_ROWS` and +`QWP_QUERY_FLAG_MAX_ROWS`) together with the `skipRows` and `maxRows` values the +last two require, and `decodeQwpEgressMessageWithQueryFlags(bytes, queryFlags)` +reads the trailers those flags add to `RESULT_END`, `EXEC_DONE` and +`QUERY_ERROR`. `decodeQwpEgressMessage(bytes)` keeps its single parameter, so it +stays safe to pass straight to `map()`, and rejects those trailers. + ## Combined pooled client Use `QwpClient` when one long-lived application component needs both ingestion @@ -1990,6 +2093,7 @@ The public error classes preserve enough context for policy decisions: | `QwpEgressQueryAbandonedError` | Result iteration ended before the server completed the query | | `QwpEgressQueryTimeoutError` | The query ran past its timeout and was cancelled | | `QwpEgressQueryCancelTimeoutError` | A cancelled query did not produce a terminal server response before the drain deadline | +| `QwpEgressRowWindowUnsupportedError` | A query asked an endpoint without the `QUERY_DETAILS` capability for a row window (`skipRows`, `maxRows`) | Always close senders and sessions in `finally`. For a standalone sender, publication plus ACK draining is bounded by `closeFlushTimeoutMs`; the subsequent WebSocket closing diff --git a/docs/modules/_questdb_browser-client.html b/docs/modules/_questdb_browser-client.html index de8b1e58e..87ac1178e 100644 --- a/docs/modules/_questdb_browser-client.html +++ b/docs/modules/_questdb_browser-client.html @@ -149,6 +149,11 @@

                                                                                                  connectQwpBrowserClient() creates bounded sender and query pools for an application component that needs concurrent ingestion and queries:

                                                                                                  import { connectQwpBrowserClient } from "@questdb/browser-client";

                                                                                                  const clusterUrl = new URL("/", window.location.href);
                                                                                                  clusterUrl.protocol = window.location.protocol === "https:" ? "wss:" : "ws:";

                                                                                                  const db = await connectQwpBrowserClient({
                                                                                                  cluster: {
                                                                                                  url: clusterUrl,
                                                                                                  sessionBootstrap: {
                                                                                                  authentication: { type: "bearer", token: oidcOrRestAccessToken },
                                                                                                  },
                                                                                                  },
                                                                                                  ingress: { requestDurableAck: true },
                                                                                                  egress: { target: "replica", compression: "zstd" },
                                                                                                  pool: { senderPoolMax: 2, queryPoolMax: 4 },
                                                                                                  });

                                                                                                  try {
                                                                                                  const sender = await db.borrowSender();
                                                                                                  try {
                                                                                                  await sender.table("events").symbol("kind", "view").atNow();
                                                                                                  } finally {
                                                                                                  // Flushes completed rows and returns the sender to the pool.
                                                                                                  await sender.close();
                                                                                                  }

                                                                                                  const query = await db.borrowQuery();
                                                                                                  try {
                                                                                                  const result = await query.query("select count() from events");
                                                                                                  for await (const batch of result) console.log([...batch.rows()]);
                                                                                                  await result.completion;
                                                                                                  } finally {
                                                                                                  await query.close();
                                                                                                  }
                                                                                                  } finally {
                                                                                                  await db.close();
                                                                                                  } @@ -171,4 +176,4 @@

                                                                                                  Node.js can journal QWP frames to disk before sending them. The producer can continue accepting rows during a QuestDB outage and replay them in order after reconnection.

                                                                                                  @@ -146,4 +151,4 @@

                                                                                                  Returns void

                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpBindSetter.html b/docs/types/_questdb_nodejs-client.QwpBindSetter.html index 9884a1b1a..aeb1d2c72 100644 --- a/docs/types/_questdb_nodejs-client.QwpBindSetter.html +++ b/docs/types/_questdb_nodejs-client.QwpBindSetter.html @@ -1 +1 @@ -QwpBindSetter | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpBindSetter

                                                                                                  QwpBindSetter: (binds: QwpBindValues) => void

                                                                                                  Type declaration

                                                                                                  +QwpBindSetter | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpBindSetter

                                                                                                  QwpBindSetter: (binds: QwpBindValues) => void

                                                                                                  Type declaration

                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpBindType.html b/docs/types/_questdb_nodejs-client.QwpBindType.html index a996ce578..ceaa8494b 100644 --- a/docs/types/_questdb_nodejs-client.QwpBindType.html +++ b/docs/types/_questdb_nodejs-client.QwpBindType.html @@ -1,2 +1,2 @@ QwpBindType | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpBindType

                                                                                                  QwpBindType:
                                                                                                      | typeof BOOLEAN
                                                                                                      | typeof BYTE
                                                                                                      | typeof SHORT
                                                                                                      | typeof INT
                                                                                                      | typeof LONG
                                                                                                      | typeof FLOAT
                                                                                                      | typeof DOUBLE
                                                                                                      | typeof TIMESTAMP
                                                                                                      | typeof DATE
                                                                                                      | typeof UUID
                                                                                                      | typeof LONG256
                                                                                                      | typeof GEOHASH
                                                                                                      | typeof VARCHAR
                                                                                                      | typeof TIMESTAMP_NANOS
                                                                                                      | typeof DECIMAL64
                                                                                                      | typeof DECIMAL128
                                                                                                      | typeof DECIMAL256
                                                                                                      | typeof CHAR

                                                                                                  Phase-1 scalar bind types exposed by the Java reference client.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpColumnType.html b/docs/types/_questdb_nodejs-client.QwpColumnType.html index 881a2b3e5..14153c909 100644 --- a/docs/types/_questdb_nodejs-client.QwpColumnType.html +++ b/docs/types/_questdb_nodejs-client.QwpColumnType.html @@ -1 +1 @@ -QwpColumnType | QuestDB JavaScript Client - v5.0.0
                                                                                                  +QwpColumnType | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpDecimalInput.html b/docs/types/_questdb_nodejs-client.QwpDecimalInput.html index 2e6459122..701fe8564 100644 --- a/docs/types/_questdb_nodejs-client.QwpDecimalInput.html +++ b/docs/types/_questdb_nodejs-client.QwpDecimalInput.html @@ -1,3 +1,3 @@ QwpDecimalInput | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpDecimalInput

                                                                                                  QwpDecimalInput: bigint | number | string | { scale: number; unscaled: bigint }

                                                                                                  DECIMAL input: the unscaled bigint at the column's scale, decimal text (or a number) that is exactly representable at that scale, or the egress record.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpDoubleArrayInput.html b/docs/types/_questdb_nodejs-client.QwpDoubleArrayInput.html index ee756a25b..e537cbc87 100644 --- a/docs/types/_questdb_nodejs-client.QwpDoubleArrayInput.html +++ b/docs/types/_questdb_nodejs-client.QwpDoubleArrayInput.html @@ -1,2 +1,2 @@ QwpDoubleArrayInput | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpDoubleArrayInput

                                                                                                  QwpDoubleArrayInput:
                                                                                                      | QwpNestedNumberArray
                                                                                                      | { dimensions: readonly number[]; values: readonly number[] }

                                                                                                  DOUBLE array input: nested arrays or a flat shape-and-values record.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpEgressCompression.html b/docs/types/_questdb_nodejs-client.QwpEgressCompression.html index 953506ed3..521447cf5 100644 --- a/docs/types/_questdb_nodejs-client.QwpEgressCompression.html +++ b/docs/types/_questdb_nodejs-client.QwpEgressCompression.html @@ -1 +1 @@ -QwpEgressCompression | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpEgressCompression

                                                                                                  QwpEgressCompression: "raw" | "zstd" | "auto"
                                                                                                  +QwpEgressCompression | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpEgressCompression

                                                                                                  QwpEgressCompression: "raw" | "zstd" | "auto"
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpEgressMessage.html b/docs/types/_questdb_nodejs-client.QwpEgressMessage.html index 79452fa82..e1bd9e5f1 100644 --- a/docs/types/_questdb_nodejs-client.QwpEgressMessage.html +++ b/docs/types/_questdb_nodejs-client.QwpEgressMessage.html @@ -1 +1 @@ -QwpEgressMessage | QuestDB JavaScript Client - v5.0.0
                                                                                                  +QwpEgressMessage | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpEgressViewCallbackControl.html b/docs/types/_questdb_nodejs-client.QwpEgressViewCallbackControl.html index 150624ce7..6c4845520 100644 --- a/docs/types/_questdb_nodejs-client.QwpEgressViewCallbackControl.html +++ b/docs/types/_questdb_nodejs-client.QwpEgressViewCallbackControl.html @@ -1,2 +1,2 @@ QwpEgressViewCallbackControl | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpEgressViewCallbackControl

                                                                                                  QwpEgressViewCallbackControl: Omit<QwpEgressViewQuery, "completion">

                                                                                                  Query operations that are safe while a reusable batch callback is active.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpExtraOptions.html b/docs/types/_questdb_nodejs-client.QwpExtraOptions.html index 29f75e9c7..a8c14db65 100644 --- a/docs/types/_questdb_nodejs-client.QwpExtraOptions.html +++ b/docs/types/_questdb_nodejs-client.QwpExtraOptions.html @@ -1,13 +1,13 @@ -QwpExtraOptions | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpExtraOptions

                                                                                                  type QwpExtraOptions = {
                                                                                                      udp?: Omit<QwpNodeUdpOptions, "host" | "port">;
                                                                                                      webSocket?: Omit<QwpNodeIngressOptions, "url">;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  udp? +QwpExtraOptions | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpExtraOptions

                                                                                                  type QwpExtraOptions = {
                                                                                                      udp?: Omit<QwpNodeUdpOptions, "host" | "port">;
                                                                                                      webSocket?: Omit<QwpNodeIngressOptions, "url">;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  Properties

                                                                                                  udp?: Omit<QwpNodeUdpOptions, "host" | "port">

                                                                                                  UDP sender options: socket and buffering. Like the WS/WSS section, these are applied after the connect string is parsed and win over the equivalent connect string key -- maxDatagramSize over max_datagram_size, multicastTtl over multicast_ttl. A log here is used when no top-level logger is supplied.

                                                                                                  -
                                                                                                  webSocket?: Omit<QwpNodeIngressOptions, "url">

                                                                                                  WS/WSS sender options: connection, buffering and delivery. Values are +

                                                                                                  webSocket?: Omit<QwpNodeIngressOptions, "url">

                                                                                                  WS/WSS sender options: connection, buffering and delivery. Values are applied after the connect string has been fully parsed and validated, and win when both forms set the same option -- initialConnectMode over initial_connect_retry, for example. A log here is used when no top-level logger is supplied.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpGeohashInput.html b/docs/types/_questdb_nodejs-client.QwpGeohashInput.html index 43af6831f..34814bd72 100644 --- a/docs/types/_questdb_nodejs-client.QwpGeohashInput.html +++ b/docs/types/_questdb_nodejs-client.QwpGeohashInput.html @@ -1,3 +1,3 @@ QwpGeohashInput | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpGeohashInput

                                                                                                  QwpGeohashInput:
                                                                                                      | bigint
                                                                                                      | number
                                                                                                      | string
                                                                                                      | { bits: bigint; precisionBits: number }

                                                                                                  GEOHASH input: the raw bits, base-32 geohash text whose length matches the column precision, or the egress bit record.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpIngressProgressKind.html b/docs/types/_questdb_nodejs-client.QwpIngressProgressKind.html index 8c6095426..4c89883a2 100644 --- a/docs/types/_questdb_nodejs-client.QwpIngressProgressKind.html +++ b/docs/types/_questdb_nodejs-client.QwpIngressProgressKind.html @@ -1 +1 @@ -QwpIngressProgressKind | QuestDB JavaScript Client - v5.0.0
                                                                                                  +QwpIngressProgressKind | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpInitialConnectMode.html b/docs/types/_questdb_nodejs-client.QwpInitialConnectMode.html index d8a212e5d..eb508656c 100644 --- a/docs/types/_questdb_nodejs-client.QwpInitialConnectMode.html +++ b/docs/types/_questdb_nodejs-client.QwpInitialConnectMode.html @@ -1 +1 @@ -QwpInitialConnectMode | QuestDB JavaScript Client - v5.0.0
                                                                                                  +QwpInitialConnectMode | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpInt64.html b/docs/types/_questdb_nodejs-client.QwpInt64.html index 3b061d9e7..ed72a6aef 100644 --- a/docs/types/_questdb_nodejs-client.QwpInt64.html +++ b/docs/types/_questdb_nodejs-client.QwpInt64.html @@ -1 +1 @@ -QwpInt64 | QuestDB JavaScript Client - v5.0.0
                                                                                                  QwpInt64: number | bigint
                                                                                                  +QwpInt64 | QuestDB JavaScript Client - v5.0.0
                                                                                                  QwpInt64: number | bigint
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpIpv4Input.html b/docs/types/_questdb_nodejs-client.QwpIpv4Input.html index 53050935f..d89f83ac6 100644 --- a/docs/types/_questdb_nodejs-client.QwpIpv4Input.html +++ b/docs/types/_questdb_nodejs-client.QwpIpv4Input.html @@ -1,2 +1,2 @@ QwpIpv4Input | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpIpv4Input

                                                                                                  QwpIpv4Input: string | number

                                                                                                  IPV4 input: dotted-quad text or a signed/unsigned packed 32-bit address.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpLong256Input.html b/docs/types/_questdb_nodejs-client.QwpLong256Input.html index 27a257755..b1ac7a989 100644 --- a/docs/types/_questdb_nodejs-client.QwpLong256Input.html +++ b/docs/types/_questdb_nodejs-client.QwpLong256Input.html @@ -1,3 +1,3 @@ QwpLong256Input | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpLong256Input

                                                                                                  QwpLong256Input: bigint | string | QwpLong256Words | { words: QwpLong256Words }

                                                                                                  LONG256 input: an unsigned 256-bit bigint, a 0x-prefixed hex string of up to 64 digits, four little-endian words, or the egress word record.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpLong256Words.html b/docs/types/_questdb_nodejs-client.QwpLong256Words.html index b2da39c39..22a0b9dcf 100644 --- a/docs/types/_questdb_nodejs-client.QwpLong256Words.html +++ b/docs/types/_questdb_nodejs-client.QwpLong256Words.html @@ -1,2 +1,2 @@ QwpLong256Words | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpLong256Words

                                                                                                  QwpLong256Words: readonly [bigint, bigint, bigint, bigint]

                                                                                                  LONG256 little-endian words; word 0 is least significant.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpLongArrayInput.html b/docs/types/_questdb_nodejs-client.QwpLongArrayInput.html index 6464708b2..e40cc1d86 100644 --- a/docs/types/_questdb_nodejs-client.QwpLongArrayInput.html +++ b/docs/types/_questdb_nodejs-client.QwpLongArrayInput.html @@ -1,2 +1,2 @@ QwpLongArrayInput | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpLongArrayInput

                                                                                                  QwpLongArrayInput:
                                                                                                      | QwpNestedLongArray
                                                                                                      | { dimensions: readonly number[]; values: readonly (number | bigint)[] }

                                                                                                  LONG array input: nested arrays or a flat shape-and-values record.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpNegotiatedEgressCompression.html b/docs/types/_questdb_nodejs-client.QwpNegotiatedEgressCompression.html index 465971c41..c8c5c5ad5 100644 --- a/docs/types/_questdb_nodejs-client.QwpNegotiatedEgressCompression.html +++ b/docs/types/_questdb_nodejs-client.QwpNegotiatedEgressCompression.html @@ -1 +1 @@ -QwpNegotiatedEgressCompression | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpNegotiatedEgressCompression

                                                                                                  QwpNegotiatedEgressCompression:
                                                                                                      | { codec: "raw"; level: 0 }
                                                                                                      | { codec: "zstd"; level: number }
                                                                                                      | { codec: "unknown"; contentEncoding: string; level: 0 }
                                                                                                  +QwpNegotiatedEgressCompression | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpNegotiatedEgressCompression

                                                                                                  QwpNegotiatedEgressCompression:
                                                                                                      | { codec: "raw"; level: 0 }
                                                                                                      | { codec: "zstd"; level: number }
                                                                                                      | { codec: "unknown"; contentEncoding: string; level: 0 }
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpNestedLongArray.html b/docs/types/_questdb_nodejs-client.QwpNestedLongArray.html index 9ab5e55f5..c98772eb1 100644 --- a/docs/types/_questdb_nodejs-client.QwpNestedLongArray.html +++ b/docs/types/_questdb_nodejs-client.QwpNestedLongArray.html @@ -1,2 +1,2 @@ QwpNestedLongArray | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpNestedLongArray

                                                                                                  QwpNestedLongArray: readonly (number | bigint | QwpNestedLongArray)[]

                                                                                                  Nested LONG array of uniform shape.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpNestedNumberArray.html b/docs/types/_questdb_nodejs-client.QwpNestedNumberArray.html index 0a3fa51f4..8cb0ddaad 100644 --- a/docs/types/_questdb_nodejs-client.QwpNestedNumberArray.html +++ b/docs/types/_questdb_nodejs-client.QwpNestedNumberArray.html @@ -1,2 +1,2 @@ QwpNestedNumberArray | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpNestedNumberArray

                                                                                                  QwpNestedNumberArray: readonly (number | QwpNestedNumberArray)[]

                                                                                                  Nested DOUBLE array of uniform shape.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpNodeOrphanDrainEventKind.html b/docs/types/_questdb_nodejs-client.QwpNodeOrphanDrainEventKind.html index 049eaadfa..4f97bd8a6 100644 --- a/docs/types/_questdb_nodejs-client.QwpNodeOrphanDrainEventKind.html +++ b/docs/types/_questdb_nodejs-client.QwpNodeOrphanDrainEventKind.html @@ -1 +1 @@ -QwpNodeOrphanDrainEventKind | QuestDB JavaScript Client - v5.0.0
                                                                                                  +QwpNodeOrphanDrainEventKind | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpQueryCompletion.html b/docs/types/_questdb_nodejs-client.QwpQueryCompletion.html index cbeaf8712..12803efa8 100644 --- a/docs/types/_questdb_nodejs-client.QwpQueryCompletion.html +++ b/docs/types/_questdb_nodejs-client.QwpQueryCompletion.html @@ -1 +1 @@ -QwpQueryCompletion | QuestDB JavaScript Client - v5.0.0
                                                                                                  +QwpQueryCompletion | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpReconnectEventKind.html b/docs/types/_questdb_nodejs-client.QwpReconnectEventKind.html index 6f8f96367..846d19252 100644 --- a/docs/types/_questdb_nodejs-client.QwpReconnectEventKind.html +++ b/docs/types/_questdb_nodejs-client.QwpReconnectEventKind.html @@ -1 +1 @@ -QwpReconnectEventKind | QuestDB JavaScript Client - v5.0.0
                                                                                                  +QwpReconnectEventKind | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpResultBatchViewHandler.html b/docs/types/_questdb_nodejs-client.QwpResultBatchViewHandler.html index 6fa60f4c3..3e615d15f 100644 --- a/docs/types/_questdb_nodejs-client.QwpResultBatchViewHandler.html +++ b/docs/types/_questdb_nodejs-client.QwpResultBatchViewHandler.html @@ -1,3 +1,3 @@ QwpResultBatchViewHandler | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpResultBatchViewHandler

                                                                                                  QwpResultBatchViewHandler: (
                                                                                                      batch: QwpResultBatchView,
                                                                                                      query: QwpEgressViewCallbackControl,
                                                                                                  ) => void | Promise<void>

                                                                                                  Runs while one reusable batch view is valid. Do not retain the batch, columns, or raw byte slices after the callback settles.

                                                                                                  -

                                                                                                  Type declaration

                                                                                                  +

                                                                                                  Type declaration

                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpResultRowViewCallback.html b/docs/types/_questdb_nodejs-client.QwpResultRowViewCallback.html index fc6495106..28e4552c8 100644 --- a/docs/types/_questdb_nodejs-client.QwpResultRowViewCallback.html +++ b/docs/types/_questdb_nodejs-client.QwpResultRowViewCallback.html @@ -1,2 +1,2 @@ QwpResultRowViewCallback | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpResultRowViewCallback

                                                                                                  QwpResultRowViewCallback: (row: QwpResultRowView) => void

                                                                                                  Callback invoked by QwpResultBatchView.forEachRow().

                                                                                                  -

                                                                                                  Type declaration

                                                                                                  +

                                                                                                  Type declaration

                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpResultValue.html b/docs/types/_questdb_nodejs-client.QwpResultValue.html index 60e126b84..021709f8a 100644 --- a/docs/types/_questdb_nodejs-client.QwpResultValue.html +++ b/docs/types/_questdb_nodejs-client.QwpResultValue.html @@ -1 +1 @@ -QwpResultValue | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpResultValue

                                                                                                  QwpResultValue:
                                                                                                      | boolean
                                                                                                      | number
                                                                                                      | bigint
                                                                                                      | string
                                                                                                      | Uint8Array
                                                                                                      | QwpDecimalValue
                                                                                                      | QwpUuidValue
                                                                                                      | QwpLong256Value
                                                                                                      | QwpGeohashValue
                                                                                                      | QwpResultArrayValue
                                                                                                      | null
                                                                                                  +QwpResultValue | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpResultValue

                                                                                                  QwpResultValue:
                                                                                                      | boolean
                                                                                                      | number
                                                                                                      | bigint
                                                                                                      | string
                                                                                                      | Uint8Array
                                                                                                      | QwpDecimalValue
                                                                                                      | QwpUuidValue
                                                                                                      | QwpLong256Value
                                                                                                      | QwpGeohashValue
                                                                                                      | QwpResultArrayValue
                                                                                                      | null
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpSenderErrorCategory.html b/docs/types/_questdb_nodejs-client.QwpSenderErrorCategory.html index 322fb1603..380e927ce 100644 --- a/docs/types/_questdb_nodejs-client.QwpSenderErrorCategory.html +++ b/docs/types/_questdb_nodejs-client.QwpSenderErrorCategory.html @@ -1 +1 @@ -QwpSenderErrorCategory | QuestDB JavaScript Client - v5.0.0
                                                                                                  +QwpSenderErrorCategory | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpSenderErrorPolicy.html b/docs/types/_questdb_nodejs-client.QwpSenderErrorPolicy.html index eaf3ca822..db73a6245 100644 --- a/docs/types/_questdb_nodejs-client.QwpSenderErrorPolicy.html +++ b/docs/types/_questdb_nodejs-client.QwpSenderErrorPolicy.html @@ -1 +1 @@ -QwpSenderErrorPolicy | QuestDB JavaScript Client - v5.0.0
                                                                                                  +QwpSenderErrorPolicy | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpSenderLogger.html b/docs/types/_questdb_nodejs-client.QwpSenderLogger.html index 0ec934e55..6eee08964 100644 --- a/docs/types/_questdb_nodejs-client.QwpSenderLogger.html +++ b/docs/types/_questdb_nodejs-client.QwpSenderLogger.html @@ -1 +1 @@ -QwpSenderLogger | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpSenderLogger

                                                                                                  QwpSenderLogger: (
                                                                                                      level: "error" | "warn" | "info" | "debug",
                                                                                                      message: string | Error,
                                                                                                  ) => void

                                                                                                  Type declaration

                                                                                                    • (level: "error" | "warn" | "info" | "debug", message: string | Error): void
                                                                                                    • Parameters

                                                                                                      • level: "error" | "warn" | "info" | "debug"
                                                                                                      • message: string | Error

                                                                                                      Returns void

                                                                                                  +QwpSenderLogger | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpSenderLogger

                                                                                                  QwpSenderLogger: (
                                                                                                      level: "error" | "warn" | "info" | "debug",
                                                                                                      message: string | Error,
                                                                                                  ) => void

                                                                                                  Type declaration

                                                                                                    • (level: "error" | "warn" | "info" | "debug", message: string | Error): void
                                                                                                    • Parameters

                                                                                                      • level: "error" | "warn" | "info" | "debug"
                                                                                                      • message: string | Error

                                                                                                      Returns void

                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpSfBackpressurePolicy.html b/docs/types/_questdb_nodejs-client.QwpSfBackpressurePolicy.html index edd618494..9fd5828a7 100644 --- a/docs/types/_questdb_nodejs-client.QwpSfBackpressurePolicy.html +++ b/docs/types/_questdb_nodejs-client.QwpSfBackpressurePolicy.html @@ -1 +1 @@ -QwpSfBackpressurePolicy | QuestDB JavaScript Client - v5.0.0
                                                                                                  +QwpSfBackpressurePolicy | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpSfDurability.html b/docs/types/_questdb_nodejs-client.QwpSfDurability.html index 4ec2a17bb..3ef18b07c 100644 --- a/docs/types/_questdb_nodejs-client.QwpSfDurability.html +++ b/docs/types/_questdb_nodejs-client.QwpSfDurability.html @@ -1 +1 @@ -QwpSfDurability | QuestDB JavaScript Client - v5.0.0
                                                                                                  +QwpSfDurability | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpTarget.html b/docs/types/_questdb_nodejs-client.QwpTarget.html index 966bc7d25..8fb7ad23e 100644 --- a/docs/types/_questdb_nodejs-client.QwpTarget.html +++ b/docs/types/_questdb_nodejs-client.QwpTarget.html @@ -1,2 +1,2 @@ QwpTarget | QuestDB JavaScript Client - v5.0.0
                                                                                                  QwpTarget: typeof QWP_TARGET[keyof typeof QWP_TARGET]

                                                                                                  Server role a query session accepts. Defaults to any.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpTimestampUnit.html b/docs/types/_questdb_nodejs-client.QwpTimestampUnit.html index bb385a45f..5335cbb85 100644 --- a/docs/types/_questdb_nodejs-client.QwpTimestampUnit.html +++ b/docs/types/_questdb_nodejs-client.QwpTimestampUnit.html @@ -1 +1 @@ -QwpTimestampUnit | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpTimestampUnit

                                                                                                  QwpTimestampUnit: "ns" | "us" | "ms"
                                                                                                  +QwpTimestampUnit | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpTimestampUnit

                                                                                                  QwpTimestampUnit: "ns" | "us" | "ms"
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpUpgradeErrorKind.html b/docs/types/_questdb_nodejs-client.QwpUpgradeErrorKind.html index 88ab9801d..e587e1b0f 100644 --- a/docs/types/_questdb_nodejs-client.QwpUpgradeErrorKind.html +++ b/docs/types/_questdb_nodejs-client.QwpUpgradeErrorKind.html @@ -1 +1 @@ -QwpUpgradeErrorKind | QuestDB JavaScript Client - v5.0.0
                                                                                                  +QwpUpgradeErrorKind | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpUpgradeTimeoutPhase.html b/docs/types/_questdb_nodejs-client.QwpUpgradeTimeoutPhase.html index 99e6b061f..af3d9056a 100644 --- a/docs/types/_questdb_nodejs-client.QwpUpgradeTimeoutPhase.html +++ b/docs/types/_questdb_nodejs-client.QwpUpgradeTimeoutPhase.html @@ -1,2 +1,2 @@ QwpUpgradeTimeoutPhase | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpUpgradeTimeoutPhase

                                                                                                  QwpUpgradeTimeoutPhase: typeof QWP_UPGRADE_TIMEOUT_PHASE[keyof typeof QWP_UPGRADE_TIMEOUT_PHASE]

                                                                                                  Opening phase whose Node QWP deadline expired.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpUuidInput.html b/docs/types/_questdb_nodejs-client.QwpUuidInput.html index 911c8d300..a55231ef3 100644 --- a/docs/types/_questdb_nodejs-client.QwpUuidInput.html +++ b/docs/types/_questdb_nodejs-client.QwpUuidInput.html @@ -1,4 +1,4 @@ QwpUuidInput | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpUuidInput

                                                                                                  QwpUuidInput: string | Uint8Array | { high: bigint; low: bigint }

                                                                                                  UUID input: canonical text, 16 canonical (RFC 4122) big-endian bytes, or the egress limb pair. All three forms describe the same UUID; the byte form is what uuid.parse() and java.util.UUID produce, not pre-encoded wire bytes.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpWriterColumnKind.html b/docs/types/_questdb_nodejs-client.QwpWriterColumnKind.html index c7a4c465d..74dbb677a 100644 --- a/docs/types/_questdb_nodejs-client.QwpWriterColumnKind.html +++ b/docs/types/_questdb_nodejs-client.QwpWriterColumnKind.html @@ -1 +1 @@ -QwpWriterColumnKind | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpWriterColumnKind

                                                                                                  QwpWriterColumnKind:
                                                                                                      | "symbol"
                                                                                                      | "varchar"
                                                                                                      | "bool"
                                                                                                      | "byte"
                                                                                                      | "short"
                                                                                                      | "int32"
                                                                                                      | "int64"
                                                                                                      | "float32"
                                                                                                      | "float64"
                                                                                                      | "timestamp"
                                                                                                      | "date"
                                                                                                      | "char"
                                                                                                      | "binary"
                                                                                                      | "uuid"
                                                                                                      | "long256"
                                                                                                      | "ipv4"
                                                                                                      | "geohash"
                                                                                                      | "decimal64"
                                                                                                      | "decimal128"
                                                                                                      | "decimal256"
                                                                                                      | "doubleArray"
                                                                                                      | "longArray"
                                                                                                  +QwpWriterColumnKind | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpWriterColumnKind

                                                                                                  QwpWriterColumnKind:
                                                                                                      | "symbol"
                                                                                                      | "varchar"
                                                                                                      | "bool"
                                                                                                      | "byte"
                                                                                                      | "short"
                                                                                                      | "int32"
                                                                                                      | "int64"
                                                                                                      | "float32"
                                                                                                      | "float64"
                                                                                                      | "timestamp"
                                                                                                      | "date"
                                                                                                      | "char"
                                                                                                      | "binary"
                                                                                                      | "uuid"
                                                                                                      | "long256"
                                                                                                      | "ipv4"
                                                                                                      | "geohash"
                                                                                                      | "decimal64"
                                                                                                      | "decimal128"
                                                                                                      | "decimal256"
                                                                                                      | "doubleArray"
                                                                                                      | "longArray"
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpWriterRow.html b/docs/types/_questdb_nodejs-client.QwpWriterRow.html index 925692e19..7bfd6faa7 100644 --- a/docs/types/_questdb_nodejs-client.QwpWriterRow.html +++ b/docs/types/_questdb_nodejs-client.QwpWriterRow.html @@ -1,2 +1,2 @@ QwpWriterRow | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpWriterRow<Schema>

                                                                                                  QwpWriterRow: {
                                                                                                      [Key in QwpDesignatedTimestampKey<Schema>]-?: QwpWriterColumnInput<
                                                                                                          Schema[Key],
                                                                                                      >
                                                                                                  } & {
                                                                                                      [Key in QwpRegularColumnKey<Schema>]?:
                                                                                                          | QwpWriterColumnInput<Schema[Key]>
                                                                                                          | null
                                                                                                  }

                                                                                                  The object accepted by a table writer compiled from Schema.

                                                                                                  -

                                                                                                  Type Parameters

                                                                                                  +

                                                                                                  Type Parameters

                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.QwpWriterSchema.html b/docs/types/_questdb_nodejs-client.QwpWriterSchema.html index 14c4ed3d2..4a7fb9df6 100644 --- a/docs/types/_questdb_nodejs-client.QwpWriterSchema.html +++ b/docs/types/_questdb_nodejs-client.QwpWriterSchema.html @@ -1 +1 @@ -QwpWriterSchema | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpWriterSchema

                                                                                                  QwpWriterSchema: Readonly<Record<string, QwpWriterColumn<unknown, boolean>>>
                                                                                                  +QwpWriterSchema | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias QwpWriterSchema

                                                                                                  QwpWriterSchema: Readonly<Record<string, QwpWriterColumn<unknown, boolean>>>
                                                                                                  diff --git a/docs/types/_questdb_nodejs-client.TimestampUnit.html b/docs/types/_questdb_nodejs-client.TimestampUnit.html index b7186879c..4febb9880 100644 --- a/docs/types/_questdb_nodejs-client.TimestampUnit.html +++ b/docs/types/_questdb_nodejs-client.TimestampUnit.html @@ -1,2 +1,2 @@ TimestampUnit | QuestDB JavaScript Client - v5.0.0

                                                                                                  Type Alias TimestampUnit

                                                                                                  TimestampUnit: "ns" | "us" | "ms"

                                                                                                  Supported timestamp units for QuestDB operations.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_COLUMN_TYPE.html b/docs/variables/_questdb_browser-client.QWP_COLUMN_TYPE.html index 47dd64062..89babbc8a 100644 --- a/docs/variables/_questdb_browser-client.QWP_COLUMN_TYPE.html +++ b/docs/variables/_questdb_browser-client.QWP_COLUMN_TYPE.html @@ -1 +1 @@ -QWP_COLUMN_TYPE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_COLUMN_TYPEConst

                                                                                                  QWP_COLUMN_TYPE: {
                                                                                                      BINARY: 23;
                                                                                                      BOOLEAN: 1;
                                                                                                      BYTE: 2;
                                                                                                      CHAR: 22;
                                                                                                      DATE: 11;
                                                                                                      DECIMAL128: 20;
                                                                                                      DECIMAL256: 21;
                                                                                                      DECIMAL64: 19;
                                                                                                      DOUBLE: 7;
                                                                                                      DOUBLE_ARRAY: 17;
                                                                                                      FLOAT: 6;
                                                                                                      GEOHASH: 14;
                                                                                                      INT: 4;
                                                                                                      IPV4: 24;
                                                                                                      LONG: 5;
                                                                                                      LONG_ARRAY: 18;
                                                                                                      LONG256: 13;
                                                                                                      SHORT: 3;
                                                                                                      SYMBOL: 9;
                                                                                                      TIMESTAMP: 10;
                                                                                                      TIMESTAMP_NANOS: 16;
                                                                                                      UUID: 12;
                                                                                                      VARCHAR: 15;
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyBINARY: 23
                                                                                                  • ReadonlyBOOLEAN: 1
                                                                                                  • ReadonlyBYTE: 2
                                                                                                  • ReadonlyCHAR: 22
                                                                                                  • ReadonlyDATE: 11
                                                                                                  • ReadonlyDECIMAL128: 20
                                                                                                  • ReadonlyDECIMAL256: 21
                                                                                                  • ReadonlyDECIMAL64: 19
                                                                                                  • ReadonlyDOUBLE: 7
                                                                                                  • ReadonlyDOUBLE_ARRAY: 17
                                                                                                  • ReadonlyFLOAT: 6
                                                                                                  • ReadonlyGEOHASH: 14
                                                                                                  • ReadonlyINT: 4
                                                                                                  • ReadonlyIPV4: 24
                                                                                                  • ReadonlyLONG: 5
                                                                                                  • ReadonlyLONG_ARRAY: 18
                                                                                                  • ReadonlyLONG256: 13
                                                                                                  • ReadonlySHORT: 3
                                                                                                  • ReadonlySYMBOL: 9
                                                                                                  • ReadonlyTIMESTAMP: 10
                                                                                                  • ReadonlyTIMESTAMP_NANOS: 16
                                                                                                  • ReadonlyUUID: 12
                                                                                                  • ReadonlyVARCHAR: 15
                                                                                                  +QWP_COLUMN_TYPE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_COLUMN_TYPEConst

                                                                                                  QWP_COLUMN_TYPE: {
                                                                                                      BINARY: 23;
                                                                                                      BOOLEAN: 1;
                                                                                                      BYTE: 2;
                                                                                                      CHAR: 22;
                                                                                                      DATE: 11;
                                                                                                      DECIMAL128: 20;
                                                                                                      DECIMAL256: 21;
                                                                                                      DECIMAL64: 19;
                                                                                                      DOUBLE: 7;
                                                                                                      DOUBLE_ARRAY: 17;
                                                                                                      FLOAT: 6;
                                                                                                      GEOHASH: 14;
                                                                                                      INT: 4;
                                                                                                      IPV4: 24;
                                                                                                      LONG: 5;
                                                                                                      LONG_ARRAY: 18;
                                                                                                      LONG256: 13;
                                                                                                      SHORT: 3;
                                                                                                      SYMBOL: 9;
                                                                                                      TIMESTAMP: 10;
                                                                                                      TIMESTAMP_NANOS: 16;
                                                                                                      UUID: 12;
                                                                                                      VARCHAR: 15;
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyBINARY: 23
                                                                                                  • ReadonlyBOOLEAN: 1
                                                                                                  • ReadonlyBYTE: 2
                                                                                                  • ReadonlyCHAR: 22
                                                                                                  • ReadonlyDATE: 11
                                                                                                  • ReadonlyDECIMAL128: 20
                                                                                                  • ReadonlyDECIMAL256: 21
                                                                                                  • ReadonlyDECIMAL64: 19
                                                                                                  • ReadonlyDOUBLE: 7
                                                                                                  • ReadonlyDOUBLE_ARRAY: 17
                                                                                                  • ReadonlyFLOAT: 6
                                                                                                  • ReadonlyGEOHASH: 14
                                                                                                  • ReadonlyINT: 4
                                                                                                  • ReadonlyIPV4: 24
                                                                                                  • ReadonlyLONG: 5
                                                                                                  • ReadonlyLONG_ARRAY: 18
                                                                                                  • ReadonlyLONG256: 13
                                                                                                  • ReadonlySHORT: 3
                                                                                                  • ReadonlySYMBOL: 9
                                                                                                  • ReadonlyTIMESTAMP: 10
                                                                                                  • ReadonlyTIMESTAMP_NANOS: 16
                                                                                                  • ReadonlyUUID: 12
                                                                                                  • ReadonlyVARCHAR: 15
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_COMPRESSION_CODEC.html b/docs/variables/_questdb_browser-client.QWP_COMPRESSION_CODEC.html index 12628cbf6..e1e2b0330 100644 --- a/docs/variables/_questdb_browser-client.QWP_COMPRESSION_CODEC.html +++ b/docs/variables/_questdb_browser-client.QWP_COMPRESSION_CODEC.html @@ -1 +1 @@ -QWP_COMPRESSION_CODEC | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_COMPRESSION_CODECConst

                                                                                                  QWP_COMPRESSION_CODEC: { RAW: 0; ZSTD: 1 } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyRAW: 0
                                                                                                  • ReadonlyZSTD: 1
                                                                                                  +QWP_COMPRESSION_CODEC | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_COMPRESSION_CODECConst

                                                                                                  QWP_COMPRESSION_CODEC: { RAW: 0; ZSTD: 1 } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyRAW: 0
                                                                                                  • ReadonlyZSTD: 1
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_DECIMAL_MAX_SCALE.html b/docs/variables/_questdb_browser-client.QWP_DECIMAL_MAX_SCALE.html index a9e74478a..09ed0f318 100644 --- a/docs/variables/_questdb_browser-client.QWP_DECIMAL_MAX_SCALE.html +++ b/docs/variables/_questdb_browser-client.QWP_DECIMAL_MAX_SCALE.html @@ -1,2 +1,2 @@ QWP_DECIMAL_MAX_SCALE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_DECIMAL_MAX_SCALEConst

                                                                                                  QWP_DECIMAL_MAX_SCALE: { decimal128: 38; decimal256: 76; decimal64: 18 } = ...

                                                                                                  Maximum DECIMAL scale of each fixed-width decimal column type.

                                                                                                  -

                                                                                                  Type declaration

                                                                                                  • Readonlydecimal128: 38
                                                                                                  • Readonlydecimal256: 76
                                                                                                  • Readonlydecimal64: 18
                                                                                                  +

                                                                                                  Type declaration

                                                                                                  • Readonlydecimal128: 38
                                                                                                  • Readonlydecimal256: 76
                                                                                                  • Readonlydecimal64: 18
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_DEFAULT_EGRESS_BUFFER_POOL_SIZE.html b/docs/variables/_questdb_browser-client.QWP_DEFAULT_EGRESS_BUFFER_POOL_SIZE.html index 8efc98564..a4dffb6a1 100644 --- a/docs/variables/_questdb_browser-client.QWP_DEFAULT_EGRESS_BUFFER_POOL_SIZE.html +++ b/docs/variables/_questdb_browser-client.QWP_DEFAULT_EGRESS_BUFFER_POOL_SIZE.html @@ -1,2 +1,2 @@ QWP_DEFAULT_EGRESS_BUFFER_POOL_SIZE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_DEFAULT_EGRESS_BUFFER_POOL_SIZEConst

                                                                                                  QWP_DEFAULT_EGRESS_BUFFER_POOL_SIZE: 4

                                                                                                  Default decoded result-buffer pool depth, matching the Java client.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_DEFAULT_EGRESS_INITIAL_CREDIT.html b/docs/variables/_questdb_browser-client.QWP_DEFAULT_EGRESS_INITIAL_CREDIT.html index 386aa35c6..4d2785c0f 100644 --- a/docs/variables/_questdb_browser-client.QWP_DEFAULT_EGRESS_INITIAL_CREDIT.html +++ b/docs/variables/_questdb_browser-client.QWP_DEFAULT_EGRESS_INITIAL_CREDIT.html @@ -1,2 +1,2 @@ QWP_DEFAULT_EGRESS_INITIAL_CREDIT | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_DEFAULT_EGRESS_INITIAL_CREDITConst

                                                                                                  QWP_DEFAULT_EGRESS_INITIAL_CREDIT: 0

                                                                                                  Default send-ahead credit used by Java and TypeScript: zero is unbounded.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_DEFAULT_EGRESS_SERVER_INFO_TIMEOUT_MS.html b/docs/variables/_questdb_browser-client.QWP_DEFAULT_EGRESS_SERVER_INFO_TIMEOUT_MS.html index 0949e1077..55e3e5aaf 100644 --- a/docs/variables/_questdb_browser-client.QWP_DEFAULT_EGRESS_SERVER_INFO_TIMEOUT_MS.html +++ b/docs/variables/_questdb_browser-client.QWP_DEFAULT_EGRESS_SERVER_INFO_TIMEOUT_MS.html @@ -1,2 +1,2 @@ QWP_DEFAULT_EGRESS_SERVER_INFO_TIMEOUT_MS | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_DEFAULT_EGRESS_SERVER_INFO_TIMEOUT_MSConst

                                                                                                  QWP_DEFAULT_EGRESS_SERVER_INFO_TIMEOUT_MS: 5000 = 5_000

                                                                                                  Default wait for the initial or reconnected SERVER_INFO frame.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_DURABLE_ACK_WEBSOCKET_PROTOCOL.html b/docs/variables/_questdb_browser-client.QWP_DURABLE_ACK_WEBSOCKET_PROTOCOL.html index 4e2383a97..f29fc6b8d 100644 --- a/docs/variables/_questdb_browser-client.QWP_DURABLE_ACK_WEBSOCKET_PROTOCOL.html +++ b/docs/variables/_questdb_browser-client.QWP_DURABLE_ACK_WEBSOCKET_PROTOCOL.html @@ -1,3 +1,3 @@ QWP_DURABLE_ACK_WEBSOCKET_PROTOCOL | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_DURABLE_ACK_WEBSOCKET_PROTOCOLConst

                                                                                                  QWP_DURABLE_ACK_WEBSOCKET_PROTOCOL: "questdb.qwp.durable-ack.v1"

                                                                                                  Browser-visible WebSocket subprotocol used to request and confirm durable ingress acknowledgements. Browsers cannot set or inspect X-QWP-* headers.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_EGRESS_CAPABILITY.html b/docs/variables/_questdb_browser-client.QWP_EGRESS_CAPABILITY.html index cea8cae63..7557c6991 100644 --- a/docs/variables/_questdb_browser-client.QWP_EGRESS_CAPABILITY.html +++ b/docs/variables/_questdb_browser-client.QWP_EGRESS_CAPABILITY.html @@ -1 +1,4 @@ -QWP_EGRESS_CAPABILITY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_EGRESS_CAPABILITYConst

                                                                                                  QWP_EGRESS_CAPABILITY: { COMPRESSION: 4; QUERY_FLAGS: 2; ZONE: 1 } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyCOMPRESSION: 4
                                                                                                  • ReadonlyQUERY_FLAGS: 2
                                                                                                  • ReadonlyZONE: 1
                                                                                                  +QWP_EGRESS_CAPABILITY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_EGRESS_CAPABILITYConst

                                                                                                  QWP_EGRESS_CAPABILITY: {
                                                                                                      COMPRESSION: 4;
                                                                                                      QUERY_DETAILS: 16;
                                                                                                      QUERY_FLAGS: 2;
                                                                                                      ZONE: 1;
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyCOMPRESSION: 4
                                                                                                  • ReadonlyQUERY_DETAILS: 16

                                                                                                    The server honours the query-details bits of query_flags: error +positions, execution statistics, row counts and row windows. A server +without it ignores those bits and answers with the baseline frames.

                                                                                                    +
                                                                                                  • ReadonlyQUERY_FLAGS: 2
                                                                                                  • ReadonlyZONE: 1
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_EGRESS_MESSAGE.html b/docs/variables/_questdb_browser-client.QWP_EGRESS_MESSAGE.html index fb2c74363..78f49cc44 100644 --- a/docs/variables/_questdb_browser-client.QWP_EGRESS_MESSAGE.html +++ b/docs/variables/_questdb_browser-client.QWP_EGRESS_MESSAGE.html @@ -1 +1 @@ -QWP_EGRESS_MESSAGE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_EGRESS_MESSAGEConst

                                                                                                  QWP_EGRESS_MESSAGE: {
                                                                                                      CACHE_RESET: 23;
                                                                                                      CANCEL: 20;
                                                                                                      CREDIT: 21;
                                                                                                      EXEC_DONE: 22;
                                                                                                      QUERY_ERROR: 19;
                                                                                                      QUERY_REQUEST: 16;
                                                                                                      RESULT_BATCH: 17;
                                                                                                      RESULT_END: 18;
                                                                                                      SERVER_INFO: 24;
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyCACHE_RESET: 23
                                                                                                  • ReadonlyCANCEL: 20
                                                                                                  • ReadonlyCREDIT: 21
                                                                                                  • ReadonlyEXEC_DONE: 22
                                                                                                  • ReadonlyQUERY_ERROR: 19
                                                                                                  • ReadonlyQUERY_REQUEST: 16
                                                                                                  • ReadonlyRESULT_BATCH: 17
                                                                                                  • ReadonlyRESULT_END: 18
                                                                                                  • ReadonlySERVER_INFO: 24
                                                                                                  +QWP_EGRESS_MESSAGE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_EGRESS_MESSAGEConst

                                                                                                  QWP_EGRESS_MESSAGE: {
                                                                                                      CACHE_RESET: 23;
                                                                                                      CANCEL: 20;
                                                                                                      CREDIT: 21;
                                                                                                      EXEC_DONE: 22;
                                                                                                      QUERY_ERROR: 19;
                                                                                                      QUERY_REQUEST: 16;
                                                                                                      RESULT_BATCH: 17;
                                                                                                      RESULT_END: 18;
                                                                                                      SERVER_INFO: 24;
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyCACHE_RESET: 23
                                                                                                  • ReadonlyCANCEL: 20
                                                                                                  • ReadonlyCREDIT: 21
                                                                                                  • ReadonlyEXEC_DONE: 22
                                                                                                  • ReadonlyQUERY_ERROR: 19
                                                                                                  • ReadonlyQUERY_REQUEST: 16
                                                                                                  • ReadonlyRESULT_BATCH: 17
                                                                                                  • ReadonlyRESULT_END: 18
                                                                                                  • ReadonlySERVER_INFO: 24
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_EGRESS_PATH.html b/docs/variables/_questdb_browser-client.QWP_EGRESS_PATH.html index f9018f2e2..5b405db37 100644 --- a/docs/variables/_questdb_browser-client.QWP_EGRESS_PATH.html +++ b/docs/variables/_questdb_browser-client.QWP_EGRESS_PATH.html @@ -1 +1 @@ -QWP_EGRESS_PATH | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_EGRESS_PATHConst

                                                                                                  QWP_EGRESS_PATH: "/read/v1"
                                                                                                  +QWP_EGRESS_PATH | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_EGRESS_PATHConst

                                                                                                  QWP_EGRESS_PATH: "/read/v1"
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_ENCODING_GORILLA.html b/docs/variables/_questdb_browser-client.QWP_ENCODING_GORILLA.html index 3ccb0c235..a13f9f1e0 100644 --- a/docs/variables/_questdb_browser-client.QWP_ENCODING_GORILLA.html +++ b/docs/variables/_questdb_browser-client.QWP_ENCODING_GORILLA.html @@ -1 +1 @@ -QWP_ENCODING_GORILLA | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_ENCODING_GORILLAConst

                                                                                                  QWP_ENCODING_GORILLA: 1 = 0x01
                                                                                                  +QWP_ENCODING_GORILLA | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_ENCODING_GORILLAConst

                                                                                                  QWP_ENCODING_GORILLA: 1 = 0x01
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_ENCODING_UNCOMPRESSED.html b/docs/variables/_questdb_browser-client.QWP_ENCODING_UNCOMPRESSED.html index f4d0acbf1..52228cb56 100644 --- a/docs/variables/_questdb_browser-client.QWP_ENCODING_UNCOMPRESSED.html +++ b/docs/variables/_questdb_browser-client.QWP_ENCODING_UNCOMPRESSED.html @@ -1 +1 @@ -QWP_ENCODING_UNCOMPRESSED | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_ENCODING_UNCOMPRESSEDConst

                                                                                                  QWP_ENCODING_UNCOMPRESSED: 0 = 0x00
                                                                                                  +QWP_ENCODING_UNCOMPRESSED | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_ENCODING_UNCOMPRESSEDConst

                                                                                                  QWP_ENCODING_UNCOMPRESSED: 0 = 0x00
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_FLAG_DEFER_COMMIT.html b/docs/variables/_questdb_browser-client.QWP_FLAG_DEFER_COMMIT.html index faca68963..233e96f1e 100644 --- a/docs/variables/_questdb_browser-client.QWP_FLAG_DEFER_COMMIT.html +++ b/docs/variables/_questdb_browser-client.QWP_FLAG_DEFER_COMMIT.html @@ -1 +1 @@ -QWP_FLAG_DEFER_COMMIT | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_FLAG_DEFER_COMMITConst

                                                                                                  QWP_FLAG_DEFER_COMMIT: 1 = 0x01
                                                                                                  +QWP_FLAG_DEFER_COMMIT | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_FLAG_DEFER_COMMITConst

                                                                                                  QWP_FLAG_DEFER_COMMIT: 1 = 0x01
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_FLAG_DELTA_SYMBOL_DICTIONARY.html b/docs/variables/_questdb_browser-client.QWP_FLAG_DELTA_SYMBOL_DICTIONARY.html index 831b38c02..d7c3f24e3 100644 --- a/docs/variables/_questdb_browser-client.QWP_FLAG_DELTA_SYMBOL_DICTIONARY.html +++ b/docs/variables/_questdb_browser-client.QWP_FLAG_DELTA_SYMBOL_DICTIONARY.html @@ -1 +1 @@ -QWP_FLAG_DELTA_SYMBOL_DICTIONARY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_FLAG_DELTA_SYMBOL_DICTIONARYConst

                                                                                                  QWP_FLAG_DELTA_SYMBOL_DICTIONARY: 8 = 0x08
                                                                                                  +QWP_FLAG_DELTA_SYMBOL_DICTIONARY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_FLAG_DELTA_SYMBOL_DICTIONARYConst

                                                                                                  QWP_FLAG_DELTA_SYMBOL_DICTIONARY: 8 = 0x08
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_FLAG_DURABLE_ACK_POLL.html b/docs/variables/_questdb_browser-client.QWP_FLAG_DURABLE_ACK_POLL.html index 32a32d87c..87c407d0c 100644 --- a/docs/variables/_questdb_browser-client.QWP_FLAG_DURABLE_ACK_POLL.html +++ b/docs/variables/_questdb_browser-client.QWP_FLAG_DURABLE_ACK_POLL.html @@ -1,2 +1,2 @@ QWP_FLAG_DURABLE_ACK_POLL | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_FLAG_DURABLE_ACK_POLLConst

                                                                                                  QWP_FLAG_DURABLE_ACK_POLL: 2 = 0x02

                                                                                                  Table-less ingress control frame that polls negotiated durable-ACK progress.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_FLAG_GORILLA.html b/docs/variables/_questdb_browser-client.QWP_FLAG_GORILLA.html index 6d3c95725..8fcd3b5c8 100644 --- a/docs/variables/_questdb_browser-client.QWP_FLAG_GORILLA.html +++ b/docs/variables/_questdb_browser-client.QWP_FLAG_GORILLA.html @@ -1 +1 @@ -QWP_FLAG_GORILLA | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_FLAG_GORILLAConst

                                                                                                  QWP_FLAG_GORILLA: 4 = 0x04
                                                                                                  +QWP_FLAG_GORILLA | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_FLAG_GORILLAConst

                                                                                                  QWP_FLAG_GORILLA: 4 = 0x04
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_FLAG_ZSTD.html b/docs/variables/_questdb_browser-client.QWP_FLAG_ZSTD.html index 9200e0f69..0d46cf8e6 100644 --- a/docs/variables/_questdb_browser-client.QWP_FLAG_ZSTD.html +++ b/docs/variables/_questdb_browser-client.QWP_FLAG_ZSTD.html @@ -1 +1 @@ -QWP_FLAG_ZSTD | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_FLAG_ZSTDConst

                                                                                                  QWP_FLAG_ZSTD: 16 = 0x10
                                                                                                  +QWP_FLAG_ZSTD | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_FLAG_ZSTDConst

                                                                                                  QWP_FLAG_ZSTD: 16 = 0x10
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_HEADER_SIZE.html b/docs/variables/_questdb_browser-client.QWP_HEADER_SIZE.html index 53ef29452..e46dfdcc9 100644 --- a/docs/variables/_questdb_browser-client.QWP_HEADER_SIZE.html +++ b/docs/variables/_questdb_browser-client.QWP_HEADER_SIZE.html @@ -1 +1 @@ -QWP_HEADER_SIZE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_HEADER_SIZEConst

                                                                                                  QWP_HEADER_SIZE: 12
                                                                                                  +QWP_HEADER_SIZE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_HEADER_SIZEConst

                                                                                                  QWP_HEADER_SIZE: 12
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_INGRESS_PATH.html b/docs/variables/_questdb_browser-client.QWP_INGRESS_PATH.html index fbd222f1f..8b46b876a 100644 --- a/docs/variables/_questdb_browser-client.QWP_INGRESS_PATH.html +++ b/docs/variables/_questdb_browser-client.QWP_INGRESS_PATH.html @@ -1 +1 @@ -QWP_INGRESS_PATH | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_INGRESS_PATHConst

                                                                                                  QWP_INGRESS_PATH: "/write/v4"
                                                                                                  +QWP_INGRESS_PATH | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_INGRESS_PATHConst

                                                                                                  QWP_INGRESS_PATH: "/write/v4"
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_INGRESS_PROGRESS_KIND.html b/docs/variables/_questdb_browser-client.QWP_INGRESS_PROGRESS_KIND.html index ed013dc79..20ce2d62e 100644 --- a/docs/variables/_questdb_browser-client.QWP_INGRESS_PROGRESS_KIND.html +++ b/docs/variables/_questdb_browser-client.QWP_INGRESS_PROGRESS_KIND.html @@ -1 +1 @@ -QWP_INGRESS_PROGRESS_KIND | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_INGRESS_PROGRESS_KINDConst

                                                                                                  QWP_INGRESS_PROGRESS_KIND: {
                                                                                                      ACKNOWLEDGED: "acknowledged";
                                                                                                      DURABLE_ACKNOWLEDGED: "durable-acknowledged";
                                                                                                      PUBLISHED: "published";
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyACKNOWLEDGED: "acknowledged"
                                                                                                  • ReadonlyDURABLE_ACKNOWLEDGED: "durable-acknowledged"
                                                                                                  • ReadonlyPUBLISHED: "published"
                                                                                                  +QWP_INGRESS_PROGRESS_KIND | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_INGRESS_PROGRESS_KINDConst

                                                                                                  QWP_INGRESS_PROGRESS_KIND: {
                                                                                                      ACKNOWLEDGED: "acknowledged";
                                                                                                      DURABLE_ACKNOWLEDGED: "durable-acknowledged";
                                                                                                      PUBLISHED: "published";
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyACKNOWLEDGED: "acknowledged"
                                                                                                  • ReadonlyDURABLE_ACKNOWLEDGED: "durable-acknowledged"
                                                                                                  • ReadonlyPUBLISHED: "published"
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_INGRESS_SERVER_INFO_CAPABILITY.html b/docs/variables/_questdb_browser-client.QWP_INGRESS_SERVER_INFO_CAPABILITY.html index bf7077da3..bc52d5a66 100644 --- a/docs/variables/_questdb_browser-client.QWP_INGRESS_SERVER_INFO_CAPABILITY.html +++ b/docs/variables/_questdb_browser-client.QWP_INGRESS_SERVER_INFO_CAPABILITY.html @@ -6,4 +6,4 @@ connection when it offered a subprotocol and the 101 names none. The server therefore echoes the subprotocol whenever it was offered -- confirming only that it speaks the browser negotiation -- and reports the capability here.

                                                                                                  -

                                                                                                  Type declaration

                                                                                                  • ReadonlyDURABLE_ACK: 1
                                                                                                  +

                                                                                                  Type declaration

                                                                                                  • ReadonlyDURABLE_ACK: 1
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_INITIAL_CONNECT_MODE.html b/docs/variables/_questdb_browser-client.QWP_INITIAL_CONNECT_MODE.html index 0fc585b01..0cc9d06e7 100644 --- a/docs/variables/_questdb_browser-client.QWP_INITIAL_CONNECT_MODE.html +++ b/docs/variables/_questdb_browser-client.QWP_INITIAL_CONNECT_MODE.html @@ -5,4 +5,4 @@

                                                                                                  Type declaration

                                                                                                  • ReadonlyASYNC: "async"

                                                                                                    Return immediately and connect on the background replay loop.

                                                                                                  • ReadonlyOFF: "off"

                                                                                                    Try once on the caller and fail immediately.

                                                                                                  • ReadonlySYNC: "sync"

                                                                                                    Retry on the caller until reconnectMaxDurationMs elapses.

                                                                                                    -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_MAGIC.html b/docs/variables/_questdb_browser-client.QWP_MAGIC.html index e0084ed0f..5f52fe597 100644 --- a/docs/variables/_questdb_browser-client.QWP_MAGIC.html +++ b/docs/variables/_questdb_browser-client.QWP_MAGIC.html @@ -1,2 +1,2 @@ QWP_MAGIC | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAGICConst

                                                                                                  QWP_MAGIC: 827348817 = 0x31505751

                                                                                                  ASCII QWP1, represented as its little-endian uint32 value.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_MAX_ARRAY_DIMENSIONS.html b/docs/variables/_questdb_browser-client.QWP_MAX_ARRAY_DIMENSIONS.html index b563c66d4..79464e2f2 100644 --- a/docs/variables/_questdb_browser-client.QWP_MAX_ARRAY_DIMENSIONS.html +++ b/docs/variables/_questdb_browser-client.QWP_MAX_ARRAY_DIMENSIONS.html @@ -1,2 +1,2 @@ QWP_MAX_ARRAY_DIMENSIONS | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_ARRAY_DIMENSIONSConst

                                                                                                  QWP_MAX_ARRAY_DIMENSIONS: 32

                                                                                                  Maximum array rank accepted by QuestDB's QWP ingress decoder.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_MAX_ARRAY_DIMENSION_LENGTH.html b/docs/variables/_questdb_browser-client.QWP_MAX_ARRAY_DIMENSION_LENGTH.html index 4e43f4176..a17438ec8 100644 --- a/docs/variables/_questdb_browser-client.QWP_MAX_ARRAY_DIMENSION_LENGTH.html +++ b/docs/variables/_questdb_browser-client.QWP_MAX_ARRAY_DIMENSION_LENGTH.html @@ -6,4 +6,4 @@ so neither the batch byte cap nor the row cap contains it. The frame is published, the server rejects the whole batch, and the rows are lost; the axis is therefore bounded before it is staged.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_MAX_BATCH_ROWS_UPPER_BOUND.html b/docs/variables/_questdb_browser-client.QWP_MAX_BATCH_ROWS_UPPER_BOUND.html index 913a669e4..27e95f157 100644 --- a/docs/variables/_questdb_browser-client.QWP_MAX_BATCH_ROWS_UPPER_BOUND.html +++ b/docs/variables/_questdb_browser-client.QWP_MAX_BATCH_ROWS_UPPER_BOUND.html @@ -1,2 +1,2 @@ QWP_MAX_BATCH_ROWS_UPPER_BOUND | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_BATCH_ROWS_UPPER_BOUNDConst

                                                                                                  QWP_MAX_BATCH_ROWS_UPPER_BOUND: 1048576 = 1_048_576

                                                                                                  Largest client-requested egress RESULT_BATCH row cap.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_MAX_CELLS_PER_BATCH.html b/docs/variables/_questdb_browser-client.QWP_MAX_CELLS_PER_BATCH.html index b1ac38aeb..6f6fe24a3 100644 --- a/docs/variables/_questdb_browser-client.QWP_MAX_CELLS_PER_BATCH.html +++ b/docs/variables/_questdb_browser-client.QWP_MAX_CELLS_PER_BATCH.html @@ -10,4 +10,4 @@

                                                                                                  32Mi cells is roughly 512 MB decoded. That is far above any plausible result -- the widest supported table at 16k rows, or a full 1,048,576-row batch at 32 columns -- and far below what the caps alone would permit.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_MAX_COLUMNS_PER_TABLE.html b/docs/variables/_questdb_browser-client.QWP_MAX_COLUMNS_PER_TABLE.html index d5a828630..e915247a5 100644 --- a/docs/variables/_questdb_browser-client.QWP_MAX_COLUMNS_PER_TABLE.html +++ b/docs/variables/_questdb_browser-client.QWP_MAX_COLUMNS_PER_TABLE.html @@ -1 +1 @@ -QWP_MAX_COLUMNS_PER_TABLE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_COLUMNS_PER_TABLEConst

                                                                                                  QWP_MAX_COLUMNS_PER_TABLE: 2048
                                                                                                  +QWP_MAX_COLUMNS_PER_TABLE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_COLUMNS_PER_TABLEConst

                                                                                                  QWP_MAX_COLUMNS_PER_TABLE: 2048
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_MAX_COLUMN_NAME_LENGTH.html b/docs/variables/_questdb_browser-client.QWP_MAX_COLUMN_NAME_LENGTH.html index 015bf4b6c..53e13154f 100644 --- a/docs/variables/_questdb_browser-client.QWP_MAX_COLUMN_NAME_LENGTH.html +++ b/docs/variables/_questdb_browser-client.QWP_MAX_COLUMN_NAME_LENGTH.html @@ -1,2 +1,2 @@ QWP_MAX_COLUMN_NAME_LENGTH | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_COLUMN_NAME_LENGTHConst

                                                                                                  QWP_MAX_COLUMN_NAME_LENGTH: 127

                                                                                                  Default QWP ingress identifier limits, in UTF-8 wire bytes.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_MAX_IDENTIFIER_BYTES.html b/docs/variables/_questdb_browser-client.QWP_MAX_IDENTIFIER_BYTES.html index 31f6a6f30..e49e45d4f 100644 --- a/docs/variables/_questdb_browser-client.QWP_MAX_IDENTIFIER_BYTES.html +++ b/docs/variables/_questdb_browser-client.QWP_MAX_IDENTIFIER_BYTES.html @@ -3,4 +3,4 @@ 127-UTF-16-code-unit metadata limit. One code unit takes at most three UTF-8 bytes, so query decoding accepts that larger representation even though QWP ingress enforces its 127-byte protocol limit.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_MAX_ROWS_PER_TABLE.html b/docs/variables/_questdb_browser-client.QWP_MAX_ROWS_PER_TABLE.html index a419aa101..0adc1f7ae 100644 --- a/docs/variables/_questdb_browser-client.QWP_MAX_ROWS_PER_TABLE.html +++ b/docs/variables/_questdb_browser-client.QWP_MAX_ROWS_PER_TABLE.html @@ -1 +1 @@ -QWP_MAX_ROWS_PER_TABLE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_ROWS_PER_TABLEConst

                                                                                                  QWP_MAX_ROWS_PER_TABLE: 1000000 = 1_000_000
                                                                                                  +QWP_MAX_ROWS_PER_TABLE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_ROWS_PER_TABLEConst

                                                                                                  QWP_MAX_ROWS_PER_TABLE: 1000000 = 1_000_000
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_MAX_SYMBOL_DICTIONARY_SIZE.html b/docs/variables/_questdb_browser-client.QWP_MAX_SYMBOL_DICTIONARY_SIZE.html index d9e3def54..0cd46c779 100644 --- a/docs/variables/_questdb_browser-client.QWP_MAX_SYMBOL_DICTIONARY_SIZE.html +++ b/docs/variables/_questdb_browser-client.QWP_MAX_SYMBOL_DICTIONARY_SIZE.html @@ -1 +1 @@ -QWP_MAX_SYMBOL_DICTIONARY_SIZE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_SYMBOL_DICTIONARY_SIZEConst

                                                                                                  QWP_MAX_SYMBOL_DICTIONARY_SIZE: 2000000 = 2_000_000
                                                                                                  +QWP_MAX_SYMBOL_DICTIONARY_SIZE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_SYMBOL_DICTIONARY_SIZEConst

                                                                                                  QWP_MAX_SYMBOL_DICTIONARY_SIZE: 2000000 = 2_000_000
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_MAX_TABLES_PER_FRAME.html b/docs/variables/_questdb_browser-client.QWP_MAX_TABLES_PER_FRAME.html index d76871880..467108345 100644 --- a/docs/variables/_questdb_browser-client.QWP_MAX_TABLES_PER_FRAME.html +++ b/docs/variables/_questdb_browser-client.QWP_MAX_TABLES_PER_FRAME.html @@ -1,2 +1,2 @@ QWP_MAX_TABLES_PER_FRAME | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_TABLES_PER_FRAMEConst

                                                                                                  QWP_MAX_TABLES_PER_FRAME: 65535 = 0xffff

                                                                                                  Maximum table count representable by the ingress frame's uint16 header.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_MAX_TABLE_NAME_LENGTH.html b/docs/variables/_questdb_browser-client.QWP_MAX_TABLE_NAME_LENGTH.html index 55aa95863..7c02b868b 100644 --- a/docs/variables/_questdb_browser-client.QWP_MAX_TABLE_NAME_LENGTH.html +++ b/docs/variables/_questdb_browser-client.QWP_MAX_TABLE_NAME_LENGTH.html @@ -1 +1 @@ -QWP_MAX_TABLE_NAME_LENGTH | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_TABLE_NAME_LENGTHConst

                                                                                                  QWP_MAX_TABLE_NAME_LENGTH: 127
                                                                                                  +QWP_MAX_TABLE_NAME_LENGTH | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_TABLE_NAME_LENGTHConst

                                                                                                  QWP_MAX_TABLE_NAME_LENGTH: 127
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_MAX_ZSTD_DECOMPRESSED_SIZE.html b/docs/variables/_questdb_browser-client.QWP_MAX_ZSTD_DECOMPRESSED_SIZE.html index 2e9923e82..d3c7ad9a6 100644 --- a/docs/variables/_questdb_browser-client.QWP_MAX_ZSTD_DECOMPRESSED_SIZE.html +++ b/docs/variables/_questdb_browser-client.QWP_MAX_ZSTD_DECOMPRESSED_SIZE.html @@ -1,2 +1,2 @@ QWP_MAX_ZSTD_DECOMPRESSED_SIZE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_ZSTD_DECOMPRESSED_SIZEConst

                                                                                                  QWP_MAX_ZSTD_DECOMPRESSED_SIZE: number = ...

                                                                                                  Matches the Java client's per-connection decompression safety cap.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_QUERY_FLAG_COUNT_ROWS.html b/docs/variables/_questdb_browser-client.QWP_QUERY_FLAG_COUNT_ROWS.html new file mode 100644 index 000000000..121a2543b --- /dev/null +++ b/docs/variables/_questdb_browser-client.QWP_QUERY_FLAG_COUNT_ROWS.html @@ -0,0 +1,4 @@ +QWP_QUERY_FLAG_COUNT_ROWS | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_QUERY_FLAG_COUNT_ROWSConst

                                                                                                  QWP_QUERY_FLAG_COUNT_ROWS: 16 = 0x10

                                                                                                  query_flags bit: RESULT_END carries row_count:varint after total_rows, +the number of rows in the whole result set, whatever the row window leaves +out of the stream.

                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_QUERY_FLAG_ERROR_POSITION.html b/docs/variables/_questdb_browser-client.QWP_QUERY_FLAG_ERROR_POSITION.html new file mode 100644 index 000000000..826f2690e --- /dev/null +++ b/docs/variables/_questdb_browser-client.QWP_QUERY_FLAG_ERROR_POSITION.html @@ -0,0 +1,5 @@ +QWP_QUERY_FLAG_ERROR_POSITION | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_QUERY_FLAG_ERROR_POSITIONConst

                                                                                                  QWP_QUERY_FLAG_ERROR_POSITION: 4 = 0x04

                                                                                                  query_flags bit: QUERY_ERROR carries the bare message, without the [n] +prefix of the baseline frame, and ends with position:i32, the UTF-16 +offset into the SQL text the error points at, or -1. A request the server +rejects before reading its flags is still answered with the baseline frame.

                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_QUERY_FLAG_MAX_ROWS.html b/docs/variables/_questdb_browser-client.QWP_QUERY_FLAG_MAX_ROWS.html new file mode 100644 index 000000000..c5260f425 --- /dev/null +++ b/docs/variables/_questdb_browser-client.QWP_QUERY_FLAG_MAX_ROWS.html @@ -0,0 +1,4 @@ +QWP_QUERY_FLAG_MAX_ROWS | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_QUERY_FLAG_MAX_ROWSConst

                                                                                                  QWP_QUERY_FLAG_MAX_ROWS: 64 = 0x40

                                                                                                  query_flags bit: QUERY_REQUEST carries max_rows:varint, the most rows to +stream, after query_flags and after skip_rows when +QWP_QUERY_FLAG_SKIP_ROWS is set too. Zero streams only the schema.

                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_QUERY_FLAG_RESET_DICTIONARY.html b/docs/variables/_questdb_browser-client.QWP_QUERY_FLAG_RESET_DICTIONARY.html index c8a7d6219..6939dba17 100644 --- a/docs/variables/_questdb_browser-client.QWP_QUERY_FLAG_RESET_DICTIONARY.html +++ b/docs/variables/_questdb_browser-client.QWP_QUERY_FLAG_RESET_DICTIONARY.html @@ -1 +1 @@ -QWP_QUERY_FLAG_RESET_DICTIONARY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_QUERY_FLAG_RESET_DICTIONARYConst

                                                                                                  QWP_QUERY_FLAG_RESET_DICTIONARY: 1 = 0x01
                                                                                                  +QWP_QUERY_FLAG_RESET_DICTIONARY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_QUERY_FLAG_RESET_DICTIONARYConst

                                                                                                  QWP_QUERY_FLAG_RESET_DICTIONARY: 1 = 0x01
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_QUERY_FLAG_SKIP_ROWS.html b/docs/variables/_questdb_browser-client.QWP_QUERY_FLAG_SKIP_ROWS.html new file mode 100644 index 000000000..e55ee650b --- /dev/null +++ b/docs/variables/_questdb_browser-client.QWP_QUERY_FLAG_SKIP_ROWS.html @@ -0,0 +1,3 @@ +QWP_QUERY_FLAG_SKIP_ROWS | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_QUERY_FLAG_SKIP_ROWSConst

                                                                                                  QWP_QUERY_FLAG_SKIP_ROWS: 32 = 0x20

                                                                                                  query_flags bit: QUERY_REQUEST carries skip_rows:varint after +query_flags, the rows to leave out at the start of the result set.

                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_QUERY_FLAG_STATS.html b/docs/variables/_questdb_browser-client.QWP_QUERY_FLAG_STATS.html new file mode 100644 index 000000000..747ff2534 --- /dev/null +++ b/docs/variables/_questdb_browser-client.QWP_QUERY_FLAG_STATS.html @@ -0,0 +1,4 @@ +QWP_QUERY_FLAG_STATS | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_QUERY_FLAG_STATSConst

                                                                                                  QWP_QUERY_FLAG_STATS: 8 = 0x08

                                                                                                  query_flags bit: RESULT_END and EXEC_DONE end with the statistics block +compile_ns, execute_ns, count_ns, client_wait_ns (varints) and +stats_flags:u8, after row_count when QWP_QUERY_FLAG_COUNT_ROWS is set too.

                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_RECONNECT_EVENT_KIND.html b/docs/variables/_questdb_browser-client.QWP_RECONNECT_EVENT_KIND.html index bc01e5be6..e75571d9d 100644 --- a/docs/variables/_questdb_browser-client.QWP_RECONNECT_EVENT_KIND.html +++ b/docs/variables/_questdb_browser-client.QWP_RECONNECT_EVENT_KIND.html @@ -29,4 +29,4 @@
                                                                                                • ReadonlyFAILED_OVER: "failed-over"

                                                                                                  A reconnect succeeded against a different endpoint than before.

                                                                                                • ReadonlyPRIMARY_UNAVAILABLE: "primary-unavailable"

                                                                                                  Every reachable ingress endpoint is temporarily unable to be primary.

                                                                                                • ReadonlyRECONNECTED: "reconnected"

                                                                                                  A reconnect succeeded against the endpoint that was active before.

                                                                                                  -
                                                                                                • +
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_RESET_MASK_DICTIONARY.html b/docs/variables/_questdb_browser-client.QWP_RESET_MASK_DICTIONARY.html index c95a3afb4..d4b64856b 100644 --- a/docs/variables/_questdb_browser-client.QWP_RESET_MASK_DICTIONARY.html +++ b/docs/variables/_questdb_browser-client.QWP_RESET_MASK_DICTIONARY.html @@ -1 +1 @@ -QWP_RESET_MASK_DICTIONARY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_RESET_MASK_DICTIONARYConst

                                                                                                  QWP_RESET_MASK_DICTIONARY: 1 = 0x01
                                                                                                  +QWP_RESET_MASK_DICTIONARY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_RESET_MASK_DICTIONARYConst

                                                                                                  QWP_RESET_MASK_DICTIONARY: 1 = 0x01
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_SENDER_ERROR_CATEGORY.html b/docs/variables/_questdb_browser-client.QWP_SENDER_ERROR_CATEGORY.html index dd54dbe68..7e30de94b 100644 --- a/docs/variables/_questdb_browser-client.QWP_SENDER_ERROR_CATEGORY.html +++ b/docs/variables/_questdb_browser-client.QWP_SENDER_ERROR_CATEGORY.html @@ -1 +1 @@ -QWP_SENDER_ERROR_CATEGORY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_SENDER_ERROR_CATEGORYConst

                                                                                                  QWP_SENDER_ERROR_CATEGORY: {
                                                                                                      CANCELLED: "cancelled";
                                                                                                      DATA_LOSS: "data-loss";
                                                                                                      DICTIONARY_GAP: "dictionary-gap";
                                                                                                      INTERNAL_ERROR: "internal-error";
                                                                                                      LIMIT_EXCEEDED: "limit-exceeded";
                                                                                                      NOT_WRITABLE: "not-writable";
                                                                                                      PARSE_ERROR: "parse-error";
                                                                                                      PROTOCOL_VIOLATION: "protocol-violation";
                                                                                                      SCHEMA_MISMATCH: "schema-mismatch";
                                                                                                      SECURITY_ERROR: "security-error";
                                                                                                      UNKNOWN: "unknown";
                                                                                                      WRITE_ERROR: "write-error";
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyCANCELLED: "cancelled"
                                                                                                  • ReadonlyDATA_LOSS: "data-loss"
                                                                                                  • ReadonlyDICTIONARY_GAP: "dictionary-gap"
                                                                                                  • ReadonlyINTERNAL_ERROR: "internal-error"
                                                                                                  • ReadonlyLIMIT_EXCEEDED: "limit-exceeded"
                                                                                                  • ReadonlyNOT_WRITABLE: "not-writable"
                                                                                                  • ReadonlyPARSE_ERROR: "parse-error"
                                                                                                  • ReadonlyPROTOCOL_VIOLATION: "protocol-violation"
                                                                                                  • ReadonlySCHEMA_MISMATCH: "schema-mismatch"
                                                                                                  • ReadonlySECURITY_ERROR: "security-error"
                                                                                                  • ReadonlyUNKNOWN: "unknown"
                                                                                                  • ReadonlyWRITE_ERROR: "write-error"
                                                                                                  +QWP_SENDER_ERROR_CATEGORY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_SENDER_ERROR_CATEGORYConst

                                                                                                  QWP_SENDER_ERROR_CATEGORY: {
                                                                                                      CANCELLED: "cancelled";
                                                                                                      DATA_LOSS: "data-loss";
                                                                                                      DICTIONARY_GAP: "dictionary-gap";
                                                                                                      INTERNAL_ERROR: "internal-error";
                                                                                                      LIMIT_EXCEEDED: "limit-exceeded";
                                                                                                      NOT_WRITABLE: "not-writable";
                                                                                                      PARSE_ERROR: "parse-error";
                                                                                                      PROTOCOL_VIOLATION: "protocol-violation";
                                                                                                      SCHEMA_MISMATCH: "schema-mismatch";
                                                                                                      SECURITY_ERROR: "security-error";
                                                                                                      UNKNOWN: "unknown";
                                                                                                      WRITE_ERROR: "write-error";
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyCANCELLED: "cancelled"
                                                                                                  • ReadonlyDATA_LOSS: "data-loss"
                                                                                                  • ReadonlyDICTIONARY_GAP: "dictionary-gap"
                                                                                                  • ReadonlyINTERNAL_ERROR: "internal-error"
                                                                                                  • ReadonlyLIMIT_EXCEEDED: "limit-exceeded"
                                                                                                  • ReadonlyNOT_WRITABLE: "not-writable"
                                                                                                  • ReadonlyPARSE_ERROR: "parse-error"
                                                                                                  • ReadonlyPROTOCOL_VIOLATION: "protocol-violation"
                                                                                                  • ReadonlySCHEMA_MISMATCH: "schema-mismatch"
                                                                                                  • ReadonlySECURITY_ERROR: "security-error"
                                                                                                  • ReadonlyUNKNOWN: "unknown"
                                                                                                  • ReadonlyWRITE_ERROR: "write-error"
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_SENDER_ERROR_POLICY.html b/docs/variables/_questdb_browser-client.QWP_SENDER_ERROR_POLICY.html index ef3bbc23a..cc74d8e23 100644 --- a/docs/variables/_questdb_browser-client.QWP_SENDER_ERROR_POLICY.html +++ b/docs/variables/_questdb_browser-client.QWP_SENDER_ERROR_POLICY.html @@ -1 +1 @@ -QWP_SENDER_ERROR_POLICY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_SENDER_ERROR_POLICYConst

                                                                                                  QWP_SENDER_ERROR_POLICY: {
                                                                                                      ABANDONED: "abandoned";
                                                                                                      RETRIABLE: "retriable";
                                                                                                      RETRIABLE_OTHER: "retriable-other";
                                                                                                      TERMINAL: "terminal";
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyABANDONED: "abandoned"
                                                                                                  • ReadonlyRETRIABLE: "retriable"
                                                                                                  • ReadonlyRETRIABLE_OTHER: "retriable-other"
                                                                                                  • ReadonlyTERMINAL: "terminal"
                                                                                                  +QWP_SENDER_ERROR_POLICY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_SENDER_ERROR_POLICYConst

                                                                                                  QWP_SENDER_ERROR_POLICY: {
                                                                                                      ABANDONED: "abandoned";
                                                                                                      RETRIABLE: "retriable";
                                                                                                      RETRIABLE_OTHER: "retriable-other";
                                                                                                      TERMINAL: "terminal";
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyABANDONED: "abandoned"
                                                                                                  • ReadonlyRETRIABLE: "retriable"
                                                                                                  • ReadonlyRETRIABLE_OTHER: "retriable-other"
                                                                                                  • ReadonlyTERMINAL: "terminal"
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_SERVER_ROLE.html b/docs/variables/_questdb_browser-client.QWP_SERVER_ROLE.html index 746b3bfe5..37d8e9954 100644 --- a/docs/variables/_questdb_browser-client.QWP_SERVER_ROLE.html +++ b/docs/variables/_questdb_browser-client.QWP_SERVER_ROLE.html @@ -1 +1 @@ -QWP_SERVER_ROLE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_SERVER_ROLEConst

                                                                                                  QWP_SERVER_ROLE: { PRIMARY: 1; PRIMARY_CATCHUP: 3; REPLICA: 2; STANDALONE: 0 } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyPRIMARY: 1
                                                                                                  • ReadonlyPRIMARY_CATCHUP: 3
                                                                                                  • ReadonlyREPLICA: 2
                                                                                                  • ReadonlySTANDALONE: 0
                                                                                                  +QWP_SERVER_ROLE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_SERVER_ROLEConst

                                                                                                  QWP_SERVER_ROLE: { PRIMARY: 1; PRIMARY_CATCHUP: 3; REPLICA: 2; STANDALONE: 0 } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyPRIMARY: 1
                                                                                                  • ReadonlyPRIMARY_CATCHUP: 3
                                                                                                  • ReadonlyREPLICA: 2
                                                                                                  • ReadonlySTANDALONE: 0
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_STATUS.html b/docs/variables/_questdb_browser-client.QWP_STATUS.html index 4dae1d7be..122091580 100644 --- a/docs/variables/_questdb_browser-client.QWP_STATUS.html +++ b/docs/variables/_questdb_browser-client.QWP_STATUS.html @@ -1 +1 @@ -QWP_STATUS | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_STATUSConst

                                                                                                  QWP_STATUS: {
                                                                                                      CANCELLED: 10;
                                                                                                      DICTIONARY_GAP: 13;
                                                                                                      DURABLE_ACK: 2;
                                                                                                      INTERNAL_ERROR: 6;
                                                                                                      LIMIT_EXCEEDED: 11;
                                                                                                      NOT_WRITABLE: 12;
                                                                                                      OK: 0;
                                                                                                      PARSE_ERROR: 5;
                                                                                                      SCHEMA_MISMATCH: 3;
                                                                                                      SECURITY_ERROR: 8;
                                                                                                      SERVER_INFO: 1;
                                                                                                      WRITE_ERROR: 9;
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyCANCELLED: 10
                                                                                                  • ReadonlyDICTIONARY_GAP: 13
                                                                                                  • ReadonlyDURABLE_ACK: 2
                                                                                                  • ReadonlyINTERNAL_ERROR: 6
                                                                                                  • ReadonlyLIMIT_EXCEEDED: 11
                                                                                                  • ReadonlyNOT_WRITABLE: 12
                                                                                                  • ReadonlyOK: 0
                                                                                                  • ReadonlyPARSE_ERROR: 5
                                                                                                  • ReadonlySCHEMA_MISMATCH: 3
                                                                                                  • ReadonlySECURITY_ERROR: 8
                                                                                                  • ReadonlySERVER_INFO: 1
                                                                                                  • ReadonlyWRITE_ERROR: 9
                                                                                                  +QWP_STATUS | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_STATUSConst

                                                                                                  QWP_STATUS: {
                                                                                                      CANCELLED: 10;
                                                                                                      DICTIONARY_GAP: 13;
                                                                                                      DURABLE_ACK: 2;
                                                                                                      INTERNAL_ERROR: 6;
                                                                                                      LIMIT_EXCEEDED: 11;
                                                                                                      NOT_WRITABLE: 12;
                                                                                                      OK: 0;
                                                                                                      PARSE_ERROR: 5;
                                                                                                      SCHEMA_MISMATCH: 3;
                                                                                                      SECURITY_ERROR: 8;
                                                                                                      SERVER_INFO: 1;
                                                                                                      WRITE_ERROR: 9;
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyCANCELLED: 10
                                                                                                  • ReadonlyDICTIONARY_GAP: 13
                                                                                                  • ReadonlyDURABLE_ACK: 2
                                                                                                  • ReadonlyINTERNAL_ERROR: 6
                                                                                                  • ReadonlyLIMIT_EXCEEDED: 11
                                                                                                  • ReadonlyNOT_WRITABLE: 12
                                                                                                  • ReadonlyOK: 0
                                                                                                  • ReadonlyPARSE_ERROR: 5
                                                                                                  • ReadonlySCHEMA_MISMATCH: 3
                                                                                                  • ReadonlySECURITY_ERROR: 8
                                                                                                  • ReadonlySERVER_INFO: 1
                                                                                                  • ReadonlyWRITE_ERROR: 9
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_TARGET.html b/docs/variables/_questdb_browser-client.QWP_TARGET.html index 85af843fd..f30f8ba12 100644 --- a/docs/variables/_questdb_browser-client.QWP_TARGET.html +++ b/docs/variables/_questdb_browser-client.QWP_TARGET.html @@ -1 +1 @@ -QWP_TARGET | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_TARGETConst

                                                                                                  QWP_TARGET: { ANY: "any"; PRIMARY: "primary"; REPLICA: "replica" } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyANY: "any"
                                                                                                  • ReadonlyPRIMARY: "primary"
                                                                                                  • ReadonlyREPLICA: "replica"
                                                                                                  +QWP_TARGET | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_TARGETConst

                                                                                                  QWP_TARGET: { ANY: "any"; PRIMARY: "primary"; REPLICA: "replica" } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyANY: "any"
                                                                                                  • ReadonlyPRIMARY: "primary"
                                                                                                  • ReadonlyREPLICA: "replica"
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_UPGRADE_ERROR_KIND.html b/docs/variables/_questdb_browser-client.QWP_UPGRADE_ERROR_KIND.html index e2d7ed6fe..103737d2d 100644 --- a/docs/variables/_questdb_browser-client.QWP_UPGRADE_ERROR_KIND.html +++ b/docs/variables/_questdb_browser-client.QWP_UPGRADE_ERROR_KIND.html @@ -1,2 +1,2 @@ QWP_UPGRADE_ERROR_KIND | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_UPGRADE_ERROR_KINDConst

                                                                                                  QWP_UPGRADE_ERROR_KIND: {
                                                                                                      AUTHENTICATION: "authentication";
                                                                                                      CAPABILITY_MISMATCH: "capability-mismatch";
                                                                                                      HTTP_REJECTED: "http-rejected";
                                                                                                      OPAQUE: "opaque";
                                                                                                      ROLE_REJECTED: "role-rejected";
                                                                                                      TIMEOUT: "timeout";
                                                                                                      TRANSPORT: "transport";
                                                                                                      VERSION_MISMATCH: "version-mismatch";
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyAUTHENTICATION: "authentication"
                                                                                                  • ReadonlyCAPABILITY_MISMATCH: "capability-mismatch"
                                                                                                  • ReadonlyHTTP_REJECTED: "http-rejected"
                                                                                                  • ReadonlyOPAQUE: "opaque"

                                                                                                    Browser WebSocket APIs do not expose the rejected HTTP upgrade.

                                                                                                    -
                                                                                                  • ReadonlyROLE_REJECTED: "role-rejected"
                                                                                                  • ReadonlyTIMEOUT: "timeout"
                                                                                                  • ReadonlyTRANSPORT: "transport"
                                                                                                  • ReadonlyVERSION_MISMATCH: "version-mismatch"
                                                                                                  +
                                                                                                • ReadonlyROLE_REJECTED: "role-rejected"
                                                                                                • ReadonlyTIMEOUT: "timeout"
                                                                                                • ReadonlyTRANSPORT: "transport"
                                                                                                • ReadonlyVERSION_MISMATCH: "version-mismatch"
                                                                                                • diff --git a/docs/variables/_questdb_browser-client.QWP_UPGRADE_TIMEOUT_PHASE.html b/docs/variables/_questdb_browser-client.QWP_UPGRADE_TIMEOUT_PHASE.html index e5f03fad5..0f54e3875 100644 --- a/docs/variables/_questdb_browser-client.QWP_UPGRADE_TIMEOUT_PHASE.html +++ b/docs/variables/_questdb_browser-client.QWP_UPGRADE_TIMEOUT_PHASE.html @@ -1 +1 @@ -QWP_UPGRADE_TIMEOUT_PHASE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_UPGRADE_TIMEOUT_PHASEConst

                                                                                                  QWP_UPGRADE_TIMEOUT_PHASE: {
                                                                                                      AUTHENTICATION: "authentication";
                                                                                                      CONNECT: "connect";
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyAUTHENTICATION: "authentication"
                                                                                                  • ReadonlyCONNECT: "connect"
                                                                                                  +QWP_UPGRADE_TIMEOUT_PHASE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_UPGRADE_TIMEOUT_PHASEConst

                                                                                                  QWP_UPGRADE_TIMEOUT_PHASE: {
                                                                                                      AUTHENTICATION: "authentication";
                                                                                                      CONNECT: "connect";
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyAUTHENTICATION: "authentication"
                                                                                                  • ReadonlyCONNECT: "connect"
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_VERSION.html b/docs/variables/_questdb_browser-client.QWP_VERSION.html index 272f9d4b0..6d5e4f644 100644 --- a/docs/variables/_questdb_browser-client.QWP_VERSION.html +++ b/docs/variables/_questdb_browser-client.QWP_VERSION.html @@ -1 +1 @@ -QWP_VERSION | QuestDB JavaScript Client - v5.0.0
                                                                                                  +QWP_VERSION | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_ZSTD_MAX_COMPRESSION_LEVEL.html b/docs/variables/_questdb_browser-client.QWP_ZSTD_MAX_COMPRESSION_LEVEL.html index fdb673ac4..5fff7d257 100644 --- a/docs/variables/_questdb_browser-client.QWP_ZSTD_MAX_COMPRESSION_LEVEL.html +++ b/docs/variables/_questdb_browser-client.QWP_ZSTD_MAX_COMPRESSION_LEVEL.html @@ -1 +1 @@ -QWP_ZSTD_MAX_COMPRESSION_LEVEL | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_ZSTD_MAX_COMPRESSION_LEVELConst

                                                                                                  QWP_ZSTD_MAX_COMPRESSION_LEVEL: 22
                                                                                                  +QWP_ZSTD_MAX_COMPRESSION_LEVEL | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_ZSTD_MAX_COMPRESSION_LEVELConst

                                                                                                  QWP_ZSTD_MAX_COMPRESSION_LEVEL: 22
                                                                                                  diff --git a/docs/variables/_questdb_browser-client.QWP_ZSTD_MIN_COMPRESSION_LEVEL.html b/docs/variables/_questdb_browser-client.QWP_ZSTD_MIN_COMPRESSION_LEVEL.html index fece19b7e..5a75e9637 100644 --- a/docs/variables/_questdb_browser-client.QWP_ZSTD_MIN_COMPRESSION_LEVEL.html +++ b/docs/variables/_questdb_browser-client.QWP_ZSTD_MIN_COMPRESSION_LEVEL.html @@ -1 +1 @@ -QWP_ZSTD_MIN_COMPRESSION_LEVEL | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_ZSTD_MIN_COMPRESSION_LEVELConst

                                                                                                  QWP_ZSTD_MIN_COMPRESSION_LEVEL: 1
                                                                                                  +QWP_ZSTD_MIN_COMPRESSION_LEVEL | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_ZSTD_MIN_COMPRESSION_LEVELConst

                                                                                                  QWP_ZSTD_MIN_COMPRESSION_LEVEL: 1
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_COLUMN_TYPE.html b/docs/variables/_questdb_nodejs-client.QWP_COLUMN_TYPE.html index 387bd20c7..632109590 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_COLUMN_TYPE.html +++ b/docs/variables/_questdb_nodejs-client.QWP_COLUMN_TYPE.html @@ -1 +1 @@ -QWP_COLUMN_TYPE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_COLUMN_TYPEConst

                                                                                                  QWP_COLUMN_TYPE: {
                                                                                                      BINARY: 23;
                                                                                                      BOOLEAN: 1;
                                                                                                      BYTE: 2;
                                                                                                      CHAR: 22;
                                                                                                      DATE: 11;
                                                                                                      DECIMAL128: 20;
                                                                                                      DECIMAL256: 21;
                                                                                                      DECIMAL64: 19;
                                                                                                      DOUBLE: 7;
                                                                                                      DOUBLE_ARRAY: 17;
                                                                                                      FLOAT: 6;
                                                                                                      GEOHASH: 14;
                                                                                                      INT: 4;
                                                                                                      IPV4: 24;
                                                                                                      LONG: 5;
                                                                                                      LONG_ARRAY: 18;
                                                                                                      LONG256: 13;
                                                                                                      SHORT: 3;
                                                                                                      SYMBOL: 9;
                                                                                                      TIMESTAMP: 10;
                                                                                                      TIMESTAMP_NANOS: 16;
                                                                                                      UUID: 12;
                                                                                                      VARCHAR: 15;
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyBINARY: 23
                                                                                                  • ReadonlyBOOLEAN: 1
                                                                                                  • ReadonlyBYTE: 2
                                                                                                  • ReadonlyCHAR: 22
                                                                                                  • ReadonlyDATE: 11
                                                                                                  • ReadonlyDECIMAL128: 20
                                                                                                  • ReadonlyDECIMAL256: 21
                                                                                                  • ReadonlyDECIMAL64: 19
                                                                                                  • ReadonlyDOUBLE: 7
                                                                                                  • ReadonlyDOUBLE_ARRAY: 17
                                                                                                  • ReadonlyFLOAT: 6
                                                                                                  • ReadonlyGEOHASH: 14
                                                                                                  • ReadonlyINT: 4
                                                                                                  • ReadonlyIPV4: 24
                                                                                                  • ReadonlyLONG: 5
                                                                                                  • ReadonlyLONG_ARRAY: 18
                                                                                                  • ReadonlyLONG256: 13
                                                                                                  • ReadonlySHORT: 3
                                                                                                  • ReadonlySYMBOL: 9
                                                                                                  • ReadonlyTIMESTAMP: 10
                                                                                                  • ReadonlyTIMESTAMP_NANOS: 16
                                                                                                  • ReadonlyUUID: 12
                                                                                                  • ReadonlyVARCHAR: 15
                                                                                                  +QWP_COLUMN_TYPE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_COLUMN_TYPEConst

                                                                                                  QWP_COLUMN_TYPE: {
                                                                                                      BINARY: 23;
                                                                                                      BOOLEAN: 1;
                                                                                                      BYTE: 2;
                                                                                                      CHAR: 22;
                                                                                                      DATE: 11;
                                                                                                      DECIMAL128: 20;
                                                                                                      DECIMAL256: 21;
                                                                                                      DECIMAL64: 19;
                                                                                                      DOUBLE: 7;
                                                                                                      DOUBLE_ARRAY: 17;
                                                                                                      FLOAT: 6;
                                                                                                      GEOHASH: 14;
                                                                                                      INT: 4;
                                                                                                      IPV4: 24;
                                                                                                      LONG: 5;
                                                                                                      LONG_ARRAY: 18;
                                                                                                      LONG256: 13;
                                                                                                      SHORT: 3;
                                                                                                      SYMBOL: 9;
                                                                                                      TIMESTAMP: 10;
                                                                                                      TIMESTAMP_NANOS: 16;
                                                                                                      UUID: 12;
                                                                                                      VARCHAR: 15;
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyBINARY: 23
                                                                                                  • ReadonlyBOOLEAN: 1
                                                                                                  • ReadonlyBYTE: 2
                                                                                                  • ReadonlyCHAR: 22
                                                                                                  • ReadonlyDATE: 11
                                                                                                  • ReadonlyDECIMAL128: 20
                                                                                                  • ReadonlyDECIMAL256: 21
                                                                                                  • ReadonlyDECIMAL64: 19
                                                                                                  • ReadonlyDOUBLE: 7
                                                                                                  • ReadonlyDOUBLE_ARRAY: 17
                                                                                                  • ReadonlyFLOAT: 6
                                                                                                  • ReadonlyGEOHASH: 14
                                                                                                  • ReadonlyINT: 4
                                                                                                  • ReadonlyIPV4: 24
                                                                                                  • ReadonlyLONG: 5
                                                                                                  • ReadonlyLONG_ARRAY: 18
                                                                                                  • ReadonlyLONG256: 13
                                                                                                  • ReadonlySHORT: 3
                                                                                                  • ReadonlySYMBOL: 9
                                                                                                  • ReadonlyTIMESTAMP: 10
                                                                                                  • ReadonlyTIMESTAMP_NANOS: 16
                                                                                                  • ReadonlyUUID: 12
                                                                                                  • ReadonlyVARCHAR: 15
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_COMPRESSION_CODEC.html b/docs/variables/_questdb_nodejs-client.QWP_COMPRESSION_CODEC.html index 42fed5224..927c59216 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_COMPRESSION_CODEC.html +++ b/docs/variables/_questdb_nodejs-client.QWP_COMPRESSION_CODEC.html @@ -1 +1 @@ -QWP_COMPRESSION_CODEC | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_COMPRESSION_CODECConst

                                                                                                  QWP_COMPRESSION_CODEC: { RAW: 0; ZSTD: 1 } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyRAW: 0
                                                                                                  • ReadonlyZSTD: 1
                                                                                                  +QWP_COMPRESSION_CODEC | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_COMPRESSION_CODECConst

                                                                                                  QWP_COMPRESSION_CODEC: { RAW: 0; ZSTD: 1 } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyRAW: 0
                                                                                                  • ReadonlyZSTD: 1
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_DECIMAL_MAX_SCALE.html b/docs/variables/_questdb_nodejs-client.QWP_DECIMAL_MAX_SCALE.html index 0527f7341..6fcd11438 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_DECIMAL_MAX_SCALE.html +++ b/docs/variables/_questdb_nodejs-client.QWP_DECIMAL_MAX_SCALE.html @@ -1,2 +1,2 @@ QWP_DECIMAL_MAX_SCALE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_DECIMAL_MAX_SCALEConst

                                                                                                  QWP_DECIMAL_MAX_SCALE: { decimal128: 38; decimal256: 76; decimal64: 18 } = ...

                                                                                                  Maximum DECIMAL scale of each fixed-width decimal column type.

                                                                                                  -

                                                                                                  Type declaration

                                                                                                  • Readonlydecimal128: 38
                                                                                                  • Readonlydecimal256: 76
                                                                                                  • Readonlydecimal64: 18
                                                                                                  +

                                                                                                  Type declaration

                                                                                                  • Readonlydecimal128: 38
                                                                                                  • Readonlydecimal256: 76
                                                                                                  • Readonlydecimal64: 18
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_DEFAULT_EGRESS_BUFFER_POOL_SIZE.html b/docs/variables/_questdb_nodejs-client.QWP_DEFAULT_EGRESS_BUFFER_POOL_SIZE.html index ee6eb2789..edd9b666e 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_DEFAULT_EGRESS_BUFFER_POOL_SIZE.html +++ b/docs/variables/_questdb_nodejs-client.QWP_DEFAULT_EGRESS_BUFFER_POOL_SIZE.html @@ -1,2 +1,2 @@ QWP_DEFAULT_EGRESS_BUFFER_POOL_SIZE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_DEFAULT_EGRESS_BUFFER_POOL_SIZEConst

                                                                                                  QWP_DEFAULT_EGRESS_BUFFER_POOL_SIZE: 4

                                                                                                  Default decoded result-buffer pool depth, matching the Java client.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_DEFAULT_EGRESS_INITIAL_CREDIT.html b/docs/variables/_questdb_nodejs-client.QWP_DEFAULT_EGRESS_INITIAL_CREDIT.html index 0733679d9..ad752a30d 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_DEFAULT_EGRESS_INITIAL_CREDIT.html +++ b/docs/variables/_questdb_nodejs-client.QWP_DEFAULT_EGRESS_INITIAL_CREDIT.html @@ -1,2 +1,2 @@ QWP_DEFAULT_EGRESS_INITIAL_CREDIT | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_DEFAULT_EGRESS_INITIAL_CREDITConst

                                                                                                  QWP_DEFAULT_EGRESS_INITIAL_CREDIT: 0

                                                                                                  Default send-ahead credit used by Java and TypeScript: zero is unbounded.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_DEFAULT_EGRESS_SERVER_INFO_TIMEOUT_MS.html b/docs/variables/_questdb_nodejs-client.QWP_DEFAULT_EGRESS_SERVER_INFO_TIMEOUT_MS.html index e300e6520..2b1738ea7 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_DEFAULT_EGRESS_SERVER_INFO_TIMEOUT_MS.html +++ b/docs/variables/_questdb_nodejs-client.QWP_DEFAULT_EGRESS_SERVER_INFO_TIMEOUT_MS.html @@ -1,2 +1,2 @@ QWP_DEFAULT_EGRESS_SERVER_INFO_TIMEOUT_MS | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_DEFAULT_EGRESS_SERVER_INFO_TIMEOUT_MSConst

                                                                                                  QWP_DEFAULT_EGRESS_SERVER_INFO_TIMEOUT_MS: 5000 = 5_000

                                                                                                  Default wait for the initial or reconnected SERVER_INFO frame.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_DURABLE_ACK_WEBSOCKET_PROTOCOL.html b/docs/variables/_questdb_nodejs-client.QWP_DURABLE_ACK_WEBSOCKET_PROTOCOL.html index e7ae297f0..d746d946c 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_DURABLE_ACK_WEBSOCKET_PROTOCOL.html +++ b/docs/variables/_questdb_nodejs-client.QWP_DURABLE_ACK_WEBSOCKET_PROTOCOL.html @@ -1,3 +1,3 @@ QWP_DURABLE_ACK_WEBSOCKET_PROTOCOL | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_DURABLE_ACK_WEBSOCKET_PROTOCOLConst

                                                                                                  QWP_DURABLE_ACK_WEBSOCKET_PROTOCOL: "questdb.qwp.durable-ack.v1"

                                                                                                  Browser-visible WebSocket subprotocol used to request and confirm durable ingress acknowledgements. Browsers cannot set or inspect X-QWP-* headers.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_EGRESS_CAPABILITY.html b/docs/variables/_questdb_nodejs-client.QWP_EGRESS_CAPABILITY.html index e3fcf0a1b..16a2bae0d 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_EGRESS_CAPABILITY.html +++ b/docs/variables/_questdb_nodejs-client.QWP_EGRESS_CAPABILITY.html @@ -1 +1,4 @@ -QWP_EGRESS_CAPABILITY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_EGRESS_CAPABILITYConst

                                                                                                  QWP_EGRESS_CAPABILITY: { COMPRESSION: 4; QUERY_FLAGS: 2; ZONE: 1 } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyCOMPRESSION: 4
                                                                                                  • ReadonlyQUERY_FLAGS: 2
                                                                                                  • ReadonlyZONE: 1
                                                                                                  +QWP_EGRESS_CAPABILITY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_EGRESS_CAPABILITYConst

                                                                                                  QWP_EGRESS_CAPABILITY: {
                                                                                                      COMPRESSION: 4;
                                                                                                      QUERY_DETAILS: 16;
                                                                                                      QUERY_FLAGS: 2;
                                                                                                      ZONE: 1;
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyCOMPRESSION: 4
                                                                                                  • ReadonlyQUERY_DETAILS: 16

                                                                                                    The server honours the query-details bits of query_flags: error +positions, execution statistics, row counts and row windows. A server +without it ignores those bits and answers with the baseline frames.

                                                                                                    +
                                                                                                  • ReadonlyQUERY_FLAGS: 2
                                                                                                  • ReadonlyZONE: 1
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_EGRESS_MESSAGE.html b/docs/variables/_questdb_nodejs-client.QWP_EGRESS_MESSAGE.html index 32ebd8ded..a9eb36de9 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_EGRESS_MESSAGE.html +++ b/docs/variables/_questdb_nodejs-client.QWP_EGRESS_MESSAGE.html @@ -1 +1 @@ -QWP_EGRESS_MESSAGE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_EGRESS_MESSAGEConst

                                                                                                  QWP_EGRESS_MESSAGE: {
                                                                                                      CACHE_RESET: 23;
                                                                                                      CANCEL: 20;
                                                                                                      CREDIT: 21;
                                                                                                      EXEC_DONE: 22;
                                                                                                      QUERY_ERROR: 19;
                                                                                                      QUERY_REQUEST: 16;
                                                                                                      RESULT_BATCH: 17;
                                                                                                      RESULT_END: 18;
                                                                                                      SERVER_INFO: 24;
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyCACHE_RESET: 23
                                                                                                  • ReadonlyCANCEL: 20
                                                                                                  • ReadonlyCREDIT: 21
                                                                                                  • ReadonlyEXEC_DONE: 22
                                                                                                  • ReadonlyQUERY_ERROR: 19
                                                                                                  • ReadonlyQUERY_REQUEST: 16
                                                                                                  • ReadonlyRESULT_BATCH: 17
                                                                                                  • ReadonlyRESULT_END: 18
                                                                                                  • ReadonlySERVER_INFO: 24
                                                                                                  +QWP_EGRESS_MESSAGE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_EGRESS_MESSAGEConst

                                                                                                  QWP_EGRESS_MESSAGE: {
                                                                                                      CACHE_RESET: 23;
                                                                                                      CANCEL: 20;
                                                                                                      CREDIT: 21;
                                                                                                      EXEC_DONE: 22;
                                                                                                      QUERY_ERROR: 19;
                                                                                                      QUERY_REQUEST: 16;
                                                                                                      RESULT_BATCH: 17;
                                                                                                      RESULT_END: 18;
                                                                                                      SERVER_INFO: 24;
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyCACHE_RESET: 23
                                                                                                  • ReadonlyCANCEL: 20
                                                                                                  • ReadonlyCREDIT: 21
                                                                                                  • ReadonlyEXEC_DONE: 22
                                                                                                  • ReadonlyQUERY_ERROR: 19
                                                                                                  • ReadonlyQUERY_REQUEST: 16
                                                                                                  • ReadonlyRESULT_BATCH: 17
                                                                                                  • ReadonlyRESULT_END: 18
                                                                                                  • ReadonlySERVER_INFO: 24
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_EGRESS_PATH.html b/docs/variables/_questdb_nodejs-client.QWP_EGRESS_PATH.html index ebae8b5c1..e87ac9323 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_EGRESS_PATH.html +++ b/docs/variables/_questdb_nodejs-client.QWP_EGRESS_PATH.html @@ -1 +1 @@ -QWP_EGRESS_PATH | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_EGRESS_PATHConst

                                                                                                  QWP_EGRESS_PATH: "/read/v1"
                                                                                                  +QWP_EGRESS_PATH | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_EGRESS_PATHConst

                                                                                                  QWP_EGRESS_PATH: "/read/v1"
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_ENCODING_GORILLA.html b/docs/variables/_questdb_nodejs-client.QWP_ENCODING_GORILLA.html index 67cdbfeff..d64807076 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_ENCODING_GORILLA.html +++ b/docs/variables/_questdb_nodejs-client.QWP_ENCODING_GORILLA.html @@ -1 +1 @@ -QWP_ENCODING_GORILLA | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_ENCODING_GORILLAConst

                                                                                                  QWP_ENCODING_GORILLA: 1 = 0x01
                                                                                                  +QWP_ENCODING_GORILLA | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_ENCODING_GORILLAConst

                                                                                                  QWP_ENCODING_GORILLA: 1 = 0x01
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_ENCODING_UNCOMPRESSED.html b/docs/variables/_questdb_nodejs-client.QWP_ENCODING_UNCOMPRESSED.html index a2d2f107f..b57d5ee39 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_ENCODING_UNCOMPRESSED.html +++ b/docs/variables/_questdb_nodejs-client.QWP_ENCODING_UNCOMPRESSED.html @@ -1 +1 @@ -QWP_ENCODING_UNCOMPRESSED | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_ENCODING_UNCOMPRESSEDConst

                                                                                                  QWP_ENCODING_UNCOMPRESSED: 0 = 0x00
                                                                                                  +QWP_ENCODING_UNCOMPRESSED | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_ENCODING_UNCOMPRESSEDConst

                                                                                                  QWP_ENCODING_UNCOMPRESSED: 0 = 0x00
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_FLAG_DEFER_COMMIT.html b/docs/variables/_questdb_nodejs-client.QWP_FLAG_DEFER_COMMIT.html index b11500478..b36c22462 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_FLAG_DEFER_COMMIT.html +++ b/docs/variables/_questdb_nodejs-client.QWP_FLAG_DEFER_COMMIT.html @@ -1 +1 @@ -QWP_FLAG_DEFER_COMMIT | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_FLAG_DEFER_COMMITConst

                                                                                                  QWP_FLAG_DEFER_COMMIT: 1 = 0x01
                                                                                                  +QWP_FLAG_DEFER_COMMIT | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_FLAG_DEFER_COMMITConst

                                                                                                  QWP_FLAG_DEFER_COMMIT: 1 = 0x01
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_FLAG_DELTA_SYMBOL_DICTIONARY.html b/docs/variables/_questdb_nodejs-client.QWP_FLAG_DELTA_SYMBOL_DICTIONARY.html index 81dc00d9f..6d9b5eff2 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_FLAG_DELTA_SYMBOL_DICTIONARY.html +++ b/docs/variables/_questdb_nodejs-client.QWP_FLAG_DELTA_SYMBOL_DICTIONARY.html @@ -1 +1 @@ -QWP_FLAG_DELTA_SYMBOL_DICTIONARY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_FLAG_DELTA_SYMBOL_DICTIONARYConst

                                                                                                  QWP_FLAG_DELTA_SYMBOL_DICTIONARY: 8 = 0x08
                                                                                                  +QWP_FLAG_DELTA_SYMBOL_DICTIONARY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_FLAG_DELTA_SYMBOL_DICTIONARYConst

                                                                                                  QWP_FLAG_DELTA_SYMBOL_DICTIONARY: 8 = 0x08
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_FLAG_DURABLE_ACK_POLL.html b/docs/variables/_questdb_nodejs-client.QWP_FLAG_DURABLE_ACK_POLL.html index 2d9d98e83..d3145e498 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_FLAG_DURABLE_ACK_POLL.html +++ b/docs/variables/_questdb_nodejs-client.QWP_FLAG_DURABLE_ACK_POLL.html @@ -1,2 +1,2 @@ QWP_FLAG_DURABLE_ACK_POLL | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_FLAG_DURABLE_ACK_POLLConst

                                                                                                  QWP_FLAG_DURABLE_ACK_POLL: 2 = 0x02

                                                                                                  Table-less ingress control frame that polls negotiated durable-ACK progress.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_FLAG_GORILLA.html b/docs/variables/_questdb_nodejs-client.QWP_FLAG_GORILLA.html index c4c0de63d..00257adc6 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_FLAG_GORILLA.html +++ b/docs/variables/_questdb_nodejs-client.QWP_FLAG_GORILLA.html @@ -1 +1 @@ -QWP_FLAG_GORILLA | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_FLAG_GORILLAConst

                                                                                                  QWP_FLAG_GORILLA: 4 = 0x04
                                                                                                  +QWP_FLAG_GORILLA | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_FLAG_GORILLAConst

                                                                                                  QWP_FLAG_GORILLA: 4 = 0x04
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_FLAG_ZSTD.html b/docs/variables/_questdb_nodejs-client.QWP_FLAG_ZSTD.html index 6fb5e1725..b490040e3 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_FLAG_ZSTD.html +++ b/docs/variables/_questdb_nodejs-client.QWP_FLAG_ZSTD.html @@ -1 +1 @@ -QWP_FLAG_ZSTD | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_FLAG_ZSTDConst

                                                                                                  QWP_FLAG_ZSTD: 16 = 0x10
                                                                                                  +QWP_FLAG_ZSTD | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_FLAG_ZSTDConst

                                                                                                  QWP_FLAG_ZSTD: 16 = 0x10
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_HEADER_SIZE.html b/docs/variables/_questdb_nodejs-client.QWP_HEADER_SIZE.html index 78751d18a..57fd85275 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_HEADER_SIZE.html +++ b/docs/variables/_questdb_nodejs-client.QWP_HEADER_SIZE.html @@ -1 +1 @@ -QWP_HEADER_SIZE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_HEADER_SIZEConst

                                                                                                  QWP_HEADER_SIZE: 12
                                                                                                  +QWP_HEADER_SIZE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_HEADER_SIZEConst

                                                                                                  QWP_HEADER_SIZE: 12
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_INGRESS_PATH.html b/docs/variables/_questdb_nodejs-client.QWP_INGRESS_PATH.html index 59eabce61..20d51b6be 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_INGRESS_PATH.html +++ b/docs/variables/_questdb_nodejs-client.QWP_INGRESS_PATH.html @@ -1 +1 @@ -QWP_INGRESS_PATH | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_INGRESS_PATHConst

                                                                                                  QWP_INGRESS_PATH: "/write/v4"
                                                                                                  +QWP_INGRESS_PATH | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_INGRESS_PATHConst

                                                                                                  QWP_INGRESS_PATH: "/write/v4"
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_INGRESS_PROGRESS_KIND.html b/docs/variables/_questdb_nodejs-client.QWP_INGRESS_PROGRESS_KIND.html index 76a072b85..49650597d 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_INGRESS_PROGRESS_KIND.html +++ b/docs/variables/_questdb_nodejs-client.QWP_INGRESS_PROGRESS_KIND.html @@ -1 +1 @@ -QWP_INGRESS_PROGRESS_KIND | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_INGRESS_PROGRESS_KINDConst

                                                                                                  QWP_INGRESS_PROGRESS_KIND: {
                                                                                                      ACKNOWLEDGED: "acknowledged";
                                                                                                      DURABLE_ACKNOWLEDGED: "durable-acknowledged";
                                                                                                      PUBLISHED: "published";
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyACKNOWLEDGED: "acknowledged"
                                                                                                  • ReadonlyDURABLE_ACKNOWLEDGED: "durable-acknowledged"
                                                                                                  • ReadonlyPUBLISHED: "published"
                                                                                                  +QWP_INGRESS_PROGRESS_KIND | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_INGRESS_PROGRESS_KINDConst

                                                                                                  QWP_INGRESS_PROGRESS_KIND: {
                                                                                                      ACKNOWLEDGED: "acknowledged";
                                                                                                      DURABLE_ACKNOWLEDGED: "durable-acknowledged";
                                                                                                      PUBLISHED: "published";
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyACKNOWLEDGED: "acknowledged"
                                                                                                  • ReadonlyDURABLE_ACKNOWLEDGED: "durable-acknowledged"
                                                                                                  • ReadonlyPUBLISHED: "published"
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_INGRESS_SERVER_INFO_CAPABILITY.html b/docs/variables/_questdb_nodejs-client.QWP_INGRESS_SERVER_INFO_CAPABILITY.html index 01d193487..4cd6d721d 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_INGRESS_SERVER_INFO_CAPABILITY.html +++ b/docs/variables/_questdb_nodejs-client.QWP_INGRESS_SERVER_INFO_CAPABILITY.html @@ -6,4 +6,4 @@ connection when it offered a subprotocol and the 101 names none. The server therefore echoes the subprotocol whenever it was offered -- confirming only that it speaks the browser negotiation -- and reports the capability here.

                                                                                                  -

                                                                                                  Type declaration

                                                                                                  • ReadonlyDURABLE_ACK: 1
                                                                                                  +

                                                                                                  Type declaration

                                                                                                  • ReadonlyDURABLE_ACK: 1
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_INITIAL_CONNECT_MODE.html b/docs/variables/_questdb_nodejs-client.QWP_INITIAL_CONNECT_MODE.html index c9a3ebfb5..ba81d06bc 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_INITIAL_CONNECT_MODE.html +++ b/docs/variables/_questdb_nodejs-client.QWP_INITIAL_CONNECT_MODE.html @@ -5,4 +5,4 @@

                                                                                                  Type declaration

                                                                                                  • ReadonlyASYNC: "async"

                                                                                                    Return immediately and connect on the background replay loop.

                                                                                                  • ReadonlyOFF: "off"

                                                                                                    Try once on the caller and fail immediately.

                                                                                                  • ReadonlySYNC: "sync"

                                                                                                    Retry on the caller until reconnectMaxDurationMs elapses.

                                                                                                    -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_MAGIC.html b/docs/variables/_questdb_nodejs-client.QWP_MAGIC.html index 2d05356c0..5abe04c7b 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_MAGIC.html +++ b/docs/variables/_questdb_nodejs-client.QWP_MAGIC.html @@ -1,2 +1,2 @@ QWP_MAGIC | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAGICConst

                                                                                                  QWP_MAGIC: 827348817 = 0x31505751

                                                                                                  ASCII QWP1, represented as its little-endian uint32 value.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_MAX_ARRAY_DIMENSIONS.html b/docs/variables/_questdb_nodejs-client.QWP_MAX_ARRAY_DIMENSIONS.html index 450e33fa0..063ccb494 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_MAX_ARRAY_DIMENSIONS.html +++ b/docs/variables/_questdb_nodejs-client.QWP_MAX_ARRAY_DIMENSIONS.html @@ -1,2 +1,2 @@ QWP_MAX_ARRAY_DIMENSIONS | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_ARRAY_DIMENSIONSConst

                                                                                                  QWP_MAX_ARRAY_DIMENSIONS: 32

                                                                                                  Maximum array rank accepted by QuestDB's QWP ingress decoder.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_MAX_ARRAY_DIMENSION_LENGTH.html b/docs/variables/_questdb_nodejs-client.QWP_MAX_ARRAY_DIMENSION_LENGTH.html index f1ecef460..e73caf62b 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_MAX_ARRAY_DIMENSION_LENGTH.html +++ b/docs/variables/_questdb_nodejs-client.QWP_MAX_ARRAY_DIMENSION_LENGTH.html @@ -6,4 +6,4 @@ so neither the batch byte cap nor the row cap contains it. The frame is published, the server rejects the whole batch, and the rows are lost; the axis is therefore bounded before it is staged.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_MAX_BATCH_ROWS_UPPER_BOUND.html b/docs/variables/_questdb_nodejs-client.QWP_MAX_BATCH_ROWS_UPPER_BOUND.html index 736f46cc3..eae3bb7c5 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_MAX_BATCH_ROWS_UPPER_BOUND.html +++ b/docs/variables/_questdb_nodejs-client.QWP_MAX_BATCH_ROWS_UPPER_BOUND.html @@ -1,2 +1,2 @@ QWP_MAX_BATCH_ROWS_UPPER_BOUND | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_BATCH_ROWS_UPPER_BOUNDConst

                                                                                                  QWP_MAX_BATCH_ROWS_UPPER_BOUND: 1048576 = 1_048_576

                                                                                                  Largest client-requested egress RESULT_BATCH row cap.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_MAX_CELLS_PER_BATCH.html b/docs/variables/_questdb_nodejs-client.QWP_MAX_CELLS_PER_BATCH.html index 2baa58f2e..d2110d658 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_MAX_CELLS_PER_BATCH.html +++ b/docs/variables/_questdb_nodejs-client.QWP_MAX_CELLS_PER_BATCH.html @@ -10,4 +10,4 @@

                                                                                                  32Mi cells is roughly 512 MB decoded. That is far above any plausible result -- the widest supported table at 16k rows, or a full 1,048,576-row batch at 32 columns -- and far below what the caps alone would permit.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_MAX_COLUMNS_PER_TABLE.html b/docs/variables/_questdb_nodejs-client.QWP_MAX_COLUMNS_PER_TABLE.html index 53ee590de..b674cd9ac 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_MAX_COLUMNS_PER_TABLE.html +++ b/docs/variables/_questdb_nodejs-client.QWP_MAX_COLUMNS_PER_TABLE.html @@ -1 +1 @@ -QWP_MAX_COLUMNS_PER_TABLE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_COLUMNS_PER_TABLEConst

                                                                                                  QWP_MAX_COLUMNS_PER_TABLE: 2048
                                                                                                  +QWP_MAX_COLUMNS_PER_TABLE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_COLUMNS_PER_TABLEConst

                                                                                                  QWP_MAX_COLUMNS_PER_TABLE: 2048
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_MAX_COLUMN_NAME_LENGTH.html b/docs/variables/_questdb_nodejs-client.QWP_MAX_COLUMN_NAME_LENGTH.html index 40841ff67..ed717bc37 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_MAX_COLUMN_NAME_LENGTH.html +++ b/docs/variables/_questdb_nodejs-client.QWP_MAX_COLUMN_NAME_LENGTH.html @@ -1,2 +1,2 @@ QWP_MAX_COLUMN_NAME_LENGTH | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_COLUMN_NAME_LENGTHConst

                                                                                                  QWP_MAX_COLUMN_NAME_LENGTH: 127

                                                                                                  Default QWP ingress identifier limits, in UTF-8 wire bytes.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_MAX_IDENTIFIER_BYTES.html b/docs/variables/_questdb_nodejs-client.QWP_MAX_IDENTIFIER_BYTES.html index 86289514f..07d343aa0 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_MAX_IDENTIFIER_BYTES.html +++ b/docs/variables/_questdb_nodejs-client.QWP_MAX_IDENTIFIER_BYTES.html @@ -3,4 +3,4 @@ 127-UTF-16-code-unit metadata limit. One code unit takes at most three UTF-8 bytes, so query decoding accepts that larger representation even though QWP ingress enforces its 127-byte protocol limit.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_MAX_ROWS_PER_TABLE.html b/docs/variables/_questdb_nodejs-client.QWP_MAX_ROWS_PER_TABLE.html index 1841742e0..d7ee4cae8 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_MAX_ROWS_PER_TABLE.html +++ b/docs/variables/_questdb_nodejs-client.QWP_MAX_ROWS_PER_TABLE.html @@ -1 +1 @@ -QWP_MAX_ROWS_PER_TABLE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_ROWS_PER_TABLEConst

                                                                                                  QWP_MAX_ROWS_PER_TABLE: 1000000 = 1_000_000
                                                                                                  +QWP_MAX_ROWS_PER_TABLE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_ROWS_PER_TABLEConst

                                                                                                  QWP_MAX_ROWS_PER_TABLE: 1000000 = 1_000_000
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_MAX_SYMBOL_DICTIONARY_SIZE.html b/docs/variables/_questdb_nodejs-client.QWP_MAX_SYMBOL_DICTIONARY_SIZE.html index 15682edee..dd3f14799 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_MAX_SYMBOL_DICTIONARY_SIZE.html +++ b/docs/variables/_questdb_nodejs-client.QWP_MAX_SYMBOL_DICTIONARY_SIZE.html @@ -1 +1 @@ -QWP_MAX_SYMBOL_DICTIONARY_SIZE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_SYMBOL_DICTIONARY_SIZEConst

                                                                                                  QWP_MAX_SYMBOL_DICTIONARY_SIZE: 2000000 = 2_000_000
                                                                                                  +QWP_MAX_SYMBOL_DICTIONARY_SIZE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_SYMBOL_DICTIONARY_SIZEConst

                                                                                                  QWP_MAX_SYMBOL_DICTIONARY_SIZE: 2000000 = 2_000_000
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_MAX_TABLES_PER_FRAME.html b/docs/variables/_questdb_nodejs-client.QWP_MAX_TABLES_PER_FRAME.html index 331688888..15de9069d 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_MAX_TABLES_PER_FRAME.html +++ b/docs/variables/_questdb_nodejs-client.QWP_MAX_TABLES_PER_FRAME.html @@ -1,2 +1,2 @@ QWP_MAX_TABLES_PER_FRAME | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_TABLES_PER_FRAMEConst

                                                                                                  QWP_MAX_TABLES_PER_FRAME: 65535 = 0xffff

                                                                                                  Maximum table count representable by the ingress frame's uint16 header.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_MAX_TABLE_NAME_LENGTH.html b/docs/variables/_questdb_nodejs-client.QWP_MAX_TABLE_NAME_LENGTH.html index 40a75edb4..26630d836 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_MAX_TABLE_NAME_LENGTH.html +++ b/docs/variables/_questdb_nodejs-client.QWP_MAX_TABLE_NAME_LENGTH.html @@ -1 +1 @@ -QWP_MAX_TABLE_NAME_LENGTH | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_TABLE_NAME_LENGTHConst

                                                                                                  QWP_MAX_TABLE_NAME_LENGTH: 127
                                                                                                  +QWP_MAX_TABLE_NAME_LENGTH | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_TABLE_NAME_LENGTHConst

                                                                                                  QWP_MAX_TABLE_NAME_LENGTH: 127
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_MAX_ZSTD_DECOMPRESSED_SIZE.html b/docs/variables/_questdb_nodejs-client.QWP_MAX_ZSTD_DECOMPRESSED_SIZE.html index abd2086e6..04e6f76ff 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_MAX_ZSTD_DECOMPRESSED_SIZE.html +++ b/docs/variables/_questdb_nodejs-client.QWP_MAX_ZSTD_DECOMPRESSED_SIZE.html @@ -1,2 +1,2 @@ QWP_MAX_ZSTD_DECOMPRESSED_SIZE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_MAX_ZSTD_DECOMPRESSED_SIZEConst

                                                                                                  QWP_MAX_ZSTD_DECOMPRESSED_SIZE: number = ...

                                                                                                  Matches the Java client's per-connection decompression safety cap.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_ORPHAN_DRAIN_EVENT_KIND.html b/docs/variables/_questdb_nodejs-client.QWP_ORPHAN_DRAIN_EVENT_KIND.html index 9b31d0343..781e523cf 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_ORPHAN_DRAIN_EVENT_KIND.html +++ b/docs/variables/_questdb_nodejs-client.QWP_ORPHAN_DRAIN_EVENT_KIND.html @@ -1,2 +1,2 @@ QWP_ORPHAN_DRAIN_EVENT_KIND | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_ORPHAN_DRAIN_EVENT_KINDConst

                                                                                                  QWP_ORPHAN_DRAIN_EVENT_KIND: {
                                                                                                      DISCOVERED: "discovered";
                                                                                                      DRAINED: "drained";
                                                                                                      DURABLE_ACK_PERSISTENT_FAILURE: "durable-ack-persistent-failure";
                                                                                                      DURABLE_ACK_UNAVAILABLE: "durable-ack-unavailable";
                                                                                                      FAILED: "failed";
                                                                                                      LOCKED: "locked";
                                                                                                      PRIMARY_UNAVAILABLE: "primary-unavailable";
                                                                                                      RETRYING: "retrying";
                                                                                                      SCAN_FAILED: "scan-failed";
                                                                                                      STARTED: "started";
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyDISCOVERED: "discovered"
                                                                                                  • ReadonlyDRAINED: "drained"
                                                                                                  • ReadonlyDURABLE_ACK_PERSISTENT_FAILURE: "durable-ack-persistent-failure"
                                                                                                  • ReadonlyDURABLE_ACK_UNAVAILABLE: "durable-ack-unavailable"
                                                                                                  • ReadonlyFAILED: "failed"
                                                                                                  • ReadonlyLOCKED: "locked"
                                                                                                  • ReadonlyPRIMARY_UNAVAILABLE: "primary-unavailable"
                                                                                                  • ReadonlyRETRYING: "retrying"

                                                                                                    The attempt or terminal-marker write failed and will be retried.

                                                                                                    -
                                                                                                  • ReadonlySCAN_FAILED: "scan-failed"
                                                                                                  • ReadonlySTARTED: "started"
                                                                                                  +
                                                                                                • ReadonlySCAN_FAILED: "scan-failed"
                                                                                                • ReadonlySTARTED: "started"
                                                                                                • diff --git a/docs/variables/_questdb_nodejs-client.QWP_ORPHAN_FAILED_SENTINEL.html b/docs/variables/_questdb_nodejs-client.QWP_ORPHAN_FAILED_SENTINEL.html index 0543a8f1e..e376ea883 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_ORPHAN_FAILED_SENTINEL.html +++ b/docs/variables/_questdb_nodejs-client.QWP_ORPHAN_FAILED_SENTINEL.html @@ -1,2 +1,2 @@ QWP_ORPHAN_FAILED_SENTINEL | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_ORPHAN_FAILED_SENTINELConst

                                                                                                  QWP_ORPHAN_FAILED_SENTINEL: ".failed"

                                                                                                  Java-compatible marker that excludes a failed slot from automatic drain.

                                                                                                  -
                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_QUERY_FLAG_COUNT_ROWS.html b/docs/variables/_questdb_nodejs-client.QWP_QUERY_FLAG_COUNT_ROWS.html new file mode 100644 index 000000000..3fe9065fb --- /dev/null +++ b/docs/variables/_questdb_nodejs-client.QWP_QUERY_FLAG_COUNT_ROWS.html @@ -0,0 +1,4 @@ +QWP_QUERY_FLAG_COUNT_ROWS | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_QUERY_FLAG_COUNT_ROWSConst

                                                                                                  QWP_QUERY_FLAG_COUNT_ROWS: 16 = 0x10

                                                                                                  query_flags bit: RESULT_END carries row_count:varint after total_rows, +the number of rows in the whole result set, whatever the row window leaves +out of the stream.

                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_QUERY_FLAG_ERROR_POSITION.html b/docs/variables/_questdb_nodejs-client.QWP_QUERY_FLAG_ERROR_POSITION.html new file mode 100644 index 000000000..9af979cd5 --- /dev/null +++ b/docs/variables/_questdb_nodejs-client.QWP_QUERY_FLAG_ERROR_POSITION.html @@ -0,0 +1,5 @@ +QWP_QUERY_FLAG_ERROR_POSITION | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_QUERY_FLAG_ERROR_POSITIONConst

                                                                                                  QWP_QUERY_FLAG_ERROR_POSITION: 4 = 0x04

                                                                                                  query_flags bit: QUERY_ERROR carries the bare message, without the [n] +prefix of the baseline frame, and ends with position:i32, the UTF-16 +offset into the SQL text the error points at, or -1. A request the server +rejects before reading its flags is still answered with the baseline frame.

                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_QUERY_FLAG_MAX_ROWS.html b/docs/variables/_questdb_nodejs-client.QWP_QUERY_FLAG_MAX_ROWS.html new file mode 100644 index 000000000..5d5913362 --- /dev/null +++ b/docs/variables/_questdb_nodejs-client.QWP_QUERY_FLAG_MAX_ROWS.html @@ -0,0 +1,4 @@ +QWP_QUERY_FLAG_MAX_ROWS | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_QUERY_FLAG_MAX_ROWSConst

                                                                                                  QWP_QUERY_FLAG_MAX_ROWS: 64 = 0x40

                                                                                                  query_flags bit: QUERY_REQUEST carries max_rows:varint, the most rows to +stream, after query_flags and after skip_rows when +QWP_QUERY_FLAG_SKIP_ROWS is set too. Zero streams only the schema.

                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_QUERY_FLAG_RESET_DICTIONARY.html b/docs/variables/_questdb_nodejs-client.QWP_QUERY_FLAG_RESET_DICTIONARY.html index cd45f9f86..6c29b14c4 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_QUERY_FLAG_RESET_DICTIONARY.html +++ b/docs/variables/_questdb_nodejs-client.QWP_QUERY_FLAG_RESET_DICTIONARY.html @@ -1 +1 @@ -QWP_QUERY_FLAG_RESET_DICTIONARY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_QUERY_FLAG_RESET_DICTIONARYConst

                                                                                                  QWP_QUERY_FLAG_RESET_DICTIONARY: 1 = 0x01
                                                                                                  +QWP_QUERY_FLAG_RESET_DICTIONARY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_QUERY_FLAG_RESET_DICTIONARYConst

                                                                                                  QWP_QUERY_FLAG_RESET_DICTIONARY: 1 = 0x01
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_QUERY_FLAG_SKIP_ROWS.html b/docs/variables/_questdb_nodejs-client.QWP_QUERY_FLAG_SKIP_ROWS.html new file mode 100644 index 000000000..0d15a1128 --- /dev/null +++ b/docs/variables/_questdb_nodejs-client.QWP_QUERY_FLAG_SKIP_ROWS.html @@ -0,0 +1,3 @@ +QWP_QUERY_FLAG_SKIP_ROWS | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_QUERY_FLAG_SKIP_ROWSConst

                                                                                                  QWP_QUERY_FLAG_SKIP_ROWS: 32 = 0x20

                                                                                                  query_flags bit: QUERY_REQUEST carries skip_rows:varint after +query_flags, the rows to leave out at the start of the result set.

                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_QUERY_FLAG_STATS.html b/docs/variables/_questdb_nodejs-client.QWP_QUERY_FLAG_STATS.html new file mode 100644 index 000000000..71720d09a --- /dev/null +++ b/docs/variables/_questdb_nodejs-client.QWP_QUERY_FLAG_STATS.html @@ -0,0 +1,4 @@ +QWP_QUERY_FLAG_STATS | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_QUERY_FLAG_STATSConst

                                                                                                  QWP_QUERY_FLAG_STATS: 8 = 0x08

                                                                                                  query_flags bit: RESULT_END and EXEC_DONE end with the statistics block +compile_ns, execute_ns, count_ns, client_wait_ns (varints) and +stats_flags:u8, after row_count when QWP_QUERY_FLAG_COUNT_ROWS is set too.

                                                                                                  +
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_RECONNECT_EVENT_KIND.html b/docs/variables/_questdb_nodejs-client.QWP_RECONNECT_EVENT_KIND.html index 314008355..f6470cb3a 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_RECONNECT_EVENT_KIND.html +++ b/docs/variables/_questdb_nodejs-client.QWP_RECONNECT_EVENT_KIND.html @@ -29,4 +29,4 @@
                                                                                                • ReadonlyFAILED_OVER: "failed-over"

                                                                                                  A reconnect succeeded against a different endpoint than before.

                                                                                                • ReadonlyPRIMARY_UNAVAILABLE: "primary-unavailable"

                                                                                                  Every reachable ingress endpoint is temporarily unable to be primary.

                                                                                                • ReadonlyRECONNECTED: "reconnected"

                                                                                                  A reconnect succeeded against the endpoint that was active before.

                                                                                                  -
                                                                                                • +
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_RESET_MASK_DICTIONARY.html b/docs/variables/_questdb_nodejs-client.QWP_RESET_MASK_DICTIONARY.html index 189158be1..89ecac710 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_RESET_MASK_DICTIONARY.html +++ b/docs/variables/_questdb_nodejs-client.QWP_RESET_MASK_DICTIONARY.html @@ -1 +1 @@ -QWP_RESET_MASK_DICTIONARY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_RESET_MASK_DICTIONARYConst

                                                                                                  QWP_RESET_MASK_DICTIONARY: 1 = 0x01
                                                                                                  +QWP_RESET_MASK_DICTIONARY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_RESET_MASK_DICTIONARYConst

                                                                                                  QWP_RESET_MASK_DICTIONARY: 1 = 0x01
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_SENDER_ERROR_CATEGORY.html b/docs/variables/_questdb_nodejs-client.QWP_SENDER_ERROR_CATEGORY.html index 091eb07b9..db94a021d 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_SENDER_ERROR_CATEGORY.html +++ b/docs/variables/_questdb_nodejs-client.QWP_SENDER_ERROR_CATEGORY.html @@ -1 +1 @@ -QWP_SENDER_ERROR_CATEGORY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_SENDER_ERROR_CATEGORYConst

                                                                                                  QWP_SENDER_ERROR_CATEGORY: {
                                                                                                      CANCELLED: "cancelled";
                                                                                                      DATA_LOSS: "data-loss";
                                                                                                      DICTIONARY_GAP: "dictionary-gap";
                                                                                                      INTERNAL_ERROR: "internal-error";
                                                                                                      LIMIT_EXCEEDED: "limit-exceeded";
                                                                                                      NOT_WRITABLE: "not-writable";
                                                                                                      PARSE_ERROR: "parse-error";
                                                                                                      PROTOCOL_VIOLATION: "protocol-violation";
                                                                                                      SCHEMA_MISMATCH: "schema-mismatch";
                                                                                                      SECURITY_ERROR: "security-error";
                                                                                                      UNKNOWN: "unknown";
                                                                                                      WRITE_ERROR: "write-error";
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyCANCELLED: "cancelled"
                                                                                                  • ReadonlyDATA_LOSS: "data-loss"
                                                                                                  • ReadonlyDICTIONARY_GAP: "dictionary-gap"
                                                                                                  • ReadonlyINTERNAL_ERROR: "internal-error"
                                                                                                  • ReadonlyLIMIT_EXCEEDED: "limit-exceeded"
                                                                                                  • ReadonlyNOT_WRITABLE: "not-writable"
                                                                                                  • ReadonlyPARSE_ERROR: "parse-error"
                                                                                                  • ReadonlyPROTOCOL_VIOLATION: "protocol-violation"
                                                                                                  • ReadonlySCHEMA_MISMATCH: "schema-mismatch"
                                                                                                  • ReadonlySECURITY_ERROR: "security-error"
                                                                                                  • ReadonlyUNKNOWN: "unknown"
                                                                                                  • ReadonlyWRITE_ERROR: "write-error"
                                                                                                  +QWP_SENDER_ERROR_CATEGORY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_SENDER_ERROR_CATEGORYConst

                                                                                                  QWP_SENDER_ERROR_CATEGORY: {
                                                                                                      CANCELLED: "cancelled";
                                                                                                      DATA_LOSS: "data-loss";
                                                                                                      DICTIONARY_GAP: "dictionary-gap";
                                                                                                      INTERNAL_ERROR: "internal-error";
                                                                                                      LIMIT_EXCEEDED: "limit-exceeded";
                                                                                                      NOT_WRITABLE: "not-writable";
                                                                                                      PARSE_ERROR: "parse-error";
                                                                                                      PROTOCOL_VIOLATION: "protocol-violation";
                                                                                                      SCHEMA_MISMATCH: "schema-mismatch";
                                                                                                      SECURITY_ERROR: "security-error";
                                                                                                      UNKNOWN: "unknown";
                                                                                                      WRITE_ERROR: "write-error";
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyCANCELLED: "cancelled"
                                                                                                  • ReadonlyDATA_LOSS: "data-loss"
                                                                                                  • ReadonlyDICTIONARY_GAP: "dictionary-gap"
                                                                                                  • ReadonlyINTERNAL_ERROR: "internal-error"
                                                                                                  • ReadonlyLIMIT_EXCEEDED: "limit-exceeded"
                                                                                                  • ReadonlyNOT_WRITABLE: "not-writable"
                                                                                                  • ReadonlyPARSE_ERROR: "parse-error"
                                                                                                  • ReadonlyPROTOCOL_VIOLATION: "protocol-violation"
                                                                                                  • ReadonlySCHEMA_MISMATCH: "schema-mismatch"
                                                                                                  • ReadonlySECURITY_ERROR: "security-error"
                                                                                                  • ReadonlyUNKNOWN: "unknown"
                                                                                                  • ReadonlyWRITE_ERROR: "write-error"
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_SENDER_ERROR_POLICY.html b/docs/variables/_questdb_nodejs-client.QWP_SENDER_ERROR_POLICY.html index f89b72b8e..702926131 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_SENDER_ERROR_POLICY.html +++ b/docs/variables/_questdb_nodejs-client.QWP_SENDER_ERROR_POLICY.html @@ -1 +1 @@ -QWP_SENDER_ERROR_POLICY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_SENDER_ERROR_POLICYConst

                                                                                                  QWP_SENDER_ERROR_POLICY: {
                                                                                                      ABANDONED: "abandoned";
                                                                                                      RETRIABLE: "retriable";
                                                                                                      RETRIABLE_OTHER: "retriable-other";
                                                                                                      TERMINAL: "terminal";
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyABANDONED: "abandoned"
                                                                                                  • ReadonlyRETRIABLE: "retriable"
                                                                                                  • ReadonlyRETRIABLE_OTHER: "retriable-other"
                                                                                                  • ReadonlyTERMINAL: "terminal"
                                                                                                  +QWP_SENDER_ERROR_POLICY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_SENDER_ERROR_POLICYConst

                                                                                                  QWP_SENDER_ERROR_POLICY: {
                                                                                                      ABANDONED: "abandoned";
                                                                                                      RETRIABLE: "retriable";
                                                                                                      RETRIABLE_OTHER: "retriable-other";
                                                                                                      TERMINAL: "terminal";
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyABANDONED: "abandoned"
                                                                                                  • ReadonlyRETRIABLE: "retriable"
                                                                                                  • ReadonlyRETRIABLE_OTHER: "retriable-other"
                                                                                                  • ReadonlyTERMINAL: "terminal"
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_SERVER_ROLE.html b/docs/variables/_questdb_nodejs-client.QWP_SERVER_ROLE.html index ff1b265bd..6ef2d21c9 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_SERVER_ROLE.html +++ b/docs/variables/_questdb_nodejs-client.QWP_SERVER_ROLE.html @@ -1 +1 @@ -QWP_SERVER_ROLE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_SERVER_ROLEConst

                                                                                                  QWP_SERVER_ROLE: { PRIMARY: 1; PRIMARY_CATCHUP: 3; REPLICA: 2; STANDALONE: 0 } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyPRIMARY: 1
                                                                                                  • ReadonlyPRIMARY_CATCHUP: 3
                                                                                                  • ReadonlyREPLICA: 2
                                                                                                  • ReadonlySTANDALONE: 0
                                                                                                  +QWP_SERVER_ROLE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_SERVER_ROLEConst

                                                                                                  QWP_SERVER_ROLE: { PRIMARY: 1; PRIMARY_CATCHUP: 3; REPLICA: 2; STANDALONE: 0 } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyPRIMARY: 1
                                                                                                  • ReadonlyPRIMARY_CATCHUP: 3
                                                                                                  • ReadonlyREPLICA: 2
                                                                                                  • ReadonlySTANDALONE: 0
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_SF_BACKPRESSURE_POLICY.html b/docs/variables/_questdb_nodejs-client.QWP_SF_BACKPRESSURE_POLICY.html index f9baf4b05..e1fe42aed 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_SF_BACKPRESSURE_POLICY.html +++ b/docs/variables/_questdb_nodejs-client.QWP_SF_BACKPRESSURE_POLICY.html @@ -1 +1 @@ -QWP_SF_BACKPRESSURE_POLICY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_SF_BACKPRESSURE_POLICYConst

                                                                                                  QWP_SF_BACKPRESSURE_POLICY: { ERROR: "error"; WAIT: "wait" } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyERROR: "error"
                                                                                                  • ReadonlyWAIT: "wait"
                                                                                                  +QWP_SF_BACKPRESSURE_POLICY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_SF_BACKPRESSURE_POLICYConst

                                                                                                  QWP_SF_BACKPRESSURE_POLICY: { ERROR: "error"; WAIT: "wait" } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyERROR: "error"
                                                                                                  • ReadonlyWAIT: "wait"
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_SF_DURABILITY.html b/docs/variables/_questdb_nodejs-client.QWP_SF_DURABILITY.html index 2fdb8bc55..9711e877c 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_SF_DURABILITY.html +++ b/docs/variables/_questdb_nodejs-client.QWP_SF_DURABILITY.html @@ -1 +1 @@ -QWP_SF_DURABILITY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_SF_DURABILITYConst

                                                                                                  QWP_SF_DURABILITY: { APPEND: "append"; MEMORY: "memory"; PERIODIC: "periodic" } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyAPPEND: "append"
                                                                                                  • ReadonlyMEMORY: "memory"
                                                                                                  • ReadonlyPERIODIC: "periodic"
                                                                                                  +QWP_SF_DURABILITY | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_SF_DURABILITYConst

                                                                                                  QWP_SF_DURABILITY: { APPEND: "append"; MEMORY: "memory"; PERIODIC: "periodic" } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyAPPEND: "append"
                                                                                                  • ReadonlyMEMORY: "memory"
                                                                                                  • ReadonlyPERIODIC: "periodic"
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_STATUS.html b/docs/variables/_questdb_nodejs-client.QWP_STATUS.html index 123f4087b..f5830d346 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_STATUS.html +++ b/docs/variables/_questdb_nodejs-client.QWP_STATUS.html @@ -1 +1 @@ -QWP_STATUS | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_STATUSConst

                                                                                                  QWP_STATUS: {
                                                                                                      CANCELLED: 10;
                                                                                                      DICTIONARY_GAP: 13;
                                                                                                      DURABLE_ACK: 2;
                                                                                                      INTERNAL_ERROR: 6;
                                                                                                      LIMIT_EXCEEDED: 11;
                                                                                                      NOT_WRITABLE: 12;
                                                                                                      OK: 0;
                                                                                                      PARSE_ERROR: 5;
                                                                                                      SCHEMA_MISMATCH: 3;
                                                                                                      SECURITY_ERROR: 8;
                                                                                                      SERVER_INFO: 1;
                                                                                                      WRITE_ERROR: 9;
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyCANCELLED: 10
                                                                                                  • ReadonlyDICTIONARY_GAP: 13
                                                                                                  • ReadonlyDURABLE_ACK: 2
                                                                                                  • ReadonlyINTERNAL_ERROR: 6
                                                                                                  • ReadonlyLIMIT_EXCEEDED: 11
                                                                                                  • ReadonlyNOT_WRITABLE: 12
                                                                                                  • ReadonlyOK: 0
                                                                                                  • ReadonlyPARSE_ERROR: 5
                                                                                                  • ReadonlySCHEMA_MISMATCH: 3
                                                                                                  • ReadonlySECURITY_ERROR: 8
                                                                                                  • ReadonlySERVER_INFO: 1
                                                                                                  • ReadonlyWRITE_ERROR: 9
                                                                                                  +QWP_STATUS | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_STATUSConst

                                                                                                  QWP_STATUS: {
                                                                                                      CANCELLED: 10;
                                                                                                      DICTIONARY_GAP: 13;
                                                                                                      DURABLE_ACK: 2;
                                                                                                      INTERNAL_ERROR: 6;
                                                                                                      LIMIT_EXCEEDED: 11;
                                                                                                      NOT_WRITABLE: 12;
                                                                                                      OK: 0;
                                                                                                      PARSE_ERROR: 5;
                                                                                                      SCHEMA_MISMATCH: 3;
                                                                                                      SECURITY_ERROR: 8;
                                                                                                      SERVER_INFO: 1;
                                                                                                      WRITE_ERROR: 9;
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyCANCELLED: 10
                                                                                                  • ReadonlyDICTIONARY_GAP: 13
                                                                                                  • ReadonlyDURABLE_ACK: 2
                                                                                                  • ReadonlyINTERNAL_ERROR: 6
                                                                                                  • ReadonlyLIMIT_EXCEEDED: 11
                                                                                                  • ReadonlyNOT_WRITABLE: 12
                                                                                                  • ReadonlyOK: 0
                                                                                                  • ReadonlyPARSE_ERROR: 5
                                                                                                  • ReadonlySCHEMA_MISMATCH: 3
                                                                                                  • ReadonlySECURITY_ERROR: 8
                                                                                                  • ReadonlySERVER_INFO: 1
                                                                                                  • ReadonlyWRITE_ERROR: 9
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_TARGET.html b/docs/variables/_questdb_nodejs-client.QWP_TARGET.html index d73371889..5f97d64cb 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_TARGET.html +++ b/docs/variables/_questdb_nodejs-client.QWP_TARGET.html @@ -1 +1 @@ -QWP_TARGET | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_TARGETConst

                                                                                                  QWP_TARGET: { ANY: "any"; PRIMARY: "primary"; REPLICA: "replica" } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyANY: "any"
                                                                                                  • ReadonlyPRIMARY: "primary"
                                                                                                  • ReadonlyREPLICA: "replica"
                                                                                                  +QWP_TARGET | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_TARGETConst

                                                                                                  QWP_TARGET: { ANY: "any"; PRIMARY: "primary"; REPLICA: "replica" } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyANY: "any"
                                                                                                  • ReadonlyPRIMARY: "primary"
                                                                                                  • ReadonlyREPLICA: "replica"
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_UPGRADE_ERROR_KIND.html b/docs/variables/_questdb_nodejs-client.QWP_UPGRADE_ERROR_KIND.html index a8824a5b4..6778cf95b 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_UPGRADE_ERROR_KIND.html +++ b/docs/variables/_questdb_nodejs-client.QWP_UPGRADE_ERROR_KIND.html @@ -1,2 +1,2 @@ QWP_UPGRADE_ERROR_KIND | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_UPGRADE_ERROR_KINDConst

                                                                                                  QWP_UPGRADE_ERROR_KIND: {
                                                                                                      AUTHENTICATION: "authentication";
                                                                                                      CAPABILITY_MISMATCH: "capability-mismatch";
                                                                                                      HTTP_REJECTED: "http-rejected";
                                                                                                      OPAQUE: "opaque";
                                                                                                      ROLE_REJECTED: "role-rejected";
                                                                                                      TIMEOUT: "timeout";
                                                                                                      TRANSPORT: "transport";
                                                                                                      VERSION_MISMATCH: "version-mismatch";
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyAUTHENTICATION: "authentication"
                                                                                                  • ReadonlyCAPABILITY_MISMATCH: "capability-mismatch"
                                                                                                  • ReadonlyHTTP_REJECTED: "http-rejected"
                                                                                                  • ReadonlyOPAQUE: "opaque"

                                                                                                    Browser WebSocket APIs do not expose the rejected HTTP upgrade.

                                                                                                    -
                                                                                                  • ReadonlyROLE_REJECTED: "role-rejected"
                                                                                                  • ReadonlyTIMEOUT: "timeout"
                                                                                                  • ReadonlyTRANSPORT: "transport"
                                                                                                  • ReadonlyVERSION_MISMATCH: "version-mismatch"
                                                                                                  +
                                                                                                • ReadonlyROLE_REJECTED: "role-rejected"
                                                                                                • ReadonlyTIMEOUT: "timeout"
                                                                                                • ReadonlyTRANSPORT: "transport"
                                                                                                • ReadonlyVERSION_MISMATCH: "version-mismatch"
                                                                                                • diff --git a/docs/variables/_questdb_nodejs-client.QWP_UPGRADE_TIMEOUT_PHASE.html b/docs/variables/_questdb_nodejs-client.QWP_UPGRADE_TIMEOUT_PHASE.html index c51544178..07979d799 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_UPGRADE_TIMEOUT_PHASE.html +++ b/docs/variables/_questdb_nodejs-client.QWP_UPGRADE_TIMEOUT_PHASE.html @@ -1 +1 @@ -QWP_UPGRADE_TIMEOUT_PHASE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_UPGRADE_TIMEOUT_PHASEConst

                                                                                                  QWP_UPGRADE_TIMEOUT_PHASE: {
                                                                                                      AUTHENTICATION: "authentication";
                                                                                                      CONNECT: "connect";
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyAUTHENTICATION: "authentication"
                                                                                                  • ReadonlyCONNECT: "connect"
                                                                                                  +QWP_UPGRADE_TIMEOUT_PHASE | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_UPGRADE_TIMEOUT_PHASEConst

                                                                                                  QWP_UPGRADE_TIMEOUT_PHASE: {
                                                                                                      AUTHENTICATION: "authentication";
                                                                                                      CONNECT: "connect";
                                                                                                  } = ...

                                                                                                  Type declaration

                                                                                                  • ReadonlyAUTHENTICATION: "authentication"
                                                                                                  • ReadonlyCONNECT: "connect"
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_VERSION.html b/docs/variables/_questdb_nodejs-client.QWP_VERSION.html index 35586099d..84055e0e6 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_VERSION.html +++ b/docs/variables/_questdb_nodejs-client.QWP_VERSION.html @@ -1 +1 @@ -QWP_VERSION | QuestDB JavaScript Client - v5.0.0
                                                                                                  +QWP_VERSION | QuestDB JavaScript Client - v5.0.0
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_ZSTD_MAX_COMPRESSION_LEVEL.html b/docs/variables/_questdb_nodejs-client.QWP_ZSTD_MAX_COMPRESSION_LEVEL.html index a7ffec701..a86e2ecfe 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_ZSTD_MAX_COMPRESSION_LEVEL.html +++ b/docs/variables/_questdb_nodejs-client.QWP_ZSTD_MAX_COMPRESSION_LEVEL.html @@ -1 +1 @@ -QWP_ZSTD_MAX_COMPRESSION_LEVEL | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_ZSTD_MAX_COMPRESSION_LEVELConst

                                                                                                  QWP_ZSTD_MAX_COMPRESSION_LEVEL: 22
                                                                                                  +QWP_ZSTD_MAX_COMPRESSION_LEVEL | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_ZSTD_MAX_COMPRESSION_LEVELConst

                                                                                                  QWP_ZSTD_MAX_COMPRESSION_LEVEL: 22
                                                                                                  diff --git a/docs/variables/_questdb_nodejs-client.QWP_ZSTD_MIN_COMPRESSION_LEVEL.html b/docs/variables/_questdb_nodejs-client.QWP_ZSTD_MIN_COMPRESSION_LEVEL.html index 09f978114..1a44d6ca6 100644 --- a/docs/variables/_questdb_nodejs-client.QWP_ZSTD_MIN_COMPRESSION_LEVEL.html +++ b/docs/variables/_questdb_nodejs-client.QWP_ZSTD_MIN_COMPRESSION_LEVEL.html @@ -1 +1 @@ -QWP_ZSTD_MIN_COMPRESSION_LEVEL | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_ZSTD_MIN_COMPRESSION_LEVELConst

                                                                                                  QWP_ZSTD_MIN_COMPRESSION_LEVEL: 1
                                                                                                  +QWP_ZSTD_MIN_COMPRESSION_LEVEL | QuestDB JavaScript Client - v5.0.0

                                                                                                  Variable QWP_ZSTD_MIN_COMPRESSION_LEVELConst

                                                                                                  QWP_ZSTD_MIN_COMPRESSION_LEVEL: 1
                                                                                                  diff --git a/packages/browser-client/README.md b/packages/browser-client/README.md index 3ba32c465..5b958560e 100644 --- a/packages/browser-client/README.md +++ b/packages/browser-client/README.md @@ -349,6 +349,12 @@ try { Use `queryViews()` for reusable zero-copy result views in allocation-sensitive applications. Copy any view that must outlive its batch callback. +Query options `errorPosition`, `stats` and `countRows` report where an error +points in the SQL string, the query's timings, and the size of the whole +result; `skipRows` and `maxRows` read it one page at a time. They need a server +that advertises the `QUERY_DETAILS` capability; see the +[QWP guide](https://github.com/questdb/nodejs-questdb-client/blob/main/QWP.md#error-positions-statistics-row-counts-and-paging). + ## Combined ingestion and query client `connectQwpBrowserClient()` creates bounded sender and query pools for an diff --git a/packages/browser-client/src/qwp.ts b/packages/browser-client/src/qwp.ts index 925a2ec0a..4c1229f8b 100644 --- a/packages/browser-client/src/qwp.ts +++ b/packages/browser-client/src/qwp.ts @@ -972,6 +972,24 @@ function browserIngressHandshake( return { qwpVersion: QWP_VERSION }; } +/** + * Starts closing a connection whose ingress negotiation failed, without + * waiting for the close to finish. + * + * The caller rethrows the negotiation failure, and that failure is the verdict. + * A browser refuses the 1002 used here, so the connection retries the close + * with 1000 and then waits for the server's reply. Waiting for it raced the + * connect deadline armed when the attempt began: a server slow to answer the + * close turned QwpDurableAckUnavailableError, which is terminal, into a + * retryable upgrade timeout. Node's upgrade-validation failures do not wait + * for their close either. + */ +function closeFailedIngressNegotiation(connection: QwpBinaryConnection): void { + void connection + .close(1002, "invalid QWP ingress SERVER_INFO") + .catch(() => undefined); +} + function connectQwpBrowserRawEndpoint( options: QwpBrowserIngressConnectionOptions, endpoint: string | URL, @@ -1007,9 +1025,7 @@ function connectQwpBrowserRawEndpoint( endpoint, ); } catch (error) { - await connection - .close(1002, "invalid QWP ingress SERVER_INFO") - .catch(() => undefined); + closeFailedIngressNegotiation(connection); throw error; } } @@ -1171,9 +1187,7 @@ async function connectQwpBrowserIngressEndpoint( endpoint, ); } catch (error) { - await connection - .close(1002, "invalid QWP ingress SERVER_INFO") - .catch(() => undefined); + closeFailedIngressNegotiation(connection); throw error; } }, diff --git a/packages/client-core/src/_qwp/_core/constants.ts b/packages/client-core/src/_qwp/_core/constants.ts index 13aea502b..9eaadb62f 100644 --- a/packages/client-core/src/_qwp/_core/constants.ts +++ b/packages/client-core/src/_qwp/_core/constants.ts @@ -84,10 +84,19 @@ export const QWP_EGRESS_MESSAGE = { SERVER_INFO: 0x18, } as const; +// Capability 0x00000008 belongs to per-query timeouts, which this client does +// not send: released clients (c-questdb-client 7.2.0 and later, and the Python +// client built on it) read it as "the server honours a per-query timeout". export const QWP_EGRESS_CAPABILITY = { ZONE: 0x00000001, QUERY_FLAGS: 0x00000002, COMPRESSION: 0x00000004, + /** + * The server honours the query-details bits of `query_flags`: error + * positions, execution statistics, row counts and row windows. A server + * without it ignores those bits and answers with the baseline frames. + */ + QUERY_DETAILS: 0x00000010, } as const; export const QWP_COMPRESSION_CODEC = { @@ -96,6 +105,44 @@ export const QWP_COMPRESSION_CODEC = { } as const; export const QWP_QUERY_FLAG_RESET_DICTIONARY = 0x01; +// Bit 0x02 belongs to per-query timeouts, which this client does not send: +// released clients (c-questdb-client 7.2.0 and later, and the Python client +// built on it) set it, followed by `timeout_ms:varint`, for a server that +// advertises capability 0x00000008. A flag that carries a field appends it +// after `query_flags` in ascending order of the flag bits, so `timeout_ms` +// goes ahead of `skip_rows` and `max_rows`. +// The query-details bits below take effect only where SERVER_INFO advertises +// QWP_EGRESS_CAPABILITY.QUERY_DETAILS. +/** + * `query_flags` bit: QUERY_ERROR carries the bare message, without the `[n]` + * prefix of the baseline frame, and ends with `position:i32`, the UTF-16 + * offset into the SQL text the error points at, or -1. A request the server + * rejects before reading its flags is still answered with the baseline frame. + */ +export const QWP_QUERY_FLAG_ERROR_POSITION = 0x04; +/** + * `query_flags` bit: RESULT_END and EXEC_DONE end with the statistics block + * `compile_ns, execute_ns, count_ns, client_wait_ns` (varints) and + * `stats_flags:u8`, after `row_count` when QWP_QUERY_FLAG_COUNT_ROWS is set too. + */ +export const QWP_QUERY_FLAG_STATS = 0x08; +/** + * `query_flags` bit: RESULT_END carries `row_count:varint` after `total_rows`, + * the number of rows in the whole result set, whatever the row window leaves + * out of the stream. + */ +export const QWP_QUERY_FLAG_COUNT_ROWS = 0x10; +/** + * `query_flags` bit: QUERY_REQUEST carries `skip_rows:varint` after + * `query_flags`, the rows to leave out at the start of the result set. + */ +export const QWP_QUERY_FLAG_SKIP_ROWS = 0x20; +/** + * `query_flags` bit: QUERY_REQUEST carries `max_rows:varint`, the most rows to + * stream, after `query_flags` and after `skip_rows` when + * QWP_QUERY_FLAG_SKIP_ROWS is set too. Zero streams only the schema. + */ +export const QWP_QUERY_FLAG_MAX_ROWS = 0x40; export const QWP_RESET_MASK_DICTIONARY = 0x01; export const QWP_SERVER_ROLE = { diff --git a/packages/client-core/src/_qwp/_core/egress.ts b/packages/client-core/src/_qwp/_core/egress.ts index 73537a5d0..7cf6dd5fd 100644 --- a/packages/client-core/src/_qwp/_core/egress.ts +++ b/packages/client-core/src/_qwp/_core/egress.ts @@ -4,6 +4,11 @@ import { QWP_EGRESS_CAPABILITY, QWP_EGRESS_MESSAGE, QWP_MAX_COLUMNS_PER_TABLE, + QWP_QUERY_FLAG_COUNT_ROWS, + QWP_QUERY_FLAG_ERROR_POSITION, + QWP_QUERY_FLAG_MAX_ROWS, + QWP_QUERY_FLAG_SKIP_ROWS, + QWP_QUERY_FLAG_STATS, } from "./constants"; import { decodeQwpFrame, QwpFrameHeader } from "./frame"; import { QwpProtocolError } from "./errors"; @@ -20,8 +25,55 @@ export interface QwpQueryRequest { bindCount?: number; /** Advanced escape hatch for an already encoded bind section. */ bindPayload?: Uint8Array; - /** Append only after SERVER_INFO advertises QUERY_FLAGS. */ + /** + * Append only after SERVER_INFO advertises QUERY_FLAGS, and set the + * query-details bits only after it advertises QUERY_DETAILS: a server + * without that capability ignores them, and streams every row whatever + * `skipRows` and `maxRows` say. + */ queryFlags?: number | bigint; + /** + * `skip_rows`, the rows to leave out at the start of the result set. + * Required by, and only allowed with, `QWP_QUERY_FLAG_SKIP_ROWS` in + * `queryFlags`. At most 2^63 - 1. + */ + skipRows?: number | bigint; + /** + * `max_rows`, the most rows to stream. Required by, and only allowed with, + * `QWP_QUERY_FLAG_MAX_ROWS` in `queryFlags`. At most 2^63 - 1. + */ + maxRows?: number | bigint; +} + +/** + * Execution statistics of one query, measured on the server. A completion + * carries them when its query asked for them (`QWP_QUERY_FLAG_STATS`). + */ +export interface QwpQueryStats { + /** + * Nanoseconds spent compiling the SQL, every attempt included; zero when + * the server reused a cached plan. + */ + readonly compileNanos: bigint; + /** + * Nanoseconds from the server receiving the request to its terminal + * response. Includes the other three durations. + */ + readonly executeNanos: bigint; + /** + * Nanoseconds spent counting the rows past the end of the row window, for + * `QWP_QUERY_FLAG_COUNT_ROWS`. Zero when the stream read every row, as it + * does unless `maxRows` ends it first: the rows `skipRows` leaves out are + * counted as they are skipped, within `executeNanos`. + */ + readonly countNanos: bigint; + /** + * Nanoseconds the query waited for the client: to read results, or to grant + * flow-control credit. + */ + readonly clientWaitNanos: bigint; + /** Whether the query's filter ran as JIT-compiled native code. */ + readonly jitCompiled: boolean; } /** Immutable endpoint metadata from the most recent successful egress bind. */ @@ -53,7 +105,15 @@ export interface QwpResultEndMessage extends QwpFrameHeader { kind: "result-end"; requestId: bigint; finalSequence: bigint; + /** Rows the stream carried: those the row window let through. */ totalRows: bigint; + /** + * Rows in the whole result set, whatever the row window left out of the + * stream. Present when the query asked for it (`QWP_QUERY_FLAG_COUNT_ROWS`). + */ + rowCount?: bigint; + /** Present when the query asked for it (`QWP_QUERY_FLAG_STATS`). */ + stats?: QwpQueryStats; } export interface QwpQueryErrorMessage extends QwpFrameHeader { @@ -61,6 +121,15 @@ export interface QwpQueryErrorMessage extends QwpFrameHeader { requestId: bigint; status: number; message: string; + /** + * UTF-16 offset into the SQL text the error points at: an index into the + * JavaScript string the query was issued with. Present when the query asked + * for it (`QWP_QUERY_FLAG_ERROR_POSITION`) and the SQL engine raised the + * error, which it does not for a protocol error, a CANCEL the client sent or + * an oversized row. It is 0 when the engine named no position, as for a + * query timeout on the server or `CANCEL QUERY`. + */ + position?: number; } export interface QwpExecDoneMessage extends QwpFrameHeader { @@ -68,6 +137,8 @@ export interface QwpExecDoneMessage extends QwpFrameHeader { requestId: bigint; operationType: number; rowsAffected: bigint; + /** Present when the query asked for it (`QWP_QUERY_FLAG_STATS`). */ + stats?: QwpQueryStats; } export interface QwpCacheResetMessage extends QwpFrameHeader { @@ -83,6 +154,15 @@ export type QwpEgressMessage = | QwpExecDoneMessage | QwpCacheResetMessage; +const MAX_UINT64 = 0xffffffffffffffffn; +/** + * Largest `skip_rows` and `max_rows`. QuestDB reads both into a signed long + * and rejects a varint of 2^63 or more. + */ +const MAX_ROW_WINDOW_BOUND = 0x7fffffffffffffffn; +/** `stats_flags` bit of the statistics block: the filter ran JIT-compiled. */ +const QUERY_STATS_FLAG_JIT_COMPILED = 0x01; + function requestId(value: number | bigint): bigint { if (typeof value === "number") { if (!Number.isSafeInteger(value) || value < 0) { @@ -90,12 +170,79 @@ function requestId(value: number | bigint): bigint { } return BigInt(value); } - if (value < 0n || value > 0xffffffffffffffffn) { + if (value < 0n || value > MAX_UINT64) { throw new RangeError("requestId must fit in uint64"); } return value; } +function queryFlagBits(value: number | bigint): bigint { + if (typeof value === "number") { + if (!Number.isSafeInteger(value) || value < 0) { + throw new RangeError("queryFlags must be a non-negative safe integer"); + } + return BigInt(value); + } + if (typeof value !== "bigint" || value < 0n || value > MAX_UINT64) { + throw new RangeError("queryFlags must fit in uint64"); + } + return value; +} + +function hasQueryFlag(queryFlags: bigint, flag: number): boolean { + return (queryFlags & BigInt(flag)) !== 0n; +} + +/** + * Validates a `skip_rows` or `max_rows` value: a non-negative safe integer, + * or a bigint no greater than 2^63 - 1. + * + * @internal Shared with the query session, which validates its options before + * a request exists. Not re-exported from the `_core` barrel. + */ +export function validateQwpRowWindowBound( + value: number | bigint, + name: string, +): number | bigint { + if (typeof value === "number") { + if (!Number.isSafeInteger(value) || value < 0) { + throw new RangeError(`${name} must be a non-negative safe integer`); + } + return value; + } + if (typeof value !== "bigint" || value < 0n || value > MAX_ROW_WINDOW_BOUND) { + throw new RangeError( + `${name} must be a bigint between 0 and ${MAX_ROW_WINDOW_BOUND}`, + ); + } + return value; +} + +/** + * The row-window value a flag carries, which the request must supply exactly + * when the flag is set: a flag without its value would make the server read + * whatever follows as the value, and a value without its flag would never be + * sent. + */ +function rowWindowField( + queryFlags: bigint, + flag: number, + flagName: string, + value: number | bigint | undefined, + name: string, +): number | bigint | undefined { + const flagged = hasQueryFlag(queryFlags, flag); + if (flagged && value === undefined) { + throw new Error(`${flagName} in queryFlags requires ${name}`); + } + if (!flagged && value !== undefined) { + throw new Error(`${name} requires ${flagName} in queryFlags`); + } + return value === undefined + ? undefined + : validateQwpRowWindowBound(value, name); +} + /** Encodes the unframed client-to-server QUERY_REQUEST payload. */ export function encodeQwpQueryRequest(request: QwpQueryRequest): Uint8Array { if ( @@ -134,6 +281,28 @@ export function encodeQwpQueryRequest(request: QwpQueryRequest): Uint8Array { throw new Error("bindCount requires a non-empty bindPayload"); } + // The field is typed `number | bigint`, and `0n !== 0`: testing against the + // number zero alone once made a bigint zero look like a flag and append a + // trailing varint that 0 omitted. Read as a bigint, both spellings of "no + // flags" omit it. + const queryFlags = queryFlagBits(request.queryFlags ?? 0); + // The row-window values follow the flags in ascending order of their bits. + // Null is unset, as it is for the other optional fields. + const skipRows = rowWindowField( + queryFlags, + QWP_QUERY_FLAG_SKIP_ROWS, + "QWP_QUERY_FLAG_SKIP_ROWS", + request.skipRows ?? undefined, + "skipRows", + ); + const maxRows = rowWindowField( + queryFlags, + QWP_QUERY_FLAG_MAX_ROWS, + "QWP_QUERY_FLAG_MAX_ROWS", + request.maxRows ?? undefined, + "maxRows", + ); + const sql = encodeUtf8(request.sql); const writer = new QwpByteWriter(32 + sql.length + bindPayload.length); writer.writeUint8(QWP_EGRESS_MESSAGE.QUERY_REQUEST); @@ -143,14 +312,10 @@ export function encodeQwpQueryRequest(request: QwpQueryRequest): Uint8Array { writeQwpVarint(writer, request.initialCredit ?? 0); writeQwpVarint(writer, bindCount); writer.writeBytes(bindPayload); - // The field is typed `number | bigint`, and `0n !== 0`, so testing against - // the number zero alone made a bigint zero look like a flag: spelling "no - // flags" as 0n appended a trailing varint that spelling it as 0 omitted -- - // two frames for one declared value. Reject both spellings of zero instead. - // writeQwpVarint() still validates whatever survives this test. - const queryFlags = request.queryFlags ?? 0; - if (queryFlags !== 0 && queryFlags !== 0n) { + if (queryFlags !== 0n) { writeQwpVarint(writer, queryFlags); + if (skipRows !== undefined) writeQwpVarint(writer, skipRows); + if (maxRows !== undefined) writeQwpVarint(writer, maxRows); } return writer.toUint8Array(); } @@ -180,8 +345,71 @@ function readUint16Utf8(reader: QwpByteReader, label: string): string { return reader.readUtf8(length, label); } -/** Decodes one QWP-framed server-to-client egress message. */ +function readQueryStats(reader: QwpByteReader): QwpQueryStats { + const compileNanos = readQwpVarint(reader); + const executeNanos = readQwpVarint(reader); + const countNanos = readQwpVarint(reader); + const clientWaitNanos = readQwpVarint(reader); + // Bits this client does not know are ignored: they report, they do not + // change how anything is read. + const statsFlags = reader.readUint8("query statistics flags"); + return { + compileNanos, + executeNanos, + countNanos, + clientWaitNanos, + jitCompiled: (statsFlags & QUERY_STATS_FLAG_JIT_COMPILED) !== 0, + }; +} + +/** + * Decodes one QWP-framed server-to-client egress message. RESULT_END, EXEC_DONE + * and QUERY_ERROR are read without the trailers that query-details flags add, + * and rejected if they carry any: decode the responses to a request sent with + * those flags with {@link decodeQwpEgressMessageWithQueryFlags}. + */ export function decodeQwpEgressMessage(bytes: Uint8Array): QwpEgressMessage { + // One parameter, as published: `map()` and `Array.from()` pass the index as + // a second argument, which a second parameter would read as query flags, + // rejecting valid frames. + return decodeEgressMessage(bytes, 0n, true); +} + +/** + * Decodes one QWP-framed server-to-client egress message answering a + * QUERY_REQUEST sent with `queryFlags`. + * + * The flags decide the trailers RESULT_END, EXEC_DONE and QUERY_ERROR end with + * -- the row count, the statistics and the error position -- which are read + * into the message and must be the last bytes of the frame. Other messages do + * not depend on them, and with no flags set this decodes as + * {@link decodeQwpEgressMessage} does. + */ +export function decodeQwpEgressMessageWithQueryFlags( + bytes: Uint8Array, + queryFlags: number | bigint, +): QwpEgressMessage { + return decodeEgressMessage(bytes, queryFlagBits(queryFlags), true); +} + +/** + * Decodes one egress message without the trailers of RESULT_END, EXEC_DONE and + * QUERY_ERROR, whose layout only the session that sent the request knows. The + * rest of the frame is validated as decodeQwpEgressMessage() does. + * + * @internal The reconnecting egress transport reads the kind and request ID of + * each message with it before the session decodes the whole frame. Not + * re-exported from the `_core` barrel. + */ +export function decodeQwpEgressEnvelope(bytes: Uint8Array): QwpEgressMessage { + return decodeEgressMessage(bytes, 0n, false); +} + +function decodeEgressMessage( + bytes: Uint8Array, + queryFlags: bigint, + readTrailers: boolean, +): QwpEgressMessage { const frame = decodeQwpFrame(bytes); const reader = new QwpByteReader(frame.payload); const messageKind = reader.readUint8("egress message kind"); @@ -243,41 +471,72 @@ export function decodeQwpEgressMessage(bytes: Uint8Array): QwpEgressMessage { const requestId = reader.readBigUint64("result request ID"); const finalSequence = readQwpVarint(reader); const totalRows = readQwpVarint(reader); - reader.expectEnd("RESULT_END"); - return { + const end: QwpResultEndMessage = { ...header, kind: "result-end", requestId, finalSequence, totalRows, }; + if (readTrailers) { + // Each trailer the request asked for is always sent: RESULT_END only + // answers a request the server has decoded, flags included. + if (hasQueryFlag(queryFlags, QWP_QUERY_FLAG_COUNT_ROWS)) { + end.rowCount = readQwpVarint(reader); + } + if (hasQueryFlag(queryFlags, QWP_QUERY_FLAG_STATS)) { + end.stats = readQueryStats(reader); + } + reader.expectEnd("RESULT_END"); + } + return end; } case QWP_EGRESS_MESSAGE.QUERY_ERROR: { const requestId = reader.readBigUint64("query error request ID"); const status = reader.readUint8("query error status"); const length = reader.readUint16("query error message length"); const message = reader.readUtf8(length, "query error message"); - reader.expectEnd("QUERY_ERROR"); - return { + const error: QwpQueryErrorMessage = { ...header, kind: "query-error", requestId, status, message, }; + if (readTrailers) { + // Optional even when asked for: a request the server rejects before + // it has read the flags -- one that does not decode -- gets the + // baseline frame, which ends with the message. + if ( + hasQueryFlag(queryFlags, QWP_QUERY_FLAG_ERROR_POSITION) && + reader.remaining > 0 + ) { + const position = reader.readInt32("query error position"); + // -1 marks an error that does not point into the SQL text. + if (position >= 0) error.position = position; + } + reader.expectEnd("QUERY_ERROR"); + } + return error; } case QWP_EGRESS_MESSAGE.EXEC_DONE: { const requestId = reader.readBigUint64("exec request ID"); const operationType = reader.readUint8("operation type"); const rowsAffected = readQwpVarint(reader); - reader.expectEnd("EXEC_DONE"); - return { + const done: QwpExecDoneMessage = { ...header, kind: "exec-done", requestId, operationType, rowsAffected, }; + if (readTrailers) { + if (hasQueryFlag(queryFlags, QWP_QUERY_FLAG_STATS)) { + done.stats = readQueryStats(reader); + } + reader.expectEnd("EXEC_DONE"); + } + return done; } case QWP_EGRESS_MESSAGE.CACHE_RESET: { const resetMask = reader.readUint8("cache reset mask"); diff --git a/packages/client-core/src/_qwp/_core/index.ts b/packages/client-core/src/_qwp/_core/index.ts index 6e1e377ff..9c617b7ac 100644 --- a/packages/client-core/src/_qwp/_core/index.ts +++ b/packages/client-core/src/_qwp/_core/index.ts @@ -2,14 +2,34 @@ export * from "./bytes"; export * from "./binds"; export * from "./compression"; export * from "./constants"; -// Named, unlike its neighbours: the credential subprotocol helpers in this -// module are browser-adapter internals, not public API of either package. +// Named: the credential subprotocol helpers in this module are +// browser-adapter internals, not public API of either package. export { addQwpDurableAckWebSocketProtocol, isQwpDurableAckWebSocketProtocol, QWP_DURABLE_ACK_WEBSOCKET_PROTOCOL, } from "./durable-ack"; -export * from "./egress"; +// Named, like the ingress codec below: the envelope decoder and the row-window +// validator in this module are the egress transport's and session's, not +// public API of either package. +export { + decodeQwpEgressMessage, + decodeQwpEgressMessageWithQueryFlags, + encodeQwpCancel, + encodeQwpCredit, + encodeQwpQueryRequest, +} from "./egress"; +export type { + QwpCacheResetMessage, + QwpEgressMessage, + QwpExecDoneMessage, + QwpQueryErrorMessage, + QwpQueryRequest, + QwpQueryStats, + QwpResultBatchMessage, + QwpResultEndMessage, + QwpServerInfoMessage, +} from "./egress"; export * from "./errors"; export * from "./frame"; export * from "./gorilla"; diff --git a/packages/client-core/src/_qwp/_internal/reconnecting-egress-connection.ts b/packages/client-core/src/_qwp/_internal/reconnecting-egress-connection.ts index c469bb396..ca37cdab8 100644 --- a/packages/client-core/src/_qwp/_internal/reconnecting-egress-connection.ts +++ b/packages/client-core/src/_qwp/_internal/reconnecting-egress-connection.ts @@ -4,6 +4,7 @@ import { QwpProtocolError, QwpServerInfoMessage, } from "../_core"; +import { decodeQwpEgressEnvelope } from "../_core/egress"; import { QWP_RECONNECT_EVENT_KIND, QWP_UPGRADE_ERROR_KIND, @@ -653,7 +654,10 @@ export class QwpReconnectingEgressConnection implements QwpBinaryConnection { // the close times out; left unread, all of it piled up in the old // connection's queue. if (this.closing || this.connection !== connection) continue; - const message = decodeQwpEgressMessage(next.value); + // Only the kind and request ID are needed here. The trailers of a + // terminal response depend on the query_flags its request was sent + // with, which only the session knows; it decodes and validates them. + const message = decodeQwpEgressEnvelope(next.value); if (message.kind === "server-info") { throw new QwpProtocolError("received duplicate QWP SERVER_INFO"); } else if ( @@ -692,9 +696,9 @@ export class QwpReconnectingEgressConnection implements QwpBinaryConnection { // reconnect succeeds, so connectLoop's own budget never runs out. // Charge it to the same per-query recovery budget. A queued terminal // awaiting the session's verdict is exempt: if accepted, nothing is - // replayed. If rejected, recoverProtocolFailure() finds the reconnect - // this starts already under way and fails the query rather than - // replaying it, so this path cannot repeat without a charge either. + // replayed. If rejected, recoverProtocolFailure() charges the rejection + // even when a reconnect is already under way, so this path cannot + // repeat without a charge either. const exhausted = this.chargeProtocolRecovery(error); if (exhausted) { this.failTerminal(exhausted); @@ -924,12 +928,23 @@ export class QwpReconnectingEgressConnection implements QwpBinaryConnection { this.rejectPendingTerminal(); this.throwIfUnavailable(); const connection = this.connection; - if (!connection) throw new QwpSendClosedError(); + if (!connection && !this.reconnectTask) throw new QwpSendClosedError(); const exhausted = this.chargeProtocolRecovery(error); if (exhausted) { this.failTerminal(exhausted); throw exhausted; } + if (!connection) { + // A full batch pool can delay terminal validation past socket loss. + // Rejecting the verdict releases the reconnect already under way; its + // owner reports any later failure, and the session withdraws a query + // that no longer needs a server from the replay. Drop stale messages, + // but do not await it here: if the consumer retires and withdraws the + // replay, reconnect needs this receive loop to cross the now-idle + // queue's barrier. + this.messagesQueue.clear(); + return; + } try { await this.requestReconnect( error, diff --git a/packages/client-core/src/_qwp/_internal/websocket-connection.ts b/packages/client-core/src/_qwp/_internal/websocket-connection.ts index 7c373ea22..20af42242 100644 --- a/packages/client-core/src/_qwp/_internal/websocket-connection.ts +++ b/packages/client-core/src/_qwp/_internal/websocket-connection.ts @@ -188,6 +188,52 @@ async function normalizeBinaryMessage(data: unknown): Promise { throw new QwpProtocolError("QWP WebSocket received a non-binary message"); } +/** + * Starts the closing handshake, and returns false when the socket refused it. + * + * A WHATWG WebSocket -- every browser's, and undici's in Node -- accepts only + * 1000 and 3000-4999 from a script and throws InvalidAccessError for 1001, 1002 + * and 1011, the codes this client closes with on shutdown and on failures. + * `ws` accepts them, so from Node they still reach the server. A refused close + * used to fall through to terminate(), which a browser socket lacks, and the + * socket stayed open behind a connection already settled as closed: pooled + * query sockets outlived QwpClient.close(), and a cancelled query that never + * drained went on streaming into the page. + * + * A socket without terminate() can only be closed by close(), and a WHATWG one + * validates its arguments before it changes any state, so a refused close is + * retried: with 1000, since a private-use code would mean nothing to the + * server, and then with no code at all, which also covers a reason the socket + * refuses, one over 123 UTF-8 bytes. `ws` enters CLOSING before it validates + * and then ignores another close(), so a refused one is terminated instead. + */ +function startClosingHandshake( + socket: QwpWebSocketLike, + code: number, + reason: string, +): boolean { + try { + socket.close(code, reason); + return true; + } catch { + if (socket.terminate) return false; + } + if (code !== 1000) { + try { + socket.close(1000, reason); + return true; + } catch { + // The reason may be what the socket refuses. + } + } + try { + socket.close(); + return true; + } catch { + return false; + } +} + /** Wraps a WHATWG-style WebSocket and resolves once its opening handshake succeeds. */ /** Absorbs a socket `error` raised before the real listeners are attached. */ const ignoreSocketError = (): void => undefined; @@ -291,21 +337,17 @@ export function openQwpWebSocket( if (opened) failSends(new QwpSendClosedError(requestedInfo)); if (socket.readyState === WEBSOCKET_CLOSED) { settleClosed(requestedInfo); - } else { + } else if (!startClosingHandshake(socket, code, reason)) { try { - socket.close(code, reason); + socket.terminate?.(); } catch { - try { - socket.terminate?.(); - } catch { - // The synthetic close below still releases local resources. - } - settleClosed({ - code: 1006, - reason: "QWP WebSocket close failed", - wasClean: false, - }); + // The synthetic close below still releases local resources. } + settleClosed({ + code: 1006, + reason: "QWP WebSocket close failed", + wasClean: false, + }); } if (!closeSettled) { let timer: ReturnType | undefined; @@ -317,6 +359,9 @@ export function openQwpWebSocket( ]); if (timer) clearTimeout(timer); if (timedOut && !closeSettled) { + // A browser socket has no terminate(): the browser keeps waiting for + // the peer's close until its own closing-handshake timeout, 60s in + // Chromium, and only then drops the connection. try { socket.terminate?.(); } catch { diff --git a/packages/client-core/src/_qwp/egress-session.ts b/packages/client-core/src/_qwp/egress-session.ts index a9a90e346..204a559bd 100644 --- a/packages/client-core/src/_qwp/egress-session.ts +++ b/packages/client-core/src/_qwp/egress-session.ts @@ -1,12 +1,17 @@ import { - decodeQwpEgressMessage, + decodeQwpEgressMessageWithQueryFlags, encodeQwpBinds, encodeQwpCancel, encodeQwpCredit, encodeQwpQueryRequest, QWP_COMPRESSION_CODEC, QWP_EGRESS_CAPABILITY, + QWP_QUERY_FLAG_COUNT_ROWS, + QWP_QUERY_FLAG_ERROR_POSITION, + QWP_QUERY_FLAG_MAX_ROWS, QWP_QUERY_FLAG_RESET_DICTIONARY, + QWP_QUERY_FLAG_SKIP_ROWS, + QWP_QUERY_FLAG_STATS, QWP_RESET_MASK_DICTIONARY, QWP_STATUS, QwpBindSetter, @@ -20,6 +25,7 @@ import { QwpResultEndMessage, QwpServerInfoMessage, } from "./_core"; +import { validateQwpRowWindowBound } from "./_core/egress"; import { QwpAsyncQueue } from "./_internal/async-queue"; import { validateQwpMaxBatchRows } from "./_internal/egress-limits"; import { monotonicNowMs } from "./_internal/monotonic-clock"; @@ -173,6 +179,62 @@ export interface QwpEgressQueryOptions { * Silently omitted when the server lacks QUERY_FLAGS for rolling upgrades. */ resetDictionary?: boolean; + /** + * Ask the server where in the SQL text a query error points. A + * {@link QwpEgressQueryError} then carries `position`, the UTF-16 offset + * into `sql` -- a JavaScript string index -- and the bare message, without + * the `[n]` prefix, a position or an error number, that QuestDB otherwise + * adds. An error the SQL engine raises without a position of its own + * reports 0, the start of the text, as `/exec` does: a query timeout on the + * server, or a query cancelled there with `CANCEL QUERY`. Errors that do not + * come from the SQL engine, such as the cancellation `cancel()` sends, carry + * no position. + * + * Silently omitted, like `stats` and `countRows`, when the server does not + * advertise QUERY_DETAILS, so it is safe during a rolling upgrade. + */ + errorPosition?: boolean; + /** + * Ask the server for execution statistics -- compile, execution, counting + * and client-wait times, and JIT use -- which the completion then carries + * as `stats`, for a result and for a statement alike. Silently omitted when + * the server does not advertise QUERY_DETAILS. + */ + stats?: boolean; + /** + * Ask the server for the number of rows in the whole result set, which the + * result's completion then carries as `rowCount`, whatever `skipRows` and + * `maxRows` leave out of the stream. When `maxRows` ends the stream first, + * the server counts the remaining rows without sending them. Ignored by + * statements, and silently omitted when the server does not advertise + * QUERY_DETAILS. + */ + countRows?: boolean; + /** + * Rows to leave out at the start of the result set, like the offset of SQL + * `LIMIT`. Zero, the default, leaves out none. A non-negative safe integer, + * or a bigint no greater than 2^63 - 1. A server with QUERY_DETAILS ignores + * it for statements. + * + * A row window cannot be dropped the way the reports above are: a server + * without QUERY_DETAILS would stream the whole result. The query fails with + * {@link QwpEgressRowWindowUnsupportedError} instead. `query()` rejects at + * once if the currently bound endpoint lacks the capability. A query that + * failover would replay on such an endpoint fails through its `completion` + * and iteration, and so does one issued during a reconnect that reaches + * such an endpoint, although its `query()` call resolves. A statement fails + * the same way, since the client cannot tell it from a query before + * sending it. + */ + skipRows?: number | bigint; + /** + * The most rows to stream, after `skipRows`. Zero streams only the schema, + * in one empty batch. Unbounded by default. A non-negative safe integer, or + * a bigint no greater than 2^63 - 1. A server with QUERY_DETAILS ignores it + * for statements. Like `skipRows`, it requires that capability, statements + * included. + */ + maxRows?: number | bigint; } interface QwpValidatedEgressSessionOptions { @@ -192,6 +254,12 @@ interface QwpReplayableQueryRequest { readonly bindCount?: number; readonly bindPayload?: Uint8Array; readonly resetDictionary: boolean; + readonly errorPosition: boolean; + readonly stats: boolean; + readonly countRows: boolean; + /** Absent rather than zero when no rows are skipped. */ + readonly skipRows?: number | bigint; + readonly maxRows?: number | bigint; readonly onFailoverReset?: QwpEgressQueryOptions["onFailoverReset"]; } @@ -239,7 +307,7 @@ function validateEgressSessionOptions( } return { serverInfoTimeoutMs, - initialCredit: validateInitialCredit( + initialCredit: validateCredit( options.initialCredit ?? QWP_DEFAULT_EGRESS_INITIAL_CREDIT, "initialCredit", ), @@ -277,10 +345,7 @@ function validateBufferPoolSize(value: number): number { return value; } -function validateInitialCredit( - value: number | bigint, - name: string, -): number | bigint { +function validateCredit(value: number | bigint, name: string): number | bigint { if (typeof value === "number") { if (!Number.isSafeInteger(value) || value < 0) { throw new RangeError(`${name} must be a non-negative safe integer`); @@ -293,6 +358,27 @@ function validateInitialCredit( return value; } +/** + * A `skipRows` or `maxRows` option. Unset when undefined or null, as the other + * options are through `??`. + */ +function validateRowWindowOption( + value: number | bigint | undefined, + name: string, +): number | bigint | undefined { + return value === undefined || value === null + ? undefined + : validateQwpRowWindowBound(value, name); +} + +function supportsQueryDetails(serverInfo: QwpServerInfoMessage): boolean { + return (serverInfo.capabilities & QWP_EGRESS_CAPABILITY.QUERY_DETAILS) !== 0; +} + +function hasRowWindow(request: QwpReplayableQueryRequest): boolean { + return request.skipRows !== undefined || request.maxRows !== undefined; +} + function validatePositiveTimeout(value: number, name: string): number { if (!Number.isFinite(value) || value <= 0 || exceedsQwpTimerCeiling(value)) { throw new RangeError( @@ -309,12 +395,41 @@ export class QwpEgressQueryError extends Error { readonly requestId: bigint, readonly status: number, message: string, + /** + * UTF-16 offset into the query's SQL text the error points at: an index + * into the JavaScript string the query was issued with. Present when the + * query asked for it with `errorPosition` and the SQL engine raised the + * error, and 0 when the engine named no position, as for a query timeout + * on the server or `CANCEL QUERY`. + */ + readonly position?: number, ) { super(message); this.name = "QwpEgressQueryError"; } } +/** + * The query asked for a row window -- `skipRows` or `maxRows` -- and the + * endpoint does not advertise the QUERY_DETAILS capability it needs. Such a + * server would stream the whole result, so the query is not sent to it. + * `query()` rejects at once if the currently bound endpoint lacks the + * capability. A query that failover would replay on such an endpoint fails + * instead of being replayed, and so does one issued during a reconnect that + * reaches such an endpoint: both reject their `completion` and iteration, + * while the `query()` call resolves. Statements are refused the same way, as + * the client cannot tell them from queries before sending them. Use SQL + * `LIMIT` with servers that predate the capability. + */ +export class QwpEgressRowWindowUnsupportedError extends Error { + constructor(readonly requestId: bigint) { + super( + `QWP endpoint does not advertise QUERY_DETAILS, which skipRows and maxRows require [requestId=${requestId}]`, + ); + this.name = "QwpEgressRowWindowUnsupportedError"; + } +} + /** * The query ran past its timeout (`queryTimeoutMs` or the per-query * `timeoutMs`) and was cancelled. Reported once the server has ended the @@ -371,6 +486,12 @@ export class QwpEgressSessionClosedError extends Error { } } +/** + * What a query asks of its session. The operations returning a promise never + * throw: every failure, including a session that has failed or closed, rejects + * that promise. On a session still open, one naming a request that has left it + * resolves without doing anything, since nothing is left to act on. + */ interface QwpEgressQueryControl { cancel(requestId: bigint): Promise; abandon(requestId: bigint): Promise; @@ -412,9 +533,15 @@ export interface QwpEgressViewQuery { /** * Cancels the query: no further batch reaches the callback, and the outcome * follows the server's terminal response, as for - * {@link QwpEgressQuery.cancel}. + * {@link QwpEgressQuery.cancel}. Once the query has ended, it resolves + * without sending anything. */ cancel(): Promise; + /** + * Grants the server more send-ahead credit for this query, as + * {@link QwpEgressQuery.grantCredit} does. A query that has ended is owed + * none: the grant resolves without sending anything. + */ grantCredit(additionalBytes: number | bigint): Promise; isDone(): boolean; } @@ -568,12 +695,43 @@ export class QwpEgressQuery implements AsyncIterable { * reconnect has taken it over: it then follows the replayed request, and a * later failure reaches the query and the session. A query sends at most * one `CANCEL`. + * + * A query that has already ended, as `isDone()` reports, has nothing left + * to cancel: the returned promise resolves and nothing is sent, even if the + * session has since closed or failed. A timer or an `AbortSignal` listener + * that fires after the query completes may therefore still call it. This + * method never throws: every failure rejects the returned promise. */ cancel(): Promise { + // An ended query has nothing left to cancel, so its session is not asked: + // one that has failed or closed since rejects every call. Asked once it + // had handled the terminal response, the session used to throw + // QwpProtocolError synchronously, past any .catch() on this promise. + if (this.terminal) return Promise.resolve(); return this.control.cancel(this.requestId); } + /** + * Grants the server `additionalBytes` more send-ahead credit for this + * query. Use it to replenish credit by hand on a query run with + * `autoCredit: false`. + * + * A query that has already ended is owed no credit: the returned promise + * resolves and nothing is sent, even if the session has since closed or + * failed. `additionalBytes` must be a non-negative safe integer or a + * `bigint` that fits in uint64, whatever the query's state; any other value + * rejects with a `RangeError`. This method never throws: every failure + * rejects the returned promise. + */ grantCredit(additionalBytes: number | bigint): Promise { + try { + validateCredit(additionalBytes, "additionalBytes"); + } catch (error) { + return Promise.reject(error); + } + // An ended query takes no further batches, so it is owed no credit, and + // its session is not asked, for the same reasons as in cancel(). + if (this.terminal) return Promise.resolve(); // Replayable, and accepted as soon as a reconnect owns it. Both arguments // matter: the grant is recorded in the replayable request before its frame // is sent, so without the replay-supersession handling the replacement @@ -994,13 +1152,11 @@ export class QwpEgressQuery implements AsyncIterable { } private returnCredit(creditBytes: number): void { - try { - void this.control - .grantCredit(this.requestId, creditBytes, false) - .catch(() => undefined); - } catch { - // The query is no longer active on the session; nothing is owed. - } + // The session send tail owns failures, and a query no longer active on + // the session is owed nothing: the grant then resolves without a frame. + void this.control + .grantCredit(this.requestId, creditBytes, false) + .catch(() => undefined); } private discardBufferedResults(): number { @@ -1156,6 +1312,17 @@ export class QwpEgressSession implements QwpEgressQueryControl { */ private manualCreditEpoch = 0; private replayedCredit: { requestId?: bigint; epoch: number } = { epoch: 0 }; + /** + * The query_flags of the QUERY_REQUEST encoded last, which is the one on + * the wire: an encode precedes every send, and a replay that re-encodes the + * request waits until the old connection's terminal response, if any, has + * been decoded. They decide the trailers of the terminal response. + * + * Kept after the query leaves the session rather than cleared with it, so a + * terminal response still queued when the session closes decodes, and is + * reported as the closed session it is rather than as a protocol fault. + */ + private responseQueryFlags = 0; /** Initial SERVER_INFO; use serverInfo for the current post-failover snapshot. */ readonly ready: Promise; @@ -1335,7 +1502,7 @@ export class QwpEgressSession implements QwpEgressQueryControl { // The timeout runs from this call: waiting for SERVER_INFO, for a previous // query to drain and for the request to leave all count against it. const deadline = timeoutMs > 0 ? monotonicNowMs() + timeoutMs : undefined; - const initialCredit = validateInitialCredit( + const initialCredit = validateCredit( options.initialCredit ?? this.defaultInitialCredit, "initialCredit", ); @@ -1351,6 +1518,8 @@ export class QwpEgressSession implements QwpEgressQueryControl { ) { throw new TypeError("onFailoverReset must be a function"); } + const skipRows = validateRowWindowOption(options.skipRows, "skipRows"); + const maxRows = validateRowWindowOption(options.maxRows, "maxRows"); const start = this.beginQueryStart(); try { await this.waitToStart(timeoutMs, deadline, start.abandoned); @@ -1403,6 +1572,12 @@ export class QwpEgressSession implements QwpEgressQueryControl { bindCount: encodedBinds?.count ?? options.bindCount, bindPayload: (encodedBinds?.payload ?? options.bindPayload)?.slice(), resetDictionary: options.resetDictionary === true, + errorPosition: options.errorPosition === true, + stats: options.stats === true, + countRows: options.countRows === true, + // Skipping no rows is no row window, so it needs no capability. + skipRows: skipRows === 0 || skipRows === 0n ? undefined : skipRows, + maxRows, onFailoverReset: options.onFailoverReset, }; this.decoder.resetQuerySchema(); @@ -1411,6 +1586,8 @@ export class QwpEgressSession implements QwpEgressQueryControl { if (deadline !== undefined) query.armDeadline(remainingMs); let sending: Promise; try { + // Throws QwpEgressRowWindowUnsupportedError, before anything is sent, + // for a row window the endpoint does not support. sending = this.sendQueryRequest( this.encodeQueryRequest(request, this.currentServerInfo!), () => this.active !== query, @@ -1499,31 +1676,45 @@ export class QwpEgressSession implements QwpEgressQueryControl { } cancel(requestId: bigint): Promise { - const query = this.requireActive(requestId); - // Past its timeout, with its consumer gone, or cancelled already, the - // query is already being cancelled, and the server would ignore a second - // CANCEL. - if (query.isDone() || query.pastDeadline || query.cancelledByUser) { - return Promise.resolve(); + try { + const query = this.controlledQuery(requestId); + // A query that has left the session has ended. Past its timeout, with + // its consumer gone, or cancelled already, the query is already being + // cancelled, and the server would ignore a second CANCEL. + if ( + !query || + query.isDone() || + query.pastDeadline || + query.cancelledByUser + ) { + return Promise.resolve(); + } + // No further batch reaches the consumer, exactly as at a timeout. The + // cancel used to leave delivery running, so the terminal response queued + // behind every batch still in flight: a consumer that stopped iterating + // parked the receive loop on a full slot pool short of it, until the + // CANCEL drain gave up on the connection. + const discardedCredit = query.cancelByUser(); + // Without a connection the CANCEL follows the replayed request, and its + // drain bound starts with the replacement connection. + if (!this.connectionLost) this.armCancelDrain(requestId); + return this.releasedByReconnect(this.sendCancel(query, discardedCredit)); + } catch (error) { + return Promise.reject(error); } - // No further batch reaches the consumer, exactly as at a timeout. The - // cancel used to leave delivery running, so the terminal response queued - // behind every batch still in flight: a consumer that stopped iterating - // parked the receive loop on a full slot pool short of it, until the - // CANCEL drain gave up on the connection. - const discardedCredit = query.cancelByUser(); - // Without a connection the CANCEL follows the replayed request, and its - // drain bound starts with the replacement connection. - if (!this.connectionLost) this.armCancelDrain(requestId); - return this.releasedByReconnect(this.sendCancel(query, discardedCredit)); } abandon(requestId: bigint): Promise { - const query = this.requireActive(requestId); - const discardedCredit = query.retire( - new QwpEgressQueryAbandonedError(requestId), - ); - return this.drainRetired(query, discardedCredit); + try { + const query = this.controlledQuery(requestId); + if (!query) return Promise.resolve(); + const discardedCredit = query.retire( + new QwpEgressQueryAbandonedError(requestId), + ); + return this.drainRetired(query, discardedCredit); + } catch (error) { + return Promise.reject(error); + } } grantCredit( @@ -1532,29 +1723,35 @@ export class QwpEgressSession implements QwpEgressQueryControl { replayOnReconnect = true, acceptWhenReconnectStarts = false, ): Promise { - this.requireActive(requestId); - const payload = encodeQwpCredit(requestId, additionalBytes); - if (!replayOnReconnect) { - return this.sendWhileActive(requestId, payload); + try { + const payload = encodeQwpCredit(requestId, additionalBytes); + // A query that has left the session is owed no credit. + if (!this.controlledQuery(requestId)) return Promise.resolve(); + if (!replayOnReconnect) { + return this.sendWhileActive(requestId, payload); + } + const additional = BigInt(additionalBytes); + return this.sendWhileActive( + requestId, + payload, + () => { + const request = this.activeRequest; + if (!request || request.requestId !== requestId) return; + this.manualCreditEpoch++; + const total = BigInt(request.initialCredit) + additional; + // QUERY_REQUEST carries one uint64 initial-credit field. Saturating + // is lossless for any representable result stream and avoids + // dropping all successfully granted manual credit merely because + // several grants were used before a failover. Apply before the + // physical CREDIT send: that send itself may be what starts the + // replay. + request.initialCredit = total > MAX_UINT64 ? MAX_UINT64 : total; + }, + acceptWhenReconnectStarts, + ); + } catch (error) { + return Promise.reject(error); } - const additional = BigInt(additionalBytes); - return this.sendWhileActive( - requestId, - payload, - () => { - const request = this.activeRequest; - if (!request || request.requestId !== requestId) return; - this.manualCreditEpoch++; - const total = BigInt(request.initialCredit) + additional; - // QUERY_REQUEST carries one uint64 initial-credit field. Saturating is - // lossless for any representable result stream and avoids dropping all - // successfully granted manual credit merely because several grants - // were used before a failover. Apply before the physical CREDIT send: - // that send itself may be what starts the replay. - request.initialCredit = total > MAX_UINT64 ? MAX_UINT64 : total; - }, - acceptWhenReconnectStarts, - ); } /** @@ -1611,7 +1808,8 @@ export class QwpEgressSession implements QwpEgressQueryControl { } async rejectView(requestId: bigint, error: Error): Promise { - const query = this.requireActive(requestId); + const query = this.controlledQuery(requestId); + if (!query) return; const discardedCredit = query.retire(error); await this.drainRetired(query, discardedCredit); } @@ -1758,7 +1956,10 @@ export class QwpEgressSession implements QwpEgressQueryControl { try { for await (const payload of this.connection.messages) { try { - const message = decodeQwpEgressMessage(payload); + const message = decodeQwpEgressMessageWithQueryFlags( + payload, + this.responseQueryFlags, + ); switch (message.kind) { case "server-info": if (this.currentServerInfo) { @@ -1844,6 +2045,7 @@ export class QwpEgressSession implements QwpEgressQueryControl { message.requestId, message.status, message.message, + message.position, ), ); this.clearCancelDrain(message.requestId); @@ -1858,6 +2060,14 @@ export class QwpEgressSession implements QwpEgressQueryControl { this.connection instanceof QwpReconnectingEgressConnection ) { await this.connection.recoverProtocolFailure(error); + // A terminal response rejected after the connection was lost no + // longer decides the query, which settleLostQuery() left to it + // while it waited. Settle again, so a query that no longer needs + // a server -- its consumer retired, its timeout expired -- leaves + // the replay rather than running again only to be cancelled, as + // it does when the rejection itself starts the reconnect. Once + // reconnected, this does nothing. + this.settleLostQuery(); continue; } throw error; @@ -1886,6 +2096,7 @@ export class QwpEgressSession implements QwpEgressQueryControl { } } + /** The active query a server message names; any other is a protocol fault. */ private requireActive(requestId: bigint): QwpEgressQuery { this.throwIfUnavailable(); if (!this.active || this.active.requestId !== requestId) { @@ -1896,6 +2107,22 @@ export class QwpEgressSession implements QwpEgressQueryControl { return this.active; } + /** + * The active query an application's control call names, or undefined once + * that query has left the session. Throws if the session has failed or is + * closing; the control calls turn that into a rejection. + * + * Unlike a server message, an application names an ended request simply by + * acting late -- a timer or an `AbortSignal` listener that fires after the + * terminal response -- and nothing is left to act on then. requireActive() + * reported that as a protocol fault, thrown before any promise existed. + */ + private controlledQuery(requestId: bigint): QwpEgressQuery | undefined { + this.throwIfUnavailable(); + const query = this.active; + return query?.requestId === requestId ? query : undefined; + } + /** * Drops a RESULT_BATCH whose query is no longer taking rows, returning its * credit so the server keeps draining. @@ -1940,11 +2167,45 @@ export class QwpEgressSession implements QwpEgressQueryControl { await query.resetForReplay(); // Its timeout may have expired while the callback ran. if (this.activeDetached) this.clearActive(query); + else this.withdrawUnreplayable(query, serverInfo); } this.decoder.applyCacheReset(QWP_RESET_MASK_DICTIONARY); this.decoder.resetQuerySchema(); } + /** + * Fails the active query rather than replaying it on an endpoint that cannot + * run it as asked. A row window needs QUERY_DETAILS, and a server without it + * would stream the whole result. A request still waiting for its first send + * is withdrawn the same way, before it leaves. + */ + private withdrawUnreplayable( + query: QwpEgressQuery, + serverInfo: QwpServerInfoMessage, + ): void { + const request = this.activeRequest; + if ( + this.active !== query || + !request || + !hasRowWindow(request) || + supportsQueryDetails(serverInfo) + ) { + return; + } + // A no-op for a consumer that has already retired. A cancellation the + // application asked for first is still reported as its own. + query.retire( + query.cancelledByUser + ? query.cancelledError() + : new QwpEgressRowWindowUnsupportedError(query.requestId), + ); + this.clearCancelDrain(query.requestId); + if (this.connection instanceof QwpReconnectingEgressConnection) { + this.connection.dropReplay(query.requestId); + } + this.clearActive(query); + } + /** * The replacement connection takes over: the active query's replay, if it * has one, is sent next. A query ending from now on drains on the @@ -1993,6 +2254,7 @@ export class QwpEgressSession implements QwpEgressQueryControl { } if (!query.isDone() && !query.pastDeadline) return; // Its terminal response arrived before the connection went, and decides. + // If the session rejects it, consumeMessages() settles the query again. if (connection.hasPendingTerminal(query.requestId)) return; // A no-op for a consumer that has already retired. query.retire(query.timeoutError()); @@ -2044,30 +2306,56 @@ export class QwpEgressSession implements QwpEgressQueryControl { `QWP egress replay references inactive request ID ${requestId}`, ); } - // Recorded synchronously with the read below: every manual grant folded + const payload = this.encodeQueryRequest(request, serverInfo); + // Recorded synchronously with the encode above: every manual grant folded // into this request before now travels with the replay, so its own CREDIT // frame must not also reach the replacement connection. this.replayedCredit = { requestId, epoch: this.manualCreditEpoch }; - return this.encodeQueryRequest(request, serverInfo); + return payload; } + /** + * Encodes the request for one endpoint, with the flags its capabilities + * allow. Each encode records them, as the request then sent carries them. + */ private encodeQueryRequest( request: QwpReplayableQueryRequest, serverInfo: QwpServerInfoMessage, ): Uint8Array { const supportsQueryFlags = (serverInfo.capabilities & QWP_EGRESS_CAPABILITY.QUERY_FLAGS) !== 0; - return encodeQwpQueryRequest({ + let queryFlags = + request.resetDictionary && supportsQueryFlags + ? QWP_QUERY_FLAG_RESET_DICTIONARY + : 0; + if (supportsQueryDetails(serverInfo)) { + if (request.errorPosition) queryFlags |= QWP_QUERY_FLAG_ERROR_POSITION; + if (request.stats) queryFlags |= QWP_QUERY_FLAG_STATS; + if (request.countRows) queryFlags |= QWP_QUERY_FLAG_COUNT_ROWS; + if (request.skipRows !== undefined) { + queryFlags |= QWP_QUERY_FLAG_SKIP_ROWS; + } + if (request.maxRows !== undefined) queryFlags |= QWP_QUERY_FLAG_MAX_ROWS; + } else if (hasRowWindow(request)) { + // The reports above are dropped on such an endpoint, as the dictionary + // reset is without QUERY_FLAGS, so they stay safe in a rolling upgrade. + // A row window cannot be: the server would stream every row. A replay + // never gets here, see withdrawUnreplayable(). + throw new QwpEgressRowWindowUnsupportedError(request.requestId); + } + const payload = encodeQwpQueryRequest({ requestId: request.requestId, sql: request.sql, initialCredit: request.initialCredit, bindCount: request.bindCount, bindPayload: request.bindPayload, - queryFlags: - request.resetDictionary && supportsQueryFlags - ? QWP_QUERY_FLAG_RESET_DICTIONARY - : undefined, + queryFlags, + // Each is set exactly when its flag is, as the encoder requires. + skipRows: request.skipRows, + maxRows: request.maxRows, }); + this.responseQueryFlags = queryFlags; + return payload; } /** diff --git a/packages/client-core/src/qwp/index.ts b/packages/client-core/src/qwp/index.ts index b98856051..17bdf60ea 100644 --- a/packages/client-core/src/qwp/index.ts +++ b/packages/client-core/src/qwp/index.ts @@ -21,6 +21,7 @@ export { QwpEgressQueryCancelTimeoutError, QwpEgressQueryError, QwpEgressQueryTimeoutError, + QwpEgressRowWindowUnsupportedError, QwpEgressSession, QwpEgressSessionClosedError, } from "../_qwp/egress-session"; diff --git a/packages/nodejs-client/README.md b/packages/nodejs-client/README.md index 75a436059..8c3f70d6b 100644 --- a/packages/nodejs-client/README.md +++ b/packages/nodejs-client/README.md @@ -289,6 +289,12 @@ try { Use `queryViews()` instead of `query()` for reusable, allocation-conscious column and row views. +Query options `errorPosition`, `stats` and `countRows` report where an error +points in the SQL string, the query's timings, and the size of the whole +result; `skipRows` and `maxRows` read it one page at a time. They need a server +that advertises the `QUERY_DETAILS` capability; see the +[QWP guide](https://github.com/questdb/nodejs-questdb-client/blob/main/QWP.md#error-positions-statistics-row-counts-and-paging). + ## Persistent store-and-forward Node.js can journal QWP frames to disk before sending them. The producer can diff --git a/test/dist-types/public-api-types.ts b/test/dist-types/public-api-types.ts index eba11787b..d2d62c7dc 100644 --- a/test/dist-types/public-api-types.ts +++ b/test/dist-types/public-api-types.ts @@ -76,6 +76,7 @@ export type { QwpQueryCompletion, QwpQueryErrorMessage, QwpQueryRequest, + QwpQueryStats, QwpReconnectEvent, QwpReconnectEventKind, QwpResourcePoolMetrics, @@ -181,6 +182,7 @@ export type { QwpQueryCompletion as BrowserQwpQueryCompletion, QwpQueryErrorMessage as BrowserQwpQueryErrorMessage, QwpQueryRequest as BrowserQwpQueryRequest, + QwpQueryStats as BrowserQwpQueryStats, QwpReconnectEvent as BrowserQwpReconnectEvent, QwpReconnectEventKind as BrowserQwpReconnectEventKind, QwpResourcePoolMetrics as BrowserQwpResourcePoolMetrics, diff --git a/test/qwp/browser.e2e.ts b/test/qwp/browser.e2e.ts index 1c917a496..1e6098205 100644 --- a/test/qwp/browser.e2e.ts +++ b/test/qwp/browser.e2e.ts @@ -3,7 +3,7 @@ import { readFile } from "node:fs/promises"; import { AddressInfo } from "node:net"; import path from "node:path"; import { Browser, chromium } from "playwright"; -import { afterAll, beforeAll, describe, expect, it } from "vitest"; +import { afterAll, beforeAll, describe, expect, it, vi } from "vitest"; import { WebSocketServer } from "ws"; import { encodeQwpFrame, @@ -114,10 +114,10 @@ function browserIngressServerInfo( .toUint8Array(); } -function browserEmptyResultBatch(requestId: bigint): Uint8Array { +function browserEmptyResultBatch(requestId: bigint, sequence = 0): Uint8Array { const payload = new QwpByteWriter(); payload.writeUint8(QWP_EGRESS_MESSAGE.RESULT_BATCH).writeBigUint64(requestId); - writeQwpVarint(payload, 0); // batch sequence + writeQwpVarint(payload, sequence); // batch sequence writeQwpVarint(payload, 0); // table name writeQwpVarint(payload, 0); // row count writeQwpVarint(payload, 0); // column count @@ -874,4 +874,173 @@ describe("QWP in a real browser", () => { await closeWebSocketServer(server); } }); + + // A browser's WebSocket.close() throws for 1001, 1002 and 1011, the codes + // the client closes with on shutdown and on failures. The client used to + // treat the connection as closed while the native socket stayed open. + it("closes pooled query sockets when the client closes, in a real browser", async () => { + const closes: { code: number; reason: string }[] = []; + const server = new WebSocketServer({ host: "127.0.0.1", port: 0 }); + server.on("connection", (socket) => { + socket.on("close", (code, reason) => { + closes.push({ code, reason: reason.toString() }); + }); + socket.send(browserServerInfo()); + socket.on("message", (data) => { + const reader = new QwpByteReader(new Uint8Array(data as Buffer)); + if (reader.readUint8() === QWP_EGRESS_MESSAGE.QUERY_REQUEST) { + socket.send(browserResultEnd(reader.readBigUint64())); + } + }); + }); + await waitForWebSocketServer(server); + const address = server.address() as AddressInfo; + const page = await browser.newPage(); + try { + await page.goto(assetUrl); + const readyStates = await page.evaluate( + async ({ moduleUrl, url }) => { + const importModule = new Function("url", "return import(url)") as ( + url: string, + ) => Promise>; + const qwp = await importModule(moduleUrl); + const sockets: WebSocket[] = []; + const client = qwp.createQwpBrowserClient({ + cluster: { url }, + egress: { + webSocketFactory: ( + endpoint: string | URL, + protocols?: string | string[], + ) => { + const socket = new WebSocket(endpoint, protocols); + sockets.push(socket); + return socket; + }, + }, + }); + const lease = await client.borrowQuery(); + const query = await lease.query("select 1"); + await query.completion; + await lease.close(); + await client.close(); + return sockets.map((socket) => socket.readyState); + }, + { + moduleUrl: assetUrl, + url: `ws://127.0.0.1:${address.port}`, + }, + ); + + // CLOSED already: close() waits for the server's close. A literal, as + // Node 20 has no global WebSocket to read the constant from. + expect(readyStates).toEqual([3]); + await vi.waitFor(() => + expect(closes).toEqual([ + { code: 1000, reason: "QWP client shutting down" }, + ]), + ); + } finally { + await page.close(); + await closeWebSocketServer(server); + } + }); + + it("closes the socket of an undrained cancel without reconnect, in a real browser", async () => { + // The server streams a long result and never answers the CANCEL, like + // QuestDB streaming without flow control, so the session fails when the + // drain bound expires and has to close the only connection it has. + const closes: { code: number; reason: string }[] = []; + const server = new WebSocketServer({ host: "127.0.0.1", port: 0 }); + server.on("connection", (socket) => { + let stream: ReturnType | undefined; + socket.on("close", (code, reason) => { + clearInterval(stream); + closes.push({ code, reason: reason.toString() }); + }); + socket.send(browserServerInfo()); + socket.on("message", (data) => { + const reader = new QwpByteReader(new Uint8Array(data as Buffer)); + if (reader.readUint8() !== QWP_EGRESS_MESSAGE.QUERY_REQUEST) return; + const requestId = reader.readBigUint64(); + let sequence = 0; + stream = setInterval(() => { + if (socket.readyState !== socket.OPEN) return; + socket.send(browserEmptyResultBatch(requestId, sequence++)); + }, 5); + }); + }); + await waitForWebSocketServer(server); + const address = server.address() as AddressInfo; + const page = await browser.newPage(); + try { + await page.goto(assetUrl); + const result = await page.evaluate( + async ({ moduleUrl, url }) => { + const importModule = new Function("url", "return import(url)") as ( + url: string, + ) => Promise>; + const qwp = await importModule(moduleUrl); + const sockets: WebSocket[] = []; + const session = await qwp.connectQwpBrowserEgress({ + url, + reconnect: false, + cancelDrainTimeoutMs: 100, + webSocketFactory: ( + endpoint: string | URL, + protocols?: string | string[], + ) => { + const socket = new WebSocket(endpoint, protocols); + sockets.push(socket); + return socket; + }, + }); + try { + const query = await session.query( + "select x from long_sequence(500000000)", + ); + await query[Symbol.asyncIterator]().next(); + await query.cancel(); + const failure = await query.completion.then( + () => undefined, + (error: Error) => error.name, + ); + // The failure closes the socket without waiting for the server, + // so wait for it here, without closing the session. + const deadline = Date.now() + 5_000; + while ( + sockets.some( + (socket) => socket.readyState !== WebSocket.CLOSED, + ) && + Date.now() < deadline + ) { + await new Promise((resolve) => setTimeout(resolve, 10)); + } + return { + failure, + readyStates: sockets.map((socket) => socket.readyState), + }; + } finally { + await session.close(); + } + }, + { + moduleUrl: assetUrl, + url: `ws://127.0.0.1:${address.port}/read/v1`, + }, + ); + + expect(result).toEqual({ + failure: "QwpEgressQueryCancelTimeoutError", + readyStates: [3], // CLOSED + }); + await vi.waitFor(() => + expect(closes).toEqual([ + { code: 1000, reason: "QWP cancellation drain timed out" }, + ]), + ); + } finally { + await page.close(); + await closeWebSocketServer(server); + } + }); }); diff --git a/test/qwp/core.test.ts b/test/qwp/core.test.ts index be1340f90..c2c65a21a 100644 --- a/test/qwp/core.test.ts +++ b/test/qwp/core.test.ts @@ -2,6 +2,7 @@ import { runInNewContext } from "node:vm"; import { describe, expect, it } from "vitest"; import { decodeQwpEgressMessage, + decodeQwpEgressMessageWithQueryFlags, decodeQwpContentEncoding, decodeQwpFrame, decodeQwpIngressResponse, @@ -32,6 +33,12 @@ import { QWP_HEADER_SIZE, QWP_INGRESS_SERVER_INFO_CAPABILITY, QWP_MAGIC, + QWP_QUERY_FLAG_COUNT_ROWS, + QWP_QUERY_FLAG_ERROR_POSITION, + QWP_QUERY_FLAG_MAX_ROWS, + QWP_QUERY_FLAG_RESET_DICTIONARY, + QWP_QUERY_FLAG_SKIP_ROWS, + QWP_QUERY_FLAG_STATS, QWP_STATUS, QwpByteReader, QwpByteWriter, @@ -40,6 +47,7 @@ import { QwpTableBuffer, type QwpColumnBuffer, type QwpColumnType, + type QwpQueryRequest, qwpGorillaSize, qwpVarintSize, readQwpVarint, @@ -59,6 +67,8 @@ import { utf8Length, } from "../../packages/client-core/src/_qwp/_core/bytes"; import { measureQwpIngressFrame } from "../../packages/client-core/src/_qwp/_core/ingress"; +// Internal: the reconnecting transport's view of a frame, not exported. +import { decodeQwpEgressEnvelope } from "../../packages/client-core/src/_qwp/_core/egress"; import { readQwpVarintSmall } from "../../packages/client-core/src/_qwp/_core/varint-number"; function dataView(bytes: Uint8Array): DataView { @@ -1347,6 +1357,440 @@ describe("QWP egress codec", () => { ), ).toThrow(/truncated/i); }); + + describe("query details", () => { + const baseline = encodeQwpQueryRequest({ requestId: 9n, sql: "select 42" }); + const windowed = ( + queryFlags: number | bigint, + window: Pick, + ): Uint8Array => + encodeQwpQueryRequest({ + requestId: 9n, + sql: "select 42", + queryFlags, + ...window, + }); + /** The bytes a request carries after its bind section. */ + const afterBinds = (request: Uint8Array): number[] => { + expect(request.subarray(0, baseline.length)).toEqual(baseline); + return Array.from(request.subarray(baseline.length)); + }; + + function terminal( + kind: number, + body: (writer: QwpByteWriter) => void, + ): Uint8Array { + const payload = new QwpByteWriter(); + payload.writeUint8(kind).writeBigUint64(11n); + body(payload); + return encodeQwpFrame(payload.toUint8Array()); + } + + function resultEnd(trailer?: (writer: QwpByteWriter) => void) { + return terminal(QWP_EGRESS_MESSAGE.RESULT_END, (writer) => { + writeQwpVarint(writer, 4); // final sequence + writeQwpVarint(writer, 123); // total rows + trailer?.(writer); + }); + } + + function execDone(trailer?: (writer: QwpByteWriter) => void) { + return terminal(QWP_EGRESS_MESSAGE.EXEC_DONE, (writer) => { + writer.writeUint8(2); // operation type + writeQwpVarint(writer, 7); // rows affected + trailer?.(writer); + }); + } + + function queryError(trailer?: (writer: QwpByteWriter) => void) { + return terminal(QWP_EGRESS_MESSAGE.QUERY_ERROR, (writer) => { + writer.writeUint8(QWP_STATUS.PARSE_ERROR); + writeU16String(writer, "table does not exist [table=t]"); + trailer?.(writer); + }); + } + + function statsBlock( + nanos: readonly (number | bigint)[], + statsFlags: number, + ): (writer: QwpByteWriter) => void { + return (writer) => { + for (const value of nanos) writeQwpVarint(writer, value); + writer.writeUint8(statsFlags); + }; + } + + it("encodes the row window after the flags in ascending bit order", () => { + // 300 is a two-byte varint, so a reader that took only its first byte + // would read the next field from the middle of this one. + expect( + afterBinds( + windowed( + QWP_QUERY_FLAG_SKIP_ROWS | + QWP_QUERY_FLAG_MAX_ROWS | + QWP_QUERY_FLAG_COUNT_ROWS, + { skipRows: 300, maxRows: 0 }, + ), + ), + ).toEqual([0x70, 0xac, 0x02, 0x00]); + expect( + afterBinds(windowed(QWP_QUERY_FLAG_SKIP_ROWS, { skipRows: 7 })), + ).toEqual([QWP_QUERY_FLAG_SKIP_ROWS, 7]); + expect( + afterBinds(windowed(QWP_QUERY_FLAG_MAX_ROWS, { maxRows: 5 })), + ).toEqual([QWP_QUERY_FLAG_MAX_ROWS, 5]); + // The largest window QuestDB accepts, spelled as a bigint and with the + // flags as one too. + expect( + afterBinds( + windowed(BigInt(QWP_QUERY_FLAG_MAX_ROWS), { + maxRows: (1n << 63n) - 1n, + }), + ), + ).toEqual([QWP_QUERY_FLAG_MAX_ROWS, ...new Array(8).fill(0xff), 0x7f]); + // Both spellings of a value encode one frame. + expect( + windowed(QWP_QUERY_FLAG_SKIP_ROWS | QWP_QUERY_FLAG_MAX_ROWS, { + skipRows: 12n, + maxRows: 34n, + }), + ).toEqual( + windowed(QWP_QUERY_FLAG_SKIP_ROWS | QWP_QUERY_FLAG_MAX_ROWS, { + skipRows: 12, + maxRows: 34, + }), + ); + // The report flags carry no field of their own. + expect( + afterBinds( + windowed( + QWP_QUERY_FLAG_ERROR_POSITION | + QWP_QUERY_FLAG_STATS | + QWP_QUERY_FLAG_COUNT_ROWS, + {}, + ), + ), + ).toEqual([0x1c]); + }); + + it("requires a row-window value exactly when its flag is set", () => { + // A flag without its value made the server read the end of the frame as + // the value; a value without its flag would silently not be sent. + expect(() => windowed(QWP_QUERY_FLAG_SKIP_ROWS, {})).toThrow( + "QWP_QUERY_FLAG_SKIP_ROWS in queryFlags requires skipRows", + ); + expect(() => + windowed(QWP_QUERY_FLAG_SKIP_ROWS | QWP_QUERY_FLAG_MAX_ROWS, { + skipRows: 1, + }), + ).toThrow("QWP_QUERY_FLAG_MAX_ROWS in queryFlags requires maxRows"); + expect(() => + windowed(QWP_QUERY_FLAG_MAX_ROWS, { skipRows: 1, maxRows: 1 }), + ).toThrow("skipRows requires QWP_QUERY_FLAG_SKIP_ROWS in queryFlags"); + expect(() => windowed(0, { maxRows: 0 })).toThrow( + "maxRows requires QWP_QUERY_FLAG_MAX_ROWS in queryFlags", + ); + // Null is unset, as it is for the other optional fields. + const unset = { skipRows: null, maxRows: null } as unknown as Pick< + QwpQueryRequest, + "skipRows" | "maxRows" + >; + expect(windowed(0, unset)).toEqual(baseline); + }); + + it("range-checks row-window values and query flags", () => { + for (const value of [-1, 1.5, Number.NaN, 2 ** 53]) { + expect(() => + windowed(QWP_QUERY_FLAG_SKIP_ROWS, { skipRows: value }), + ).toThrow( + new RangeError("skipRows must be a non-negative safe integer"), + ); + } + // QuestDB reads both into a signed long and rejects 2^63 and above. + for (const value of [-1n, 1n << 63n, (1n << 64n) - 1n]) { + expect(() => + windowed(QWP_QUERY_FLAG_MAX_ROWS, { maxRows: value }), + ).toThrow( + new RangeError( + "maxRows must be a bigint between 0 and 9223372036854775807", + ), + ); + } + for (const queryFlags of [-1, 0.5, 2 ** 53]) { + expect(() => windowed(queryFlags, {})).toThrow( + new RangeError("queryFlags must be a non-negative safe integer"), + ); + } + for (const queryFlags of [-1n, 1n << 64n]) { + expect(() => windowed(queryFlags, {})).toThrow( + new RangeError("queryFlags must fit in uint64"), + ); + } + // Values of neither numeric type are rejected, not coerced. + expect(() => + windowed(QWP_QUERY_FLAG_SKIP_ROWS, { skipRows: "5" as never }), + ).toThrow(RangeError); + expect(() => windowed("16" as never, {})).toThrow(RangeError); + // The request ID keeps its own uint64 bound. + for (const requestId of [-1n, 1n << 64n]) { + expect(() => encodeQwpCancel(requestId)).toThrow( + new RangeError("requestId must fit in uint64"), + ); + } + }); + + it("decodes the RESULT_END row count and statistics in their order", () => { + expect( + decodeQwpEgressMessageWithQueryFlags( + resultEnd((writer) => writeQwpVarint(writer, 1_000_000)), + QWP_QUERY_FLAG_COUNT_ROWS, + ), + ).toEqual( + expect.objectContaining({ + kind: "result-end", + totalRows: 123n, + rowCount: 1_000_000n, + }), + ); + + const both = decodeQwpEgressMessageWithQueryFlags( + resultEnd((writer) => { + writeQwpVarint(writer, 9); // the row count comes first + statsBlock([1_500, 2_000_000_000, 250, 300_000_000], 0x01)(writer); + }), + // Flag order on the wire does not depend on the bits that are set + // besides them, nor on their spelling. + BigInt( + QWP_QUERY_FLAG_STATS | + QWP_QUERY_FLAG_COUNT_ROWS | + QWP_QUERY_FLAG_RESET_DICTIONARY | + QWP_QUERY_FLAG_MAX_ROWS, + ), + ); + expect(both).toMatchObject({ + kind: "result-end", + finalSequence: 4n, + totalRows: 123n, + rowCount: 9n, + stats: { + compileNanos: 1_500n, + executeNanos: 2_000_000_000n, + countNanos: 250n, + clientWaitNanos: 300_000_000n, + jitCompiled: true, + }, + }); + + // The durations are unsigned varints, read in full. + const extreme = decodeQwpEgressMessageWithQueryFlags( + resultEnd( + statsBlock([0, (1n << 63n) - 1n, 1n << 63n, 2n ** 64n - 1n], 0), + ), + QWP_QUERY_FLAG_STATS, + ); + expect(extreme).toMatchObject({ + stats: { + compileNanos: 0n, + executeNanos: (1n << 63n) - 1n, + countNanos: 1n << 63n, + clientWaitNanos: 2n ** 64n - 1n, + jitCompiled: false, + }, + }); + expect(extreme).not.toHaveProperty("rowCount"); + }); + + it("reads only the JIT bit of the statistics flags", () => { + for (const [statsFlags, jitCompiled] of [ + [0x00, false], + [0x01, true], + [0xfe, false], + [0xff, true], + ] as const) { + const done = decodeQwpEgressMessageWithQueryFlags( + execDone(statsBlock([1, 2, 3, 4], statsFlags)), + QWP_QUERY_FLAG_STATS, + ); + expect(done).toMatchObject({ + kind: "exec-done", + operationType: 2, + rowsAffected: 7n, + stats: { + compileNanos: 1n, + executeNanos: 2n, + countNanos: 3n, + clientWaitNanos: 4n, + jitCompiled, + }, + }); + } + // EXEC_DONE carries no row count: statements produce no rows. + expect( + decodeQwpEgressMessageWithQueryFlags( + execDone(), + QWP_QUERY_FLAG_COUNT_ROWS | QWP_QUERY_FLAG_ERROR_POSITION, + ), + ).not.toHaveProperty("rowCount"); + }); + + it("decodes the QUERY_ERROR position, which a baseline frame omits", () => { + const flags = QWP_QUERY_FLAG_ERROR_POSITION; + expect( + decodeQwpEgressMessageWithQueryFlags( + queryError((writer) => writer.writeInt32(14)), + flags, + ), + ).toMatchObject({ + kind: "query-error", + status: QWP_STATUS.PARSE_ERROR, + message: "table does not exist [table=t]", + position: 14, + }); + // Zero is the start of the SQL text, not the absence of a position: + // QuestDB reports it for an error that names no position of its own. + expect( + decodeQwpEgressMessageWithQueryFlags( + queryError((writer) => writer.writeInt32(0)), + flags, + ), + ).toHaveProperty("position", 0); + // -1 marks an error that does not point into the SQL text, and no + // other negative value points anywhere either. + for (const position of [-1, -2_147_483_648]) { + const nowhere = decodeQwpEgressMessageWithQueryFlags( + queryError((writer) => writer.writeInt32(position)), + flags, + ); + expect(nowhere).toMatchObject({ kind: "query-error" }); + expect(nowhere).not.toHaveProperty("position"); + } + // A request the server rejects before reading its flags gets the + // baseline frame even though it asked for the position. + const baselineFrame = decodeQwpEgressMessageWithQueryFlags( + queryError(), + flags, + ); + expect(baselineFrame).toMatchObject({ + message: "table does not exist [table=t]", + }); + expect(baselineFrame).not.toHaveProperty("position"); + }); + + it("rejects trailers the request did not ask for, or cut short", () => { + const cases: [Uint8Array, number, RegExp][] = [ + // trailers nobody asked for + [ + resultEnd((writer) => writeQwpVarint(writer, 9)), + 0, + /RESULT_END has 1 unexpected trailing byte/, + ], + [ + resultEnd((writer) => writeQwpVarint(writer, 9)), + QWP_QUERY_FLAG_RESET_DICTIONARY | + QWP_QUERY_FLAG_SKIP_ROWS | + QWP_QUERY_FLAG_MAX_ROWS | + QWP_QUERY_FLAG_ERROR_POSITION, + /RESULT_END has 1 unexpected trailing byte/, + ], + [ + execDone(statsBlock([1, 2, 3, 4], 0)), + QWP_QUERY_FLAG_COUNT_ROWS, + /EXEC_DONE has 5 unexpected trailing byte/, + ], + [ + queryError((writer) => writer.writeInt32(14)), + QWP_QUERY_FLAG_STATS, + /QUERY_ERROR has 4 unexpected trailing byte/, + ], + // trailers that end too soon, or run on + [resultEnd(), QWP_QUERY_FLAG_COUNT_ROWS, /truncated/], + [ + resultEnd(statsBlock([1, 2, 3, 4], 0)), + QWP_QUERY_FLAG_COUNT_ROWS | QWP_QUERY_FLAG_STATS, + /truncated QWP payload while reading query statistics flags/, + ], + [execDone(), QWP_QUERY_FLAG_STATS, /truncated/], + [ + queryError((writer) => writer.writeUint16(14)), + QWP_QUERY_FLAG_ERROR_POSITION, + /truncated QWP payload while reading query error position/, + ], + [ + queryError((writer) => writer.writeInt32(14).writeUint8(0)), + QWP_QUERY_FLAG_ERROR_POSITION, + /QUERY_ERROR has 1 unexpected trailing byte/, + ], + ]; + for (const [frame, queryFlags, error] of cases) { + expect(() => + decodeQwpEgressMessageWithQueryFlags(frame, queryFlags), + ).toThrow(QwpProtocolError); + expect(() => + decodeQwpEgressMessageWithQueryFlags(frame, queryFlags), + ).toThrow(error); + } + expect(() => + decodeQwpEgressMessageWithQueryFlags(resultEnd(), -1), + ).toThrow(RangeError); + }); + + it("keeps decodeQwpEgressMessage safe to pass straight to map", () => { + // map() and Array.from() hand their callback the index as a second + // argument. Read as query flags, indexes 8 to 15 set STATS (0x08), and + // each of those valid frames failed to decode as truncated. + const frames = Array.from({ length: 16 }, (_, index) => + index % 2 === 0 ? resultEnd() : execDone(), + ); + const decoded = frames.map((_, index) => + expect.objectContaining({ + kind: index % 2 === 0 ? "result-end" : "exec-done", + requestId: 11n, + }), + ); + expect(frames.map(decodeQwpEgressMessage)).toEqual(decoded); + expect(Array.from(frames, decodeQwpEgressMessage)).toEqual(decoded); + // It still reads no trailers, so a frame that carries one is rejected. + expect(() => + decodeQwpEgressMessage( + resultEnd((writer) => writeQwpVarint(writer, 9)), + ), + ).toThrow(/RESULT_END has 1 unexpected trailing byte/); + }); + + it("leaves the trailers to the session in the transport's envelope view", () => { + // The reconnecting transport only needs each message's kind and request + // ID; it cannot know the flags the trailers depend on. + for (const frame of [ + resultEnd((writer) => { + writeQwpVarint(writer, 9); + statsBlock([1, 2, 3, 4], 1)(writer); + }), + execDone(statsBlock([1, 2, 3, 4], 1)), + queryError((writer) => writer.writeInt32(14)), + ]) { + const envelope = decodeQwpEgressEnvelope(frame); + expect(envelope).toMatchObject({ requestId: 11n }); + expect(envelope).not.toHaveProperty("rowCount"); + expect(envelope).not.toHaveProperty("stats"); + expect(envelope).not.toHaveProperty("position"); + } + // Everything before the trailers is validated as before. + expect(() => + decodeQwpEgressEnvelope( + terminal(QWP_EGRESS_MESSAGE.RESULT_END, (writer) => + writeQwpVarint(writer, 4), + ), + ), + ).toThrow(/truncated/); + expect(() => + decodeQwpEgressEnvelope( + encodeQwpFrame( + Uint8Array.of(QWP_EGRESS_MESSAGE.CACHE_RESET, 1, /* extra */ 0), + ), + ), + ).toThrow(/CACHE_RESET has 1 unexpected trailing byte/); + }); + }); }); describe("protocol caps", () => { diff --git a/test/qwp/egress.test.ts b/test/qwp/egress.test.ts index fbfba718c..6628125ab 100644 --- a/test/qwp/egress.test.ts +++ b/test/qwp/egress.test.ts @@ -7,6 +7,7 @@ import { decodeQwpEgressMessage, encodeQwpFrame, encodeQwpGorilla, + encodeQwpQueryRequest, QWP_COLUMN_TYPE, QWP_EGRESS_CAPABILITY, QWP_EGRESS_MESSAGE, @@ -19,7 +20,12 @@ import { QWP_MAX_CELLS_PER_BATCH, QWP_MAX_COLUMNS_PER_TABLE, QWP_MAX_ZSTD_DECOMPRESSED_SIZE, + QWP_QUERY_FLAG_COUNT_ROWS, + QWP_QUERY_FLAG_ERROR_POSITION, + QWP_QUERY_FLAG_MAX_ROWS, QWP_QUERY_FLAG_RESET_DICTIONARY, + QWP_QUERY_FLAG_SKIP_ROWS, + QWP_QUERY_FLAG_STATS, QWP_RESET_MASK_DICTIONARY, QWP_STATUS, QwpByteReader, @@ -30,6 +36,7 @@ import { QwpEgressQueryCancelTimeoutError, QwpEgressQueryError, QwpEgressQueryTimeoutError, + QwpEgressRowWindowUnsupportedError, QwpEgressSession, QwpEgressSessionClosedError, QwpProtocolError, @@ -40,6 +47,10 @@ import { readQwpVarint, writeQwpVarint, } from "../../packages/client-core/src/qwp"; +import type { + QwpEgressQueryOptions, + QwpEgressViewCallbackControl, +} from "../../packages/client-core/src/qwp"; // Internal: neither package root exports these. import { connectQwpEgressSession, @@ -187,6 +198,9 @@ function emptyResultBatch( ); } +/** Writes the trailers a query-details flag adds to a terminal response. */ +type TerminalTrailer = (writer: QwpByteWriter) => void; + function resultEnd( requestId = 0n, totalRows = 3n, @@ -194,22 +208,47 @@ function resultEnd( // a one-batch response ends at zero. QuestDB numbers batches from zero and // sends that same number in RESULT_END. finalSequence = 0n, + trailer?: TerminalTrailer, ): Uint8Array { const payload = new QwpByteWriter(); payload.writeUint8(QWP_EGRESS_MESSAGE.RESULT_END).writeBigUint64(requestId); writeQwpVarint(payload, finalSequence); writeQwpVarint(payload, totalRows); + trailer?.(payload); return encodeQwpFrame(payload.toUint8Array()); } -function execDone(requestId: bigint, rowsAffected = 1n): Uint8Array { +function execDone( + requestId: bigint, + rowsAffected = 1n, + trailer?: TerminalTrailer, +): Uint8Array { const payload = new QwpByteWriter(); payload.writeUint8(QWP_EGRESS_MESSAGE.EXEC_DONE).writeBigUint64(requestId); payload.writeUint8(2); // operation type writeQwpVarint(payload, rowsAffected); + trailer?.(payload); return encodeQwpFrame(payload.toUint8Array()); } +/** The statistics block QWP_QUERY_FLAG_STATS appends. */ +function queryStats( + [compile, execute, count, clientWait]: readonly [ + number, + number, + number, + number, + ], + jitCompiled: boolean, +): TerminalTrailer { + return (writer) => { + for (const nanos of [compile, execute, count, clientWait]) { + writeQwpVarint(writer, nanos); + } + writer.writeUint8(jitCompiled ? 0x01 : 0x00); + }; +} + function cacheReset(mask: number): Uint8Array { const payload = new QwpByteWriter(); payload.writeUint8(QWP_EGRESS_MESSAGE.CACHE_RESET).writeUint8(mask); @@ -733,6 +772,8 @@ function queryError( requestId: bigint, message: string, status: number = QWP_STATUS.PARSE_ERROR, + /** The position trailer of QWP_QUERY_FLAG_ERROR_POSITION, when sent. */ + position?: number, ): Uint8Array { const bytes = new TextEncoder().encode(message); const payload = new QwpByteWriter(); @@ -742,6 +783,7 @@ function queryError( .writeUint8(status) .writeUint16(bytes.length) .writeBytes(bytes); + if (position !== undefined) payload.writeInt32(position); return encodeQwpFrame(payload.toUint8Array()); } @@ -3731,6 +3773,243 @@ describe("QwpEgressSession", () => { } }); + it.each([false, undefined] as const)( + "settles cancel() and grantCredit() on a query that has ended (reconnect: %s)", + async (reconnect) => { + const connection = new FakeConnection(); + connection.receive(serverInfo()); + const session = await connectQwpEgressSession(async () => connection, { + reconnect, + }); + try { + const query = await session.query("select * from x"); + connection.receive(firstResultBatch(query.requestId)); + connection.receive(resultEnd(query.requestId)); + for await (const _batch of query) { + // Consume the whole result. + } + await query.completion; + expect(query.isDone()).toBe(true); + const sent = connection.sent.length; + + // The session has handled RESULT_END, so the query has left it. Both + // calls used to throw QwpProtocolError synchronously here, before any + // promise existed, so a .catch() on their result never ran. + await expect(query.cancel()).resolves.toBeUndefined(); + await expect(query.grantCredit(1)).resolves.toBeUndefined(); + + // An abort that arrives after completion is the usual way to get + // here. A listener that throws surfaces as an uncaught exception, + // which ends a Node process. + const controller = new AbortController(); + const thrown: unknown[] = []; + const settling: Promise[] = []; + controller.signal.addEventListener("abort", () => { + try { + settling.push(query.cancel(), query.grantCredit(1)); + } catch (error) { + thrown.push(error); + } + }); + controller.abort(); + expect(thrown).toEqual([]); + await expect(Promise.all(settling)).resolves.toEqual([ + undefined, + undefined, + ]); + + // The session's own control calls treat a request that has left it + // the same way, whether the session is idle or has started the next + // query: nothing is left to cancel, abandon, credit or reject, and the + // query running now is not touched either. + const lateCalls = [ + () => session.cancel(query.requestId), + () => session.grantCredit(query.requestId, 1), + () => session.abandon(query.requestId), + () => session.rejectView(query.requestId, new Error("late")), + ]; + for (const call of lateCalls) { + await expect(call()).resolves.toBeUndefined(); + } + const next = await session.query("select 2"); + for (const call of lateCalls) { + await expect(call()).resolves.toBeUndefined(); + } + expect(next.isDone()).toBe(false); + + // An invalid grant is still reported, as a rejection. + await expect(query.grantCredit(-1)).rejects.toBeInstanceOf(RangeError); + await expect( + session.grantCredit(query.requestId, -1), + ).rejects.toBeInstanceOf(RangeError); + + // Nothing was queued behind the session's send tail either: the next + // query's request is the only frame that follows. + connection.receive(resultEnd(next.requestId, 0n, 0n)); + await next.completion; + expect(sentKinds(connection).slice(sent)).toEqual([ + QWP_EGRESS_MESSAGE.QUERY_REQUEST, + ]); + } finally { + await session.close(); + } + }, + ); + + it("settles the queryViews() handles' cancel() and grantCredit() once the query has ended", async () => { + const connection = new FakeConnection(); + const session = createQwpEgressSession(connection); + connection.receive(serverInfo()); + let kept: QwpEgressViewCallbackControl | undefined; + const query = await session.queryViews( + "select * from x", + (_batch, control) => { + kept = control; + }, + ); + connection.receive(firstResultBatch(query.requestId)); + connection.receive(resultEnd(query.requestId)); + await query.completion; + expect(query.isDone()).toBe(true); + expect(kept).toBeDefined(); + const sent = connection.sent.length; + + // The handle queryViews() returned, and the control a callback kept past + // its own return, as a timer or an abort listener would. + const controls = [query, kept]; + for (const control of controls) { + await expect(control.cancel()).resolves.toBeUndefined(); + await expect(control.grantCredit(1)).resolves.toBeUndefined(); + } + expect(connection.sent).toHaveLength(sent); + + // Neither asks the session, so they settle the same way once it has + // closed. + await session.close(); + for (const control of controls) { + await expect(control.cancel()).resolves.toBeUndefined(); + await expect(control.grantCredit(1)).resolves.toBeUndefined(); + } + }); + + it("sends no credit for a query whose consumer has already retired", async () => { + const connection = new FakeConnection(); + const session = createQwpEgressSession(connection); + connection.receive(serverInfo()); + const query = await session.query("select * from x", { + initialCredit: 64, + autoCredit: false, + }); + connection.receive(firstResultBatch(query.requestId)); + for await (const _batch of query) break; + // Leaving the loop retired the query: CANCEL, then the credit it held. + await vi.waitFor(() => + expect(sentKinds(connection)).toEqual([ + QWP_EGRESS_MESSAGE.QUERY_REQUEST, + QWP_EGRESS_MESSAGE.CANCEL, + QWP_EGRESS_MESSAGE.CREDIT, + ]), + ); + expect(query.isDone()).toBe(true); + + // It is still draining, and the session credits whatever arrives + // meanwhile on its own. The application owes it nothing more. + await expect(query.grantCredit(64)).resolves.toBeUndefined(); + await expect(query.cancel()).resolves.toBeUndefined(); + expect(connection.sent).toHaveLength(3); + + connection.receive( + queryError(query.requestId, "cancelled by client", QWP_STATUS.CANCELLED), + ); + await expect(query.completion).rejects.toBeInstanceOf( + QwpEgressQueryAbandonedError, + ); + const following = await session.query("select 2"); + connection.receive(resultEnd(following.requestId, 0n, 0n)); + await following.completion; + expect(connection.sent).toHaveLength(4); + await session.close(); + }); + + it("settles a query's control calls once its session has closed or failed", async () => { + const open = async () => { + const connection = new FakeConnection(); + const session = createQwpEgressSession(connection); + connection.receive(serverInfo()); + const query = await session.query("select * from x"); + return { connection, session, query }; + }; + const closed = await open(); + await closed.session.close(); + const failed = await open(); + // A second SERVER_INFO is a protocol fault, which fails the session. + failed.connection.receive(serverInfo()); + + for (const [{ session, query }, reason] of [ + [closed, QwpEgressSessionClosedError], + [failed, QwpProtocolError], + ] as const) { + await expect(query.completion).rejects.toBeInstanceOf(reason); + // The query ended with its session and reports that through its + // completion. Nothing is left to cancel or credit. + await expect(query.cancel()).resolves.toBeUndefined(); + await expect(query.grantCredit(1)).resolves.toBeUndefined(); + // The session's own control calls report its state, but through the + // promise they return, never by throwing past a .catch() on it. + for (const call of [ + () => session.cancel(query.requestId), + () => session.grantCredit(query.requestId, 1), + () => session.abandon(query.requestId), + () => session.rejectView(query.requestId, new Error("late")), + ]) { + let settled: Promise | undefined; + expect(() => { + settled = call(); + }).not.toThrow(); + await expect(settled).rejects.toBeInstanceOf(reason); + } + } + await failed.session.close(); + }); + + it("rejects an invalid grantCredit() on a running query without sending it", async () => { + const connection = new FakeConnection(); + const session = createQwpEgressSession(connection); + connection.receive(serverInfo()); + const query = await session.query("select * from x", { + initialCredit: 64, + autoCredit: false, + }); + const sent = connection.sent.length; + + // The amount is checked first, whatever the query's state, so a running + // query reports a bad one exactly as an ended query does: as a RangeError + // rejection, never a synchronous throw. A numeric string is refused as + // well, not coerced into a CREDIT frame. + for (const amount of [ + -1, + 1.5, + Number.NaN, + 2 ** 53, + 2n ** 64n, + "64", + undefined, + ]) { + let granted: Promise | undefined; + expect(() => { + granted = query.grantCredit(amount as never); + }).not.toThrow(); + await expect(granted).rejects.toBeInstanceOf(RangeError); + } + expect(connection.sent).toHaveLength(sent); + + // The query keeps running, and a valid grant still goes out. + expect(query.isDone()).toBe(false); + await query.grantCredit(64); + expect(creditsSent(connection)).toEqual([64n]); + await session.close(); + }); + it("reports cancellation when only queued rows are withheld before RESULT_END", async () => { vi.useFakeTimers(); try { @@ -4209,3 +4488,434 @@ describe("QwpEgressSession", () => { await session.close(); }); }); + +describe("QwpEgressSession query details", () => { + const DETAILS = + QWP_EGRESS_CAPABILITY.QUERY_FLAGS | QWP_EGRESS_CAPABILITY.QUERY_DETAILS; + // Per-query timeouts own capability 0x08 and flag 0x02 in released clients + // (c-questdb-client 7.2.0 and the Python client built on it), which send the + // flag, followed by timeout_ms, to a server that advertises the capability. + const QUERY_TIMEOUT_CAPABILITY = 0x08; + const QUERY_TIMEOUT_FLAG = 0x02; + const ALL_REPORTS: QwpEgressQueryOptions = { + errorPosition: true, + stats: true, + countRows: true, + }; + + async function openSession( + capabilities: number = DETAILS, + ): Promise<{ connection: FakeConnection; session: QwpEgressSession }> { + const connection = new FakeConnection(); + const session = createQwpEgressSession(connection); + connection.receive(serverInfo(capabilities)); + await session.ready; + return { connection, session }; + } + + /** The bytes a QUERY_REQUEST carries after its bind section. */ + function requestTail( + request: Uint8Array, + requestId: bigint, + sql: string, + ): number[] { + const baseline = encodeQwpQueryRequest({ requestId, sql }); + expect(request.subarray(0, baseline.length)).toEqual(baseline); + return Array.from(request.subarray(baseline.length)); + } + + it("asks for the query details only where SERVER_INFO advertises them", async () => { + const capture = async ( + capabilities: number, + options: QwpEgressQueryOptions = {}, + ): Promise => { + const { connection, session } = await openSession(capabilities); + const query = await session.query("select 1", options); + await session.close(); + await query.completion.catch(() => undefined); + return requestTail(connection.sent[0], query.requestId, "select 1"); + }; + + expect(await capture(DETAILS, ALL_REPORTS)).toEqual([ + QWP_QUERY_FLAG_ERROR_POSITION | + QWP_QUERY_FLAG_STATS | + QWP_QUERY_FLAG_COUNT_ROWS, + ]); + // The window values follow the flags, skip_rows first; 300 takes two + // varint bytes. + // Every flag bit but 0x02, which per-query timeouts own. + expect( + await capture(DETAILS, { + ...ALL_REPORTS, + resetDictionary: true, + skipRows: 300, + maxRows: 0n, + }), + ).toEqual([0x7d, 0xac, 0x02, 0x00]); + // Skipping no rows is no row window. + expect(await capture(DETAILS, { skipRows: 0, maxRows: 5 })).toEqual([ + QWP_QUERY_FLAG_MAX_ROWS, + 5, + ]); + expect(await capture(DETAILS, { skipRows: 0n })).toEqual([]); + expect(await capture(DETAILS)).toEqual([]); + // A server without the capability is sent the request it understands, + // as one without QUERY_FLAGS is for resetDictionary. + expect( + await capture(QWP_EGRESS_CAPABILITY.QUERY_FLAGS, ALL_REPORTS), + ).toEqual([]); + expect( + await capture(QWP_EGRESS_CAPABILITY.QUERY_FLAGS, { + ...ALL_REPORTS, + resetDictionary: true, + }), + ).toEqual([QWP_QUERY_FLAG_RESET_DICTIONARY]); + // So is a server with per-query timeouts but without the query details. + expect( + await capture( + QWP_EGRESS_CAPABILITY.QUERY_FLAGS | QUERY_TIMEOUT_CAPABILITY, + { ...ALL_REPORTS, resetDictionary: true }, + ), + ).toEqual([QWP_QUERY_FLAG_RESET_DICTIONARY]); + expect(await capture(0, { ...ALL_REPORTS, skipRows: 0 })).toEqual([]); + }); + + it("leaves the per-query timeout bits of released clients free", () => { + const capabilities = [ + ...Object.values(QWP_EGRESS_CAPABILITY), + QUERY_TIMEOUT_CAPABILITY, + ]; + const flags = [ + QWP_QUERY_FLAG_RESET_DICTIONARY, + QUERY_TIMEOUT_FLAG, + QWP_QUERY_FLAG_ERROR_POSITION, + QWP_QUERY_FLAG_STATS, + QWP_QUERY_FLAG_COUNT_ROWS, + QWP_QUERY_FLAG_SKIP_ROWS, + QWP_QUERY_FLAG_MAX_ROWS, + ]; + for (const bits of [capabilities, flags]) { + let union = 0; + for (const bit of bits) { + // a single bit, taken once + expect(bit).toBeGreaterThan(0); + expect(bit & (bit - 1)).toBe(0); + expect(union & bit).toBe(0); + union |= bit; + } + } + }); + + it("pins the query-details bits to the server's values", () => { + // QwpEgressMsgKind in questdb/questdb#8356 uses these values. Every other + // test names the constants on both sides of its assertion, or ORs a whole + // pair into one literal byte. A swap within a pair passed them all, though + // swapping SKIP_ROWS and MAX_ROWS makes the server skip the rows maxRows + // asks for, and so did any other QUERY_DETAILS bit, with which the client + // drops every detail and refuses every row window. + expect(QWP_EGRESS_CAPABILITY.QUERY_DETAILS).toBe(0x10); + expect(QWP_QUERY_FLAG_ERROR_POSITION).toBe(0x04); + expect(QWP_QUERY_FLAG_STATS).toBe(0x08); + expect(QWP_QUERY_FLAG_COUNT_ROWS).toBe(0x10); + expect(QWP_QUERY_FLAG_SKIP_ROWS).toBe(0x20); + expect(QWP_QUERY_FLAG_MAX_ROWS).toBe(0x40); + }); + + it("reports the row count and statistics on a result's completion", async () => { + const { connection, session } = await openSession(); + const query = await session.query("select * from x", { + countRows: true, + stats: true, + skipRows: 10, + maxRows: 3, + }); + expect( + requestTail(connection.sent[0], query.requestId, "select * from x"), + ).toEqual([ + QWP_QUERY_FLAG_STATS | + QWP_QUERY_FLAG_COUNT_ROWS | + QWP_QUERY_FLAG_SKIP_ROWS | + QWP_QUERY_FLAG_MAX_ROWS, + 10, + 3, + ]); + connection.receive(firstResultBatch(query.requestId)); + connection.receive( + resultEnd(query.requestId, 3n, 0n, (writer) => { + writeQwpVarint(writer, 1_000); // rows in the whole result set + queryStats([1_500, 9_000_000, 250, 42], true)(writer); + }), + ); + + const rows: number[] = []; + for await (const batch of query) rows.push(batch.rowCount); + expect(rows).toEqual([3]); + // totalRows still counts the streamed rows, checked against the batches. + await expect(query.completion).resolves.toMatchObject({ + kind: "result-end", + totalRows: 3n, + rowCount: 1_000n, + stats: { + compileNanos: 1_500n, + executeNanos: 9_000_000n, + countNanos: 250n, + clientWaitNanos: 42n, + jitCompiled: true, + }, + }); + + // The next query asks for nothing, so it is sent without flags and its + // baseline RESULT_END is read without trailers. + const plain = await session.query("select * from x"); + expect( + requestTail(connection.sent[1], plain.requestId, "select * from x"), + ).toEqual([]); + // The connection's dictionary already holds the first query's two symbols. + connection.receive(symbolDeltaBatch(plain.requestId, 0, 2, [], 1)); + connection.receive(resultEnd(plain.requestId, 1n, 0n)); + const symbols: unknown[] = []; + for await (const batch of plain) symbols.push(batch.get(0, 0)); + expect(symbols).toEqual(["beta"]); + const plainDone = await plain.completion; + expect(plainDone).toMatchObject({ kind: "result-end", totalRows: 1n }); + expect(plainDone).not.toHaveProperty("rowCount"); + expect(plainDone).not.toHaveProperty("stats"); + await session.close(); + }); + + it("reports statistics on result views and on a statement's completion", async () => { + const { connection, session } = await openSession(); + const views = await session.queryViews("select * from x", () => undefined, { + stats: true, + }); + connection.receive(firstResultBatch(views.requestId)); + connection.receive( + resultEnd(views.requestId, 3n, 0n, queryStats([1, 2, 0, 0], false)), + ); + const viewsDone = await views.completion; + expect(viewsDone).toMatchObject({ + stats: { compileNanos: 1n, executeNanos: 2n, jitCompiled: false }, + }); + expect(viewsDone).not.toHaveProperty("rowCount"); + + // A statement ignores the row count and the window, and reports its + // statistics on EXEC_DONE. + const insert = await session.query("insert into x values (1)", { + ...ALL_REPORTS, + maxRows: 5, + }); + connection.receive( + execDone(insert.requestId, 1n, queryStats([3, 4, 0, 0], false)), + ); + const insertDone = await insert.completion; + expect(insertDone).toMatchObject({ + kind: "exec-done", + rowsAffected: 1n, + stats: { + compileNanos: 3n, + executeNanos: 4n, + countNanos: 0n, + clientWaitNanos: 0n, + jitCompiled: false, + }, + }); + expect(insertDone).not.toHaveProperty("rowCount"); + await session.close(); + }); + + it("reports where a query error points, as an index into the SQL string", async () => { + const { connection, session } = await openSession(); + // QuestDB counts UTF-16 code units, as JavaScript indexes a string: the + // emoji is two of them, and the accented letters and euro sign one each, + // although they take 9 UTF-8 bytes between them. + const sql = "SELECT 'é€😀' s FROM missing"; + const query = await session.query(sql, { errorPosition: true }); + connection.receive( + queryError( + query.requestId, + "table does not exist [table=missing]", + QWP_STATUS.PARSE_ERROR, + 21, + ), + ); + const error = (await query.completion.catch( + (caught: unknown) => caught, + )) as QwpEgressQueryError; + expect(error).toBeInstanceOf(QwpEgressQueryError); + expect(error).toMatchObject({ + requestId: query.requestId, + status: QWP_STATUS.PARSE_ERROR, + // The bare message: the position is no longer folded into it. + message: "table does not exist [table=missing]", + position: 21, + }); + expect(sql.slice(error.position)).toBe("missing"); + + const positionOf = async ( + sql: string, + reply: (requestId: bigint) => Uint8Array, + ): Promise => { + const query = await session.query(sql, { errorPosition: true }); + connection.receive(reply(query.requestId)); + const failure = await query.completion.catch((caught: unknown) => caught); + expect(failure).toBeInstanceOf(QwpEgressQueryError); + return (failure as QwpEgressQueryError).position; + }; + // -1: the error does not point into the SQL text. + await expect( + positionOf("select 2", (requestId) => + queryError(requestId, "cancelled by client", QWP_STATUS.CANCELLED, -1), + ), + ).resolves.toBeUndefined(); + // A request the server cannot decode is answered with the baseline frame, + // flags or not. + await expect( + positionOf("select 3", (requestId) => + queryError(requestId, "incomplete varint: buffer underflow"), + ), + ).resolves.toBeUndefined(); + // Zero is the start of the statement, and reported as such. + await expect( + positionOf("COPY t FROM stdin", (requestId) => + queryError( + requestId, + "COPY ... FROM is not supported on egress", + QWP_STATUS.PARSE_ERROR, + 0, + ), + ), + ).resolves.toBe(0); + await session.close(); + }); + + it("reports a detailed response queued at close as the closed session", async () => { + // The flags a terminal response is decoded with outlive its query. A + // RESULT_END still queued when the session closes therefore decodes, and + // is reported as the closed session it is -- not as a malformed frame, + // which would also close the connection a second time, as a protocol + // violation. + const connection = new FakeConnection(); + const session = createQwpEgressSession(connection, { bufferPoolSize: 1 }); + connection.receive(serverInfo(DETAILS)); + const query = await session.query("select * from x", { stats: true }); + connection.receive(emptyResultBatch(query.requestId, 0)); + connection.receive(emptyResultBatch(query.requestId, 1)); + connection.receive( + resultEnd(query.requestId, 0n, 1n, queryStats([1, 2, 0, 0], false)), + ); + // The first batch fills the one-slot pool, so the receive loop waits on + // the second, with the RESULT_END queued behind it, until close() ends + // the query. + await new Promise((resolve) => setTimeout(resolve, 0)); + + await session.close(); + await expect(query.completion).rejects.toMatchObject({ + name: "QwpEgressSessionClosedError", + }); + expect(connection.closeCalls).toEqual([{ code: 1000, reason: "" }]); + }); + + it("rejects a row window the server cannot honour before sending anything", async () => { + // A server with per-query timeouts but without the query details would + // stream every row too. + const timeoutsOnly = await openSession( + QWP_EGRESS_CAPABILITY.QUERY_FLAGS | QUERY_TIMEOUT_CAPABILITY, + ); + await expect( + timeoutsOnly.session.query("select 1", { maxRows: 10 }), + ).rejects.toBeInstanceOf(QwpEgressRowWindowUnsupportedError); + expect(timeoutsOnly.connection.sent).toEqual([]); + await timeoutsOnly.session.close(); + + const { connection, session } = await openSession( + QWP_EGRESS_CAPABILITY.QUERY_FLAGS, + ); + for (const options of [ + { maxRows: 10 }, + { skipRows: 5 }, + { ...ALL_REPORTS, skipRows: 1n, maxRows: 0 }, + ] satisfies QwpEgressQueryOptions[]) { + const error = await session + .query("select 1", options) + .catch((caught: unknown) => caught); + expect(error).toBeInstanceOf(QwpEgressRowWindowUnsupportedError); + expect(error).toMatchObject({ + name: "QwpEgressRowWindowUnsupportedError", + message: expect.stringContaining("does not advertise QUERY_DETAILS"), + }); + } + expect(connection.sent).toEqual([]); + + // The session stays usable, and skipping no rows needs no capability. + const query = await session.query("select 1", { skipRows: 0 }); + expect( + requestTail(connection.sent[0], query.requestId, "select 1"), + ).toEqual([]); + connection.receive(resultEnd(query.requestId, 0n, 0n)); + await expect(query.completion).resolves.toMatchObject({ + kind: "result-end", + }); + await session.close(); + }); + + it("validates the row window before waiting for SERVER_INFO", async () => { + const connection = new FakeConnection(); + const session = createQwpEgressSession(connection); + for (const [options, message] of [ + [{ skipRows: -1 }, "skipRows must be a non-negative safe integer"], + [{ maxRows: 1.5 }, "maxRows must be a non-negative safe integer"], + [{ skipRows: 2 ** 53 }, "skipRows must be a non-negative safe integer"], + [ + { maxRows: 1n << 63n }, + "maxRows must be a bigint between 0 and 9223372036854775807", + ], + [ + { skipRows: -1n }, + "skipRows must be a bigint between 0 and 9223372036854775807", + ], + ] as const) { + await expect(session.query("select 1", options)).rejects.toThrow( + new RangeError(message), + ); + } + + connection.receive(serverInfo(DETAILS)); + // Null leaves an option unset, as it does the others. + const query = await session.query("select 1", { + skipRows: null as unknown as number, + maxRows: (1n << 63n) - 1n, + }); + expect(connection.sent).toHaveLength(1); + expect( + requestTail(connection.sent[0], query.requestId, "select 1"), + ).toEqual([QWP_QUERY_FLAG_MAX_ROWS, ...new Array(8).fill(0xff), 0x7f]); + await session.close(); + await query.completion.catch(() => undefined); + }); + + it.each([ + ["omits a row count that was asked for", { countRows: true }, undefined], + [ + "adds statistics nobody asked for", + { countRows: false }, + queryStats([1, 2, 3, 4], false), + ], + ] as const)( + "fails a session whose RESULT_END %s", + async (_label, options, trailer) => { + const { connection, session } = await openSession(); + const query = await session.query("select * from x", options); + connection.receive(firstResultBatch(query.requestId)); + connection.receive(resultEnd(query.requestId, 3n, 0n, trailer)); + + await expect(query.completion).rejects.toBeInstanceOf(QwpProtocolError); + await vi.waitFor(() => + expect(connection.closeCalls).toContainEqual({ + code: 1002, + reason: "invalid QWP egress message", + }), + ); + await session.close(); + }, + ); +}); diff --git a/test/qwp/public-api-contract.ts b/test/qwp/public-api-contract.ts index 4baa12a7d..10c94a79b 100644 --- a/test/qwp/public-api-contract.ts +++ b/test/qwp/public-api-contract.ts @@ -65,7 +65,11 @@ import type { QwpClientPoolOptions, QwpEgressQueryOptions, QwpEgressSession, + QwpEgressQueryError, + QwpEgressRowWindowUnsupportedError, QwpEgressViewQuery, + QwpQueryCompletion, + QwpQueryStats, QwpSenderError, QwpQueryLease, QwpResultBatchView, @@ -171,8 +175,41 @@ const queryOptionsContract: QwpEgressQueryOptions = { timeoutMs: 30_000, resetDictionary: true, binds: (binds) => binds.setVarchar(0, "ETH-USD"), + errorPosition: true, + stats: true, + countRows: true, + skipRows: 100, + maxRows: 50n, }; +// What the query-details options report: the error's position, and the +// statistics and whole-result row count on the completion. +function queryDetailsContract( + completion: QwpQueryCompletion, + error: QwpEgressQueryError, + unsupported: QwpEgressRowWindowUnsupportedError, +): void { + const stats: QwpQueryStats | undefined = completion.stats; + const rowCount: bigint | undefined = + completion.kind === "result-end" ? completion.rowCount : undefined; + const timings: readonly bigint[] = stats + ? [ + stats.compileNanos, + stats.executeNanos, + stats.countNanos, + stats.clientWaitNanos, + ] + : []; + const jitCompiled: boolean | undefined = stats?.jitCompiled; + const position: number | undefined = error.position; + const unsupportedRequestId: bigint = unsupported.requestId; + void rowCount; + void timings; + void jitCompiled; + void position; + void unsupportedRequestId; +} + // The query session's own options travel in each runtime's egress options. const egressSessionOptionsContract: QwpNodeEgressOptions = { url: "wss://node-1.example/read/v1", @@ -607,6 +644,7 @@ void poolOptionsContract; void nodeOrphanRetrySignature; void nodeStoreAndForwardContract; void queryOptionsContract; +void queryDetailsContract; void egressSessionOptionsContract; void fixedConnectionIngressContract; void fixedConnectionEgressContract; diff --git a/test/qwp/public-api-types-contract.ts b/test/qwp/public-api-types-contract.ts index abe70050a..fb8448dc3 100644 --- a/test/qwp/public-api-types-contract.ts +++ b/test/qwp/public-api-types-contract.ts @@ -76,6 +76,7 @@ export type { QwpQueryCompletion, QwpQueryErrorMessage, QwpQueryRequest, + QwpQueryStats, QwpReconnectEvent, QwpReconnectEventKind, QwpResourcePoolMetrics, @@ -180,6 +181,7 @@ export type { QwpQueryCompletion as BrowserQwpQueryCompletion, QwpQueryErrorMessage as BrowserQwpQueryErrorMessage, QwpQueryRequest as BrowserQwpQueryRequest, + QwpQueryStats as BrowserQwpQueryStats, QwpReconnectEvent as BrowserQwpReconnectEvent, QwpReconnectEventKind as BrowserQwpReconnectEventKind, QwpResourcePoolMetrics as BrowserQwpResourcePoolMetrics, diff --git a/test/qwp/public-api.test.ts b/test/qwp/public-api.test.ts index 320b17c44..fe07979ea 100644 --- a/test/qwp/public-api.test.ts +++ b/test/qwp/public-api.test.ts @@ -46,7 +46,12 @@ const sharedRuntimeContract = [ "QWP_MAX_TABLES_PER_FRAME", "QWP_MAX_TABLE_NAME_LENGTH", "QWP_MAX_ZSTD_DECOMPRESSED_SIZE", + "QWP_QUERY_FLAG_COUNT_ROWS", + "QWP_QUERY_FLAG_ERROR_POSITION", + "QWP_QUERY_FLAG_MAX_ROWS", "QWP_QUERY_FLAG_RESET_DICTIONARY", + "QWP_QUERY_FLAG_SKIP_ROWS", + "QWP_QUERY_FLAG_STATS", "QWP_RECONNECT_EVENT_KIND", "QWP_RESET_MASK_DICTIONARY", "QWP_SENDER_ERROR_CATEGORY", @@ -71,6 +76,7 @@ const sharedRuntimeContract = [ "QwpEgressQueryCancelTimeoutError", "QwpEgressQueryError", "QwpEgressQueryTimeoutError", + "QwpEgressRowWindowUnsupportedError", "QwpEgressSession", "QwpEgressSessionClosedError", "QwpFailoverError", @@ -120,6 +126,7 @@ const sharedRuntimeContract = [ "decimal64", "decodeQwpContentEncoding", "decodeQwpEgressMessage", + "decodeQwpEgressMessageWithQueryFlags", "decodeQwpFrame", "decodeQwpIngressResponse", "decodeQwpIngressServerInfo", @@ -368,6 +375,21 @@ describe("QWP public API contract", () => { } }); + it("keeps the egress codec's transport and session helpers internal", () => { + // The reconnecting transport reads each message's envelope without the + // trailers only the session can interpret, and the session validates its + // row-window options with the encoder's own check. Both live in the egress + // codec, whose public names the barrel lists one by one. + for (const api of [shared, browser, node]) { + for (const name of [ + "decodeQwpEgressEnvelope", + "validateQwpRowWindowBound", + ]) { + expect(api, `${name} must stay internal`).not.toHaveProperty(name); + } + } + }); + it("keeps the raw connection helpers internal", () => { // Applications connect through a sender, a query session or the pooled // client, each of which opens its own connections. The raw WebSocket diff --git a/test/qwp/reconnect.test.ts b/test/qwp/reconnect.test.ts index de1d53c5c..b62cbb211 100644 --- a/test/qwp/reconnect.test.ts +++ b/test/qwp/reconnect.test.ts @@ -36,7 +36,12 @@ import { QWP_EGRESS_CAPABILITY, QWP_FLAG_DEFER_COMMIT, QWP_EGRESS_MESSAGE, + QWP_QUERY_FLAG_COUNT_ROWS, + QWP_QUERY_FLAG_ERROR_POSITION, + QWP_QUERY_FLAG_MAX_ROWS, QWP_QUERY_FLAG_RESET_DICTIONARY, + QWP_QUERY_FLAG_SKIP_ROWS, + QWP_QUERY_FLAG_STATS, QWP_SERVER_ROLE, QWP_STATUS, QWP_SENDER_ERROR_CATEGORY, @@ -48,6 +53,8 @@ import { QwpDurableAckUnavailableError, QwpFailoverError, type QwpSenderError, + QwpEgressQueryError, + QwpEgressRowWindowUnsupportedError, QwpEgressSessionClosedError, QWP_INGRESS_PROGRESS_KIND, QwpIngressAckAbandonedError, @@ -7922,6 +7929,348 @@ describe("QWP egress reconnect and replay", () => { await session.close(); }); + describe("query details", () => { + const DETAILS = + QWP_EGRESS_CAPABILITY.QUERY_FLAGS | QWP_EGRESS_CAPABILITY.QUERY_DETAILS; + const RECONNECT_ONCE = { + failoverMaxAttempts: 1, + failoverBackoffInitialMs: 0, + failoverBackoffMaxMs: 0, + }; + + /** RESULT_END with the trailers of QWP_QUERY_FLAG_COUNT_ROWS and _STATS. */ + function detailedResultEnd( + requestId: bigint, + rowCount: number, + executeNanos: number, + ): Uint8Array { + const payload = new QwpByteWriter() + .writeUint8(QWP_EGRESS_MESSAGE.RESULT_END) + .writeBigUint64(requestId); + writeQwpVarint(payload, 0); // final sequence + writeQwpVarint(payload, 0); // total rows + writeQwpVarint(payload, rowCount); + for (const nanos of [10, executeNanos, 0, 0]) { + writeQwpVarint(payload, nanos); + } + payload.writeUint8(0x01); // stats_flags: JIT-compiled + return encodeQwpFrame(payload.toUint8Array()); + } + + /** Opens a session whose endpoints advertise the given capabilities. */ + async function failoverSession( + capabilities: readonly number[], + onFailoverReset?: (requestId: bigint) => void, + ): Promise<{ + session: Awaited>; + connections: FakeConnection[]; + opened: () => number; + }> { + const connections = capabilities.map( + (_, index) => new FakeConnection(`node-${index}`), + ); + let opened = 0; + const session = await connectQwpEgressSession( + async () => { + const index = opened++; + const connection = connections[index]; + if (!connection) throw new Error("no connection available"); + queueMicrotask(() => + connection.receive( + serverInfo( + connection.endpoint, + QWP_SERVER_ROLE.STANDALONE, + undefined, + capabilities[index], + ), + ), + ); + return connection; + }, + { + reconnect: RECONNECT_ONCE, + onFailoverReset: (event) => onFailoverReset?.(event.requestId), + }, + ); + return { session, connections, opened: () => opened }; + } + + it("passes terminal trailers through the reconnecting transport", async () => { + // The transport reads every message before the session does. Decoded + // without the request's flags, a RESULT_END with trailers looked + // malformed, and each replay of the query met the same frame until the + // recovery budget ran out. + const { + session, + connections: [connection], + opened, + } = await failoverSession([DETAILS]); + const query = await session.query("select x from t", { + countRows: true, + stats: true, + }); + connection.receive(emptyResultBatch(query.requestId)); + connection.receive(detailedResultEnd(query.requestId, 42, 99)); + await expect(query.completion).resolves.toMatchObject({ + kind: "result-end", + rowCount: 42n, + stats: { compileNanos: 10n, executeNanos: 99n, jitCompiled: true }, + }); + + const failing = await session.query("select nope from t", { + errorPosition: true, + }); + const message = new TextEncoder().encode("Invalid column: nope"); + connection.receive( + encodeQwpFrame( + new QwpByteWriter() + .writeUint8(QWP_EGRESS_MESSAGE.QUERY_ERROR) + .writeBigUint64(failing.requestId) + .writeUint8(QWP_STATUS.PARSE_ERROR) + .writeUint16(message.length) + .writeBytes(message) + .writeInt32(7) + .toUint8Array(), + ), + ); + const error = await failing.completion.catch((caught: unknown) => caught); + expect(error).toBeInstanceOf(QwpEgressQueryError); + expect(error).toMatchObject({ + message: "Invalid column: nope", + position: 7, + }); + // No reconnect: the one connection served both queries. + expect(opened()).toBe(1); + expect(connection.sent).toHaveLength(2); + await session.close(); + }); + + it("asks a replacement endpoint for the details it supports", async () => { + // From an endpoint with QUERY_DETAILS to one without: the reports are + // dropped, and the baseline RESULT_END the replacement sends decodes. + { + const { + session, + connections: [first, second], + } = await failoverSession([DETAILS, QWP_EGRESS_CAPABILITY.QUERY_FLAGS]); + const query = await session.query("select 1", { + errorPosition: true, + stats: true, + countRows: true, + }); + expect(first.sent[0].at(-1)).toBe( + QWP_QUERY_FLAG_ERROR_POSITION | + QWP_QUERY_FLAG_STATS | + QWP_QUERY_FLAG_COUNT_ROWS, + ); + first.drop(); + await vi.waitFor(() => expect(second.sent).toHaveLength(1)); + expect(second.sent[0]).toEqual( + encodeQwpQueryRequest({ requestId: 0n, sql: "select 1" }), + ); + second.receive(resultEnd(query.requestId)); + const completion = await query.completion; + expect(completion).toMatchObject({ kind: "result-end" }); + expect(completion).not.toHaveProperty("rowCount"); + expect(completion).not.toHaveProperty("stats"); + await session.close(); + } + // And back: the replay asks for them, and the trailers decode. + { + const { + session, + connections: [first, second], + } = await failoverSession([QWP_EGRESS_CAPABILITY.QUERY_FLAGS, DETAILS]); + const query = await session.query("select 1", { + stats: true, + countRows: true, + }); + expect(first.sent[0]).toEqual( + encodeQwpQueryRequest({ requestId: 0n, sql: "select 1" }), + ); + first.drop(); + await vi.waitFor(() => expect(second.sent).toHaveLength(1)); + expect(second.sent[0]).toEqual( + encodeQwpQueryRequest({ + requestId: 0n, + sql: "select 1", + queryFlags: QWP_QUERY_FLAG_STATS | QWP_QUERY_FLAG_COUNT_ROWS, + }), + ); + second.receive(detailedResultEnd(query.requestId, 5, 1_000)); + await expect(query.completion).resolves.toMatchObject({ + rowCount: 5n, + stats: { executeNanos: 1_000n }, + }); + await session.close(); + } + }); + + it("replays a row-window query with its window where QUERY_DETAILS is", async () => { + // The ordinary failover of a paged query: the replacement is sent the + // same window, flags and values alike, and its trailers decode. + const resets: bigint[] = []; + const { + session, + connections: [first, second], + } = await failoverSession([DETAILS, DETAILS], (requestId) => + resets.push(requestId), + ); + const query = await session.query("select x from t", { + skipRows: 300, + maxRows: 50, + countRows: true, + stats: true, + }); + expect(first.sent[0].slice(-4)).toEqual( + Uint8Array.of( + QWP_QUERY_FLAG_STATS | + QWP_QUERY_FLAG_COUNT_ROWS | + QWP_QUERY_FLAG_SKIP_ROWS | + QWP_QUERY_FLAG_MAX_ROWS, + 0xac, // 300, in two varint bytes + 0x02, + 50, + ), + ); + + first.drop(); + await vi.waitFor(() => expect(second.sent).toHaveLength(1)); + expect(second.sent[0]).toEqual(first.sent[0]); + expect(resets).toEqual([query.requestId]); + second.receive(emptyResultBatch(query.requestId)); + second.receive(detailedResultEnd(query.requestId, 1_000, 77)); + await expect(query.completion).resolves.toMatchObject({ + kind: "result-end", + rowCount: 1_000n, + stats: { executeNanos: 77n, jitCompiled: true }, + }); + await session.close(); + }); + + it("fails a row-window query rather than replay it without QUERY_DETAILS", async () => { + // The replacement would ignore the window and stream every row. + const resets: bigint[] = []; + const { + session, + connections: [first, second], + } = await failoverSession( + [DETAILS, QWP_EGRESS_CAPABILITY.QUERY_FLAGS], + (requestId) => resets.push(requestId), + ); + const query = await session.query("select x from t", { + skipRows: 100, + maxRows: 50, + countRows: true, + }); + expect(first.sent).toHaveLength(1); + expect(first.sent[0].slice(-3)).toEqual( + Uint8Array.of( + QWP_QUERY_FLAG_COUNT_ROWS | + QWP_QUERY_FLAG_SKIP_ROWS | + QWP_QUERY_FLAG_MAX_ROWS, + 100, + 50, + ), + ); + + first.drop(); + const error = await query.completion.catch((caught: unknown) => caught); + expect(error).toBeInstanceOf(QwpEgressRowWindowUnsupportedError); + expect(error).toMatchObject({ requestId: query.requestId }); + + // The session carries on with the replacement, which was never sent the + // windowed request nor asked to reset for it. + const next = await session.query("select 1"); + await vi.waitFor(() => expect(second.sent).toHaveLength(1)); + expect(second.sent).toEqual([ + encodeQwpQueryRequest({ requestId: next.requestId, sql: "select 1" }), + ]); + second.receive(resultEnd(next.requestId)); + await expect(next.completion).resolves.toMatchObject({ + kind: "result-end", + }); + expect(resets).toEqual([]); + await session.close(); + }); + + it("reports a cancelled row-window query it does not replay as cancelled", async () => { + const { + session, + connections: [first, second], + } = await failoverSession([DETAILS, QWP_EGRESS_CAPABILITY.QUERY_FLAGS]); + const query = await session.query("select x from t", { maxRows: 50 }); + // The CANCEL is sent, but the connection goes before the server answers. + await query.cancel(); + expect(first.sent.map((payload) => payload[0])).toEqual([ + QWP_EGRESS_MESSAGE.QUERY_REQUEST, + QWP_EGRESS_MESSAGE.CANCEL, + ]); + first.drop(); + await expect(query.completion).rejects.toMatchObject({ + name: "QwpEgressQueryError", + status: QWP_STATUS.CANCELLED, + }); + const next = await session.query("select 1"); + await vi.waitFor(() => expect(second.sent).toHaveLength(1)); + expect(second.sent[0][0]).toBe(QWP_EGRESS_MESSAGE.QUERY_REQUEST); + second.receive(resultEnd(next.requestId)); + await next.completion; + await session.close(); + }); + + it("withdraws a queued row-window query when the replacement lacks QUERY_DETAILS", async () => { + const first = new FakeConnection("primary"); + const second = new FakeConnection("secondary"); + const connections = [first, second]; + let releaseSecondInfo!: () => void; + const secondInfoReady = new Promise((resolve) => { + releaseSecondInfo = resolve; + }); + const session = await connectQwpEgressSession( + async () => { + const connection = connections.shift(); + if (!connection) throw new Error("no connection available"); + if (connection === second) await secondInfoReady; + queueMicrotask(() => + connection.receive( + serverInfo( + connection.endpoint, + QWP_SERVER_ROLE.STANDALONE, + undefined, + connection === first + ? DETAILS + : QWP_EGRESS_CAPABILITY.QUERY_FLAGS, + ), + ), + ); + return connection; + }, + { reconnect: RECONNECT_ONCE }, + ); + + first.drop(); + await vi.waitFor(() => expect(connections).toHaveLength(0)); + // Issued during the outage, against the capable endpoint's SERVER_INFO, + // so it waits for the replacement -- which cannot run it. + const querying = session.query("select 1", { maxRows: 10 }); + releaseSecondInfo(); + const query = await querying; + await expect(query.completion).rejects.toBeInstanceOf( + QwpEgressRowWindowUnsupportedError, + ); + + const next = await session.query("select 2"); + await vi.waitFor(() => expect(second.sent).toHaveLength(1)); + expect(second.sent).toEqual([ + encodeQwpQueryRequest({ requestId: next.requestId, sql: "select 2" }), + ]); + second.receive(resultEnd(next.requestId)); + await next.completion; + await session.close(); + }); + }); + it("discards queued batches, invokes reset, and replays an opted-in query", async () => { const first = new FakeConnection("primary"); const second = new FakeConnection("secondary"); @@ -8627,6 +8976,316 @@ describe("QWP egress reconnect and replay", () => { await session.close(); }); + describe("terminal validation delayed by a full batch pool", () => { + async function openSession(replacementReady?: Promise) { + const connections: FakeConnection[] = []; + const session = await connectQwpEgressSession( + async () => { + const connection = new FakeConnection(`node-${connections.length}`); + connections.push(connection); + if (connections.length > 1 && replacementReady) { + await replacementReady; + } + queueMicrotask(() => + connection.receive(serverInfo(connection.endpoint)), + ); + return connection; + }, + { + bufferPoolSize: 1, + reconnect: { + failoverMaxAttempts: 1, + failoverMaxDurationMs: 0, + failoverBackoffInitialMs: 0, + failoverBackoffMaxMs: 0, + }, + }, + ); + return { session, connections }; + } + + function endWithMalformedTrailer( + connection: FakeConnection, + requestId: bigint, + duplicateTerminal = false, + ): void { + // With no consumer yet, the first batch fills the pool and the second + // parks the session before it can validate the terminal. The transport + // still reads its envelope and observes the socket loss. + connection.receive(emptyResultBatch(requestId, 0)); + connection.receive(emptyResultBatch(requestId, 1)); + const payload = new QwpByteWriter() + .writeUint8(QWP_EGRESS_MESSAGE.RESULT_END) + .writeBigUint64(requestId); + writeQwpVarint(payload, 1); // final sequence matches both batches + writeQwpVarint(payload, 0); // total rows matches both empty batches + payload.writeUint8(0); // an unrequested trailer inside the framed payload + const terminal = encodeQwpFrame(payload.toUint8Array()); + connection.receive(terminal); + if (duplicateTerminal) connection.receive(terminal); + connection.drop(); + } + + it.each([false, true])( + "reuses socket-loss recovery after a buffered terminal rejection (duplicate terminal: %s)", + async (duplicateTerminal) => { + vi.useFakeTimers(); + let releaseReplacement!: () => void; + const replacementReady = new Promise((resolve) => { + releaseReplacement = resolve; + }); + try { + const { session, connections } = await openSession(replacementReady); + try { + const query = await session.query("select * from x"); + endWithMalformedTrailer( + connections[0], + query.requestId, + duplicateTerminal, + ); + // Reconnect has removed the installed connection, but cannot replay + // until the session accepts or rejects the queued terminal. + await vi.advanceTimersByTimeAsync(0); + expect(connections).toHaveLength(2); + expect(connections[1].sent).toEqual([]); + const draining = (async () => { + for await (const _batch of query) void _batch; + })(); + void draining.catch(() => undefined); + + // Let validation run while opening is held. A duplicate queued + // behind the bad terminal must be discarded now, not charged as + // another recovery while we wait for the replacement to open. + await vi.advanceTimersByTimeAsync(0); + releaseReplacement(); + await vi.advanceTimersByTimeAsync(0); + expect(connections[1].sent).toEqual(connections[0].sent); + connections[1].receive(emptyResultBatch(query.requestId)); + connections[1].receive(resultEnd(query.requestId)); + await expect(draining).resolves.toBeUndefined(); + await expect(query.completion).resolves.toMatchObject({ + kind: "result-end", + finalSequence: 0n, + totalRows: 0n, + }); + + // The recovery must not leave a failure latched on the session. + const next = await session.query("select 2"); + expect(connections[1].sent).toEqual([ + connections[0].sent[0], + encodeQwpQueryRequest({ + requestId: next.requestId, + sql: "select 2", + }), + ]); + connections[1].receive(resultEnd(next.requestId)); + await expect(next.completion).resolves.toMatchObject({ + kind: "result-end", + }); + expect(connections).toHaveLength(2); + } finally { + releaseReplacement(); + await session.close(); + } + } finally { + vi.useRealTimers(); + } + }, + ); + + it("charges delayed terminal rejections to the query recovery budget", async () => { + vi.useFakeTimers(); + try { + const { session, connections } = await openSession(); + try { + const query = await session.query("select * from x"); + const iterator = query[Symbol.asyncIterator](); + for (let attempt = 0; attempt < 2; attempt++) { + endWithMalformedTrailer(connections[attempt], query.requestId); + await vi.advanceTimersByTimeAsync(0); + expect(connections).toHaveLength(attempt + 2); + expect(connections[attempt + 1].sent).toEqual([]); + + // Resume only after socket-loss recovery has started, on each + // attempt. A successful reconnect must not reset this budget. + await expect(iterator.next()).resolves.toMatchObject({ + done: false, + }); + await vi.advanceTimersByTimeAsync(0); + if (attempt === 0) { + expect(connections[1].sent).toEqual(connections[0].sent); + expect(query.isDone()).toBe(false); + } + } + + expect(query.isDone()).toBe(true); + await expect(query.completion).rejects.toMatchObject({ + name: "QwpReconnectExhaustedError", + attempts: 2, + cause: expect.any(QwpProtocolError), + }); + // Already decoded batches precede the failure in iteration. + await expect(iterator.next()).resolves.toMatchObject({ + done: false, + value: { batchSequence: 1n }, + }); + await expect(iterator.next()).rejects.toBeInstanceOf( + QwpReconnectExhaustedError, + ); + // The second rejection exhausts the single allowed recovery before + // another replay can leave on the already-opened candidate. + expect(connections[2].sent).toEqual([]); + } finally { + await session.close(); + } + } finally { + vi.useRealTimers(); + } + }); + + it("keeps recovery moving when the consumer retires before the replacement opens", async () => { + vi.useFakeTimers(); + let releaseReplacement!: () => void; + const replacementReady = new Promise((resolve) => { + releaseReplacement = resolve; + }); + try { + const { session, connections } = await openSession(replacementReady); + try { + const query = await session.query("select * from x"); + const iterator = query[Symbol.asyncIterator](); + endWithMalformedTrailer(connections[0], query.requestId); + await vi.advanceTimersByTimeAsync(0); + expect(connections).toHaveLength(2); + await expect(iterator.next()).resolves.toMatchObject({ done: false }); + await vi.advanceTimersByTimeAsync(0); + + // Validation has rejected the terminal, but opening is still held. + // Retiring now withdraws the replay. An idle reconnect waits for the + // session's receive loop to cross its queue barrier, so that loop + // must not await the very reconnect it needs to unblock. + await iterator.return!(); + await expect(query.completion).rejects.toMatchObject({ + name: "QwpEgressQueryAbandonedError", + }); + releaseReplacement(); + const starting = session.query("select 2"); + void starting.catch(() => undefined); + await vi.advanceTimersByTimeAsync(0); + expect(connections[1].sent).toEqual([ + encodeQwpQueryRequest({ requestId: 1n, sql: "select 2" }), + ]); + const next = await starting; + connections[1].receive(resultEnd(next.requestId)); + await expect(next.completion).resolves.toMatchObject({ + kind: "result-end", + }); + } finally { + releaseReplacement(); + await session.close(); + } + } finally { + vi.useRealTimers(); + } + }); + + it.each(["abandoned", "timed out"] as const)( + "does not replay a query %s before its terminal is rejected", + async (how) => { + vi.useFakeTimers(); + let releaseReplacement!: () => void; + const replacementReady = new Promise((resolve) => { + releaseReplacement = resolve; + }); + try { + const { session, connections } = await openSession(replacementReady); + try { + const query = await session.query( + "select * from x", + how === "timed out" ? { timeoutMs: 1_000 } : {}, + ); + let outcome: unknown; + query.completion.catch((error: unknown) => { + outcome = error; + }); + const iterator = query[Symbol.asyncIterator](); + endWithMalformedTrailer(connections[0], query.requestId); + await vi.advanceTimersByTimeAsync(0); + expect(connections).toHaveLength(2); + + // The query stops needing a server while its terminal still waits + // behind the full pool, so the pending verdict holds it in the + // replay. Retiring or expiring it frees the pool, and the session + // then rejects the terminal with the socket already gone. + if (how === "abandoned") await iterator.return!(); + else await vi.advanceTimersByTimeAsync(1_000); + await vi.advanceTimersByTimeAsync(0); + // A timed-out query reports its timeout at the deadline, not one + // grace period later. + expect(outcome).toMatchObject({ + name: + how === "abandoned" + ? "QwpEgressQueryAbandonedError" + : "QwpEgressQueryTimeoutError", + }); + + // The replacement receives the next query alone: no request or + // CANCEL for the old one, and no drain for the next to wait out. + releaseReplacement(); + const starting = session.query("select 2"); + void starting.catch(() => undefined); + await vi.advanceTimersByTimeAsync(0); + expect(connections[1].sent).toEqual([ + encodeQwpQueryRequest({ requestId: 1n, sql: "select 2" }), + ]); + const next = await starting; + connections[1].receive(resultEnd(next.requestId)); + await expect(next.completion).resolves.toMatchObject({ + kind: "result-end", + }); + expect(connections).toHaveLength(2); + } finally { + releaseReplacement(); + await session.close(); + } + } finally { + vi.useRealTimers(); + } + }, + ); + + it("reports a replay failure from the ongoing reconnect", async () => { + const { session, connections } = await openSession(); + try { + const query = await session.query("select * from x"); + endWithMalformedTrailer(connections[0], query.requestId); + await vi.waitFor(() => expect(connections).toHaveLength(2)); + const failure = new Error("replacement replay failed"); + connections[1].onSend = async () => { + throw failure; + }; + const draining = (async () => { + for await (const _batch of query) void _batch; + })(); + await expect(draining).rejects.toMatchObject({ + name: "QwpReconnectExhaustedError", + attempts: 1, + cause: failure, + }); + await expect(query.completion).rejects.toMatchObject({ + name: "QwpReconnectExhaustedError", + cause: failure, + }); + expect(connections[1].sent).toEqual(connections[0].sent); + await expect(connections[1].closed).resolves.toMatchObject({ + code: 1000, + }); + } finally { + await session.close(); + } + }); + }); + it("rotates endpoints after a malformed egress frame", async () => { const attempts: string[] = []; const connections = new Map(); diff --git a/test/qwp/session.test.ts b/test/qwp/session.test.ts index f1afc2307..1190d799b 100644 --- a/test/qwp/session.test.ts +++ b/test/qwp/session.test.ts @@ -179,6 +179,70 @@ class FakeStuckCloseNodeWebSocket extends FakeStuckCloseWebSocket { } } +/** + * Validates close() as a browser does, before it changes any state: a code + * other than 1000 or 3000-4999 throws InvalidAccessError, and a reason over + * 123 UTF-8 bytes throws SyntaxError. It has no terminate(). + */ +class FakeBrowserCloseWebSocket extends FakeWebSocket { + readonly refusedCloseCalls: { code?: number; reason?: string }[] = []; + + close(code?: number, reason?: string): void { + if (code !== undefined && code !== 1000 && (code < 3000 || code > 4999)) { + this.refusedCloseCalls.push({ code, reason }); + throw new DOMException(`invalid code ${code}`, "InvalidAccessError"); + } + if ( + reason !== undefined && + new TextEncoder().encode(reason).byteLength > 123 + ) { + this.refusedCloseCalls.push({ code, reason }); + throw new DOMException("reason is too long", "SyntaxError"); + } + this.acceptClose(code, reason); + } + + /** Answers an accepted close at once, as a server that reads does. */ + protected acceptClose(code?: number, reason?: string): void { + super.close(code, reason); + } +} + +/** + * A browser socket whose server has not read the client's close yet: an + * accepted close leaves the socket CLOSING until answerClose(). + */ +class FakeBrowserStuckCloseWebSocket extends FakeBrowserCloseWebSocket { + protected acceptClose(code?: number, reason?: string): void { + this.closeCalls.push({ code, reason }); + if (this.readyState === 1) this.readyState = 2; + } + + /** Delivers the server's reply, echoing the close the client sent. */ + answerClose(): void { + const sent = this.closeCalls[this.closeCalls.length - 1]; + this.readyState = 3; + this.emit("close", { + code: sent?.code ?? 1005, + reason: sent?.reason ?? "", + wasClean: true, + }); + } +} + +/** + * Refuses close() the way `ws` refuses a code or reason it rejects: it enters + * CLOSING first, throws after, and then ignores every later close(). + */ +class FakeRefusingCloseNodeWebSocket extends FakeStuckCloseNodeWebSocket { + close(code?: number, reason?: string): void { + this.closeCalls.push({ code, reason }); + if (this.readyState !== 1) return; + this.readyState = 2; + throw new RangeError("The message must not be greater than 123 bytes"); + } +} + class FakeBackpressuredWebSocket extends FakeWebSocket { send(payload: Uint8Array): void { this.bufferedAmount += payload.byteLength; @@ -1151,6 +1215,59 @@ describe("QWP WebSocket adapters", () => { } satisfies Partial); }); + it.each([ + { + path: "a raw connection", + connect: (factory: () => QwpWebSocketLike) => + connectQwpBrowserWebSocket({ + url: "ws://localhost:9000/write/v4", + requestDurableAck: true, + connectTimeoutMs: 1_000, + webSocketFactory: factory, + }), + }, + { + path: "the sender connection factory", + connect: (factory: () => QwpWebSocketLike) => + createQwpBrowserConnectionFactory({ + url: "ws://localhost:9000/write/v4", + requestDurableAck: true, + connectTimeoutMs: 1_000, + webSocketFactory: factory, + })(), + }, + ])( + "reports browser durable ACK unavailable without waiting for the close reply, through $path", + async ({ connect }) => { + // A browser refuses the 1002 this failure closes with, so the close is + // retried with 1000 and then waits for the server's reply. Waiting for + // it before the rethrow let the connect deadline win against a server + // slow to answer, and the capability verdict, which is terminal, + // surfaced as a retryable upgrade timeout. + const socket = new FakeBrowserStuckCloseWebSocket(); + socket.protocol = QWP_DURABLE_ACK_WEBSOCKET_PROTOCOL; + const connecting = connect(() => asQwpSocket(socket)); + socket.open(); + socket.message(ingressServerInfo(1_048_576, false)); + + await expect(connecting).rejects.toMatchObject({ + name: "QwpDurableAckUnavailableError", + kind: QWP_UPGRADE_ERROR_KIND.CAPABILITY_MISMATCH, + retryable: false, + } satisfies Partial); + // The close still went out, with a code the browser accepts. + expect(socket.refusedCloseCalls).toEqual([ + { code: 1002, reason: "invalid QWP ingress SERVER_INFO" }, + ]); + expect(socket.closeCalls).toEqual([ + { code: 1000, reason: "invalid QWP ingress SERVER_INFO" }, + ]); + // It completes in the background once the server answers. + socket.answerClose(); + expect(socket.listenerCount()).toBe(0); + }, + ); + it("waits for durable upload in a browser sender's flushAndWait()", async () => { const socket = new FakeWebSocket(); socket.protocol = QWP_DURABLE_ACK_WEBSOCKET_PROTOCOL; @@ -2310,6 +2427,175 @@ describe("QWP WebSocket adapters", () => { } }); + it("closes a browser WebSocket with 1000 when it refuses the requested code", async () => { + // The client closes with 1001 on shutdown, 1002 on a protocol failure and + // 1011 on a failed send or an undrained cancel, and a browser throws for + // all three. The connection used to settle as closed with its socket open. + for (const code of [1001, 1002, 1011]) { + const socket = new FakeBrowserCloseWebSocket(); + const connecting = connectQwpBrowserWebSocket({ + url: "ws://localhost:9000/read/v1", + webSocketFactory: () => asQwpSocket(socket), + }); + socket.open(); + const connection = await connecting; + + await connection.close(code, "QWP test close"); + expect(socket.refusedCloseCalls).toEqual([ + { code, reason: "QWP test close" }, + ]); + expect(socket.closeCalls).toEqual([ + { code: 1000, reason: "QWP test close" }, + ]); + expect(socket.readyState).toBe(3); + // The peer's close, not a synthetic one: the socket really closed. + await expect(connection.closed).resolves.toEqual({ + code: 1000, + reason: "QWP test close", + wasClean: true, + }); + expect(socket.listenerCount()).toBe(0); + } + }); + + it("closes a browser WebSocket without a code when it refuses the reason", async () => { + const socket = new FakeBrowserCloseWebSocket(); + const connecting = connectQwpBrowserWebSocket({ + url: "ws://localhost:9000/read/v1", + webSocketFactory: () => asQwpSocket(socket), + }); + socket.open(); + const connection = await connecting; + const reason = "x".repeat(124); + + await connection.close(1011, reason); + expect(socket.refusedCloseCalls).toEqual([ + { code: 1011, reason }, + { code: 1000, reason }, + ]); + expect(socket.closeCalls).toEqual([{ code: undefined, reason: undefined }]); + expect(socket.readyState).toBe(3); + }); + + it("settles a browser connection whose socket refuses every close", async () => { + class FakeUnclosableWebSocket extends FakeWebSocket { + close(code?: number, reason?: string): void { + this.closeCalls.push({ code, reason }); + throw new Error("close is broken"); + } + } + const socket = new FakeUnclosableWebSocket(); + const connecting = connectQwpBrowserWebSocket({ + url: "ws://localhost:9000/read/v1", + webSocketFactory: () => asQwpSocket(socket), + }); + socket.open(); + const connection = await connecting; + + await connection.close(1011, "QWP test close"); + expect(socket.closeCalls).toEqual([ + { code: 1011, reason: "QWP test close" }, + { code: 1000, reason: "QWP test close" }, + { code: undefined, reason: undefined }, + ]); + await expect(connection.closed).resolves.toEqual({ + code: 1006, + reason: "QWP WebSocket close failed", + wasClean: false, + }); + expect(socket.listenerCount()).toBe(0); + }); + + it("terminates a Node WebSocket that refuses its close instead of retrying it", async () => { + // `ws` ignores a second close() once it is CLOSING, so a retry would only + // have postponed terminate() by the whole close deadline. 1011 is the case + // that matters: a code other than 1000 is the one a browser socket retries + // with 1000 first, and 1000 itself never reaches that retry. + const reason = "x".repeat(124); + for (const code of [1000, 1011]) { + const socket = new FakeRefusingCloseNodeWebSocket(); + const connecting = connectQwpNodeWebSocket({ + url: "ws://localhost:9000/write/v4", + closeTimeoutMs: 50, + webSocketFactory: (_url, options) => { + options.onUpgrade({}); + return asQwpSocket(socket); + }, + }); + socket.open(); + const connection = await connecting; + + await connection.close(code, reason); + expect(socket.closeCalls).toEqual([{ code, reason }]); + expect(socket.terminateCalls).toBe(1); + await expect(connection.closed).resolves.toEqual({ + code: 1006, + reason: "QWP WebSocket close failed", + wasClean: false, + }); + expect(socket.listenerCount()).toBe(0); + } + }); + + it("closes a browser client's pooled query socket on close()", async () => { + const sockets: FakeBrowserCloseWebSocket[] = []; + const client = createQwpBrowserClient({ + cluster: { + url: "ws://localhost:9000", + webSocketFactory: () => { + const socket = new FakeBrowserCloseWebSocket(); + sockets.push(socket); + queueMicrotask(() => { + socket.open(); + socket.message(serverInfoFrame()); + }); + return asQwpSocket(socket); + }, + }, + }); + const lease = await client.borrowQuery(); + await lease.close(); + + await client.close(); + expect(sockets).toHaveLength(1); + expect(sockets[0].refusedCloseCalls).toEqual([ + { code: 1001, reason: "QWP client shutting down" }, + ]); + expect(sockets[0].closeCalls).toEqual([ + { code: 1000, reason: "QWP client shutting down" }, + ]); + expect(sockets[0].readyState).toBe(3); + }); + + it("closes a browser session's socket when a cancelled query does not drain", async () => { + const socket = new FakeBrowserCloseWebSocket(); + const connecting = connectQwpBrowserEgress({ + url: "ws://localhost:9000/read/v1", + reconnect: false, + cancelDrainTimeoutMs: 25, + webSocketFactory: () => asQwpSocket(socket), + }); + socket.open(); + socket.message(serverInfoFrame()); + const session = await connecting; + const query = await session.query("select * from long_sequence(1000000)"); + + // The server never answers the CANCEL, so the session fails once the + // drain bound expires, and closes the only connection it has. + await query.cancel(); + await expect(query.completion).rejects.toMatchObject({ + name: "QwpEgressQueryCancelTimeoutError", + }); + await session.close().catch(() => undefined); + expect(socket.refusedCloseCalls).toEqual([ + { code: 1011, reason: "QWP cancellation drain timed out" }, + ]); + expect(socket.closeCalls).toEqual([ + { code: 1000, reason: "QWP cancellation drain timed out" }, + ]); + expect(socket.readyState).toBe(3); + }); + it("serializes browser sends until buffered bytes drain", async () => { vi.useFakeTimers(); try {