@sapphire/string-store 2.0.1-next.fb147ec0 → 3.0.0-pr-935.7da5c8bb
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +48 -4
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +8 -1
- package/dist/esm/index.d.mts +8 -1
- package/dist/esm/index.mjs +48 -5
- package/dist/esm/index.mjs.map +1 -1
- package/dist/iife/index.global.js +48 -4
- package/dist/iife/index.global.js.map +1 -1
- package/package.json +2 -2
package/dist/cjs/index.cjs
CHANGED
|
@@ -21,6 +21,28 @@ var __privateWrapper = (obj, member, setter, getter) => ({
|
|
|
21
21
|
}
|
|
22
22
|
});
|
|
23
23
|
|
|
24
|
+
// src/lib/shared/codepoints.ts
|
|
25
|
+
var codepointRanges = [
|
|
26
|
+
{
|
|
27
|
+
start: 19968,
|
|
28
|
+
end: 40956,
|
|
29
|
+
indexStart: 0,
|
|
30
|
+
indexEnd: 20988
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
start: 94208,
|
|
34
|
+
end: 100343,
|
|
35
|
+
indexStart: 20989,
|
|
36
|
+
indexEnd: 27125
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
start: 131072,
|
|
40
|
+
end: 169482,
|
|
41
|
+
indexStart: 27126,
|
|
42
|
+
indexEnd: 65536
|
|
43
|
+
}
|
|
44
|
+
];
|
|
45
|
+
|
|
24
46
|
// src/lib/shared/_common.ts
|
|
25
47
|
function isArrayLike(object) {
|
|
26
48
|
if (!isObject(object)) return false;
|
|
@@ -82,7 +104,7 @@ var ConverterInt32 = new Int32Array(ConverterUint8.buffer);
|
|
|
82
104
|
var ConverterInt64 = new BigInt64Array(ConverterUint8.buffer);
|
|
83
105
|
var ConverterFloat = new Float32Array(ConverterUint8.buffer);
|
|
84
106
|
var ConverterDouble = new Float64Array(ConverterUint8.buffer);
|
|
85
|
-
var _buffer, _bitLength, _wordIndex, _wordLength, _UnalignedUint16Array_instances, readBit_fn, readByte_fn, bufferRead16_fn, bufferRead32_fn, bufferRead64_fn, writeBit_fn, bufferWrite16_fn;
|
|
107
|
+
var _buffer, _bitLength, _wordIndex, _wordLength, _UnalignedUint16Array_instances, uint16ToCodepoint_fn, readBit_fn, readByte_fn, bufferRead16_fn, bufferRead32_fn, bufferRead64_fn, writeBit_fn, bufferWrite16_fn, _UnalignedUint16Array_static, codepointToUint16_fn;
|
|
86
108
|
var _UnalignedUint16Array = class _UnalignedUint16Array {
|
|
87
109
|
constructor(maxLength) {
|
|
88
110
|
__privateAdd(this, _UnalignedUint16Array_instances);
|
|
@@ -229,7 +251,7 @@ var _UnalignedUint16Array = class _UnalignedUint16Array {
|
|
|
229
251
|
toString() {
|
|
230
252
|
let result = "";
|
|
231
253
|
for (let i = 0; i < this.length; i++) {
|
|
232
|
-
result += String.
|
|
254
|
+
result += String.fromCodePoint(__privateMethod(this, _UnalignedUint16Array_instances, uint16ToCodepoint_fn).call(this, __privateGet(this, _buffer)[i]));
|
|
233
255
|
}
|
|
234
256
|
return result;
|
|
235
257
|
}
|
|
@@ -237,10 +259,13 @@ var _UnalignedUint16Array = class _UnalignedUint16Array {
|
|
|
237
259
|
return __privateGet(this, _buffer).slice(0, this.length);
|
|
238
260
|
}
|
|
239
261
|
static from(value) {
|
|
262
|
+
var _a;
|
|
240
263
|
if (typeof value !== "string") return value;
|
|
264
|
+
const codepoints = Array.from(value, (char) => char.codePointAt(0));
|
|
241
265
|
const buffer = new _UnalignedUint16Array(value.length);
|
|
242
|
-
for (let i = 0; i <
|
|
243
|
-
|
|
266
|
+
for (let i = 0; i < codepoints.length; i++) {
|
|
267
|
+
const index = __privateMethod(_a = _UnalignedUint16Array, _UnalignedUint16Array_static, codepointToUint16_fn).call(_a, codepoints[i]);
|
|
268
|
+
__privateGet(buffer, _buffer)[i] = index;
|
|
244
269
|
}
|
|
245
270
|
__privateSet(buffer, _bitLength, value.length << 4);
|
|
246
271
|
return buffer;
|
|
@@ -251,6 +276,14 @@ _bitLength = new WeakMap();
|
|
|
251
276
|
_wordIndex = new WeakMap();
|
|
252
277
|
_wordLength = new WeakMap();
|
|
253
278
|
_UnalignedUint16Array_instances = new WeakSet();
|
|
279
|
+
uint16ToCodepoint_fn = /* @__PURE__ */ __name(function(index) {
|
|
280
|
+
for (const range of codepointRanges) {
|
|
281
|
+
if (index >= range.indexStart && index <= range.indexEnd) {
|
|
282
|
+
return range.start + (index - range.indexStart);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
throw new RangeError(`Index ${index} is out of range`);
|
|
286
|
+
}, "#uint16ToCodepoint");
|
|
254
287
|
readBit_fn = /* @__PURE__ */ __name(function(pointer) {
|
|
255
288
|
const bitOffset = pointer.value;
|
|
256
289
|
const index = bitOffset >> 4;
|
|
@@ -311,6 +344,16 @@ bufferWrite16_fn = /* @__PURE__ */ __name(function(value) {
|
|
|
311
344
|
__privateWrapper(this, _wordIndex)._++;
|
|
312
345
|
__privateWrapper(this, _wordLength)._++;
|
|
313
346
|
}, "#bufferWrite16");
|
|
347
|
+
_UnalignedUint16Array_static = new WeakSet();
|
|
348
|
+
codepointToUint16_fn = /* @__PURE__ */ __name(function(codepoint) {
|
|
349
|
+
for (const range of codepointRanges) {
|
|
350
|
+
if (codepoint >= range.start && codepoint <= range.end) {
|
|
351
|
+
return range.indexStart + (codepoint - range.start);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
throw new RangeError(`Codepoint ${codepoint} is out of range`);
|
|
355
|
+
}, "#codepointToUint16");
|
|
356
|
+
__privateAdd(_UnalignedUint16Array, _UnalignedUint16Array_static);
|
|
314
357
|
__name(_UnalignedUint16Array, "UnalignedUint16Array");
|
|
315
358
|
var UnalignedUint16Array = _UnalignedUint16Array;
|
|
316
359
|
|
|
@@ -1359,6 +1402,7 @@ exports.Uint4Type = Uint4Type;
|
|
|
1359
1402
|
exports.Uint64Type = Uint64Type;
|
|
1360
1403
|
exports.Uint8Type = Uint8Type;
|
|
1361
1404
|
exports.UnalignedUint16Array = UnalignedUint16Array;
|
|
1405
|
+
exports.codepointRanges = codepointRanges;
|
|
1362
1406
|
exports.fromUTF16 = fromUTF16;
|
|
1363
1407
|
exports.t = t;
|
|
1364
1408
|
exports.toUTF16 = toUTF16;
|
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/shared/_common.ts","../../src/lib/shared/Pointer.ts","../../src/lib/buffer/UnalignedUint16Array.ts","../../src/lib/types/Array.ts","../../src/lib/types/BigInt32.ts","../../src/lib/types/BigInt64.ts","../../src/lib/types/BigUint32.ts","../../src/lib/types/BigUint64.ts","../../src/lib/types/Bit.ts","../../src/lib/types/Boolean.ts","../../src/lib/types/Constant.ts","../../src/lib/types/FixedLengthArray.ts","../../src/lib/types/Float32.ts","../../src/lib/types/Float64.ts","../../src/lib/types/Int16.ts","../../src/lib/types/Int2.ts","../../src/lib/types/Int32.ts","../../src/lib/types/Int4.ts","../../src/lib/types/Int64.ts","../../src/lib/types/Int8.ts","../../src/lib/types/Nullable.ts","../../src/lib/types/Snowflake.ts","../../src/lib/types/String.ts","../../src/lib/types/Uint16.ts","../../src/lib/types/Uint2.ts","../../src/lib/types/Uint32.ts","../../src/lib/types/Uint4.ts","../../src/lib/types/Uint64.ts","../../src/lib/types/Uint8.ts","../../src/lib/types/index.ts","../../src/lib/schema/Schema.ts","../../src/lib/schema/SchemaStore.ts","../../src/lib/utilities.ts"],"names":["_buffer","_value"],"mappings":"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","file":"index.cjs","sourcesContent":["export function isArrayLike(object: unknown): object is ArrayLike<unknown> {\n\t// If the item is not an object, it is not array-like:\n\tif (!isObject(object)) return false;\n\t// If the item is an array, it is array-like:\n\tif (Array.isArray(object)) return true;\n\t// If the item doesn't have a numeric length property, it is not array-like:\n\tif (!hasLength(object)) return false;\n\t// If the length isn't a valid index, it is not array-like:\n\tif (!isValidLength(object.length)) return false;\n\n\treturn object.length === 0 || object.length - 1 in object;\n}\n\nfunction isObject(item: unknown): item is object {\n\treturn typeof item === 'object' && item !== null;\n}\n\nfunction hasLength(item: object): item is { length: number } {\n\treturn 'length' in item && typeof item.length === 'number';\n}\n\nexport function isValidLength(length: number) {\n\treturn Number.isSafeInteger(length) && length >= 0 && length < 2147483648;\n}\n","import { isValidLength } from './_common';\n\n/**\n * A pointer to a position in a buffer.\n *\n * This is used to keep track of the current position in a buffer while allowing\n * the position to be updated by multiple different functions.\n *\n * @privateRemarks\n *\n * This class draws inspiration from the following constructs:\n * - `int*` in C/C++\n * - `ref int` in C#\n * - `*mut i32` in Rust\n */\nexport class Pointer {\n\t#value = 0;\n\n\tpublic get value() {\n\t\treturn this.#value;\n\t}\n\n\tpublic add(value: number) {\n\t\tconst added = this.#value + value;\n\t\tif (!isValidLength(added)) {\n\t\t\tthrow new RangeError(`The pointer value cannot be an invalid length value`);\n\t\t}\n\n\t\tthis.#value = added;\n\t\treturn this;\n\t}\n\n\tpublic static from(pointer: PointerLike) {\n\t\tif (pointer instanceof Pointer) {\n\t\t\treturn pointer;\n\t\t}\n\n\t\tconst instance = new Pointer();\n\t\tinstance.add(Number(pointer));\n\t\treturn instance;\n\t}\n}\n\nexport type PointerLike = Pointer | { valueOf(): number } | { [Symbol.toPrimitive](hint: 'number'): number };\n","import { Pointer, type PointerLike } from '../shared/Pointer';\nimport type { DuplexBuffer } from './DuplexBuffer';\n\nconst ConverterUint8 = new Uint8Array(8);\nconst ConverterUint16 = new Uint16Array(ConverterUint8.buffer);\nconst ConverterUint32 = new Uint32Array(ConverterUint8.buffer);\nconst ConverterUint64 = new BigUint64Array(ConverterUint8.buffer);\n\nconst ConverterInt32 = new Int32Array(ConverterUint8.buffer);\nconst ConverterInt64 = new BigInt64Array(ConverterUint8.buffer);\n\nconst ConverterFloat = new Float32Array(ConverterUint8.buffer);\nconst ConverterDouble = new Float64Array(ConverterUint8.buffer);\n\nexport class UnalignedUint16Array implements DuplexBuffer {\n\t#buffer: Uint16Array;\n\t#bitLength = 0;\n\t#wordIndex = 0;\n\t#wordLength = 0;\n\n\tpublic constructor(maxLength: number) {\n\t\tthis.#buffer = new Uint16Array(maxLength);\n\t}\n\n\tpublic at(index: number): number | undefined {\n\t\treturn this.#buffer.at(index);\n\t}\n\n\tpublic get maxLength(): number {\n\t\treturn this.#buffer.length;\n\t}\n\n\tpublic get maxBitLength(): number {\n\t\treturn this.#buffer.length * 16;\n\t}\n\n\tpublic get length(): number {\n\t\treturn this.#wordLength;\n\t}\n\n\tpublic get bitLength(): number {\n\t\treturn this.#bitLength;\n\t}\n\n\tpublic writeBit(value: number): void {\n\t\tthis.#writeBit(value);\n\t}\n\n\tpublic writeInt2(value: number): void {\n\t\tthis.writeBit(value & 1);\n\t\tthis.writeBit(value >> 1);\n\t}\n\n\tpublic writeInt4(value: number): void {\n\t\tthis.writeInt2(value & 0b11);\n\t\tthis.writeInt2(value >> 2);\n\t}\n\n\tpublic writeInt8(value: number): void {\n\t\tthis.writeInt4(value & 0b1111);\n\t\tthis.writeInt4(value >> 4);\n\t}\n\n\tpublic writeInt16(value: number): void {\n\t\tthis.#bufferWrite16(value);\n\t}\n\n\tpublic writeInt32(value: number): void {\n\t\tthis.#bufferWrite16(value);\n\t\tthis.#bufferWrite16(value >> 16);\n\t}\n\n\tpublic writeInt64(value: number): void {\n\t\tthis.writeBigInt64(BigInt(value));\n\t}\n\n\tpublic writeBigInt32(value: bigint): void {\n\t\tConverterInt64[0] = value;\n\t\tthis.#bufferWrite16(ConverterUint16[0]);\n\t\tthis.#bufferWrite16(ConverterUint16[1]);\n\t}\n\n\tpublic writeBigInt64(value: bigint): void {\n\t\tConverterInt64[0] = value;\n\t\tthis.#bufferWrite16(ConverterUint16[0]);\n\t\tthis.#bufferWrite16(ConverterUint16[1]);\n\t\tthis.#bufferWrite16(ConverterUint16[2]);\n\t\tthis.#bufferWrite16(ConverterUint16[3]);\n\t}\n\n\tpublic writeFloat32(value: number): void {\n\t\tConverterFloat[0] = value;\n\t\tthis.#bufferWrite16(ConverterUint16[0]);\n\t\tthis.#bufferWrite16(ConverterUint16[1]);\n\t}\n\n\tpublic writeFloat64(value: number): void {\n\t\tConverterDouble[0] = value;\n\t\tthis.#bufferWrite16(ConverterUint16[0]);\n\t\tthis.#bufferWrite16(ConverterUint16[1]);\n\t\tthis.#bufferWrite16(ConverterUint16[2]);\n\t\tthis.#bufferWrite16(ConverterUint16[3]);\n\t}\n\n\tpublic readBit(offset: PointerLike): 0 | 1 {\n\t\tconst ptr = Pointer.from(offset);\n\t\treturn this.#readBit(ptr) as 0 | 1;\n\t}\n\n\tpublic readInt2(offset: PointerLike): number {\n\t\t// Bit shifting to convert 2-bit signed integer to 32-bit signed integer\n\t\t// 0b01 → 0b0100_0000_0000_0000 → 0b000_0000_0000_0001 (1)\n\t\t// 0b10 → 0b1000_0000_0000_0000 → 0b111_1111_1111_1110 (-2)\n\t\treturn (this.readUint2(offset) << 30) >> 30;\n\t}\n\n\tpublic readUint2(offset: PointerLike): number {\n\t\tconst ptr = Pointer.from(offset);\n\t\treturn this.#readBit(ptr) | (this.#readBit(ptr) << 1);\n\t}\n\n\tpublic readInt4(offset: PointerLike): number {\n\t\t// Bit shifting to convert 4-bit signed integer to 32-bit signed integer,\n\t\t// as shown in `readInt2`.\n\t\treturn (this.readUint4(offset) << 28) >> 28;\n\t}\n\n\tpublic readUint4(offset: PointerLike): number {\n\t\tconst ptr = Pointer.from(offset);\n\t\treturn this.#readBit(ptr) | (this.#readBit(ptr) << 1) | (this.#readBit(ptr) << 2) | (this.#readBit(ptr) << 3);\n\t}\n\n\tpublic readInt8(offset: PointerLike): number {\n\t\t// Bit shifting to convert 8-bit signed integer to 32-bit signed integer,\n\t\t// as shown in `readInt2`.\n\t\treturn (this.readUint8(offset) << 24) >> 24;\n\t}\n\n\tpublic readUint8(offset: PointerLike): number {\n\t\tconst ptr = Pointer.from(offset);\n\t\treturn this.#readByte(ptr);\n\t}\n\n\tpublic readInt16(offset: PointerLike): number {\n\t\t// Bit shifting to convert 8-bit signed integer to 32-bit signed integer,\n\t\t// as shown in `readInt2`.\n\t\treturn (this.readUint16(offset) << 16) >> 16;\n\t}\n\n\tpublic readUint16(offset: PointerLike): number {\n\t\tthis.#bufferRead16(Pointer.from(offset));\n\t\treturn ConverterUint16[0];\n\t}\n\n\tpublic readInt32(offset: PointerLike): number {\n\t\tthis.#bufferRead32(Pointer.from(offset));\n\t\treturn ConverterInt32[0];\n\t}\n\n\tpublic readUint32(offset: PointerLike): number {\n\t\tthis.#bufferRead32(Pointer.from(offset));\n\t\treturn ConverterUint32[0];\n\t}\n\n\tpublic readInt64(offset: PointerLike): number {\n\t\treturn Number(this.readBigInt64(offset));\n\t}\n\n\tpublic readUint64(offset: PointerLike) {\n\t\treturn Number(this.readBigUint64(offset));\n\t}\n\n\tpublic readBigInt32(offset: PointerLike): bigint {\n\t\tthis.#bufferRead32(Pointer.from(offset));\n\t\treturn BigInt(ConverterInt32[0]);\n\t}\n\n\tpublic readBigUint32(offset: PointerLike): bigint {\n\t\tthis.#bufferRead32(Pointer.from(offset));\n\t\treturn BigInt(ConverterUint32[0]);\n\t}\n\n\tpublic readBigInt64(offset: PointerLike): bigint {\n\t\tthis.#bufferRead64(Pointer.from(offset));\n\t\treturn ConverterInt64[0];\n\t}\n\n\tpublic readBigUint64(offset: PointerLike): bigint {\n\t\tthis.#bufferRead64(Pointer.from(offset));\n\t\treturn ConverterUint64[0];\n\t}\n\n\tpublic readFloat32(offset: PointerLike): number {\n\t\tthis.#bufferRead32(Pointer.from(offset));\n\t\treturn ConverterFloat[0];\n\t}\n\n\tpublic readFloat64(offset: PointerLike): number {\n\t\tthis.#bufferRead64(Pointer.from(offset));\n\t\treturn ConverterDouble[0];\n\t}\n\n\tpublic toString() {\n\t\tlet result = '';\n\t\tfor (let i = 0; i < this.length; i++) {\n\t\t\tresult += String.fromCharCode(this.#buffer[i]);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tpublic toArray(): Uint16Array {\n\t\treturn this.#buffer.slice(0, this.length);\n\t}\n\n\t#readBit(pointer: Pointer) {\n\t\tconst bitOffset = pointer.value;\n\t\tconst index = bitOffset >> 4;\n\t\tconst bitIndex = bitOffset & 0xf;\n\t\tpointer.add(1);\n\t\treturn (this.#buffer[index] >> bitIndex) & 1;\n\t}\n\n\t#readByte(ptr: Pointer) {\n\t\treturn (\n\t\t\tthis.#readBit(ptr) |\n\t\t\t(this.#readBit(ptr) << 1) |\n\t\t\t(this.#readBit(ptr) << 2) |\n\t\t\t(this.#readBit(ptr) << 3) |\n\t\t\t(this.#readBit(ptr) << 4) |\n\t\t\t(this.#readBit(ptr) << 5) |\n\t\t\t(this.#readBit(ptr) << 6) |\n\t\t\t(this.#readBit(ptr) << 7)\n\t\t);\n\t}\n\n\t#bufferRead16(ptr: Pointer): void {\n\t\tConverterUint8[0] = this.#readByte(ptr);\n\t\tConverterUint8[1] = this.#readByte(ptr);\n\t}\n\n\t#bufferRead32(ptr: Pointer): void {\n\t\tConverterUint8[0] = this.#readByte(ptr);\n\t\tConverterUint8[1] = this.#readByte(ptr);\n\t\tConverterUint8[2] = this.#readByte(ptr);\n\t\tConverterUint8[3] = this.#readByte(ptr);\n\t}\n\n\t#bufferRead64(ptr: Pointer): void {\n\t\tConverterUint8[0] = this.#readByte(ptr);\n\t\tConverterUint8[1] = this.#readByte(ptr);\n\t\tConverterUint8[2] = this.#readByte(ptr);\n\t\tConverterUint8[3] = this.#readByte(ptr);\n\t\tConverterUint8[4] = this.#readByte(ptr);\n\t\tConverterUint8[5] = this.#readByte(ptr);\n\t\tConverterUint8[6] = this.#readByte(ptr);\n\t\tConverterUint8[7] = this.#readByte(ptr);\n\t}\n\n\t#writeBit(value: number) {\n\t\tif (this.#wordIndex === this.maxLength) {\n\t\t\tthrow new RangeError(`The buffer is full`);\n\t\t}\n\n\t\tif (value) {\n\t\t\tconst index = this.#wordIndex;\n\t\t\tconst bitIndex = this.bitLength & 0xf;\n\t\t\tthis.#buffer[index] |= 1 << bitIndex;\n\t\t}\n\n\t\tif ((this.#bitLength & 0xf) === 0) this.#wordLength++;\n\t\tthis.#bitLength++;\n\t\tif ((this.#bitLength & 0xf) === 0) this.#wordIndex++;\n\t}\n\n\t#bufferWrite16(value: number) {\n\t\tconst wordIndex = this.#wordIndex;\n\t\tconst bitIndex = this.bitLength & 0xf;\n\n\t\t// If `bitIndex` is `0`:\n\t\t// - Then the value will fit in the current word.\n\t\t// - In this case, we validate that we can write the current word.\n\t\t//\n\t\t// Otherwise:\n\t\t// - The value will be split between the current word and the next word.\n\t\t// - In this case, we validate that we can write the next word.\n\t\tif (wordIndex + (bitIndex === 0 ? 0 : 1) === this.maxLength) {\n\t\t\tthrow new RangeError(`The buffer is full`);\n\t\t}\n\n\t\tif (bitIndex === 0) {\n\t\t\tthis.#buffer[wordIndex] = value;\n\t\t} else {\n\t\t\tvalue &= 0xffff;\n\t\t\tthis.#buffer[wordIndex] |= value << bitIndex;\n\t\t\tthis.#buffer[wordIndex + 1] = value >> (16 - bitIndex);\n\t\t}\n\n\t\tthis.#bitLength += 16;\n\t\tthis.#wordIndex++;\n\t\tthis.#wordLength++;\n\t}\n\n\tpublic static from(value: string | DuplexBuffer): DuplexBuffer {\n\t\tif (typeof value !== 'string') return value;\n\n\t\tconst buffer = new UnalignedUint16Array(value.length);\n\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\tbuffer.#buffer[i] = value.charCodeAt(i);\n\t\t}\n\n\t\tbuffer.#bitLength = value.length << 4;\n\t\treturn buffer;\n\t}\n}\n","import { isArrayLike } from '../shared/_common';\nimport type { IType } from './base/IType';\n\nexport function ArrayType<ValueType, ValueBitSize extends number | null>(type: IType<ValueType, ValueBitSize>): IType<ValueType[], null> {\n\treturn {\n\t\tserialize(buffer, values: readonly ValueType[]) {\n\t\t\tif (!isArrayLike(values)) {\n\t\t\t\tthrow new TypeError(`Expected an array, got ${values}`);\n\t\t\t}\n\n\t\t\tbuffer.writeInt16(values.length);\n\t\t\tfor (const value of values) {\n\t\t\t\ttype.serialize(buffer, value);\n\t\t\t}\n\t\t},\n\t\tdeserialize(buffer, pointer) {\n\t\t\tconst length = buffer.readUint16(pointer);\n\t\t\tconst value = [];\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tvalue.push(type.deserialize(buffer, pointer));\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\t\tBIT_SIZE: null\n\t};\n}\n","import type { IType } from './base/IType';\n\nexport const BigInt32Type: IType<bigint, 32> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBigInt32(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readBigInt32(pointer);\n\t},\n\tBIT_SIZE: 32\n};\n","import type { IType } from './base/IType';\n\nexport const BigInt64Type: IType<bigint, 64> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBigInt64(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readBigInt64(pointer);\n\t},\n\tBIT_SIZE: 64\n};\n","import type { IType } from './base/IType';\n\nexport const BigUint32Type: IType<bigint, 32> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBigInt32(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readBigUint32(pointer);\n\t},\n\tBIT_SIZE: 32\n};\n","import type { IType } from './base/IType';\n\nexport const BigUint64Type: IType<bigint, 64> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBigInt64(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readBigUint64(pointer);\n\t},\n\tBIT_SIZE: 64\n};\n","import type { IType } from './base/IType';\n\nexport const BitType: IType<0 | 1, 1, number> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBit(value & 0b1);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readBit(pointer);\n\t},\n\tBIT_SIZE: 1\n};\n","import type { IType } from './base/IType';\n\nexport const BooleanType: IType<boolean, 1> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBit(Number(value));\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readBit(pointer) === 1;\n\t},\n\tBIT_SIZE: 1\n};\n","import type { IType } from './base/IType';\n\nexport function ConstantType<const ValueType>(constantValue: ValueType): IType<ValueType, 0, never> {\n\treturn {\n\t\tserialize(_buffer, _value) {},\n\t\tdeserialize(_buffer, _pointer) {\n\t\t\treturn constantValue;\n\t\t},\n\t\tBIT_SIZE: 0\n\t};\n}\n","import { isArrayLike } from '../shared/_common';\nimport type { IType } from './base/IType';\n\nexport function FixedLengthArrayType<ValueType, ValueBitSize extends number | null>(\n\ttype: IType<ValueType, ValueBitSize>,\n\tlength: number\n): IType<ValueType[], ValueBitSize extends null ? null : number> {\n\treturn {\n\t\tserialize(buffer, values) {\n\t\t\tif (!isArrayLike(values) || values.length !== length) {\n\t\t\t\tthrow new TypeError(`Expected array of length ${length}, got ${values.length}`);\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\ttype.serialize(buffer, values[i]);\n\t\t\t}\n\t\t},\n\t\tdeserialize(buffer, pointer) {\n\t\t\tconst value = [];\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tvalue.push(type.deserialize(buffer, pointer));\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\t\tBIT_SIZE: (typeof type.BIT_SIZE === 'number' ? type.BIT_SIZE * length : null) as ValueBitSize extends null ? null : number\n\t};\n}\n","import type { IType } from './base/IType';\n\nexport const Float32Type: IType<number, 32> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeFloat32(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readFloat32(pointer);\n\t},\n\tBIT_SIZE: 32\n};\n","import type { IType } from './base/IType';\n\nexport const Float64Type: IType<number, 64> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeFloat64(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readFloat64(pointer);\n\t},\n\tBIT_SIZE: 64\n};\n","import type { IType } from './base/IType';\n\nexport const Int16Type: IType<number, 16> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt16(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readInt16(pointer);\n\t},\n\tBIT_SIZE: 16\n};\n","import type { IType } from './base/IType';\n\nexport const Int2Type: IType<number, 2> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt2(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readInt2(pointer);\n\t},\n\tBIT_SIZE: 2\n};\n","import type { IType } from './base/IType';\n\nexport const Int32Type: IType<number, 32> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt32(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readInt32(pointer);\n\t},\n\tBIT_SIZE: 32\n};\n","import type { IType } from './base/IType';\n\nexport const Int4Type: IType<number, 4> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt4(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readInt4(pointer);\n\t},\n\tBIT_SIZE: 4\n};\n","import type { IType } from './base/IType';\n\nexport const Int64Type: IType<number, 64> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt64(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readInt64(pointer);\n\t},\n\tBIT_SIZE: 64\n};\n","import type { IType } from './base/IType';\n\nexport const Int8Type: IType<number, 8> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt8(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readInt8(pointer);\n\t},\n\tBIT_SIZE: 8\n};\n","import type { IType } from './base/IType';\n\nexport function NullableType<ValueType, ValueBitSize extends number | null>(\n\ttype: IType<ValueType, ValueBitSize>\n): IType<ValueType | null, null, ValueType | null | undefined> {\n\treturn {\n\t\tserialize(buffer, value) {\n\t\t\tif (value === null || value === undefined) {\n\t\t\t\tbuffer.writeBit(0);\n\t\t\t} else {\n\t\t\t\tbuffer.writeBit(1);\n\t\t\t\ttype.serialize(buffer, value);\n\t\t\t}\n\t\t},\n\t\tdeserialize(buffer, pointer) {\n\t\t\treturn buffer.readBit(pointer) ? type.deserialize(buffer, pointer) : null;\n\t\t},\n\t\tBIT_SIZE: null\n\t};\n}\n","import type { IType } from './base/IType';\n\nexport const SnowflakeType: IType<bigint, 64, bigint | string> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBigInt64(BigInt(value));\n\t},\n\tdeserialize(buffer, offset) {\n\t\treturn buffer.readBigUint64(offset);\n\t},\n\tBIT_SIZE: 64\n};\n","import type { IType } from './base/IType';\n\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder();\nexport const StringType: IType<string, null> = {\n\tserialize(buffer, value) {\n\t\tconst encoded = encoder.encode(value);\n\t\tbuffer.writeInt16(encoded.length);\n\t\tfor (const byte of encoded) {\n\t\t\tbuffer.writeInt8(byte);\n\t\t}\n\t},\n\tdeserialize(buffer, pointer) {\n\t\tconst length = buffer.readInt16(pointer);\n\t\tconst bytes = new Uint8Array(length);\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tbytes[i] = buffer.readInt8(pointer);\n\t\t}\n\t\treturn decoder.decode(bytes);\n\t},\n\tBIT_SIZE: null\n};\n","import type { IType } from './base/IType';\n\nexport const Uint16Type: IType<number, 16> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt16(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readUint16(pointer);\n\t},\n\tBIT_SIZE: 16\n};\n","import type { IType } from './base/IType';\n\nexport const Uint2Type: IType<number, 2> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt2(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readUint2(pointer);\n\t},\n\tBIT_SIZE: 2\n};\n","import type { IType } from './base/IType';\n\nexport const Uint32Type: IType<number, 32> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt32(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readUint32(pointer);\n\t},\n\tBIT_SIZE: 32\n};\n","import type { IType } from './base/IType';\n\nexport const Uint4Type: IType<number, 4> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt4(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readUint4(pointer);\n\t},\n\tBIT_SIZE: 4\n};\n","import type { IType } from './base/IType';\n\nexport const Uint64Type: IType<number, 64> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt64(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readUint64(pointer);\n\t},\n\tBIT_SIZE: 64\n};\n","import type { IType } from './base/IType';\n\nexport const Uint8Type: IType<number, 8> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt8(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readUint8(pointer);\n\t},\n\tBIT_SIZE: 8\n};\n","import { ArrayType } from './Array';\nimport type { IType } from './base/IType';\nimport { BigInt32Type } from './BigInt32';\nimport { BigInt64Type } from './BigInt64';\nimport { BigUint32Type } from './BigUint32';\nimport { BigUint64Type } from './BigUint64';\nimport { BitType } from './Bit';\nimport { BooleanType } from './Boolean';\nimport { ConstantType } from './Constant';\nimport { FixedLengthArrayType } from './FixedLengthArray';\nimport { Float32Type } from './Float32';\nimport { Float64Type } from './Float64';\nimport { Int16Type } from './Int16';\nimport { Int2Type } from './Int2';\nimport { Int32Type } from './Int32';\nimport { Int4Type } from './Int4';\nimport { Int64Type } from './Int64';\nimport { Int8Type } from './Int8';\nimport { NullableType } from './Nullable';\nimport { SnowflakeType } from './Snowflake';\nimport { StringType } from './String';\nimport { Uint16Type } from './Uint16';\nimport { Uint2Type } from './Uint2';\nimport { Uint32Type } from './Uint32';\nimport { Uint4Type } from './Uint4';\nimport { Uint64Type } from './Uint64';\nimport { Uint8Type } from './Uint8';\n\nexport const t = {\n\tarray: ArrayType,\n\tbigInt32: BigInt32Type,\n\tbigInt64: BigInt64Type,\n\tbigUint32: BigUint32Type,\n\tbigUint64: BigUint64Type,\n\tbit: BitType,\n\tboolean: BooleanType,\n\tconstant: ConstantType,\n\tfixedLengthArray: FixedLengthArrayType,\n\tfloat32: Float32Type,\n\tfloat64: Float64Type,\n\tint16: Int16Type,\n\tint2: Int2Type,\n\tint32: Int32Type,\n\tint4: Int4Type,\n\tint64: Int64Type,\n\tint8: Int8Type,\n\tnullable: NullableType,\n\tsnowflake: SnowflakeType,\n\tstring: StringType,\n\tuint16: Uint16Type,\n\tuint2: Uint2Type,\n\tuint32: Uint32Type,\n\tuint4: Uint4Type,\n\tuint64: Uint64Type,\n\tuint8: Uint8Type\n};\n\nexport {\n\tArrayType,\n\tBigInt32Type,\n\tBigInt64Type,\n\tBigUint32Type,\n\tBigUint64Type,\n\tBitType,\n\tBooleanType,\n\tConstantType,\n\tFixedLengthArrayType,\n\tFloat32Type,\n\tFloat64Type,\n\tInt16Type,\n\tInt2Type,\n\tInt32Type,\n\tInt4Type,\n\tInt64Type,\n\tInt8Type,\n\tNullableType,\n\tSnowflakeType,\n\tStringType,\n\tUint16Type,\n\tUint2Type,\n\tUint32Type,\n\tUint4Type,\n\tUint64Type,\n\tUint8Type,\n\ttype IType\n};\n","import type { DuplexBuffer } from '../buffer/DuplexBuffer';\nimport { UnalignedUint16Array } from '../buffer/UnalignedUint16Array';\nimport { Pointer, type PointerLike } from '../shared/Pointer';\nimport { t, type IType } from '../types/index';\n\nexport class Schema<Id extends number = number, Entries extends object = object> {\n\treadonly #id: Id;\n\treadonly #types = new Map<string, IType<any, number | null>>();\n\t#bitSize: number | null = 0;\n\n\t/**\n\t * Creates a new schema.\n\t *\n\t * @param id The id of the schema\n\t */\n\tpublic constructor(id: Id) {\n\t\tthis.#id = id;\n\t}\n\n\t/**\n\t * The id of the schema.\n\t */\n\tpublic get id(): Id {\n\t\treturn this.#id;\n\t}\n\n\t/**\n\t * The bit size of the entries in the schema.\n\t *\n\t * @remarks\n\t *\n\t * If any of the entries have a bit size of `null`, the bit size of the\n\t * schema will also be `null`.\n\t */\n\tpublic get bitSize(): number | null {\n\t\treturn this.#bitSize;\n\t}\n\n\t/**\n\t * The total bit size of the entries in the schema and the ID.\n\t *\n\t * @remarks\n\t *\n\t * If any of the entries have a bit size of `null`, the total bit size of\n\t * the schema will also be `null`.\n\t */\n\tpublic get totalBitSize(): number | null {\n\t\treturn this.#bitSize === null ? null : this.#bitSize + 16;\n\t}\n\n\t/**\n\t * Get a property from the schema.\n\t *\n\t * @param name The name of the property\n\t * @returns The specified property\n\t *\n\t * @remarks\n\t *\n\t * If the property does not exist, an error will be thrown.\n\t */\n\tpublic get<const Name extends keyof Entries & string>(name: Name): Entries[Name] {\n\t\tconst type = this.#types.get(name) as Entries[Name];\n\t\tif (!type) throw new Error(`Schema with id ${this.#id} does not have a property with name \"${name}\"`);\n\t\treturn type;\n\t}\n\n\t/**\n\t * Create a buffer and serialize a value into it, then convert it to a string\n\t *\n\t * @param value The value to serialize into the buffer\n\t * @param defaultMaximumArrayLength The default maximum array length, if any\n\t * @returns The newly created string.\n\t *\n\t * @seealso This method calls {@link Schema.serializeRaw} before calling `toString()` to its result.\n\t */\n\tpublic serialize(value: Readonly<SerializeValueEntries<Entries>>, defaultMaximumArrayLength = 100): string {\n\t\treturn this.serializeRaw(value, defaultMaximumArrayLength).toString();\n\t}\n\n\t/**\n\t * Create a buffer and serialize a value into it.\n\t *\n\t * @param value The value to serialize into the buffer\n\t * @param defaultMaximumArrayLength The default maximum array length, if any\n\t * @returns The newly created buffer.\n\t */\n\tpublic serializeRaw(value: Readonly<SerializeValueEntries<Entries>>, defaultMaximumArrayLength = 100): DuplexBuffer {\n\t\tconst buffer = new UnalignedUint16Array(this.totalBitSize ?? defaultMaximumArrayLength);\n\t\tthis.serializeInto(buffer, value);\n\t\treturn buffer;\n\t}\n\n\t/**\n\t * Serialize a value into a buffer.\n\t *\n\t * @param buffer The buffer to serialize\n\t * @param value The value to serialize into the buffer\n\t *\n\t * @remarks\n\t *\n\t * The schema's ID is written to the buffer first, followed by each property\n\t * in the schema.\n\t */\n\tpublic serializeInto(buffer: DuplexBuffer, value: Readonly<SerializeValueEntries<Entries>>): void {\n\t\tbuffer.writeInt16(this.#id);\n\t\tfor (const [name, type] of this) {\n\t\t\t(type as IType<any, number | null>).serialize(buffer, (value as any)[name]);\n\t\t}\n\t}\n\n\t/**\n\t * Deserialize a value from a buffer.\n\t *\n\t * @param buffer The buffer to deserialize\n\t * @param pointer The pointer to where the buffer should be read from\n\t * @returns The deserialized value\n\t *\n\t * @remarks\n\t *\n\t * Unlike {@link Schema.serializeInto}, this method does not read the schema's ID\n\t * from the buffer, that is reserved for the {@link SchemaStore}.\n\t */\n\tpublic deserialize(buffer: DuplexBuffer | string, pointer: PointerLike): UnwrapSchemaEntries<Entries> {\n\t\tbuffer = UnalignedUint16Array.from(buffer);\n\t\tpointer = Pointer.from(pointer);\n\t\tconst result = Object.create(null) as UnwrapSchemaEntries<Entries>;\n\t\tfor (const [name, type] of this) {\n\t\t\t// @ts-expect-error Complex types\n\t\t\tresult[name] = type.deserialize(buffer, pointer);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * Adds an array property to the schema.\n\t *\n\t * @seealso {@link Schema.fixedLengthArray} for a fixed length array\n\t *\n\t * @param name The name of the property\n\t * @param type The type of the entry in the array\n\t * @returns The modified schema\n\t */\n\tpublic array<const Name extends string, const ValueType, const ValueBitSize extends number | null>(\n\t\tname: Name,\n\t\ttype: IType<ValueType, ValueBitSize>\n\t) {\n\t\treturn this.#addType(name, t.array(type));\n\t}\n\n\t/**\n\t * Adds a fixed length array property to the schema.\n\t *\n\t * @seealso {@link Schema.array} for a dynamic length array\n\t *\n\t * @param name The name of the property\n\t * @param type The type of the entry in the array\n\t * @param length The length of the array\n\t * @returns The modified schema\n\t */\n\tpublic fixedLengthArray<const Name extends string, const ValueType, const ValueBitSize extends number | null>(\n\t\tname: Name,\n\t\ttype: IType<ValueType, ValueBitSize>,\n\t\tlength: number\n\t) {\n\t\treturn this.#addType(name, t.fixedLengthArray(type, length));\n\t}\n\n\t/**\n\t * Adds a string property to the schema.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic string<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.string);\n\t}\n\n\t/**\n\t * Adds a boolean property to the schema.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic boolean<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.boolean);\n\t}\n\n\t/**\n\t * Adds a bit property to the schema.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic bit<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.bit);\n\t}\n\n\t/**\n\t * Adds a 2-bit integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -2 to 1, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic int2<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.int2);\n\t}\n\n\t/**\n\t * Adds a 2-bit unsigned integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0 to 3, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic uint2<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.uint2);\n\t}\n\n\t/**\n\t * Adds a 4-bit integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -8 to 7, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic int4<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.int4);\n\t}\n\n\t/**\n\t * Adds a 4-bit unsigned integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0 to 15, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic uint4<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.uint4);\n\t}\n\n\t/**\n\t * Adds a 8-bit integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -128 to 127, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic int8<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.int8);\n\t}\n\n\t/**\n\t * Adds a 8-bit unsigned integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0 to 255, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic uint8<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.uint8);\n\t}\n\n\t/**\n\t * Adds a 16-bit integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -32768 to 32767, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic int16<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.int16);\n\t}\n\n\t/**\n\t * Adds a 16-bit unsigned integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0 to 65535, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic uint16<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.uint16);\n\t}\n\n\t/**\n\t * Adds a 32-bit integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -2_147_483_648 to 2_147_483_647, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic int32<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.int32);\n\t}\n\n\t/**\n\t * Adds a 32-bit unsigned integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0 to 4_294_967_295, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic uint32<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.uint32);\n\t}\n\n\t/**\n\t * Adds a 64-bit integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -9_223_372_036_854_775_808 to 9_223_372_036_854_775_807, inclusive.\n\t *\n\t * However, it may run into precision issues past the range of `-9_007_199_254_740_991` to `9_007_199_254_740_991`\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic int64<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.int64);\n\t}\n\n\t/**\n\t * Adds a 64-bit unsigned integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0 to 18_446_744_073_709_551_615, inclusive.\n\t *\n\t * However, it may run into precision issues past `9_007_199_254_740_991`\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic uint64<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.uint64);\n\t}\n\n\t/**\n\t * Adds a 32-bit big integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -2_147_483_648n to 2_147_483_647n, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic bigInt32<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.bigInt32);\n\t}\n\n\t/**\n\t * Adds a 32-bit big integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0n to 4_294_967_295n, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic bigUint32<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.bigUint32);\n\t}\n\n\t/**\n\t * Adds a 64-bit big integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -9_223_372_036_854_775_808n to 9_223_372_036_854_775_807n, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic bigInt64<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.bigInt64);\n\t}\n\n\t/**\n\t * Adds a 64-bit big integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0n to 18_446_744_073_709_551_615n, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic bigUint64<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.bigUint64);\n\t}\n\n\t/**\n\t * Adds a 32-bit floating point number property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -3.4028234663852886e+38 to 3.4028234663852886e+38, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic float32<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.float32);\n\t}\n\n\t/**\n\t * Adds a 64-bit floating point number property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -1.7976931348623157e+308 to 1.7976931348623157e+308, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic float64<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.float64);\n\t}\n\n\t/**\n\t * Adds a nullable property to the schema.\n\t *\n\t * @param name The name of the property\n\t * @param type The type of the underlying value\n\t * @returns The modified schema\n\t */\n\tpublic nullable<const Name extends string, const ValueType, const ValueBitSize extends number | null>(\n\t\tname: Name,\n\t\ttype: IType<ValueType, ValueBitSize>\n\t) {\n\t\treturn this.#addType(name, t.nullable(type));\n\t}\n\n\t/**\n\t * Adds a 64-bit big integer property to the schema, similar to {@link Schema.bigUint64}.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0n to 18_446_744_073_709_551_615n, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic snowflake<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.snowflake);\n\t}\n\n\t/**\n\t * Adds a constant value in the schema, this will **not** be serialized and\n\t * can be used to add extra data without making the payload bigger.\n\t *\n\t * @param name The name of the property\n\t * @param constantValue The value to add to the schema\n\t * @returns The modified schema\n\t */\n\tpublic constant<const Name extends string, const ValueType>(name: Name, constantValue: ValueType) {\n\t\treturn this.#addType(name, t.constant(constantValue));\n\t}\n\n\t/**\n\t * Iterates over the schema's property names.\n\t *\n\t * @returns An iterator for the schema's property names\n\t */\n\tpublic keys(): IterableIterator<KeyOfSchema<this>> {\n\t\treturn this.#types.keys() as IterableIterator<KeyOfSchema<this>>;\n\t}\n\n\t/**\n\t * Iterates over the schema's property values\n\t *\n\t * @returns An iterator for the schema's property values\n\t */\n\tpublic values(): IterableIterator<ValueOfSchema<this>> {\n\t\treturn this.#types.values() as IterableIterator<ValueOfSchema<this>>;\n\t}\n\n\t/**\n\t * Iterates over the schema's property entries\n\t *\n\t * @returns An iterator for the schema's property entries\n\t */\n\tpublic entries(): IterableIterator<EntryOfSchema<this>> {\n\t\treturn this.#types.entries() as IterableIterator<EntryOfSchema<this>>;\n\t}\n\n\t/**\n\t * Iterates over the schema's property entries\n\t *\n\t * @returns An iterator for the schema's property entries\n\t */\n\tpublic [Symbol.iterator](): IterableIterator<EntryOfSchema<this>> {\n\t\treturn this.entries();\n\t}\n\n\t#addType<const EntryName extends string, const ValueType, const ValueBitSize extends number | null, InputValue>(\n\t\tname: EntryName,\n\t\ttype: IType<ValueType, ValueBitSize, InputValue>\n\t): Merge<Id, Entries, EntryName, typeof type> {\n\t\tif (this.#types.has(name)) {\n\t\t\tthrow new Error(`Schema with id ${this.#id} already has a property with name \"${name}\"`);\n\t\t}\n\n\t\tthis.#types.set(name, type);\n\n\t\tif (type.BIT_SIZE === null) {\n\t\t\tthis.#bitSize = null;\n\t\t} else if (this.#bitSize !== null) {\n\t\t\tthis.#bitSize += type.BIT_SIZE;\n\t\t}\n\n\t\treturn this as unknown as Merge<Id, Entries, EntryName, typeof type>;\n\t}\n}\n\ntype Merge<\n\tId extends number,\n\tEntries extends object,\n\tEntryName extends string,\n\tEntryType extends IType<any, number | null>\n> = EntryName extends keyof Entries ? never : Schema<Id, { [K in EntryName | keyof Entries]: K extends keyof Entries ? Entries[K] : EntryType }>;\n\nexport type KeyOfSchema<SchemaValue extends object> = SchemaValue extends Schema<infer _, infer Type> ? keyof Type & string : never;\nexport type ValueOfSchema<SchemaValue extends object> =\n\tSchemaValue extends Schema<infer _, infer Type> ? { [K in keyof Type]: Type[K] }[keyof Type] : never;\nexport type EntryOfSchema<SchemaValue extends object> =\n\tSchemaValue extends Schema<infer _, infer Type> ? { [K in keyof Type]: readonly [K, Type[K]] }[keyof Type] : never;\n\nexport type UnwrapSchemaType<Type extends object> = Type extends IType<infer ValueType, infer _BitSize, infer _InputType> ? ValueType : never;\nexport type UnwrapSchemaEntries<Entries extends object> = { [K in keyof Entries]: UnwrapSchemaType<Entries[K] & object> } & object;\nexport type UnwrapSchema<SchemaValue extends object> = SchemaValue extends Schema<infer _Id, infer Type> ? UnwrapSchemaEntries<Type> : never;\n\ntype OmitNever<T> = { [K in keyof T as T[K] extends never ? never : K]: T[K] };\nexport type SerializeValueType<Type extends object> = Type extends IType<infer _ValueType, infer _BitSize, infer InputType> ? InputType : never;\nexport type SerializeValueEntries<Entries extends object> = OmitNever<{ [K in keyof Entries]: SerializeValueType<Entries[K] & object> }>;\nexport type SerializeValue<SchemaValue extends object> = SchemaValue extends Schema<infer _Id, infer Type> ? SerializeValueEntries<Type> : never;\n","import type { DuplexBuffer } from '../buffer/DuplexBuffer';\nimport { UnalignedUint16Array } from '../buffer/UnalignedUint16Array';\nimport { Pointer } from '../shared/Pointer';\nimport { Schema, type SerializeValue, type UnwrapSchema } from './Schema';\n\nexport class SchemaStore<Entries extends object = object> {\n\t/**\n\t * The default maximum array length for schemas\n\t */\n\tpublic defaultMaximumArrayLength: number;\n\n\treadonly #schemas = new Map<number, Schema>();\n\n\t/**\n\t * Creates a new schema store\n\t *\n\t * @param defaultMaximumArrayLength The default maximum array length for schemas\n\t */\n\tpublic constructor(defaultMaximumArrayLength = 100) {\n\t\tthis.defaultMaximumArrayLength = defaultMaximumArrayLength;\n\t}\n\n\t/**\n\t * Adds a schema to the store\n\t *\n\t * @param schema The schema to add to the store\n\t * @returns The modified store\n\t *\n\t * @remarks\n\t *\n\t * An error will be thrown if a schema with the same id already exists in the store.\n\t */\n\tpublic add<const Id extends number, const SchemaType extends object>(schema: Schema<Id, SchemaType>): Merge<Entries, Id, typeof schema> {\n\t\tif (this.#schemas.has(schema.id)) {\n\t\t\tthrow new Error(`Schema with id ${schema.id} already exists`);\n\t\t}\n\n\t\tthis.#schemas.set(schema.id, schema as any);\n\t\treturn this as unknown as Merge<Entries, Id, typeof schema>;\n\t}\n\n\t/**\n\t * Gets a schema from the store\n\t *\n\t * @param id The id of the schema to get\n\t * @returns The schema with the given id\n\t *\n\t * @remarks\n\t *\n\t * An error will be thrown if a schema with the given id does not exist in the store.\n\t */\n\tpublic get<const Id extends KeyOfStore<this>>(id: Id): Entries[Id] {\n\t\tconst schema = this.#schemas.get(id) as Entries[Id];\n\t\tif (!schema) throw new Error(`Schema with id ${id} does not exist`);\n\t\treturn schema;\n\t}\n\n\t/**\n\t * Serializes a value using the schema with the given id\n\t *\n\t * @param id The id of the schema to use for serialization\n\t * @param value The value to serialize\n\t * @returns The serialized string\n\t */\n\tpublic serialize<const Id extends KeyOfStore<this>>(id: Id, value: SerializeValue<Entries[Id] & object>): string {\n\t\treturn this.serializeRaw(id, value).toString();\n\t}\n\n\t/**\n\t * Serializes a value using the schema with the given id\n\t *\n\t * @param id The id of the schema to use for serialization\n\t * @param value The value to serialize\n\t * @returns The serialized buffer\n\t */\n\tpublic serializeRaw<const Id extends KeyOfStore<this>>(id: Id, value: SerializeValue<Entries[Id] & object>): DuplexBuffer {\n\t\tconst schema = this.get(id) as Schema<Id, object>;\n\t\treturn schema.serializeRaw(value, this.defaultMaximumArrayLength);\n\t}\n\n\t/**\n\t * Deserializes a buffer\n\t *\n\t * @param buffer The buffer to deserialize\n\t * @returns The resolved value, including the id of the schema used for deserialization\n\t */\n\tpublic deserialize(buffer: string | DuplexBuffer): DeserializationResult<Entries> {\n\t\tbuffer = UnalignedUint16Array.from(buffer);\n\t\tconst pointer = new Pointer();\n\t\tconst id = buffer.readInt16(pointer) as KeyOfStore<this>;\n\t\tconst schema = this.get(id) as Schema<number, object>;\n\t\treturn { id, data: schema.deserialize(buffer, pointer) } as unknown as DeserializationResult<Entries>;\n\t}\n\n\t/**\n\t * Gets the serialized ID from a buffer\n\t *\n\t * @param buffer The buffer to read the ID from\n\t * @returns The deserialized ID\n\t *\n\t * @remarks\n\t *\n\t * If an empty value is passed, a {@linkcode RangeError} will be thrown.\n\t */\n\tpublic getIdentifier(buffer: string | DuplexBuffer): KeyOfStore<this> {\n\t\tif (buffer.length === 0) {\n\t\t\tthrow new RangeError('Expected a non-empty value');\n\t\t}\n\n\t\tif (typeof buffer === 'string') {\n\t\t\t// We only need to read the first character:\n\t\t\tbuffer = UnalignedUint16Array.from(buffer[0]);\n\t\t}\n\n\t\treturn buffer.at(0) as KeyOfStore<this>;\n\t}\n\n\t/**\n\t * Iterates over the stores's schema identifiers.\n\t *\n\t * @returns An iterator for the stores's schema identifiers\n\t */\n\tpublic keys(): IterableIterator<KeyOfStore<this>> {\n\t\treturn this.#schemas.keys() as IterableIterator<KeyOfStore<this>>;\n\t}\n\n\t/**\n\t * Iterates over the stores's schemas.\n\t *\n\t * @returns An iterator for the stores's schemas\n\t */\n\tpublic values(): IterableIterator<ValueOfStore<this>> {\n\t\treturn this.#schemas.values() as IterableIterator<ValueOfStore<this>>;\n\t}\n\n\t/**\n\t * Iterates over the stores's schema entries.\n\t *\n\t * @returns An iterator for the stores's schema entries\n\t */\n\tpublic entries(): IterableIterator<EntryOfStore<this>> {\n\t\treturn this.#schemas.entries() as IterableIterator<EntryOfStore<this>>;\n\t}\n\n\t/**\n\t * Iterates over the stores's schema entries.\n\t *\n\t * @returns An iterator for the stores's schema entries\n\t */\n\tpublic [Symbol.iterator](): IterableIterator<EntryOfStore<this>> {\n\t\treturn this.entries();\n\t}\n}\n\ntype Merge<Entries extends object, Id extends number, Type extends object> = Id extends keyof Entries\n\t? never\n\t: SchemaStore<{ [K in Id | keyof Entries]: K extends keyof Entries ? Entries[K] : Type }>;\n\nexport type KeyOfStore<SchemaStoreValue extends object> = SchemaStoreValue extends SchemaStore<infer Schemas> ? keyof Schemas & number : never;\nexport type ValueOfStore<SchemaStoreValue extends object> =\n\tSchemaStoreValue extends SchemaStore<infer Schemas> ? Schemas[keyof Schemas & number] : never;\nexport type EntryOfStore<SchemaStoreValue extends object> =\n\tSchemaStoreValue extends SchemaStore<infer Schemas> ? { [K in keyof Schemas]: readonly [K & number, Schemas[K]] }[keyof Schemas] : never;\n\nexport type DeserializationResult<SchemaStoreEntries extends object> = {\n\t[K in keyof SchemaStoreEntries]: { id: K; data: UnwrapSchema<SchemaStoreEntries[K] & object> };\n}[keyof SchemaStoreEntries];\n","export type TypedArray =\n\t| Int8Array\n\t| Uint8Array\n\t| Uint8ClampedArray\n\t| Int16Array\n\t| Uint16Array\n\t| Int32Array\n\t| Uint32Array\n\t| Float32Array\n\t| Float64Array\n\t| BigInt64Array\n\t| BigUint64Array;\n\n/**\n * Converts a {@link TypedArray} to a string.\n *\n * @param buffer The buffer to convert\n * @returns The generated UTF16 string\n */\nexport function toUTF16(buffer: TypedArray) {\n\tlet result = '';\n\tfor (const value of new Uint16Array(buffer.buffer)) {\n\t\tresult += String.fromCharCode(value);\n\t}\n\n\treturn result;\n}\n\n/**\n * Converts a string to a {@link Uint16Array}.\n *\n * @param buffer The string to convert\n * @returns The generated {@link Uint16Array}\n */\nexport function fromUTF16(buffer: string): Uint16Array {\n\tconst result = new Uint16Array(buffer.length);\n\tfor (let i = 0; i < buffer.length; i++) {\n\t\tresult[i] = buffer.charCodeAt(i);\n\t}\n\n\treturn result;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/lib/shared/codepoints.ts","../../src/lib/shared/_common.ts","../../src/lib/shared/Pointer.ts","../../src/lib/buffer/UnalignedUint16Array.ts","../../src/lib/types/Array.ts","../../src/lib/types/BigInt32.ts","../../src/lib/types/BigInt64.ts","../../src/lib/types/BigUint32.ts","../../src/lib/types/BigUint64.ts","../../src/lib/types/Bit.ts","../../src/lib/types/Boolean.ts","../../src/lib/types/Constant.ts","../../src/lib/types/FixedLengthArray.ts","../../src/lib/types/Float32.ts","../../src/lib/types/Float64.ts","../../src/lib/types/Int16.ts","../../src/lib/types/Int2.ts","../../src/lib/types/Int32.ts","../../src/lib/types/Int4.ts","../../src/lib/types/Int64.ts","../../src/lib/types/Int8.ts","../../src/lib/types/Nullable.ts","../../src/lib/types/Snowflake.ts","../../src/lib/types/String.ts","../../src/lib/types/Uint16.ts","../../src/lib/types/Uint2.ts","../../src/lib/types/Uint32.ts","../../src/lib/types/Uint4.ts","../../src/lib/types/Uint64.ts","../../src/lib/types/Uint8.ts","../../src/lib/types/index.ts","../../src/lib/schema/Schema.ts","../../src/lib/schema/SchemaStore.ts","../../src/lib/utilities.ts"],"names":["_buffer","_value"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAO,IAAM,eAAA,GAAkB;AAAA,EAC9B;AAAA,IACC,KAAA,EAAO,KAAA;AAAA,IACP,GAAA,EAAK,KAAA;AAAA,IACL,UAAA,EAAY,CAAA;AAAA,IACZ,QAAA,EAAU;AAAA,GACX;AAAA,EACA;AAAA,IACC,KAAA,EAAO,KAAA;AAAA,IACP,GAAA,EAAK,MAAA;AAAA,IACL,UAAA,EAAY,KAAA;AAAA,IACZ,QAAA,EAAU;AAAA,GACX;AAAA,EACA;AAAA,IACC,KAAA,EAAO,MAAA;AAAA,IACP,GAAA,EAAK,MAAA;AAAA,IACL,UAAA,EAAY,KAAA;AAAA,IACZ,QAAA,EAAU;AAAA;AAEZ;;;ACnBO,SAAS,YAAY,MAAA,EAA+C;AAE1E,EAAA,IAAI,CAAC,QAAA,CAAS,MAAM,CAAA,EAAG,OAAO,KAAA;AAE9B,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,EAAG,OAAO,IAAA;AAElC,EAAA,IAAI,CAAC,SAAA,CAAU,MAAM,CAAA,EAAG,OAAO,KAAA;AAE/B,EAAA,IAAI,CAAC,aAAA,CAAc,MAAA,CAAO,MAAM,GAAG,OAAO,KAAA;AAE1C,EAAA,OAAO,MAAA,CAAO,MAAA,KAAW,CAAA,IAAK,MAAA,CAAO,SAAS,CAAA,IAAK,MAAA;AACpD;AAXgB,MAAA,CAAA,WAAA,EAAA,aAAA,CAAA;AAahB,SAAS,SAAS,IAAA,EAA+B;AAChD,EAAA,OAAO,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,KAAS,IAAA;AAC7C;AAFS,MAAA,CAAA,QAAA,EAAA,UAAA,CAAA;AAIT,SAAS,UAAU,IAAA,EAA0C;AAC5D,EAAA,OAAO,QAAA,IAAY,IAAA,IAAQ,OAAO,IAAA,CAAK,MAAA,KAAW,QAAA;AACnD;AAFS,MAAA,CAAA,SAAA,EAAA,WAAA,CAAA;AAIF,SAAS,cAAc,MAAA,EAAgB;AAC7C,EAAA,OAAO,OAAO,aAAA,CAAc,MAAM,CAAA,IAAK,MAAA,IAAU,KAAK,MAAA,GAAS,UAAA;AAChE;AAFgB,MAAA,CAAA,aAAA,EAAA,eAAA,CAAA;;;ACrBhB,IAAA,MAAA;AAeO,IAAM,QAAA,GAAN,MAAM,QAAA,CAAQ;AAAA,EAAd,WAAA,GAAA;AACN,IAAA,YAAA,CAAA,IAAA,EAAA,MAAA,EAAS,CAAA,CAAA;AAAA,EAAA;AAAA,EAET,IAAW,KAAA,GAAQ;AAClB,IAAA,OAAO,YAAA,CAAA,IAAA,EAAK,MAAA,CAAA;AAAA,EACb;AAAA,EAEO,IAAI,KAAA,EAAe;AACzB,IAAA,MAAM,KAAA,GAAQ,mBAAK,MAAA,CAAA,GAAS,KAAA;AAC5B,IAAA,IAAI,CAAC,aAAA,CAAc,KAAK,CAAA,EAAG;AAC1B,MAAA,MAAM,IAAI,WAAW,CAAA,mDAAA,CAAqD,CAAA;AAAA,IAC3E;AAEA,IAAA,YAAA,CAAA,IAAA,EAAK,MAAA,EAAS,KAAA,CAAA;AACd,IAAA,OAAO,IAAA;AAAA,EACR;AAAA,EAEA,OAAc,KAAK,OAAA,EAAsB;AACxC,IAAA,IAAI,mBAAmB,QAAA,EAAS;AAC/B,MAAA,OAAO,OAAA;AAAA,IACR;AAEA,IAAA,MAAM,QAAA,GAAW,IAAI,QAAA,EAAQ;AAC7B,IAAA,QAAA,CAAS,GAAA,CAAI,MAAA,CAAO,OAAO,CAAC,CAAA;AAC5B,IAAA,OAAO,QAAA;AAAA,EACR;AACD,CAAA;AAzBC,MAAA,GAAA,IAAA,OAAA,EAAA;AADoB,MAAA,CAAA,QAAA,EAAA,SAAA,CAAA;AAAd,IAAM,OAAA,GAAN;;;ACXP,IAAM,cAAA,GAAiB,IAAI,UAAA,CAAW,CAAC,CAAA;AACvC,IAAM,eAAA,GAAkB,IAAI,WAAA,CAAY,cAAA,CAAe,MAAM,CAAA;AAC7D,IAAM,eAAA,GAAkB,IAAI,WAAA,CAAY,cAAA,CAAe,MAAM,CAAA;AAC7D,IAAM,eAAA,GAAkB,IAAI,cAAA,CAAe,cAAA,CAAe,MAAM,CAAA;AAEhE,IAAM,cAAA,GAAiB,IAAI,UAAA,CAAW,cAAA,CAAe,MAAM,CAAA;AAC3D,IAAM,cAAA,GAAiB,IAAI,aAAA,CAAc,cAAA,CAAe,MAAM,CAAA;AAE9D,IAAM,cAAA,GAAiB,IAAI,YAAA,CAAa,cAAA,CAAe,MAAM,CAAA;AAC7D,IAAM,eAAA,GAAkB,IAAI,YAAA,CAAa,cAAA,CAAe,MAAM,CAAA;AAb9D,IAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,+BAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,4BAAA,EAAA,oBAAA;AAeO,IAAM,qBAAA,GAAN,MAAM,qBAAA,CAA6C;AAAA,EAMlD,YAAY,SAAA,EAAmB;AANhC,IAAA,YAAA,CAAA,IAAA,EAAA,+BAAA,CAAA;AACN,IAAA,YAAA,CAAA,IAAA,EAAA,OAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,UAAA,EAAa,CAAA,CAAA;AACb,IAAA,YAAA,CAAA,IAAA,EAAA,UAAA,EAAa,CAAA,CAAA;AACb,IAAA,YAAA,CAAA,IAAA,EAAA,WAAA,EAAc,CAAA,CAAA;AAGb,IAAA,YAAA,CAAA,IAAA,EAAK,OAAA,EAAU,IAAI,WAAA,CAAY,SAAS,CAAA,CAAA;AAAA,EACzC;AAAA,EAEO,GAAG,KAAA,EAAmC;AAC5C,IAAA,OAAO,YAAA,CAAA,IAAA,EAAK,OAAA,CAAA,CAAQ,EAAA,CAAG,KAAK,CAAA;AAAA,EAC7B;AAAA,EAEA,IAAW,SAAA,GAAoB;AAC9B,IAAA,OAAO,mBAAK,OAAA,CAAA,CAAQ,MAAA;AAAA,EACrB;AAAA,EAEA,IAAW,YAAA,GAAuB;AACjC,IAAA,OAAO,YAAA,CAAA,IAAA,EAAK,SAAQ,MAAA,GAAS,EAAA;AAAA,EAC9B;AAAA,EAEA,IAAW,MAAA,GAAiB;AAC3B,IAAA,OAAO,YAAA,CAAA,IAAA,EAAK,WAAA,CAAA;AAAA,EACb;AAAA,EAEA,IAAW,SAAA,GAAoB;AAC9B,IAAA,OAAO,YAAA,CAAA,IAAA,EAAK,UAAA,CAAA;AAAA,EACb;AAAA,EAEO,SAAS,KAAA,EAAqB;AACpC,IAAA,eAAA,CAAA,IAAA,EAAK,8CAAL,IAAA,CAAA,IAAA,EAAe,KAAA,CAAA;AAAA,EAChB;AAAA,EAEO,UAAU,KAAA,EAAqB;AACrC,IAAA,IAAA,CAAK,QAAA,CAAS,QAAQ,CAAC,CAAA;AACvB,IAAA,IAAA,CAAK,QAAA,CAAS,SAAS,CAAC,CAAA;AAAA,EACzB;AAAA,EAEO,UAAU,KAAA,EAAqB;AACrC,IAAA,IAAA,CAAK,SAAA,CAAU,QAAQ,CAAI,CAAA;AAC3B,IAAA,IAAA,CAAK,SAAA,CAAU,SAAS,CAAC,CAAA;AAAA,EAC1B;AAAA,EAEO,UAAU,KAAA,EAAqB;AACrC,IAAA,IAAA,CAAK,SAAA,CAAU,QAAQ,EAAM,CAAA;AAC7B,IAAA,IAAA,CAAK,SAAA,CAAU,SAAS,CAAC,CAAA;AAAA,EAC1B;AAAA,EAEO,WAAW,KAAA,EAAqB;AACtC,IAAA,eAAA,CAAA,IAAA,EAAK,mDAAL,IAAA,CAAA,IAAA,EAAoB,KAAA,CAAA;AAAA,EACrB;AAAA,EAEO,WAAW,KAAA,EAAqB;AACtC,IAAA,eAAA,CAAA,IAAA,EAAK,mDAAL,IAAA,CAAA,IAAA,EAAoB,KAAA,CAAA;AACpB,IAAA,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,gBAAA,CAAA,CAAL,WAAoB,KAAA,IAAS,EAAA,CAAA;AAAA,EAC9B;AAAA,EAEO,WAAW,KAAA,EAAqB;AACtC,IAAA,IAAA,CAAK,aAAA,CAAc,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,EACjC;AAAA,EAEO,cAAc,KAAA,EAAqB;AACzC,IAAA,cAAA,CAAe,CAAC,CAAA,GAAI,KAAA;AACpB,IAAA,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,gBAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAoB,eAAA,CAAgB,CAAC,CAAA,CAAA;AACrC,IAAA,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,gBAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAoB,eAAA,CAAgB,CAAC,CAAA,CAAA;AAAA,EACtC;AAAA,EAEO,cAAc,KAAA,EAAqB;AACzC,IAAA,cAAA,CAAe,CAAC,CAAA,GAAI,KAAA;AACpB,IAAA,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,gBAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAoB,eAAA,CAAgB,CAAC,CAAA,CAAA;AACrC,IAAA,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,gBAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAoB,eAAA,CAAgB,CAAC,CAAA,CAAA;AACrC,IAAA,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,gBAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAoB,eAAA,CAAgB,CAAC,CAAA,CAAA;AACrC,IAAA,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,gBAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAoB,eAAA,CAAgB,CAAC,CAAA,CAAA;AAAA,EACtC;AAAA,EAEO,aAAa,KAAA,EAAqB;AACxC,IAAA,cAAA,CAAe,CAAC,CAAA,GAAI,KAAA;AACpB,IAAA,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,gBAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAoB,eAAA,CAAgB,CAAC,CAAA,CAAA;AACrC,IAAA,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,gBAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAoB,eAAA,CAAgB,CAAC,CAAA,CAAA;AAAA,EACtC;AAAA,EAEO,aAAa,KAAA,EAAqB;AACxC,IAAA,eAAA,CAAgB,CAAC,CAAA,GAAI,KAAA;AACrB,IAAA,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,gBAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAoB,eAAA,CAAgB,CAAC,CAAA,CAAA;AACrC,IAAA,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,gBAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAoB,eAAA,CAAgB,CAAC,CAAA,CAAA;AACrC,IAAA,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,gBAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAoB,eAAA,CAAgB,CAAC,CAAA,CAAA;AACrC,IAAA,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,gBAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAoB,eAAA,CAAgB,CAAC,CAAA,CAAA;AAAA,EACtC;AAAA,EAEO,QAAQ,MAAA,EAA4B;AAC1C,IAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA;AAC/B,IAAA,OAAO,eAAA,CAAA,IAAA,EAAK,6CAAL,IAAA,CAAA,IAAA,EAAc,GAAA,CAAA;AAAA,EACtB;AAAA,EAEO,SAAS,MAAA,EAA6B;AAI5C,IAAA,OAAQ,IAAA,CAAK,SAAA,CAAU,MAAM,CAAA,IAAK,EAAA,IAAO,EAAA;AAAA,EAC1C;AAAA,EAEO,UAAU,MAAA,EAA6B;AAC7C,IAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA;AAC/B,IAAA,OAAO,sBAAK,+BAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,OAAQ,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,UAAA,CAAA,CAAL,WAAc,GAAA,CAAA,IAAQ,CAAA;AAAA,EACpD;AAAA,EAEO,SAAS,MAAA,EAA6B;AAG5C,IAAA,OAAQ,IAAA,CAAK,SAAA,CAAU,MAAM,CAAA,IAAK,EAAA,IAAO,EAAA;AAAA,EAC1C;AAAA,EAEO,UAAU,MAAA,EAA6B;AAC7C,IAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA;AAC/B,IAAA,OAAO,sBAAK,+BAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,GAAA,CAAA,GAAQ,eAAA,CAAA,IAAA,EAAK,6CAAL,IAAA,CAAA,IAAA,EAAc,GAAA,CAAA,IAAQ,CAAA,GAAM,eAAA,CAAA,IAAA,EAAK,6CAAL,IAAA,CAAA,IAAA,EAAc,GAAA,CAAA,IAAQ,IAAM,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,UAAA,CAAA,CAAL,WAAc,GAAA,CAAA,IAAQ,CAAA;AAAA,EAC5G;AAAA,EAEO,SAAS,MAAA,EAA6B;AAG5C,IAAA,OAAQ,IAAA,CAAK,SAAA,CAAU,MAAM,CAAA,IAAK,EAAA,IAAO,EAAA;AAAA,EAC1C;AAAA,EAEO,UAAU,MAAA,EAA6B;AAC7C,IAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA;AAC/B,IAAA,OAAO,eAAA,CAAA,IAAA,EAAK,8CAAL,IAAA,CAAA,IAAA,EAAe,GAAA,CAAA;AAAA,EACvB;AAAA,EAEO,UAAU,MAAA,EAA6B;AAG7C,IAAA,OAAQ,IAAA,CAAK,UAAA,CAAW,MAAM,CAAA,IAAK,EAAA,IAAO,EAAA;AAAA,EAC3C;AAAA,EAEO,WAAW,MAAA,EAA6B;AAC9C,IAAA,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,eAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAmB,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA,CAAA;AACtC,IAAA,OAAO,gBAAgB,CAAC,CAAA;AAAA,EACzB;AAAA,EAEO,UAAU,MAAA,EAA6B;AAC7C,IAAA,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,eAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAmB,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA,CAAA;AACtC,IAAA,OAAO,eAAe,CAAC,CAAA;AAAA,EACxB;AAAA,EAEO,WAAW,MAAA,EAA6B;AAC9C,IAAA,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,eAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAmB,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA,CAAA;AACtC,IAAA,OAAO,gBAAgB,CAAC,CAAA;AAAA,EACzB;AAAA,EAEO,UAAU,MAAA,EAA6B;AAC7C,IAAA,OAAO,MAAA,CAAO,IAAA,CAAK,YAAA,CAAa,MAAM,CAAC,CAAA;AAAA,EACxC;AAAA,EAEO,WAAW,MAAA,EAAqB;AACtC,IAAA,OAAO,MAAA,CAAO,IAAA,CAAK,aAAA,CAAc,MAAM,CAAC,CAAA;AAAA,EACzC;AAAA,EAEO,aAAa,MAAA,EAA6B;AAChD,IAAA,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,eAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAmB,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA,CAAA;AACtC,IAAA,OAAO,MAAA,CAAO,cAAA,CAAe,CAAC,CAAC,CAAA;AAAA,EAChC;AAAA,EAEO,cAAc,MAAA,EAA6B;AACjD,IAAA,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,eAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAmB,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA,CAAA;AACtC,IAAA,OAAO,MAAA,CAAO,eAAA,CAAgB,CAAC,CAAC,CAAA;AAAA,EACjC;AAAA,EAEO,aAAa,MAAA,EAA6B;AAChD,IAAA,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,eAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAmB,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA,CAAA;AACtC,IAAA,OAAO,eAAe,CAAC,CAAA;AAAA,EACxB;AAAA,EAEO,cAAc,MAAA,EAA6B;AACjD,IAAA,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,eAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAmB,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA,CAAA;AACtC,IAAA,OAAO,gBAAgB,CAAC,CAAA;AAAA,EACzB;AAAA,EAEO,YAAY,MAAA,EAA6B;AAC/C,IAAA,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,eAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAmB,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA,CAAA;AACtC,IAAA,OAAO,eAAe,CAAC,CAAA;AAAA,EACxB;AAAA,EAEO,YAAY,MAAA,EAA6B;AAC/C,IAAA,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,eAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAmB,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA,CAAA;AACtC,IAAA,OAAO,gBAAgB,CAAC,CAAA;AAAA,EACzB;AAAA,EAEO,QAAA,GAAW;AACjB,IAAA,IAAI,MAAA,GAAS,EAAA;AAEb,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACrC,MAAA,MAAA,IAAU,MAAA,CAAO,cAAc,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,oBAAA,CAAA,CAAL,WAAwB,YAAA,CAAA,IAAA,EAAK,OAAA,CAAA,CAAQ,CAAC,CAAA,CAAE,CAAA;AAAA,IACxE;AAEA,IAAA,OAAO,MAAA;AAAA,EACR;AAAA,EAEO,OAAA,GAAuB;AAC7B,IAAA,OAAO,YAAA,CAAA,IAAA,EAAK,OAAA,CAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,KAAK,MAAM,CAAA;AAAA,EACzC;AAAA,EAoGA,OAAc,KAAK,KAAA,EAA4C;AA3ThE,IAAA,IAAA,EAAA;AA4TE,IAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AAEtC,IAAA,MAAM,UAAA,GAAa,MAAM,IAAA,CAAK,KAAA,EAAO,CAAC,IAAA,KAAS,IAAA,CAAK,WAAA,CAAY,CAAC,CAAE,CAAA;AACnE,IAAA,MAAM,MAAA,GAAS,IAAI,qBAAA,CAAqB,KAAA,CAAM,MAAM,CAAA;AAEpD,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,CAAW,QAAQ,CAAA,EAAA,EAAK;AAC3C,MAAA,MAAM,KAAA,GAAQ,eAAA,CAAA,EAAA,GAAA,qBAAA,EAAqB,4BAAA,EAAA,oBAAA,CAAA,CAArB,IAAA,CAAA,EAAA,EAAwC,WAAW,CAAC,CAAA,CAAA;AAClE,MAAA,YAAA,CAAA,MAAA,EAAO,OAAA,CAAA,CAAQ,CAAC,CAAA,GAAI,KAAA;AAAA,IACrB;AAEA,IAAA,YAAA,CAAA,MAAA,EAAO,UAAA,EAAa,MAAM,MAAA,IAAU,CAAA,CAAA;AACpC,IAAA,OAAO,MAAA;AAAA,EACR;AAWD,CAAA;AAnUC,OAAA,GAAA,IAAA,OAAA,EAAA;AACA,UAAA,GAAA,IAAA,OAAA,EAAA;AACA,UAAA,GAAA,IAAA,OAAA,EAAA;AACA,WAAA,GAAA,IAAA,OAAA,EAAA;AAJM,+BAAA,GAAA,IAAA,OAAA,EAAA;AA0MN,oBAAA,mCAAmB,KAAA,EAAuB;AACzC,EAAA,KAAA,MAAW,SAAS,eAAA,EAAiB;AACpC,IAAA,IAAI,KAAA,IAAS,KAAA,CAAM,UAAA,IAAc,KAAA,IAAS,MAAM,QAAA,EAAU;AACzD,MAAA,OAAO,KAAA,CAAM,KAAA,IAAS,KAAA,GAAQ,KAAA,CAAM,UAAA,CAAA;AAAA,IACrC;AAAA,EACD;AAEA,EAAA,MAAM,IAAI,UAAA,CAAW,CAAA,MAAA,EAAS,KAAK,CAAA,gBAAA,CAAkB,CAAA;AACtD,CAAA,EARkB,oBAAA,CAAA;AAUlB,UAAA,mCAAS,OAAA,EAAkB;AAC1B,EAAA,MAAM,YAAY,OAAA,CAAQ,KAAA;AAC1B,EAAA,MAAM,QAAQ,SAAA,IAAa,CAAA;AAC3B,EAAA,MAAM,WAAW,SAAA,GAAY,EAAA;AAC7B,EAAA,OAAA,CAAQ,IAAI,CAAC,CAAA;AACb,EAAA,OAAQ,YAAA,CAAA,IAAA,EAAK,OAAA,CAAA,CAAQ,KAAK,CAAA,IAAK,QAAA,GAAY,CAAA;AAC5C,CAAA,EANQ,UAAA,CAAA;AAQR,WAAA,mCAAU,GAAA,EAAc;AACvB,EAAA,OACC,sBAAK,+BAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,GAAA,CAAA,GACb,eAAA,CAAA,IAAA,EAAK,6CAAL,IAAA,CAAA,IAAA,EAAc,GAAA,CAAA,IAAQ,CAAA,GACtB,eAAA,CAAA,IAAA,EAAK,6CAAL,IAAA,CAAA,IAAA,EAAc,GAAA,CAAA,IAAQ,CAAA,GACtB,eAAA,CAAA,IAAA,EAAK,6CAAL,IAAA,CAAA,IAAA,EAAc,GAAA,CAAA,IAAQ,CAAA,GACtB,eAAA,CAAA,IAAA,EAAK,6CAAL,IAAA,CAAA,IAAA,EAAc,GAAA,CAAA,IAAQ,CAAA,GACtB,eAAA,CAAA,IAAA,EAAK,6CAAL,IAAA,CAAA,IAAA,EAAc,GAAA,CAAA,IAAQ,CAAA,GACtB,eAAA,CAAA,IAAA,EAAK,6CAAL,IAAA,CAAA,IAAA,EAAc,GAAA,CAAA,IAAQ,IACtB,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,UAAA,CAAA,CAAL,WAAc,GAAA,CAAA,IAAQ,CAAA;AAEzB,CAAA,EAXS,WAAA,CAAA;AAaT,eAAA,mCAAc,GAAA,EAAoB;AACjC,EAAA,cAAA,CAAe,CAAC,CAAA,GAAI,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,WAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAe,GAAA,CAAA;AACnC,EAAA,cAAA,CAAe,CAAC,CAAA,GAAI,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,WAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAe,GAAA,CAAA;AACpC,CAAA,EAHa,eAAA,CAAA;AAKb,eAAA,mCAAc,GAAA,EAAoB;AACjC,EAAA,cAAA,CAAe,CAAC,CAAA,GAAI,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,WAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAe,GAAA,CAAA;AACnC,EAAA,cAAA,CAAe,CAAC,CAAA,GAAI,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,WAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAe,GAAA,CAAA;AACnC,EAAA,cAAA,CAAe,CAAC,CAAA,GAAI,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,WAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAe,GAAA,CAAA;AACnC,EAAA,cAAA,CAAe,CAAC,CAAA,GAAI,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,WAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAe,GAAA,CAAA;AACpC,CAAA,EALa,eAAA,CAAA;AAOb,eAAA,mCAAc,GAAA,EAAoB;AACjC,EAAA,cAAA,CAAe,CAAC,CAAA,GAAI,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,WAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAe,GAAA,CAAA;AACnC,EAAA,cAAA,CAAe,CAAC,CAAA,GAAI,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,WAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAe,GAAA,CAAA;AACnC,EAAA,cAAA,CAAe,CAAC,CAAA,GAAI,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,WAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAe,GAAA,CAAA;AACnC,EAAA,cAAA,CAAe,CAAC,CAAA,GAAI,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,WAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAe,GAAA,CAAA;AACnC,EAAA,cAAA,CAAe,CAAC,CAAA,GAAI,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,WAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAe,GAAA,CAAA;AACnC,EAAA,cAAA,CAAe,CAAC,CAAA,GAAI,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,WAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAe,GAAA,CAAA;AACnC,EAAA,cAAA,CAAe,CAAC,CAAA,GAAI,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,WAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAe,GAAA,CAAA;AACnC,EAAA,cAAA,CAAe,CAAC,CAAA,GAAI,eAAA,CAAA,IAAA,EAAK,+BAAA,EAAA,WAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAe,GAAA,CAAA;AACpC,CAAA,EATa,eAAA,CAAA;AAWb,WAAA,mCAAU,KAAA,EAAe;AACxB,EAAA,IAAI,YAAA,CAAA,IAAA,EAAK,UAAA,CAAA,KAAe,IAAA,CAAK,SAAA,EAAW;AACvC,IAAA,MAAM,IAAI,WAAW,CAAA,kBAAA,CAAoB,CAAA;AAAA,EAC1C;AAEA,EAAA,IAAI,KAAA,EAAO;AACV,IAAA,MAAM,QAAQ,YAAA,CAAA,IAAA,EAAK,UAAA,CAAA;AACnB,IAAA,MAAM,QAAA,GAAW,KAAK,SAAA,GAAY,EAAA;AAClC,IAAA,YAAA,CAAA,IAAA,EAAK,OAAA,CAAA,CAAQ,KAAK,CAAA,IAAK,CAAA,IAAK,QAAA;AAAA,EAC7B;AAEA,EAAA,IAAA,CAAK,YAAA,CAAA,IAAA,EAAK,UAAA,CAAA,GAAa,EAAA,MAAS,CAAA,yBAAQ,WAAA,CAAA,CAAL,CAAA,EAAA;AACnC,EAAA,gBAAA,CAAA,IAAA,EAAK,UAAA,CAAA,CAAL,CAAA,EAAA;AACA,EAAA,IAAA,CAAK,YAAA,CAAA,IAAA,EAAK,UAAA,CAAA,GAAa,EAAA,MAAS,CAAA,yBAAQ,UAAA,CAAA,CAAL,CAAA,EAAA;AACpC,CAAA,EAdS,WAAA,CAAA;AAgBT,gBAAA,mCAAe,KAAA,EAAe;AAC7B,EAAA,MAAM,YAAY,YAAA,CAAA,IAAA,EAAK,UAAA,CAAA;AACvB,EAAA,MAAM,QAAA,GAAW,KAAK,SAAA,GAAY,EAAA;AASlC,EAAA,IAAI,aAAa,QAAA,KAAa,CAAA,GAAI,CAAA,GAAI,CAAA,CAAA,KAAO,KAAK,SAAA,EAAW;AAC5D,IAAA,MAAM,IAAI,WAAW,CAAA,kBAAA,CAAoB,CAAA;AAAA,EAC1C;AAEA,EAAA,IAAI,aAAa,CAAA,EAAG;AACnB,IAAA,YAAA,CAAA,IAAA,EAAK,OAAA,CAAA,CAAQ,SAAS,CAAA,GAAI,KAAA;AAAA,EAC3B,CAAA,MAAO;AACN,IAAA,KAAA,IAAS,KAAA;AACT,IAAA,YAAA,CAAA,IAAA,EAAK,OAAA,CAAA,CAAQ,SAAS,CAAA,IAAK,KAAA,IAAS,QAAA;AACpC,IAAA,YAAA,CAAA,IAAA,EAAK,OAAA,CAAA,CAAQ,SAAA,GAAY,CAAC,CAAA,GAAI,SAAU,EAAA,GAAK,QAAA;AAAA,EAC9C;AAEA,EAAA,YAAA,CAAA,IAAA,EAAK,UAAA,EAAL,mBAAK,UAAA,CAAA,GAAc,EAAA,CAAA;AACnB,EAAA,gBAAA,CAAA,IAAA,EAAK,UAAA,CAAA,CAAL,CAAA,EAAA;AACA,EAAA,gBAAA,CAAA,IAAA,EAAK,WAAA,CAAA,CAAL,CAAA,EAAA;AACD,CAAA,EA1Bc,gBAAA,CAAA;AAhRR,4BAAA,GAAA,IAAA,OAAA,EAAA;AA2TC,oBAAA,mCAAmB,SAAA,EAA2B;AACpD,EAAA,KAAA,MAAW,SAAS,eAAA,EAAiB;AACpC,IAAA,IAAI,SAAA,IAAa,KAAA,CAAM,KAAA,IAAS,SAAA,IAAa,MAAM,GAAA,EAAK;AACvD,MAAA,OAAO,KAAA,CAAM,UAAA,IAAc,SAAA,GAAY,KAAA,CAAM,KAAA,CAAA;AAAA,IAC9C;AAAA,EACD;AAEA,EAAA,MAAM,IAAI,UAAA,CAAW,CAAA,UAAA,EAAa,SAAS,CAAA,gBAAA,CAAkB,CAAA;AAC9D,CAAA,EARyB,oBAAA,CAAA;AA3TnB,YAAA,CAAM,qBAAA,EAAN,4BAAA,CAAA;AAAmD,MAAA,CAAA,qBAAA,EAAA,sBAAA,CAAA;AAAnD,IAAM,oBAAA,GAAN;;;ACZA,SAAS,UAAyD,IAAA,EAAgE;AACxI,EAAA,OAAO;AAAA,IACN,SAAA,CAAU,QAAQ,MAAA,EAA8B;AAC/C,MAAA,IAAI,CAAC,WAAA,CAAY,MAAM,CAAA,EAAG;AACzB,QAAA,MAAM,IAAI,SAAA,CAAU,CAAA,uBAAA,EAA0B,MAAM,CAAA,CAAE,CAAA;AAAA,MACvD;AAEA,MAAA,MAAA,CAAO,UAAA,CAAW,OAAO,MAAM,CAAA;AAC/B,MAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC3B,QAAA,IAAA,CAAK,SAAA,CAAU,QAAQ,KAAK,CAAA;AAAA,MAC7B;AAAA,IACD,CAAA;AAAA,IACA,WAAA,CAAY,QAAQ,OAAA,EAAS;AAC5B,MAAA,MAAM,MAAA,GAAS,MAAA,CAAO,UAAA,CAAW,OAAO,CAAA;AACxC,MAAA,MAAM,QAAQ,EAAC;AACf,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,EAAQ,CAAA,EAAA,EAAK;AAChC,QAAA,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,WAAA,CAAY,MAAA,EAAQ,OAAO,CAAC,CAAA;AAAA,MAC7C;AACA,MAAA,OAAO,KAAA;AAAA,IACR,CAAA;AAAA,IACA,QAAA,EAAU;AAAA,GACX;AACD;AAtBgB,MAAA,CAAA,SAAA,EAAA,WAAA,CAAA;;;ACDT,IAAM,YAAA,GAAkC;AAAA,EAC9C,SAAA,CAAU,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAA,CAAO,cAAc,KAAK,CAAA;AAAA,EAC3B,CAAA;AAAA,EACA,WAAA,CAAY,QAAQ,OAAA,EAAS;AAC5B,IAAA,OAAO,MAAA,CAAO,aAAa,OAAO,CAAA;AAAA,EACnC,CAAA;AAAA,EACA,QAAA,EAAU;AACX;;;ACRO,IAAM,YAAA,GAAkC;AAAA,EAC9C,SAAA,CAAU,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAA,CAAO,cAAc,KAAK,CAAA;AAAA,EAC3B,CAAA;AAAA,EACA,WAAA,CAAY,QAAQ,OAAA,EAAS;AAC5B,IAAA,OAAO,MAAA,CAAO,aAAa,OAAO,CAAA;AAAA,EACnC,CAAA;AAAA,EACA,QAAA,EAAU;AACX;;;ACRO,IAAM,aAAA,GAAmC;AAAA,EAC/C,SAAA,CAAU,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAA,CAAO,cAAc,KAAK,CAAA;AAAA,EAC3B,CAAA;AAAA,EACA,WAAA,CAAY,QAAQ,OAAA,EAAS;AAC5B,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACpC,CAAA;AAAA,EACA,QAAA,EAAU;AACX;;;ACRO,IAAM,aAAA,GAAmC;AAAA,EAC/C,SAAA,CAAU,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAA,CAAO,cAAc,KAAK,CAAA;AAAA,EAC3B,CAAA;AAAA,EACA,WAAA,CAAY,QAAQ,OAAA,EAAS;AAC5B,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACpC,CAAA;AAAA,EACA,QAAA,EAAU;AACX;;;ACRO,IAAM,OAAA,GAAmC;AAAA,EAC/C,SAAA,CAAU,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAA,CAAO,QAAA,CAAS,QAAQ,CAAG,CAAA;AAAA,EAC5B,CAAA;AAAA,EACA,WAAA,CAAY,QAAQ,OAAA,EAAS;AAC5B,IAAA,OAAO,MAAA,CAAO,QAAQ,OAAO,CAAA;AAAA,EAC9B,CAAA;AAAA,EACA,QAAA,EAAU;AACX;;;ACRO,IAAM,WAAA,GAAiC;AAAA,EAC7C,SAAA,CAAU,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,EAC9B,CAAA;AAAA,EACA,WAAA,CAAY,QAAQ,OAAA,EAAS;AAC5B,IAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,KAAM,CAAA;AAAA,EACpC,CAAA;AAAA,EACA,QAAA,EAAU;AACX;;;ACRO,SAAS,aAA8B,aAAA,EAAsD;AACnG,EAAA,OAAO;AAAA,IACN,SAAA,CAAUA,UAASC,OAAAA,EAAQ;AAAA,IAAC,CAAA;AAAA,IAC5B,WAAA,CAAYD,UAAS,QAAA,EAAU;AAC9B,MAAA,OAAO,aAAA;AAAA,IACR,CAAA;AAAA,IACA,QAAA,EAAU;AAAA,GACX;AACD;AARgB,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;;;ACCT,SAAS,oBAAA,CACf,MACA,MAAA,EACgE;AAChE,EAAA,OAAO;AAAA,IACN,SAAA,CAAU,QAAQ,MAAA,EAAQ;AACzB,MAAA,IAAI,CAAC,WAAA,CAAY,MAAM,CAAA,IAAK,MAAA,CAAO,WAAW,MAAA,EAAQ;AACrD,QAAA,MAAM,IAAI,SAAA,CAAU,CAAA,yBAAA,EAA4B,MAAM,CAAA,MAAA,EAAS,MAAA,CAAO,MAAM,CAAA,CAAE,CAAA;AAAA,MAC/E;AAEA,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,EAAQ,CAAA,EAAA,EAAK;AAChC,QAAA,IAAA,CAAK,SAAA,CAAU,MAAA,EAAQ,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,MACjC;AAAA,IACD,CAAA;AAAA,IACA,WAAA,CAAY,QAAQ,OAAA,EAAS;AAC5B,MAAA,MAAM,QAAQ,EAAC;AACf,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,EAAQ,CAAA,EAAA,EAAK;AAChC,QAAA,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,WAAA,CAAY,MAAA,EAAQ,OAAO,CAAC,CAAA;AAAA,MAC7C;AACA,MAAA,OAAO,KAAA;AAAA,IACR,CAAA;AAAA,IACA,UAAW,OAAO,IAAA,CAAK,aAAa,QAAA,GAAW,IAAA,CAAK,WAAW,MAAA,GAAS;AAAA,GACzE;AACD;AAvBgB,MAAA,CAAA,oBAAA,EAAA,sBAAA,CAAA;;;ACDT,IAAM,WAAA,GAAiC;AAAA,EAC7C,SAAA,CAAU,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAA,CAAO,aAAa,KAAK,CAAA;AAAA,EAC1B,CAAA;AAAA,EACA,WAAA,CAAY,QAAQ,OAAA,EAAS;AAC5B,IAAA,OAAO,MAAA,CAAO,YAAY,OAAO,CAAA;AAAA,EAClC,CAAA;AAAA,EACA,QAAA,EAAU;AACX;;;ACRO,IAAM,WAAA,GAAiC;AAAA,EAC7C,SAAA,CAAU,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAA,CAAO,aAAa,KAAK,CAAA;AAAA,EAC1B,CAAA;AAAA,EACA,WAAA,CAAY,QAAQ,OAAA,EAAS;AAC5B,IAAA,OAAO,MAAA,CAAO,YAAY,OAAO,CAAA;AAAA,EAClC,CAAA;AAAA,EACA,QAAA,EAAU;AACX;;;ACRO,IAAM,SAAA,GAA+B;AAAA,EAC3C,SAAA,CAAU,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,EACxB,CAAA;AAAA,EACA,WAAA,CAAY,QAAQ,OAAA,EAAS;AAC5B,IAAA,OAAO,MAAA,CAAO,UAAU,OAAO,CAAA;AAAA,EAChC,CAAA;AAAA,EACA,QAAA,EAAU;AACX;;;ACRO,IAAM,QAAA,GAA6B;AAAA,EACzC,SAAA,CAAU,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAA,CAAO,UAAU,KAAK,CAAA;AAAA,EACvB,CAAA;AAAA,EACA,WAAA,CAAY,QAAQ,OAAA,EAAS;AAC5B,IAAA,OAAO,MAAA,CAAO,SAAS,OAAO,CAAA;AAAA,EAC/B,CAAA;AAAA,EACA,QAAA,EAAU;AACX;;;ACRO,IAAM,SAAA,GAA+B;AAAA,EAC3C,SAAA,CAAU,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,EACxB,CAAA;AAAA,EACA,WAAA,CAAY,QAAQ,OAAA,EAAS;AAC5B,IAAA,OAAO,MAAA,CAAO,UAAU,OAAO,CAAA;AAAA,EAChC,CAAA;AAAA,EACA,QAAA,EAAU;AACX;;;ACRO,IAAM,QAAA,GAA6B;AAAA,EACzC,SAAA,CAAU,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAA,CAAO,UAAU,KAAK,CAAA;AAAA,EACvB,CAAA;AAAA,EACA,WAAA,CAAY,QAAQ,OAAA,EAAS;AAC5B,IAAA,OAAO,MAAA,CAAO,SAAS,OAAO,CAAA;AAAA,EAC/B,CAAA;AAAA,EACA,QAAA,EAAU;AACX;;;ACRO,IAAM,SAAA,GAA+B;AAAA,EAC3C,SAAA,CAAU,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,EACxB,CAAA;AAAA,EACA,WAAA,CAAY,QAAQ,OAAA,EAAS;AAC5B,IAAA,OAAO,MAAA,CAAO,UAAU,OAAO,CAAA;AAAA,EAChC,CAAA;AAAA,EACA,QAAA,EAAU;AACX;;;ACRO,IAAM,QAAA,GAA6B;AAAA,EACzC,SAAA,CAAU,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAA,CAAO,UAAU,KAAK,CAAA;AAAA,EACvB,CAAA;AAAA,EACA,WAAA,CAAY,QAAQ,OAAA,EAAS;AAC5B,IAAA,OAAO,MAAA,CAAO,SAAS,OAAO,CAAA;AAAA,EAC/B,CAAA;AAAA,EACA,QAAA,EAAU;AACX;;;ACRO,SAAS,aACf,IAAA,EAC8D;AAC9D,EAAA,OAAO;AAAA,IACN,SAAA,CAAU,QAAQ,KAAA,EAAO;AACxB,MAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,EAAW;AAC1C,QAAA,MAAA,CAAO,SAAS,CAAC,CAAA;AAAA,MAClB,CAAA,MAAO;AACN,QAAA,MAAA,CAAO,SAAS,CAAC,CAAA;AACjB,QAAA,IAAA,CAAK,SAAA,CAAU,QAAQ,KAAK,CAAA;AAAA,MAC7B;AAAA,IACD,CAAA;AAAA,IACA,WAAA,CAAY,QAAQ,OAAA,EAAS;AAC5B,MAAA,OAAO,MAAA,CAAO,QAAQ,OAAO,CAAA,GAAI,KAAK,WAAA,CAAY,MAAA,EAAQ,OAAO,CAAA,GAAI,IAAA;AAAA,IACtE,CAAA;AAAA,IACA,QAAA,EAAU;AAAA,GACX;AACD;AAjBgB,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;;;ACAT,IAAM,aAAA,GAAoD;AAAA,EAChE,SAAA,CAAU,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAA,CAAO,aAAA,CAAc,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,EACnC,CAAA;AAAA,EACA,WAAA,CAAY,QAAQ,MAAA,EAAQ;AAC3B,IAAA,OAAO,MAAA,CAAO,cAAc,MAAM,CAAA;AAAA,EACnC,CAAA;AAAA,EACA,QAAA,EAAU;AACX;;;ACRA,IAAM,OAAA,GAAU,IAAI,WAAA,EAAY;AAChC,IAAM,OAAA,GAAU,IAAI,WAAA,EAAY;AACzB,IAAM,UAAA,GAAkC;AAAA,EAC9C,SAAA,CAAU,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,MAAA,CAAO,KAAK,CAAA;AACpC,IAAA,MAAA,CAAO,UAAA,CAAW,QAAQ,MAAM,CAAA;AAChC,IAAA,KAAA,MAAW,QAAQ,OAAA,EAAS;AAC3B,MAAA,MAAA,CAAO,UAAU,IAAI,CAAA;AAAA,IACtB;AAAA,EACD,CAAA;AAAA,EACA,WAAA,CAAY,QAAQ,OAAA,EAAS;AAC5B,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,SAAA,CAAU,OAAO,CAAA;AACvC,IAAA,MAAM,KAAA,GAAQ,IAAI,UAAA,CAAW,MAAM,CAAA;AACnC,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,EAAQ,CAAA,EAAA,EAAK;AAChC,MAAA,KAAA,CAAM,CAAC,CAAA,GAAI,MAAA,CAAO,QAAA,CAAS,OAAO,CAAA;AAAA,IACnC;AACA,IAAA,OAAO,OAAA,CAAQ,OAAO,KAAK,CAAA;AAAA,EAC5B,CAAA;AAAA,EACA,QAAA,EAAU;AACX;;;ACnBO,IAAM,UAAA,GAAgC;AAAA,EAC5C,SAAA,CAAU,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,EACxB,CAAA;AAAA,EACA,WAAA,CAAY,QAAQ,OAAA,EAAS;AAC5B,IAAA,OAAO,MAAA,CAAO,WAAW,OAAO,CAAA;AAAA,EACjC,CAAA;AAAA,EACA,QAAA,EAAU;AACX;;;ACRO,IAAM,SAAA,GAA8B;AAAA,EAC1C,SAAA,CAAU,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAA,CAAO,UAAU,KAAK,CAAA;AAAA,EACvB,CAAA;AAAA,EACA,WAAA,CAAY,QAAQ,OAAA,EAAS;AAC5B,IAAA,OAAO,MAAA,CAAO,UAAU,OAAO,CAAA;AAAA,EAChC,CAAA;AAAA,EACA,QAAA,EAAU;AACX;;;ACRO,IAAM,UAAA,GAAgC;AAAA,EAC5C,SAAA,CAAU,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,EACxB,CAAA;AAAA,EACA,WAAA,CAAY,QAAQ,OAAA,EAAS;AAC5B,IAAA,OAAO,MAAA,CAAO,WAAW,OAAO,CAAA;AAAA,EACjC,CAAA;AAAA,EACA,QAAA,EAAU;AACX;;;ACRO,IAAM,SAAA,GAA8B;AAAA,EAC1C,SAAA,CAAU,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAA,CAAO,UAAU,KAAK,CAAA;AAAA,EACvB,CAAA;AAAA,EACA,WAAA,CAAY,QAAQ,OAAA,EAAS;AAC5B,IAAA,OAAO,MAAA,CAAO,UAAU,OAAO,CAAA;AAAA,EAChC,CAAA;AAAA,EACA,QAAA,EAAU;AACX;;;ACRO,IAAM,UAAA,GAAgC;AAAA,EAC5C,SAAA,CAAU,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,EACxB,CAAA;AAAA,EACA,WAAA,CAAY,QAAQ,OAAA,EAAS;AAC5B,IAAA,OAAO,MAAA,CAAO,WAAW,OAAO,CAAA;AAAA,EACjC,CAAA;AAAA,EACA,QAAA,EAAU;AACX;;;ACRO,IAAM,SAAA,GAA8B;AAAA,EAC1C,SAAA,CAAU,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAA,CAAO,UAAU,KAAK,CAAA;AAAA,EACvB,CAAA;AAAA,EACA,WAAA,CAAY,QAAQ,OAAA,EAAS;AAC5B,IAAA,OAAO,MAAA,CAAO,UAAU,OAAO,CAAA;AAAA,EAChC,CAAA;AAAA,EACA,QAAA,EAAU;AACX;;;ACkBO,IAAM,CAAA,GAAI;AAAA,EAChB,KAAA,EAAO,SAAA;AAAA,EACP,QAAA,EAAU,YAAA;AAAA,EACV,QAAA,EAAU,YAAA;AAAA,EACV,SAAA,EAAW,aAAA;AAAA,EACX,SAAA,EAAW,aAAA;AAAA,EACX,GAAA,EAAK,OAAA;AAAA,EACL,OAAA,EAAS,WAAA;AAAA,EACT,QAAA,EAAU,YAAA;AAAA,EACV,gBAAA,EAAkB,oBAAA;AAAA,EAClB,OAAA,EAAS,WAAA;AAAA,EACT,OAAA,EAAS,WAAA;AAAA,EACT,KAAA,EAAO,SAAA;AAAA,EACP,IAAA,EAAM,QAAA;AAAA,EACN,KAAA,EAAO,SAAA;AAAA,EACP,IAAA,EAAM,QAAA;AAAA,EACN,KAAA,EAAO,SAAA;AAAA,EACP,IAAA,EAAM,QAAA;AAAA,EACN,QAAA,EAAU,YAAA;AAAA,EACV,SAAA,EAAW,aAAA;AAAA,EACX,MAAA,EAAQ,UAAA;AAAA,EACR,MAAA,EAAQ,UAAA;AAAA,EACR,KAAA,EAAO,SAAA;AAAA,EACP,MAAA,EAAQ,UAAA;AAAA,EACR,KAAA,EAAO,SAAA;AAAA,EACP,MAAA,EAAQ,UAAA;AAAA,EACR,KAAA,EAAO;AACR;;;ACvDA,IAAA,GAAA,EAAA,MAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,UAAA;AAKO,IAAM,OAAA,GAAN,MAAM,OAAA,CAAoE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUzE,YAAY,EAAA,EAAQ;AAVrB,IAAA,YAAA,CAAA,IAAA,EAAA,iBAAA,CAAA;AACN,IAAA,YAAA,CAAA,IAAA,EAAS,GAAA,CAAA;AACT,IAAA,YAAA,CAAA,IAAA,EAAS,MAAA,sBAAa,GAAA,EAAuC,CAAA;AAC7D,IAAA,YAAA,CAAA,IAAA,EAAA,QAAA,EAA0B,CAAA,CAAA;AAQzB,IAAA,YAAA,CAAA,IAAA,EAAK,GAAA,EAAM,EAAA,CAAA;AAAA,EACZ;AAAA;AAAA;AAAA;AAAA,EAKA,IAAW,EAAA,GAAS;AACnB,IAAA,OAAO,YAAA,CAAA,IAAA,EAAK,GAAA,CAAA;AAAA,EACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,IAAW,OAAA,GAAyB;AACnC,IAAA,OAAO,YAAA,CAAA,IAAA,EAAK,QAAA,CAAA;AAAA,EACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,IAAW,YAAA,GAA8B;AACxC,IAAA,OAAO,YAAA,CAAA,IAAA,EAAK,QAAA,CAAA,KAAa,IAAA,GAAO,IAAA,GAAO,mBAAK,QAAA,CAAA,GAAW,EAAA;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,IAA+C,IAAA,EAA2B;AAChF,IAAA,MAAM,IAAA,GAAO,YAAA,CAAA,IAAA,EAAK,MAAA,CAAA,CAAO,GAAA,CAAI,IAAI,CAAA;AACjC,IAAA,IAAI,CAAC,IAAA,EAAM,MAAM,IAAI,KAAA,CAAM,kBAAkB,YAAA,CAAA,IAAA,EAAK,GAAA,CAAG,CAAA,qCAAA,EAAwC,IAAI,CAAA,CAAA,CAAG,CAAA;AACpG,IAAA,OAAO,IAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWO,SAAA,CAAU,KAAA,EAAiD,yBAAA,GAA4B,GAAA,EAAa;AAC1G,IAAA,OAAO,IAAA,CAAK,YAAA,CAAa,KAAA,EAAO,yBAAyB,EAAE,QAAA,EAAS;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASO,YAAA,CAAa,KAAA,EAAiD,yBAAA,GAA4B,GAAA,EAAmB;AACnH,IAAA,MAAM,MAAA,GAAS,IAAI,oBAAA,CAAqB,IAAA,CAAK,gBAAgB,yBAAyB,CAAA;AACtF,IAAA,IAAA,CAAK,aAAA,CAAc,QAAQ,KAAK,CAAA;AAChC,IAAA,OAAO,MAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaO,aAAA,CAAc,QAAsB,KAAA,EAAuD;AACjG,IAAA,MAAA,CAAO,UAAA,CAAW,mBAAK,GAAA,CAAG,CAAA;AAC1B,IAAA,KAAA,MAAW,CAAC,IAAA,EAAM,IAAI,CAAA,IAAK,IAAA,EAAM;AAChC,MAAC,IAAA,CAAmC,SAAA,CAAU,MAAA,EAAS,KAAA,CAAc,IAAI,CAAC,CAAA;AAAA,IAC3E;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcO,WAAA,CAAY,QAA+B,OAAA,EAAoD;AACrG,IAAA,MAAA,GAAS,oBAAA,CAAqB,KAAK,MAAM,CAAA;AACzC,IAAA,OAAA,GAAU,OAAA,CAAQ,KAAK,OAAO,CAAA;AAC9B,IAAA,MAAM,MAAA,mBAAS,MAAA,CAAO,MAAA,CAAO,IAAI,CAAA;AACjC,IAAA,KAAA,MAAW,CAAC,IAAA,EAAM,IAAI,CAAA,IAAK,IAAA,EAAM;AAEhC,MAAA,MAAA,CAAO,IAAI,CAAA,GAAI,IAAA,CAAK,WAAA,CAAY,QAAQ,OAAO,CAAA;AAAA,IAChD;AACA,IAAA,OAAO,MAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWO,KAAA,CACN,MACA,IAAA,EACC;AACD,IAAA,OAAO,sBAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,IAAA,EAAM,CAAA,CAAE,MAAM,IAAI,CAAA,CAAA;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,gBAAA,CACN,IAAA,EACA,IAAA,EACA,MAAA,EACC;AACD,IAAA,OAAO,sBAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,MAAM,CAAA,CAAE,gBAAA,CAAiB,MAAM,MAAM,CAAA,CAAA;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,OAAkC,IAAA,EAAY;AACpD,IAAA,OAAO,eAAA,CAAA,IAAA,EAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,IAAA,EAAM,CAAA,CAAE,MAAA,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,QAAmC,IAAA,EAAY;AACrD,IAAA,OAAO,eAAA,CAAA,IAAA,EAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,IAAA,EAAM,CAAA,CAAE,OAAA,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,IAA+B,IAAA,EAAY;AACjD,IAAA,OAAO,eAAA,CAAA,IAAA,EAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,IAAA,EAAM,CAAA,CAAE,GAAA,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,KAAgC,IAAA,EAAY;AAClD,IAAA,OAAO,eAAA,CAAA,IAAA,EAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,IAAA,EAAM,CAAA,CAAE,IAAA,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,MAAiC,IAAA,EAAY;AACnD,IAAA,OAAO,eAAA,CAAA,IAAA,EAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,IAAA,EAAM,CAAA,CAAE,KAAA,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,KAAgC,IAAA,EAAY;AAClD,IAAA,OAAO,eAAA,CAAA,IAAA,EAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,IAAA,EAAM,CAAA,CAAE,IAAA,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,MAAiC,IAAA,EAAY;AACnD,IAAA,OAAO,eAAA,CAAA,IAAA,EAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,IAAA,EAAM,CAAA,CAAE,KAAA,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,KAAgC,IAAA,EAAY;AAClD,IAAA,OAAO,eAAA,CAAA,IAAA,EAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,IAAA,EAAM,CAAA,CAAE,IAAA,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,MAAiC,IAAA,EAAY;AACnD,IAAA,OAAO,eAAA,CAAA,IAAA,EAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,IAAA,EAAM,CAAA,CAAE,KAAA,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,MAAiC,IAAA,EAAY;AACnD,IAAA,OAAO,eAAA,CAAA,IAAA,EAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,IAAA,EAAM,CAAA,CAAE,KAAA,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,OAAkC,IAAA,EAAY;AACpD,IAAA,OAAO,eAAA,CAAA,IAAA,EAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,IAAA,EAAM,CAAA,CAAE,MAAA,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,MAAiC,IAAA,EAAY;AACnD,IAAA,OAAO,eAAA,CAAA,IAAA,EAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,IAAA,EAAM,CAAA,CAAE,KAAA,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,OAAkC,IAAA,EAAY;AACpD,IAAA,OAAO,eAAA,CAAA,IAAA,EAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,IAAA,EAAM,CAAA,CAAE,MAAA,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcO,MAAiC,IAAA,EAAY;AACnD,IAAA,OAAO,eAAA,CAAA,IAAA,EAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,IAAA,EAAM,CAAA,CAAE,KAAA,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcO,OAAkC,IAAA,EAAY;AACpD,IAAA,OAAO,eAAA,CAAA,IAAA,EAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,IAAA,EAAM,CAAA,CAAE,MAAA,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,SAAoC,IAAA,EAAY;AACtD,IAAA,OAAO,eAAA,CAAA,IAAA,EAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,IAAA,EAAM,CAAA,CAAE,QAAA,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,UAAqC,IAAA,EAAY;AACvD,IAAA,OAAO,eAAA,CAAA,IAAA,EAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,IAAA,EAAM,CAAA,CAAE,SAAA,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,SAAoC,IAAA,EAAY;AACtD,IAAA,OAAO,eAAA,CAAA,IAAA,EAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,IAAA,EAAM,CAAA,CAAE,QAAA,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,UAAqC,IAAA,EAAY;AACvD,IAAA,OAAO,eAAA,CAAA,IAAA,EAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,IAAA,EAAM,CAAA,CAAE,SAAA,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,QAAmC,IAAA,EAAY;AACrD,IAAA,OAAO,eAAA,CAAA,IAAA,EAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,IAAA,EAAM,CAAA,CAAE,OAAA,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,QAAmC,IAAA,EAAY;AACrD,IAAA,OAAO,eAAA,CAAA,IAAA,EAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,IAAA,EAAM,CAAA,CAAE,OAAA,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASO,QAAA,CACN,MACA,IAAA,EACC;AACD,IAAA,OAAO,sBAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,IAAA,EAAM,CAAA,CAAE,SAAS,IAAI,CAAA,CAAA;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,UAAqC,IAAA,EAAY;AACvD,IAAA,OAAO,eAAA,CAAA,IAAA,EAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,IAAA,EAAM,CAAA,CAAE,SAAA,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUO,QAAA,CAAqD,MAAY,aAAA,EAA0B;AACjG,IAAA,OAAO,sBAAK,iBAAA,EAAA,UAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAc,IAAA,EAAM,CAAA,CAAE,SAAS,aAAa,CAAA,CAAA;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,IAAA,GAA4C;AAClD,IAAA,OAAO,YAAA,CAAA,IAAA,EAAK,QAAO,IAAA,EAAK;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,MAAA,GAAgD;AACtD,IAAA,OAAO,YAAA,CAAA,IAAA,EAAK,QAAO,MAAA,EAAO;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,OAAA,GAAiD;AACvD,IAAA,OAAO,YAAA,CAAA,IAAA,EAAK,QAAO,OAAA,EAAQ;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,CAAQ,MAAA,CAAO,QAAQ,CAAA,GAA2C;AACjE,IAAA,OAAO,KAAK,OAAA,EAAQ;AAAA,EACrB;AAoBD,CAAA;AA7hBU,GAAA,GAAA,IAAA,OAAA,EAAA;AACA,MAAA,GAAA,IAAA,OAAA,EAAA;AACT,QAAA,GAAA,IAAA,OAAA,EAAA;AAHM,iBAAA,GAAA,IAAA,OAAA,EAAA;AA4gBN,UAAA,mBAA+G,MAAA,CAAA,SAC9G,MACA,IAAA,EAC6C;AAC7C,EAAA,IAAI,YAAA,CAAA,IAAA,EAAK,MAAA,CAAA,CAAO,GAAA,CAAI,IAAI,CAAA,EAAG;AAC1B,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,eAAA,EAAkB,mBAAK,GAAA,CAAG,CAAA,mCAAA,EAAsC,IAAI,CAAA,CAAA,CAAG,CAAA;AAAA,EACxF;AAEA,EAAA,YAAA,CAAA,IAAA,EAAK,MAAA,CAAA,CAAO,GAAA,CAAI,IAAA,EAAM,IAAI,CAAA;AAE1B,EAAA,IAAI,IAAA,CAAK,aAAa,IAAA,EAAM;AAC3B,IAAA,YAAA,CAAA,IAAA,EAAK,QAAA,EAAW,IAAA,CAAA;AAAA,EACjB,CAAA,MAAA,IAAW,YAAA,CAAA,IAAA,EAAK,QAAA,CAAA,KAAa,IAAA,EAAM;AAClC,IAAA,YAAA,CAAA,IAAA,EAAK,QAAA,EAAL,YAAA,CAAA,IAAA,EAAK,QAAA,CAAA,GAAY,IAAA,CAAK,QAAA,CAAA;AAAA,EACvB;AAEA,EAAA,OAAO,IAAA;AACR,CAAA,EAjB+G,UAAA,CAAA;AA5gB/B,MAAA,CAAA,OAAA,EAAA,QAAA,CAAA;AAA1E,IAAM,MAAA,GAAN;;;ACLP,IAAA,QAAA;AAKO,IAAM,YAAA,GAAN,MAAM,YAAA,CAA6C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAalD,WAAA,CAAY,4BAA4B,GAAA,EAAK;AATpD;AAAA;AAAA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAO,2BAAA,CAAA;AAEP,IAAA,YAAA,CAAA,IAAA,EAAS,QAAA,sBAAe,GAAA,EAAoB,CAAA;AAQ3C,IAAA,IAAA,CAAK,yBAAA,GAA4B,yBAAA;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,IAA8D,MAAA,EAAmE;AACvI,IAAA,IAAI,YAAA,CAAA,IAAA,EAAK,QAAA,CAAA,CAAS,GAAA,CAAI,MAAA,CAAO,EAAE,CAAA,EAAG;AACjC,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,eAAA,EAAkB,MAAA,CAAO,EAAE,CAAA,eAAA,CAAiB,CAAA;AAAA,IAC7D;AAEA,IAAA,YAAA,CAAA,IAAA,EAAK,QAAA,CAAA,CAAS,GAAA,CAAI,MAAA,CAAO,EAAA,EAAI,MAAa,CAAA;AAC1C,IAAA,OAAO,IAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,IAAuC,EAAA,EAAqB;AAClE,IAAA,MAAM,MAAA,GAAS,YAAA,CAAA,IAAA,EAAK,QAAA,CAAA,CAAS,GAAA,CAAI,EAAE,CAAA;AACnC,IAAA,IAAI,CAAC,MAAA,EAAQ,MAAM,IAAI,KAAA,CAAM,CAAA,eAAA,EAAkB,EAAE,CAAA,eAAA,CAAiB,CAAA;AAClE,IAAA,OAAO,MAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASO,SAAA,CAA6C,IAAQ,KAAA,EAAqD;AAChH,IAAA,OAAO,IAAA,CAAK,YAAA,CAAa,EAAA,EAAI,KAAK,EAAE,QAAA,EAAS;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASO,YAAA,CAAgD,IAAQ,KAAA,EAA2D;AACzH,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,EAAE,CAAA;AAC1B,IAAA,OAAO,MAAA,CAAO,YAAA,CAAa,KAAA,EAAO,IAAA,CAAK,yBAAyB,CAAA;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,YAAY,MAAA,EAA+D;AACjF,IAAA,MAAA,GAAS,oBAAA,CAAqB,KAAK,MAAM,CAAA;AACzC,IAAA,MAAM,OAAA,GAAU,IAAI,OAAA,EAAQ;AAC5B,IAAA,MAAM,EAAA,GAAK,MAAA,CAAO,SAAA,CAAU,OAAO,CAAA;AACnC,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,EAAE,CAAA;AAC1B,IAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,OAAO,WAAA,CAAY,MAAA,EAAQ,OAAO,CAAA,EAAE;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYO,cAAc,MAAA,EAAiD;AACrE,IAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACxB,MAAA,MAAM,IAAI,WAAW,4BAA4B,CAAA;AAAA,IAClD;AAEA,IAAA,IAAI,OAAO,WAAW,QAAA,EAAU;AAE/B,MAAA,MAAA,GAAS,oBAAA,CAAqB,IAAA,CAAK,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,IAC7C;AAEA,IAAA,OAAO,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,IAAA,GAA2C;AACjD,IAAA,OAAO,YAAA,CAAA,IAAA,EAAK,UAAS,IAAA,EAAK;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,MAAA,GAA+C;AACrD,IAAA,OAAO,YAAA,CAAA,IAAA,EAAK,UAAS,MAAA,EAAO;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,OAAA,GAAgD;AACtD,IAAA,OAAO,YAAA,CAAA,IAAA,EAAK,UAAS,OAAA,EAAQ;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,CAAQ,MAAA,CAAO,QAAQ,CAAA,GAA0C;AAChE,IAAA,OAAO,KAAK,OAAA,EAAQ;AAAA,EACrB;AACD,CAAA;AA7IU,QAAA,GAAA,IAAA,OAAA,EAAA;AANgD,MAAA,CAAA,YAAA,EAAA,aAAA,CAAA;AAAnD,IAAM,WAAA,GAAN;;;ACcA,SAAS,QAAQ,MAAA,EAAoB;AAC3C,EAAA,IAAI,MAAA,GAAS,EAAA;AACb,EAAA,KAAA,MAAW,KAAA,IAAS,IAAI,WAAA,CAAY,MAAA,CAAO,MAAM,CAAA,EAAG;AACnD,IAAA,MAAA,IAAU,MAAA,CAAO,aAAa,KAAK,CAAA;AAAA,EACpC;AAEA,EAAA,OAAO,MAAA;AACR;AAPgB,MAAA,CAAA,OAAA,EAAA,SAAA,CAAA;AAeT,SAAS,UAAU,MAAA,EAA6B;AACtD,EAAA,MAAM,MAAA,GAAS,IAAI,WAAA,CAAY,MAAA,CAAO,MAAM,CAAA;AAC5C,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACvC,IAAA,MAAA,CAAO,CAAC,CAAA,GAAI,MAAA,CAAO,UAAA,CAAW,CAAC,CAAA;AAAA,EAChC;AAEA,EAAA,OAAO,MAAA;AACR;AAPgB,MAAA,CAAA,SAAA,EAAA,WAAA,CAAA","file":"index.cjs","sourcesContent":["export const codepointRanges = [\n\t{\n\t\tstart: 0x4e00,\n\t\tend: 0x9ffc,\n\t\tindexStart: 0,\n\t\tindexEnd: 20988\n\t},\n\t{\n\t\tstart: 0x17000,\n\t\tend: 0x187f7,\n\t\tindexStart: 20989,\n\t\tindexEnd: 27125\n\t},\n\t{\n\t\tstart: 0x20000,\n\t\tend: 0x2960a,\n\t\tindexStart: 27126,\n\t\tindexEnd: 65536\n\t}\n];\n","export function isArrayLike(object: unknown): object is ArrayLike<unknown> {\n\t// If the item is not an object, it is not array-like:\n\tif (!isObject(object)) return false;\n\t// If the item is an array, it is array-like:\n\tif (Array.isArray(object)) return true;\n\t// If the item doesn't have a numeric length property, it is not array-like:\n\tif (!hasLength(object)) return false;\n\t// If the length isn't a valid index, it is not array-like:\n\tif (!isValidLength(object.length)) return false;\n\n\treturn object.length === 0 || object.length - 1 in object;\n}\n\nfunction isObject(item: unknown): item is object {\n\treturn typeof item === 'object' && item !== null;\n}\n\nfunction hasLength(item: object): item is { length: number } {\n\treturn 'length' in item && typeof item.length === 'number';\n}\n\nexport function isValidLength(length: number) {\n\treturn Number.isSafeInteger(length) && length >= 0 && length < 2147483648;\n}\n","import { isValidLength } from './_common';\n\n/**\n * A pointer to a position in a buffer.\n *\n * This is used to keep track of the current position in a buffer while allowing\n * the position to be updated by multiple different functions.\n *\n * @privateRemarks\n *\n * This class draws inspiration from the following constructs:\n * - `int*` in C/C++\n * - `ref int` in C#\n * - `*mut i32` in Rust\n */\nexport class Pointer {\n\t#value = 0;\n\n\tpublic get value() {\n\t\treturn this.#value;\n\t}\n\n\tpublic add(value: number) {\n\t\tconst added = this.#value + value;\n\t\tif (!isValidLength(added)) {\n\t\t\tthrow new RangeError(`The pointer value cannot be an invalid length value`);\n\t\t}\n\n\t\tthis.#value = added;\n\t\treturn this;\n\t}\n\n\tpublic static from(pointer: PointerLike) {\n\t\tif (pointer instanceof Pointer) {\n\t\t\treturn pointer;\n\t\t}\n\n\t\tconst instance = new Pointer();\n\t\tinstance.add(Number(pointer));\n\t\treturn instance;\n\t}\n}\n\nexport type PointerLike = Pointer | { valueOf(): number } | { [Symbol.toPrimitive](hint: 'number'): number };\n","import { codepointRanges } from '../shared/codepoints';\nimport { Pointer, type PointerLike } from '../shared/Pointer';\nimport type { DuplexBuffer } from './DuplexBuffer';\n\nconst ConverterUint8 = new Uint8Array(8);\nconst ConverterUint16 = new Uint16Array(ConverterUint8.buffer);\nconst ConverterUint32 = new Uint32Array(ConverterUint8.buffer);\nconst ConverterUint64 = new BigUint64Array(ConverterUint8.buffer);\n\nconst ConverterInt32 = new Int32Array(ConverterUint8.buffer);\nconst ConverterInt64 = new BigInt64Array(ConverterUint8.buffer);\n\nconst ConverterFloat = new Float32Array(ConverterUint8.buffer);\nconst ConverterDouble = new Float64Array(ConverterUint8.buffer);\n\nexport class UnalignedUint16Array implements DuplexBuffer {\n\t#buffer: Uint16Array;\n\t#bitLength = 0;\n\t#wordIndex = 0;\n\t#wordLength = 0;\n\n\tpublic constructor(maxLength: number) {\n\t\tthis.#buffer = new Uint16Array(maxLength);\n\t}\n\n\tpublic at(index: number): number | undefined {\n\t\treturn this.#buffer.at(index);\n\t}\n\n\tpublic get maxLength(): number {\n\t\treturn this.#buffer.length;\n\t}\n\n\tpublic get maxBitLength(): number {\n\t\treturn this.#buffer.length * 16;\n\t}\n\n\tpublic get length(): number {\n\t\treturn this.#wordLength;\n\t}\n\n\tpublic get bitLength(): number {\n\t\treturn this.#bitLength;\n\t}\n\n\tpublic writeBit(value: number): void {\n\t\tthis.#writeBit(value);\n\t}\n\n\tpublic writeInt2(value: number): void {\n\t\tthis.writeBit(value & 1);\n\t\tthis.writeBit(value >> 1);\n\t}\n\n\tpublic writeInt4(value: number): void {\n\t\tthis.writeInt2(value & 0b11);\n\t\tthis.writeInt2(value >> 2);\n\t}\n\n\tpublic writeInt8(value: number): void {\n\t\tthis.writeInt4(value & 0b1111);\n\t\tthis.writeInt4(value >> 4);\n\t}\n\n\tpublic writeInt16(value: number): void {\n\t\tthis.#bufferWrite16(value);\n\t}\n\n\tpublic writeInt32(value: number): void {\n\t\tthis.#bufferWrite16(value);\n\t\tthis.#bufferWrite16(value >> 16);\n\t}\n\n\tpublic writeInt64(value: number): void {\n\t\tthis.writeBigInt64(BigInt(value));\n\t}\n\n\tpublic writeBigInt32(value: bigint): void {\n\t\tConverterInt64[0] = value;\n\t\tthis.#bufferWrite16(ConverterUint16[0]);\n\t\tthis.#bufferWrite16(ConverterUint16[1]);\n\t}\n\n\tpublic writeBigInt64(value: bigint): void {\n\t\tConverterInt64[0] = value;\n\t\tthis.#bufferWrite16(ConverterUint16[0]);\n\t\tthis.#bufferWrite16(ConverterUint16[1]);\n\t\tthis.#bufferWrite16(ConverterUint16[2]);\n\t\tthis.#bufferWrite16(ConverterUint16[3]);\n\t}\n\n\tpublic writeFloat32(value: number): void {\n\t\tConverterFloat[0] = value;\n\t\tthis.#bufferWrite16(ConverterUint16[0]);\n\t\tthis.#bufferWrite16(ConverterUint16[1]);\n\t}\n\n\tpublic writeFloat64(value: number): void {\n\t\tConverterDouble[0] = value;\n\t\tthis.#bufferWrite16(ConverterUint16[0]);\n\t\tthis.#bufferWrite16(ConverterUint16[1]);\n\t\tthis.#bufferWrite16(ConverterUint16[2]);\n\t\tthis.#bufferWrite16(ConverterUint16[3]);\n\t}\n\n\tpublic readBit(offset: PointerLike): 0 | 1 {\n\t\tconst ptr = Pointer.from(offset);\n\t\treturn this.#readBit(ptr) as 0 | 1;\n\t}\n\n\tpublic readInt2(offset: PointerLike): number {\n\t\t// Bit shifting to convert 2-bit signed integer to 32-bit signed integer\n\t\t// 0b01 → 0b0100_0000_0000_0000 → 0b000_0000_0000_0001 (1)\n\t\t// 0b10 → 0b1000_0000_0000_0000 → 0b111_1111_1111_1110 (-2)\n\t\treturn (this.readUint2(offset) << 30) >> 30;\n\t}\n\n\tpublic readUint2(offset: PointerLike): number {\n\t\tconst ptr = Pointer.from(offset);\n\t\treturn this.#readBit(ptr) | (this.#readBit(ptr) << 1);\n\t}\n\n\tpublic readInt4(offset: PointerLike): number {\n\t\t// Bit shifting to convert 4-bit signed integer to 32-bit signed integer,\n\t\t// as shown in `readInt2`.\n\t\treturn (this.readUint4(offset) << 28) >> 28;\n\t}\n\n\tpublic readUint4(offset: PointerLike): number {\n\t\tconst ptr = Pointer.from(offset);\n\t\treturn this.#readBit(ptr) | (this.#readBit(ptr) << 1) | (this.#readBit(ptr) << 2) | (this.#readBit(ptr) << 3);\n\t}\n\n\tpublic readInt8(offset: PointerLike): number {\n\t\t// Bit shifting to convert 8-bit signed integer to 32-bit signed integer,\n\t\t// as shown in `readInt2`.\n\t\treturn (this.readUint8(offset) << 24) >> 24;\n\t}\n\n\tpublic readUint8(offset: PointerLike): number {\n\t\tconst ptr = Pointer.from(offset);\n\t\treturn this.#readByte(ptr);\n\t}\n\n\tpublic readInt16(offset: PointerLike): number {\n\t\t// Bit shifting to convert 8-bit signed integer to 32-bit signed integer,\n\t\t// as shown in `readInt2`.\n\t\treturn (this.readUint16(offset) << 16) >> 16;\n\t}\n\n\tpublic readUint16(offset: PointerLike): number {\n\t\tthis.#bufferRead16(Pointer.from(offset));\n\t\treturn ConverterUint16[0];\n\t}\n\n\tpublic readInt32(offset: PointerLike): number {\n\t\tthis.#bufferRead32(Pointer.from(offset));\n\t\treturn ConverterInt32[0];\n\t}\n\n\tpublic readUint32(offset: PointerLike): number {\n\t\tthis.#bufferRead32(Pointer.from(offset));\n\t\treturn ConverterUint32[0];\n\t}\n\n\tpublic readInt64(offset: PointerLike): number {\n\t\treturn Number(this.readBigInt64(offset));\n\t}\n\n\tpublic readUint64(offset: PointerLike) {\n\t\treturn Number(this.readBigUint64(offset));\n\t}\n\n\tpublic readBigInt32(offset: PointerLike): bigint {\n\t\tthis.#bufferRead32(Pointer.from(offset));\n\t\treturn BigInt(ConverterInt32[0]);\n\t}\n\n\tpublic readBigUint32(offset: PointerLike): bigint {\n\t\tthis.#bufferRead32(Pointer.from(offset));\n\t\treturn BigInt(ConverterUint32[0]);\n\t}\n\n\tpublic readBigInt64(offset: PointerLike): bigint {\n\t\tthis.#bufferRead64(Pointer.from(offset));\n\t\treturn ConverterInt64[0];\n\t}\n\n\tpublic readBigUint64(offset: PointerLike): bigint {\n\t\tthis.#bufferRead64(Pointer.from(offset));\n\t\treturn ConverterUint64[0];\n\t}\n\n\tpublic readFloat32(offset: PointerLike): number {\n\t\tthis.#bufferRead32(Pointer.from(offset));\n\t\treturn ConverterFloat[0];\n\t}\n\n\tpublic readFloat64(offset: PointerLike): number {\n\t\tthis.#bufferRead64(Pointer.from(offset));\n\t\treturn ConverterDouble[0];\n\t}\n\n\tpublic toString() {\n\t\tlet result = '';\n\n\t\tfor (let i = 0; i < this.length; i++) {\n\t\t\tresult += String.fromCodePoint(this.#uint16ToCodepoint(this.#buffer[i]));\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tpublic toArray(): Uint16Array {\n\t\treturn this.#buffer.slice(0, this.length);\n\t}\n\n\t#uint16ToCodepoint(index: number): number {\n\t\tfor (const range of codepointRanges) {\n\t\t\tif (index >= range.indexStart && index <= range.indexEnd) {\n\t\t\t\treturn range.start + (index - range.indexStart);\n\t\t\t}\n\t\t}\n\n\t\tthrow new RangeError(`Index ${index} is out of range`);\n\t}\n\n\t#readBit(pointer: Pointer) {\n\t\tconst bitOffset = pointer.value;\n\t\tconst index = bitOffset >> 4;\n\t\tconst bitIndex = bitOffset & 0xf;\n\t\tpointer.add(1);\n\t\treturn (this.#buffer[index] >> bitIndex) & 1;\n\t}\n\n\t#readByte(ptr: Pointer) {\n\t\treturn (\n\t\t\tthis.#readBit(ptr) |\n\t\t\t(this.#readBit(ptr) << 1) |\n\t\t\t(this.#readBit(ptr) << 2) |\n\t\t\t(this.#readBit(ptr) << 3) |\n\t\t\t(this.#readBit(ptr) << 4) |\n\t\t\t(this.#readBit(ptr) << 5) |\n\t\t\t(this.#readBit(ptr) << 6) |\n\t\t\t(this.#readBit(ptr) << 7)\n\t\t);\n\t}\n\n\t#bufferRead16(ptr: Pointer): void {\n\t\tConverterUint8[0] = this.#readByte(ptr);\n\t\tConverterUint8[1] = this.#readByte(ptr);\n\t}\n\n\t#bufferRead32(ptr: Pointer): void {\n\t\tConverterUint8[0] = this.#readByte(ptr);\n\t\tConverterUint8[1] = this.#readByte(ptr);\n\t\tConverterUint8[2] = this.#readByte(ptr);\n\t\tConverterUint8[3] = this.#readByte(ptr);\n\t}\n\n\t#bufferRead64(ptr: Pointer): void {\n\t\tConverterUint8[0] = this.#readByte(ptr);\n\t\tConverterUint8[1] = this.#readByte(ptr);\n\t\tConverterUint8[2] = this.#readByte(ptr);\n\t\tConverterUint8[3] = this.#readByte(ptr);\n\t\tConverterUint8[4] = this.#readByte(ptr);\n\t\tConverterUint8[5] = this.#readByte(ptr);\n\t\tConverterUint8[6] = this.#readByte(ptr);\n\t\tConverterUint8[7] = this.#readByte(ptr);\n\t}\n\n\t#writeBit(value: number) {\n\t\tif (this.#wordIndex === this.maxLength) {\n\t\t\tthrow new RangeError(`The buffer is full`);\n\t\t}\n\n\t\tif (value) {\n\t\t\tconst index = this.#wordIndex;\n\t\t\tconst bitIndex = this.bitLength & 0xf;\n\t\t\tthis.#buffer[index] |= 1 << bitIndex;\n\t\t}\n\n\t\tif ((this.#bitLength & 0xf) === 0) this.#wordLength++;\n\t\tthis.#bitLength++;\n\t\tif ((this.#bitLength & 0xf) === 0) this.#wordIndex++;\n\t}\n\n\t#bufferWrite16(value: number) {\n\t\tconst wordIndex = this.#wordIndex;\n\t\tconst bitIndex = this.bitLength & 0xf;\n\n\t\t// If `bitIndex` is `0`:\n\t\t// - Then the value will fit in the current word.\n\t\t// - In this case, we validate that we can write the current word.\n\t\t//\n\t\t// Otherwise:\n\t\t// - The value will be split between the current word and the next word.\n\t\t// - In this case, we validate that we can write the next word.\n\t\tif (wordIndex + (bitIndex === 0 ? 0 : 1) === this.maxLength) {\n\t\t\tthrow new RangeError(`The buffer is full`);\n\t\t}\n\n\t\tif (bitIndex === 0) {\n\t\t\tthis.#buffer[wordIndex] = value;\n\t\t} else {\n\t\t\tvalue &= 0xffff;\n\t\t\tthis.#buffer[wordIndex] |= value << bitIndex;\n\t\t\tthis.#buffer[wordIndex + 1] = value >> (16 - bitIndex);\n\t\t}\n\n\t\tthis.#bitLength += 16;\n\t\tthis.#wordIndex++;\n\t\tthis.#wordLength++;\n\t}\n\n\tpublic static from(value: string | DuplexBuffer): DuplexBuffer {\n\t\tif (typeof value !== 'string') return value;\n\n\t\tconst codepoints = Array.from(value, (char) => char.codePointAt(0)!);\n\t\tconst buffer = new UnalignedUint16Array(value.length);\n\n\t\tfor (let i = 0; i < codepoints.length; i++) {\n\t\t\tconst index = UnalignedUint16Array.#codepointToUint16(codepoints[i]);\n\t\t\tbuffer.#buffer[i] = index;\n\t\t}\n\n\t\tbuffer.#bitLength = value.length << 4;\n\t\treturn buffer;\n\t}\n\n\tstatic #codepointToUint16(codepoint: number): number {\n\t\tfor (const range of codepointRanges) {\n\t\t\tif (codepoint >= range.start && codepoint <= range.end) {\n\t\t\t\treturn range.indexStart + (codepoint - range.start);\n\t\t\t}\n\t\t}\n\n\t\tthrow new RangeError(`Codepoint ${codepoint} is out of range`);\n\t}\n}\n","import { isArrayLike } from '../shared/_common';\nimport type { IType } from './base/IType';\n\nexport function ArrayType<ValueType, ValueBitSize extends number | null>(type: IType<ValueType, ValueBitSize>): IType<ValueType[], null> {\n\treturn {\n\t\tserialize(buffer, values: readonly ValueType[]) {\n\t\t\tif (!isArrayLike(values)) {\n\t\t\t\tthrow new TypeError(`Expected an array, got ${values}`);\n\t\t\t}\n\n\t\t\tbuffer.writeInt16(values.length);\n\t\t\tfor (const value of values) {\n\t\t\t\ttype.serialize(buffer, value);\n\t\t\t}\n\t\t},\n\t\tdeserialize(buffer, pointer) {\n\t\t\tconst length = buffer.readUint16(pointer);\n\t\t\tconst value = [];\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tvalue.push(type.deserialize(buffer, pointer));\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\t\tBIT_SIZE: null\n\t};\n}\n","import type { IType } from './base/IType';\n\nexport const BigInt32Type: IType<bigint, 32> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBigInt32(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readBigInt32(pointer);\n\t},\n\tBIT_SIZE: 32\n};\n","import type { IType } from './base/IType';\n\nexport const BigInt64Type: IType<bigint, 64> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBigInt64(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readBigInt64(pointer);\n\t},\n\tBIT_SIZE: 64\n};\n","import type { IType } from './base/IType';\n\nexport const BigUint32Type: IType<bigint, 32> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBigInt32(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readBigUint32(pointer);\n\t},\n\tBIT_SIZE: 32\n};\n","import type { IType } from './base/IType';\n\nexport const BigUint64Type: IType<bigint, 64> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBigInt64(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readBigUint64(pointer);\n\t},\n\tBIT_SIZE: 64\n};\n","import type { IType } from './base/IType';\n\nexport const BitType: IType<0 | 1, 1, number> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBit(value & 0b1);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readBit(pointer);\n\t},\n\tBIT_SIZE: 1\n};\n","import type { IType } from './base/IType';\n\nexport const BooleanType: IType<boolean, 1> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBit(Number(value));\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readBit(pointer) === 1;\n\t},\n\tBIT_SIZE: 1\n};\n","import type { IType } from './base/IType';\n\nexport function ConstantType<const ValueType>(constantValue: ValueType): IType<ValueType, 0, never> {\n\treturn {\n\t\tserialize(_buffer, _value) {},\n\t\tdeserialize(_buffer, _pointer) {\n\t\t\treturn constantValue;\n\t\t},\n\t\tBIT_SIZE: 0\n\t};\n}\n","import { isArrayLike } from '../shared/_common';\nimport type { IType } from './base/IType';\n\nexport function FixedLengthArrayType<ValueType, ValueBitSize extends number | null>(\n\ttype: IType<ValueType, ValueBitSize>,\n\tlength: number\n): IType<ValueType[], ValueBitSize extends null ? null : number> {\n\treturn {\n\t\tserialize(buffer, values) {\n\t\t\tif (!isArrayLike(values) || values.length !== length) {\n\t\t\t\tthrow new TypeError(`Expected array of length ${length}, got ${values.length}`);\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\ttype.serialize(buffer, values[i]);\n\t\t\t}\n\t\t},\n\t\tdeserialize(buffer, pointer) {\n\t\t\tconst value = [];\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tvalue.push(type.deserialize(buffer, pointer));\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\t\tBIT_SIZE: (typeof type.BIT_SIZE === 'number' ? type.BIT_SIZE * length : null) as ValueBitSize extends null ? null : number\n\t};\n}\n","import type { IType } from './base/IType';\n\nexport const Float32Type: IType<number, 32> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeFloat32(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readFloat32(pointer);\n\t},\n\tBIT_SIZE: 32\n};\n","import type { IType } from './base/IType';\n\nexport const Float64Type: IType<number, 64> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeFloat64(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readFloat64(pointer);\n\t},\n\tBIT_SIZE: 64\n};\n","import type { IType } from './base/IType';\n\nexport const Int16Type: IType<number, 16> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt16(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readInt16(pointer);\n\t},\n\tBIT_SIZE: 16\n};\n","import type { IType } from './base/IType';\n\nexport const Int2Type: IType<number, 2> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt2(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readInt2(pointer);\n\t},\n\tBIT_SIZE: 2\n};\n","import type { IType } from './base/IType';\n\nexport const Int32Type: IType<number, 32> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt32(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readInt32(pointer);\n\t},\n\tBIT_SIZE: 32\n};\n","import type { IType } from './base/IType';\n\nexport const Int4Type: IType<number, 4> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt4(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readInt4(pointer);\n\t},\n\tBIT_SIZE: 4\n};\n","import type { IType } from './base/IType';\n\nexport const Int64Type: IType<number, 64> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt64(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readInt64(pointer);\n\t},\n\tBIT_SIZE: 64\n};\n","import type { IType } from './base/IType';\n\nexport const Int8Type: IType<number, 8> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt8(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readInt8(pointer);\n\t},\n\tBIT_SIZE: 8\n};\n","import type { IType } from './base/IType';\n\nexport function NullableType<ValueType, ValueBitSize extends number | null>(\n\ttype: IType<ValueType, ValueBitSize>\n): IType<ValueType | null, null, ValueType | null | undefined> {\n\treturn {\n\t\tserialize(buffer, value) {\n\t\t\tif (value === null || value === undefined) {\n\t\t\t\tbuffer.writeBit(0);\n\t\t\t} else {\n\t\t\t\tbuffer.writeBit(1);\n\t\t\t\ttype.serialize(buffer, value);\n\t\t\t}\n\t\t},\n\t\tdeserialize(buffer, pointer) {\n\t\t\treturn buffer.readBit(pointer) ? type.deserialize(buffer, pointer) : null;\n\t\t},\n\t\tBIT_SIZE: null\n\t};\n}\n","import type { IType } from './base/IType';\n\nexport const SnowflakeType: IType<bigint, 64, bigint | string> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBigInt64(BigInt(value));\n\t},\n\tdeserialize(buffer, offset) {\n\t\treturn buffer.readBigUint64(offset);\n\t},\n\tBIT_SIZE: 64\n};\n","import type { IType } from './base/IType';\n\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder();\nexport const StringType: IType<string, null> = {\n\tserialize(buffer, value) {\n\t\tconst encoded = encoder.encode(value);\n\t\tbuffer.writeInt16(encoded.length);\n\t\tfor (const byte of encoded) {\n\t\t\tbuffer.writeInt8(byte);\n\t\t}\n\t},\n\tdeserialize(buffer, pointer) {\n\t\tconst length = buffer.readInt16(pointer);\n\t\tconst bytes = new Uint8Array(length);\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tbytes[i] = buffer.readInt8(pointer);\n\t\t}\n\t\treturn decoder.decode(bytes);\n\t},\n\tBIT_SIZE: null\n};\n","import type { IType } from './base/IType';\n\nexport const Uint16Type: IType<number, 16> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt16(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readUint16(pointer);\n\t},\n\tBIT_SIZE: 16\n};\n","import type { IType } from './base/IType';\n\nexport const Uint2Type: IType<number, 2> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt2(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readUint2(pointer);\n\t},\n\tBIT_SIZE: 2\n};\n","import type { IType } from './base/IType';\n\nexport const Uint32Type: IType<number, 32> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt32(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readUint32(pointer);\n\t},\n\tBIT_SIZE: 32\n};\n","import type { IType } from './base/IType';\n\nexport const Uint4Type: IType<number, 4> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt4(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readUint4(pointer);\n\t},\n\tBIT_SIZE: 4\n};\n","import type { IType } from './base/IType';\n\nexport const Uint64Type: IType<number, 64> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt64(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readUint64(pointer);\n\t},\n\tBIT_SIZE: 64\n};\n","import type { IType } from './base/IType';\n\nexport const Uint8Type: IType<number, 8> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt8(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readUint8(pointer);\n\t},\n\tBIT_SIZE: 8\n};\n","import { ArrayType } from './Array';\nimport type { IType } from './base/IType';\nimport { BigInt32Type } from './BigInt32';\nimport { BigInt64Type } from './BigInt64';\nimport { BigUint32Type } from './BigUint32';\nimport { BigUint64Type } from './BigUint64';\nimport { BitType } from './Bit';\nimport { BooleanType } from './Boolean';\nimport { ConstantType } from './Constant';\nimport { FixedLengthArrayType } from './FixedLengthArray';\nimport { Float32Type } from './Float32';\nimport { Float64Type } from './Float64';\nimport { Int16Type } from './Int16';\nimport { Int2Type } from './Int2';\nimport { Int32Type } from './Int32';\nimport { Int4Type } from './Int4';\nimport { Int64Type } from './Int64';\nimport { Int8Type } from './Int8';\nimport { NullableType } from './Nullable';\nimport { SnowflakeType } from './Snowflake';\nimport { StringType } from './String';\nimport { Uint16Type } from './Uint16';\nimport { Uint2Type } from './Uint2';\nimport { Uint32Type } from './Uint32';\nimport { Uint4Type } from './Uint4';\nimport { Uint64Type } from './Uint64';\nimport { Uint8Type } from './Uint8';\n\nexport const t = {\n\tarray: ArrayType,\n\tbigInt32: BigInt32Type,\n\tbigInt64: BigInt64Type,\n\tbigUint32: BigUint32Type,\n\tbigUint64: BigUint64Type,\n\tbit: BitType,\n\tboolean: BooleanType,\n\tconstant: ConstantType,\n\tfixedLengthArray: FixedLengthArrayType,\n\tfloat32: Float32Type,\n\tfloat64: Float64Type,\n\tint16: Int16Type,\n\tint2: Int2Type,\n\tint32: Int32Type,\n\tint4: Int4Type,\n\tint64: Int64Type,\n\tint8: Int8Type,\n\tnullable: NullableType,\n\tsnowflake: SnowflakeType,\n\tstring: StringType,\n\tuint16: Uint16Type,\n\tuint2: Uint2Type,\n\tuint32: Uint32Type,\n\tuint4: Uint4Type,\n\tuint64: Uint64Type,\n\tuint8: Uint8Type\n};\n\nexport {\n\tArrayType,\n\tBigInt32Type,\n\tBigInt64Type,\n\tBigUint32Type,\n\tBigUint64Type,\n\tBitType,\n\tBooleanType,\n\tConstantType,\n\tFixedLengthArrayType,\n\tFloat32Type,\n\tFloat64Type,\n\tInt16Type,\n\tInt2Type,\n\tInt32Type,\n\tInt4Type,\n\tInt64Type,\n\tInt8Type,\n\tNullableType,\n\tSnowflakeType,\n\tStringType,\n\tUint16Type,\n\tUint2Type,\n\tUint32Type,\n\tUint4Type,\n\tUint64Type,\n\tUint8Type,\n\ttype IType\n};\n","import type { DuplexBuffer } from '../buffer/DuplexBuffer';\nimport { UnalignedUint16Array } from '../buffer/UnalignedUint16Array';\nimport { Pointer, type PointerLike } from '../shared/Pointer';\nimport { t, type IType } from '../types/index';\n\nexport class Schema<Id extends number = number, Entries extends object = object> {\n\treadonly #id: Id;\n\treadonly #types = new Map<string, IType<any, number | null>>();\n\t#bitSize: number | null = 0;\n\n\t/**\n\t * Creates a new schema.\n\t *\n\t * @param id The id of the schema\n\t */\n\tpublic constructor(id: Id) {\n\t\tthis.#id = id;\n\t}\n\n\t/**\n\t * The id of the schema.\n\t */\n\tpublic get id(): Id {\n\t\treturn this.#id;\n\t}\n\n\t/**\n\t * The bit size of the entries in the schema.\n\t *\n\t * @remarks\n\t *\n\t * If any of the entries have a bit size of `null`, the bit size of the\n\t * schema will also be `null`.\n\t */\n\tpublic get bitSize(): number | null {\n\t\treturn this.#bitSize;\n\t}\n\n\t/**\n\t * The total bit size of the entries in the schema and the ID.\n\t *\n\t * @remarks\n\t *\n\t * If any of the entries have a bit size of `null`, the total bit size of\n\t * the schema will also be `null`.\n\t */\n\tpublic get totalBitSize(): number | null {\n\t\treturn this.#bitSize === null ? null : this.#bitSize + 16;\n\t}\n\n\t/**\n\t * Get a property from the schema.\n\t *\n\t * @param name The name of the property\n\t * @returns The specified property\n\t *\n\t * @remarks\n\t *\n\t * If the property does not exist, an error will be thrown.\n\t */\n\tpublic get<const Name extends keyof Entries & string>(name: Name): Entries[Name] {\n\t\tconst type = this.#types.get(name) as Entries[Name];\n\t\tif (!type) throw new Error(`Schema with id ${this.#id} does not have a property with name \"${name}\"`);\n\t\treturn type;\n\t}\n\n\t/**\n\t * Create a buffer and serialize a value into it, then convert it to a string\n\t *\n\t * @param value The value to serialize into the buffer\n\t * @param defaultMaximumArrayLength The default maximum array length, if any\n\t * @returns The newly created string.\n\t *\n\t * @seealso This method calls {@link Schema.serializeRaw} before calling `toString()` to its result.\n\t */\n\tpublic serialize(value: Readonly<SerializeValueEntries<Entries>>, defaultMaximumArrayLength = 100): string {\n\t\treturn this.serializeRaw(value, defaultMaximumArrayLength).toString();\n\t}\n\n\t/**\n\t * Create a buffer and serialize a value into it.\n\t *\n\t * @param value The value to serialize into the buffer\n\t * @param defaultMaximumArrayLength The default maximum array length, if any\n\t * @returns The newly created buffer.\n\t */\n\tpublic serializeRaw(value: Readonly<SerializeValueEntries<Entries>>, defaultMaximumArrayLength = 100): DuplexBuffer {\n\t\tconst buffer = new UnalignedUint16Array(this.totalBitSize ?? defaultMaximumArrayLength);\n\t\tthis.serializeInto(buffer, value);\n\t\treturn buffer;\n\t}\n\n\t/**\n\t * Serialize a value into a buffer.\n\t *\n\t * @param buffer The buffer to serialize\n\t * @param value The value to serialize into the buffer\n\t *\n\t * @remarks\n\t *\n\t * The schema's ID is written to the buffer first, followed by each property\n\t * in the schema.\n\t */\n\tpublic serializeInto(buffer: DuplexBuffer, value: Readonly<SerializeValueEntries<Entries>>): void {\n\t\tbuffer.writeInt16(this.#id);\n\t\tfor (const [name, type] of this) {\n\t\t\t(type as IType<any, number | null>).serialize(buffer, (value as any)[name]);\n\t\t}\n\t}\n\n\t/**\n\t * Deserialize a value from a buffer.\n\t *\n\t * @param buffer The buffer to deserialize\n\t * @param pointer The pointer to where the buffer should be read from\n\t * @returns The deserialized value\n\t *\n\t * @remarks\n\t *\n\t * Unlike {@link Schema.serializeInto}, this method does not read the schema's ID\n\t * from the buffer, that is reserved for the {@link SchemaStore}.\n\t */\n\tpublic deserialize(buffer: DuplexBuffer | string, pointer: PointerLike): UnwrapSchemaEntries<Entries> {\n\t\tbuffer = UnalignedUint16Array.from(buffer);\n\t\tpointer = Pointer.from(pointer);\n\t\tconst result = Object.create(null) as UnwrapSchemaEntries<Entries>;\n\t\tfor (const [name, type] of this) {\n\t\t\t// @ts-expect-error Complex types\n\t\t\tresult[name] = type.deserialize(buffer, pointer);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * Adds an array property to the schema.\n\t *\n\t * @seealso {@link Schema.fixedLengthArray} for a fixed length array\n\t *\n\t * @param name The name of the property\n\t * @param type The type of the entry in the array\n\t * @returns The modified schema\n\t */\n\tpublic array<const Name extends string, const ValueType, const ValueBitSize extends number | null>(\n\t\tname: Name,\n\t\ttype: IType<ValueType, ValueBitSize>\n\t) {\n\t\treturn this.#addType(name, t.array(type));\n\t}\n\n\t/**\n\t * Adds a fixed length array property to the schema.\n\t *\n\t * @seealso {@link Schema.array} for a dynamic length array\n\t *\n\t * @param name The name of the property\n\t * @param type The type of the entry in the array\n\t * @param length The length of the array\n\t * @returns The modified schema\n\t */\n\tpublic fixedLengthArray<const Name extends string, const ValueType, const ValueBitSize extends number | null>(\n\t\tname: Name,\n\t\ttype: IType<ValueType, ValueBitSize>,\n\t\tlength: number\n\t) {\n\t\treturn this.#addType(name, t.fixedLengthArray(type, length));\n\t}\n\n\t/**\n\t * Adds a string property to the schema.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic string<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.string);\n\t}\n\n\t/**\n\t * Adds a boolean property to the schema.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic boolean<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.boolean);\n\t}\n\n\t/**\n\t * Adds a bit property to the schema.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic bit<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.bit);\n\t}\n\n\t/**\n\t * Adds a 2-bit integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -2 to 1, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic int2<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.int2);\n\t}\n\n\t/**\n\t * Adds a 2-bit unsigned integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0 to 3, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic uint2<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.uint2);\n\t}\n\n\t/**\n\t * Adds a 4-bit integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -8 to 7, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic int4<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.int4);\n\t}\n\n\t/**\n\t * Adds a 4-bit unsigned integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0 to 15, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic uint4<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.uint4);\n\t}\n\n\t/**\n\t * Adds a 8-bit integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -128 to 127, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic int8<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.int8);\n\t}\n\n\t/**\n\t * Adds a 8-bit unsigned integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0 to 255, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic uint8<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.uint8);\n\t}\n\n\t/**\n\t * Adds a 16-bit integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -32768 to 32767, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic int16<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.int16);\n\t}\n\n\t/**\n\t * Adds a 16-bit unsigned integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0 to 65535, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic uint16<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.uint16);\n\t}\n\n\t/**\n\t * Adds a 32-bit integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -2_147_483_648 to 2_147_483_647, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic int32<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.int32);\n\t}\n\n\t/**\n\t * Adds a 32-bit unsigned integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0 to 4_294_967_295, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic uint32<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.uint32);\n\t}\n\n\t/**\n\t * Adds a 64-bit integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -9_223_372_036_854_775_808 to 9_223_372_036_854_775_807, inclusive.\n\t *\n\t * However, it may run into precision issues past the range of `-9_007_199_254_740_991` to `9_007_199_254_740_991`\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic int64<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.int64);\n\t}\n\n\t/**\n\t * Adds a 64-bit unsigned integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0 to 18_446_744_073_709_551_615, inclusive.\n\t *\n\t * However, it may run into precision issues past `9_007_199_254_740_991`\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic uint64<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.uint64);\n\t}\n\n\t/**\n\t * Adds a 32-bit big integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -2_147_483_648n to 2_147_483_647n, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic bigInt32<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.bigInt32);\n\t}\n\n\t/**\n\t * Adds a 32-bit big integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0n to 4_294_967_295n, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic bigUint32<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.bigUint32);\n\t}\n\n\t/**\n\t * Adds a 64-bit big integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -9_223_372_036_854_775_808n to 9_223_372_036_854_775_807n, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic bigInt64<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.bigInt64);\n\t}\n\n\t/**\n\t * Adds a 64-bit big integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0n to 18_446_744_073_709_551_615n, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic bigUint64<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.bigUint64);\n\t}\n\n\t/**\n\t * Adds a 32-bit floating point number property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -3.4028234663852886e+38 to 3.4028234663852886e+38, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic float32<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.float32);\n\t}\n\n\t/**\n\t * Adds a 64-bit floating point number property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -1.7976931348623157e+308 to 1.7976931348623157e+308, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic float64<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.float64);\n\t}\n\n\t/**\n\t * Adds a nullable property to the schema.\n\t *\n\t * @param name The name of the property\n\t * @param type The type of the underlying value\n\t * @returns The modified schema\n\t */\n\tpublic nullable<const Name extends string, const ValueType, const ValueBitSize extends number | null>(\n\t\tname: Name,\n\t\ttype: IType<ValueType, ValueBitSize>\n\t) {\n\t\treturn this.#addType(name, t.nullable(type));\n\t}\n\n\t/**\n\t * Adds a 64-bit big integer property to the schema, similar to {@link Schema.bigUint64}.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0n to 18_446_744_073_709_551_615n, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic snowflake<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.snowflake);\n\t}\n\n\t/**\n\t * Adds a constant value in the schema, this will **not** be serialized and\n\t * can be used to add extra data without making the payload bigger.\n\t *\n\t * @param name The name of the property\n\t * @param constantValue The value to add to the schema\n\t * @returns The modified schema\n\t */\n\tpublic constant<const Name extends string, const ValueType>(name: Name, constantValue: ValueType) {\n\t\treturn this.#addType(name, t.constant(constantValue));\n\t}\n\n\t/**\n\t * Iterates over the schema's property names.\n\t *\n\t * @returns An iterator for the schema's property names\n\t */\n\tpublic keys(): IterableIterator<KeyOfSchema<this>> {\n\t\treturn this.#types.keys() as IterableIterator<KeyOfSchema<this>>;\n\t}\n\n\t/**\n\t * Iterates over the schema's property values\n\t *\n\t * @returns An iterator for the schema's property values\n\t */\n\tpublic values(): IterableIterator<ValueOfSchema<this>> {\n\t\treturn this.#types.values() as IterableIterator<ValueOfSchema<this>>;\n\t}\n\n\t/**\n\t * Iterates over the schema's property entries\n\t *\n\t * @returns An iterator for the schema's property entries\n\t */\n\tpublic entries(): IterableIterator<EntryOfSchema<this>> {\n\t\treturn this.#types.entries() as IterableIterator<EntryOfSchema<this>>;\n\t}\n\n\t/**\n\t * Iterates over the schema's property entries\n\t *\n\t * @returns An iterator for the schema's property entries\n\t */\n\tpublic [Symbol.iterator](): IterableIterator<EntryOfSchema<this>> {\n\t\treturn this.entries();\n\t}\n\n\t#addType<const EntryName extends string, const ValueType, const ValueBitSize extends number | null, InputValue>(\n\t\tname: EntryName,\n\t\ttype: IType<ValueType, ValueBitSize, InputValue>\n\t): Merge<Id, Entries, EntryName, typeof type> {\n\t\tif (this.#types.has(name)) {\n\t\t\tthrow new Error(`Schema with id ${this.#id} already has a property with name \"${name}\"`);\n\t\t}\n\n\t\tthis.#types.set(name, type);\n\n\t\tif (type.BIT_SIZE === null) {\n\t\t\tthis.#bitSize = null;\n\t\t} else if (this.#bitSize !== null) {\n\t\t\tthis.#bitSize += type.BIT_SIZE;\n\t\t}\n\n\t\treturn this as unknown as Merge<Id, Entries, EntryName, typeof type>;\n\t}\n}\n\ntype Merge<\n\tId extends number,\n\tEntries extends object,\n\tEntryName extends string,\n\tEntryType extends IType<any, number | null>\n> = EntryName extends keyof Entries ? never : Schema<Id, { [K in EntryName | keyof Entries]: K extends keyof Entries ? Entries[K] : EntryType }>;\n\nexport type KeyOfSchema<SchemaValue extends object> = SchemaValue extends Schema<infer _, infer Type> ? keyof Type & string : never;\nexport type ValueOfSchema<SchemaValue extends object> =\n\tSchemaValue extends Schema<infer _, infer Type> ? { [K in keyof Type]: Type[K] }[keyof Type] : never;\nexport type EntryOfSchema<SchemaValue extends object> =\n\tSchemaValue extends Schema<infer _, infer Type> ? { [K in keyof Type]: readonly [K, Type[K]] }[keyof Type] : never;\n\nexport type UnwrapSchemaType<Type extends object> = Type extends IType<infer ValueType, infer _BitSize, infer _InputType> ? ValueType : never;\nexport type UnwrapSchemaEntries<Entries extends object> = { [K in keyof Entries]: UnwrapSchemaType<Entries[K] & object> } & object;\nexport type UnwrapSchema<SchemaValue extends object> = SchemaValue extends Schema<infer _Id, infer Type> ? UnwrapSchemaEntries<Type> : never;\n\ntype OmitNever<T> = { [K in keyof T as T[K] extends never ? never : K]: T[K] };\nexport type SerializeValueType<Type extends object> = Type extends IType<infer _ValueType, infer _BitSize, infer InputType> ? InputType : never;\nexport type SerializeValueEntries<Entries extends object> = OmitNever<{ [K in keyof Entries]: SerializeValueType<Entries[K] & object> }>;\nexport type SerializeValue<SchemaValue extends object> = SchemaValue extends Schema<infer _Id, infer Type> ? SerializeValueEntries<Type> : never;\n","import type { DuplexBuffer } from '../buffer/DuplexBuffer';\nimport { UnalignedUint16Array } from '../buffer/UnalignedUint16Array';\nimport { Pointer } from '../shared/Pointer';\nimport { Schema, type SerializeValue, type UnwrapSchema } from './Schema';\n\nexport class SchemaStore<Entries extends object = object> {\n\t/**\n\t * The default maximum array length for schemas\n\t */\n\tpublic defaultMaximumArrayLength: number;\n\n\treadonly #schemas = new Map<number, Schema>();\n\n\t/**\n\t * Creates a new schema store\n\t *\n\t * @param defaultMaximumArrayLength The default maximum array length for schemas\n\t */\n\tpublic constructor(defaultMaximumArrayLength = 100) {\n\t\tthis.defaultMaximumArrayLength = defaultMaximumArrayLength;\n\t}\n\n\t/**\n\t * Adds a schema to the store\n\t *\n\t * @param schema The schema to add to the store\n\t * @returns The modified store\n\t *\n\t * @remarks\n\t *\n\t * An error will be thrown if a schema with the same id already exists in the store.\n\t */\n\tpublic add<const Id extends number, const SchemaType extends object>(schema: Schema<Id, SchemaType>): Merge<Entries, Id, typeof schema> {\n\t\tif (this.#schemas.has(schema.id)) {\n\t\t\tthrow new Error(`Schema with id ${schema.id} already exists`);\n\t\t}\n\n\t\tthis.#schemas.set(schema.id, schema as any);\n\t\treturn this as unknown as Merge<Entries, Id, typeof schema>;\n\t}\n\n\t/**\n\t * Gets a schema from the store\n\t *\n\t * @param id The id of the schema to get\n\t * @returns The schema with the given id\n\t *\n\t * @remarks\n\t *\n\t * An error will be thrown if a schema with the given id does not exist in the store.\n\t */\n\tpublic get<const Id extends KeyOfStore<this>>(id: Id): Entries[Id] {\n\t\tconst schema = this.#schemas.get(id) as Entries[Id];\n\t\tif (!schema) throw new Error(`Schema with id ${id} does not exist`);\n\t\treturn schema;\n\t}\n\n\t/**\n\t * Serializes a value using the schema with the given id\n\t *\n\t * @param id The id of the schema to use for serialization\n\t * @param value The value to serialize\n\t * @returns The serialized string\n\t */\n\tpublic serialize<const Id extends KeyOfStore<this>>(id: Id, value: SerializeValue<Entries[Id] & object>): string {\n\t\treturn this.serializeRaw(id, value).toString();\n\t}\n\n\t/**\n\t * Serializes a value using the schema with the given id\n\t *\n\t * @param id The id of the schema to use for serialization\n\t * @param value The value to serialize\n\t * @returns The serialized buffer\n\t */\n\tpublic serializeRaw<const Id extends KeyOfStore<this>>(id: Id, value: SerializeValue<Entries[Id] & object>): DuplexBuffer {\n\t\tconst schema = this.get(id) as Schema<Id, object>;\n\t\treturn schema.serializeRaw(value, this.defaultMaximumArrayLength);\n\t}\n\n\t/**\n\t * Deserializes a buffer\n\t *\n\t * @param buffer The buffer to deserialize\n\t * @returns The resolved value, including the id of the schema used for deserialization\n\t */\n\tpublic deserialize(buffer: string | DuplexBuffer): DeserializationResult<Entries> {\n\t\tbuffer = UnalignedUint16Array.from(buffer);\n\t\tconst pointer = new Pointer();\n\t\tconst id = buffer.readInt16(pointer) as KeyOfStore<this>;\n\t\tconst schema = this.get(id) as Schema<number, object>;\n\t\treturn { id, data: schema.deserialize(buffer, pointer) } as unknown as DeserializationResult<Entries>;\n\t}\n\n\t/**\n\t * Gets the serialized ID from a buffer\n\t *\n\t * @param buffer The buffer to read the ID from\n\t * @returns The deserialized ID\n\t *\n\t * @remarks\n\t *\n\t * If an empty value is passed, a {@linkcode RangeError} will be thrown.\n\t */\n\tpublic getIdentifier(buffer: string | DuplexBuffer): KeyOfStore<this> {\n\t\tif (buffer.length === 0) {\n\t\t\tthrow new RangeError('Expected a non-empty value');\n\t\t}\n\n\t\tif (typeof buffer === 'string') {\n\t\t\t// We only need to read the first character:\n\t\t\tbuffer = UnalignedUint16Array.from(buffer[0]);\n\t\t}\n\n\t\treturn buffer.at(0) as KeyOfStore<this>;\n\t}\n\n\t/**\n\t * Iterates over the stores's schema identifiers.\n\t *\n\t * @returns An iterator for the stores's schema identifiers\n\t */\n\tpublic keys(): IterableIterator<KeyOfStore<this>> {\n\t\treturn this.#schemas.keys() as IterableIterator<KeyOfStore<this>>;\n\t}\n\n\t/**\n\t * Iterates over the stores's schemas.\n\t *\n\t * @returns An iterator for the stores's schemas\n\t */\n\tpublic values(): IterableIterator<ValueOfStore<this>> {\n\t\treturn this.#schemas.values() as IterableIterator<ValueOfStore<this>>;\n\t}\n\n\t/**\n\t * Iterates over the stores's schema entries.\n\t *\n\t * @returns An iterator for the stores's schema entries\n\t */\n\tpublic entries(): IterableIterator<EntryOfStore<this>> {\n\t\treturn this.#schemas.entries() as IterableIterator<EntryOfStore<this>>;\n\t}\n\n\t/**\n\t * Iterates over the stores's schema entries.\n\t *\n\t * @returns An iterator for the stores's schema entries\n\t */\n\tpublic [Symbol.iterator](): IterableIterator<EntryOfStore<this>> {\n\t\treturn this.entries();\n\t}\n}\n\ntype Merge<Entries extends object, Id extends number, Type extends object> = Id extends keyof Entries\n\t? never\n\t: SchemaStore<{ [K in Id | keyof Entries]: K extends keyof Entries ? Entries[K] : Type }>;\n\nexport type KeyOfStore<SchemaStoreValue extends object> = SchemaStoreValue extends SchemaStore<infer Schemas> ? keyof Schemas & number : never;\nexport type ValueOfStore<SchemaStoreValue extends object> =\n\tSchemaStoreValue extends SchemaStore<infer Schemas> ? Schemas[keyof Schemas & number] : never;\nexport type EntryOfStore<SchemaStoreValue extends object> =\n\tSchemaStoreValue extends SchemaStore<infer Schemas> ? { [K in keyof Schemas]: readonly [K & number, Schemas[K]] }[keyof Schemas] : never;\n\nexport type DeserializationResult<SchemaStoreEntries extends object> = {\n\t[K in keyof SchemaStoreEntries]: { id: K; data: UnwrapSchema<SchemaStoreEntries[K] & object> };\n}[keyof SchemaStoreEntries];\n","export type TypedArray =\n\t| Int8Array\n\t| Uint8Array\n\t| Uint8ClampedArray\n\t| Int16Array\n\t| Uint16Array\n\t| Int32Array\n\t| Uint32Array\n\t| Float32Array\n\t| Float64Array\n\t| BigInt64Array\n\t| BigUint64Array;\n\n/**\n * Converts a {@link TypedArray} to a string.\n *\n * @param buffer The buffer to convert\n * @returns The generated UTF16 string\n */\nexport function toUTF16(buffer: TypedArray) {\n\tlet result = '';\n\tfor (const value of new Uint16Array(buffer.buffer)) {\n\t\tresult += String.fromCharCode(value);\n\t}\n\n\treturn result;\n}\n\n/**\n * Converts a string to a {@link Uint16Array}.\n *\n * @param buffer The string to convert\n * @returns The generated {@link Uint16Array}\n */\nexport function fromUTF16(buffer: string): Uint16Array {\n\tconst result = new Uint16Array(buffer.length);\n\tfor (let i = 0; i < buffer.length; i++) {\n\t\tresult[i] = buffer.charCodeAt(i);\n\t}\n\n\treturn result;\n}\n"]}
|
package/dist/cjs/index.d.cts
CHANGED
|
@@ -721,6 +721,13 @@ type DeserializationResult<SchemaStoreEntries extends object> = {
|
|
|
721
721
|
};
|
|
722
722
|
}[keyof SchemaStoreEntries];
|
|
723
723
|
|
|
724
|
+
declare const codepointRanges: {
|
|
725
|
+
start: number;
|
|
726
|
+
end: number;
|
|
727
|
+
indexStart: number;
|
|
728
|
+
indexEnd: number;
|
|
729
|
+
}[];
|
|
730
|
+
|
|
724
731
|
type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array;
|
|
725
732
|
/**
|
|
726
733
|
* Converts a {@link TypedArray} to a string.
|
|
@@ -737,4 +744,4 @@ declare function toUTF16(buffer: TypedArray): string;
|
|
|
737
744
|
*/
|
|
738
745
|
declare function fromUTF16(buffer: string): Uint16Array;
|
|
739
746
|
|
|
740
|
-
export { ArrayType, BigInt32Type, BigInt64Type, BigUint32Type, BigUint64Type, BitType, BooleanType, ConstantType, type DeserializationResult, type DuplexBuffer, type EntryOfSchema, type EntryOfStore, FixedLengthArrayType, Float32Type, Float64Type, type IType, Int16Type, Int2Type, Int32Type, Int4Type, Int64Type, Int8Type, type KeyOfSchema, type KeyOfStore, NullableType, Pointer, type PointerLike, Schema, SchemaStore, type SerializeValue, type SerializeValueEntries, type SerializeValueType, SnowflakeType, StringType, type TypedArray, Uint16Type, Uint2Type, Uint32Type, Uint4Type, Uint64Type, Uint8Type, UnalignedUint16Array, type UnwrapSchema, type UnwrapSchemaEntries, type UnwrapSchemaType, type ValueOfSchema, type ValueOfStore, fromUTF16, t, toUTF16 };
|
|
747
|
+
export { ArrayType, BigInt32Type, BigInt64Type, BigUint32Type, BigUint64Type, BitType, BooleanType, ConstantType, type DeserializationResult, type DuplexBuffer, type EntryOfSchema, type EntryOfStore, FixedLengthArrayType, Float32Type, Float64Type, type IType, Int16Type, Int2Type, Int32Type, Int4Type, Int64Type, Int8Type, type KeyOfSchema, type KeyOfStore, NullableType, Pointer, type PointerLike, Schema, SchemaStore, type SerializeValue, type SerializeValueEntries, type SerializeValueType, SnowflakeType, StringType, type TypedArray, Uint16Type, Uint2Type, Uint32Type, Uint4Type, Uint64Type, Uint8Type, UnalignedUint16Array, type UnwrapSchema, type UnwrapSchemaEntries, type UnwrapSchemaType, type ValueOfSchema, type ValueOfStore, codepointRanges, fromUTF16, t, toUTF16 };
|
package/dist/esm/index.d.mts
CHANGED
|
@@ -721,6 +721,13 @@ type DeserializationResult<SchemaStoreEntries extends object> = {
|
|
|
721
721
|
};
|
|
722
722
|
}[keyof SchemaStoreEntries];
|
|
723
723
|
|
|
724
|
+
declare const codepointRanges: {
|
|
725
|
+
start: number;
|
|
726
|
+
end: number;
|
|
727
|
+
indexStart: number;
|
|
728
|
+
indexEnd: number;
|
|
729
|
+
}[];
|
|
730
|
+
|
|
724
731
|
type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array;
|
|
725
732
|
/**
|
|
726
733
|
* Converts a {@link TypedArray} to a string.
|
|
@@ -737,4 +744,4 @@ declare function toUTF16(buffer: TypedArray): string;
|
|
|
737
744
|
*/
|
|
738
745
|
declare function fromUTF16(buffer: string): Uint16Array;
|
|
739
746
|
|
|
740
|
-
export { ArrayType, BigInt32Type, BigInt64Type, BigUint32Type, BigUint64Type, BitType, BooleanType, ConstantType, type DeserializationResult, type DuplexBuffer, type EntryOfSchema, type EntryOfStore, FixedLengthArrayType, Float32Type, Float64Type, type IType, Int16Type, Int2Type, Int32Type, Int4Type, Int64Type, Int8Type, type KeyOfSchema, type KeyOfStore, NullableType, Pointer, type PointerLike, Schema, SchemaStore, type SerializeValue, type SerializeValueEntries, type SerializeValueType, SnowflakeType, StringType, type TypedArray, Uint16Type, Uint2Type, Uint32Type, Uint4Type, Uint64Type, Uint8Type, UnalignedUint16Array, type UnwrapSchema, type UnwrapSchemaEntries, type UnwrapSchemaType, type ValueOfSchema, type ValueOfStore, fromUTF16, t, toUTF16 };
|
|
747
|
+
export { ArrayType, BigInt32Type, BigInt64Type, BigUint32Type, BigUint64Type, BitType, BooleanType, ConstantType, type DeserializationResult, type DuplexBuffer, type EntryOfSchema, type EntryOfStore, FixedLengthArrayType, Float32Type, Float64Type, type IType, Int16Type, Int2Type, Int32Type, Int4Type, Int64Type, Int8Type, type KeyOfSchema, type KeyOfStore, NullableType, Pointer, type PointerLike, Schema, SchemaStore, type SerializeValue, type SerializeValueEntries, type SerializeValueType, SnowflakeType, StringType, type TypedArray, Uint16Type, Uint2Type, Uint32Type, Uint4Type, Uint64Type, Uint8Type, UnalignedUint16Array, type UnwrapSchema, type UnwrapSchemaEntries, type UnwrapSchemaType, type ValueOfSchema, type ValueOfStore, codepointRanges, fromUTF16, t, toUTF16 };
|