@candypoets/nipworker 0.0.49 → 0.0.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index2.js","sources":["../../../node_modules/flatbuffers/mjs/byte-buffer.js","../../../node_modules/flatbuffers/mjs/builder.js","../src/generated/nostr/fb/counter-pipe-config.ts","../src/generated/nostr/fb/get-public-key.ts","../src/generated/nostr/fb/kind-filter-pipe-config.ts","../src/generated/nostr/fb/template.ts","../src/generated/nostr/fb/publish.ts","../src/generated/nostr/fb/private-key.ts","../src/generated/nostr/fb/signer-type.ts","../src/generated/nostr/fb/set-signer.ts","../src/generated/nostr/fb/sign-event.ts","../src/generated/nostr/fb/npub-limiter-pipe-config.ts","../src/generated/nostr/fb/parse-pipe-config.ts","../src/generated/nostr/fb/proof-verification-pipe-config.ts","../src/generated/nostr/fb/save-to-db-pipe-config.ts","../src/generated/nostr/fb/serialize-events-pipe-config.ts","../src/generated/nostr/fb/pipe-config.ts","../src/generated/nostr/fb/pipe.ts","../src/generated/nostr/fb/pipeline-config.ts","../src/generated/nostr/fb/subscription-config.ts","../src/generated/nostr/fb/subscribe.ts","../src/generated/nostr/fb/unsubscribe.ts","../src/generated/nostr/fb/main-content.ts","../src/generated/nostr/fb/main-message.ts","../src/generated/nostr/fb/parsed-data-union.ts","../src/generated/nostr/fb/subscribe-kind.ts","../src/generated/nostr/fb/worker-message.ts","../src/lib/ByteString.ts","../src/lib/SharedBuffer.ts","../src/index.ts"],"sourcesContent":["import { FILE_IDENTIFIER_LENGTH, SIZEOF_INT } from \"./constants.js\";\nimport { int32, isLittleEndian, float32, float64 } from \"./utils.js\";\nimport { Encoding } from \"./encoding.js\";\nexport class ByteBuffer {\n /**\n * Create a new ByteBuffer with a given array of bytes (`Uint8Array`)\n */\n constructor(bytes_) {\n this.bytes_ = bytes_;\n this.position_ = 0;\n this.text_decoder_ = new TextDecoder();\n }\n /**\n * Create and allocate a new ByteBuffer with a given size.\n */\n static allocate(byte_size) {\n return new ByteBuffer(new Uint8Array(byte_size));\n }\n clear() {\n this.position_ = 0;\n }\n /**\n * Get the underlying `Uint8Array`.\n */\n bytes() {\n return this.bytes_;\n }\n /**\n * Get the buffer's position.\n */\n position() {\n return this.position_;\n }\n /**\n * Set the buffer's position.\n */\n setPosition(position) {\n this.position_ = position;\n }\n /**\n * Get the buffer's capacity.\n */\n capacity() {\n return this.bytes_.length;\n }\n readInt8(offset) {\n return this.readUint8(offset) << 24 >> 24;\n }\n readUint8(offset) {\n return this.bytes_[offset];\n }\n readInt16(offset) {\n return this.readUint16(offset) << 16 >> 16;\n }\n readUint16(offset) {\n return this.bytes_[offset] | this.bytes_[offset + 1] << 8;\n }\n readInt32(offset) {\n return this.bytes_[offset] | this.bytes_[offset + 1] << 8 | this.bytes_[offset + 2] << 16 | this.bytes_[offset + 3] << 24;\n }\n readUint32(offset) {\n return this.readInt32(offset) >>> 0;\n }\n readInt64(offset) {\n return BigInt.asIntN(64, BigInt(this.readUint32(offset)) + (BigInt(this.readUint32(offset + 4)) << BigInt(32)));\n }\n readUint64(offset) {\n return BigInt.asUintN(64, BigInt(this.readUint32(offset)) + (BigInt(this.readUint32(offset + 4)) << BigInt(32)));\n }\n readFloat32(offset) {\n int32[0] = this.readInt32(offset);\n return float32[0];\n }\n readFloat64(offset) {\n int32[isLittleEndian ? 0 : 1] = this.readInt32(offset);\n int32[isLittleEndian ? 1 : 0] = this.readInt32(offset + 4);\n return float64[0];\n }\n writeInt8(offset, value) {\n this.bytes_[offset] = value;\n }\n writeUint8(offset, value) {\n this.bytes_[offset] = value;\n }\n writeInt16(offset, value) {\n this.bytes_[offset] = value;\n this.bytes_[offset + 1] = value >> 8;\n }\n writeUint16(offset, value) {\n this.bytes_[offset] = value;\n this.bytes_[offset + 1] = value >> 8;\n }\n writeInt32(offset, value) {\n this.bytes_[offset] = value;\n this.bytes_[offset + 1] = value >> 8;\n this.bytes_[offset + 2] = value >> 16;\n this.bytes_[offset + 3] = value >> 24;\n }\n writeUint32(offset, value) {\n this.bytes_[offset] = value;\n this.bytes_[offset + 1] = value >> 8;\n this.bytes_[offset + 2] = value >> 16;\n this.bytes_[offset + 3] = value >> 24;\n }\n writeInt64(offset, value) {\n this.writeInt32(offset, Number(BigInt.asIntN(32, value)));\n this.writeInt32(offset + 4, Number(BigInt.asIntN(32, value >> BigInt(32))));\n }\n writeUint64(offset, value) {\n this.writeUint32(offset, Number(BigInt.asUintN(32, value)));\n this.writeUint32(offset + 4, Number(BigInt.asUintN(32, value >> BigInt(32))));\n }\n writeFloat32(offset, value) {\n float32[0] = value;\n this.writeInt32(offset, int32[0]);\n }\n writeFloat64(offset, value) {\n float64[0] = value;\n this.writeInt32(offset, int32[isLittleEndian ? 0 : 1]);\n this.writeInt32(offset + 4, int32[isLittleEndian ? 1 : 0]);\n }\n /**\n * Return the file identifier. Behavior is undefined for FlatBuffers whose\n * schema does not include a file_identifier (likely points at padding or the\n * start of a the root vtable).\n */\n getBufferIdentifier() {\n if (this.bytes_.length < this.position_ + SIZEOF_INT +\n FILE_IDENTIFIER_LENGTH) {\n throw new Error('FlatBuffers: ByteBuffer is too short to contain an identifier.');\n }\n let result = \"\";\n for (let i = 0; i < FILE_IDENTIFIER_LENGTH; i++) {\n result += String.fromCharCode(this.readInt8(this.position_ + SIZEOF_INT + i));\n }\n return result;\n }\n /**\n * Look up a field in the vtable, return an offset into the object, or 0 if the\n * field is not present.\n */\n __offset(bb_pos, vtable_offset) {\n const vtable = bb_pos - this.readInt32(bb_pos);\n return vtable_offset < this.readInt16(vtable) ? this.readInt16(vtable + vtable_offset) : 0;\n }\n /**\n * Initialize any Table-derived type to point to the union at the given offset.\n */\n __union(t, offset) {\n t.bb_pos = offset + this.readInt32(offset);\n t.bb = this;\n return t;\n }\n /**\n * Create a JavaScript string from UTF-8 data stored inside the FlatBuffer.\n * This allocates a new string and converts to wide chars upon each access.\n *\n * To avoid the conversion to string, pass Encoding.UTF8_BYTES as the\n * \"optionalEncoding\" argument. This is useful for avoiding conversion when\n * the data will just be packaged back up in another FlatBuffer later on.\n *\n * @param offset\n * @param opt_encoding Defaults to UTF16_STRING\n */\n __string(offset, opt_encoding) {\n offset += this.readInt32(offset);\n const length = this.readInt32(offset);\n offset += SIZEOF_INT;\n const utf8bytes = this.bytes_.subarray(offset, offset + length);\n if (opt_encoding === Encoding.UTF8_BYTES)\n return utf8bytes;\n else\n return this.text_decoder_.decode(utf8bytes);\n }\n /**\n * Handle unions that can contain string as its member, if a Table-derived type then initialize it,\n * if a string then return a new one\n *\n * WARNING: strings are immutable in JS so we can't change the string that the user gave us, this\n * makes the behaviour of __union_with_string different compared to __union\n */\n __union_with_string(o, offset) {\n if (typeof o === 'string') {\n return this.__string(offset);\n }\n return this.__union(o, offset);\n }\n /**\n * Retrieve the relative offset stored at \"offset\"\n */\n __indirect(offset) {\n return offset + this.readInt32(offset);\n }\n /**\n * Get the start of data of a vector whose offset is stored at \"offset\" in this object.\n */\n __vector(offset) {\n return offset + this.readInt32(offset) + SIZEOF_INT; // data starts after the length\n }\n /**\n * Get the length of a vector whose offset is stored at \"offset\" in this object.\n */\n __vector_len(offset) {\n return this.readInt32(offset + this.readInt32(offset));\n }\n __has_identifier(ident) {\n if (ident.length != FILE_IDENTIFIER_LENGTH) {\n throw new Error('FlatBuffers: file identifier must be length ' +\n FILE_IDENTIFIER_LENGTH);\n }\n for (let i = 0; i < FILE_IDENTIFIER_LENGTH; i++) {\n if (ident.charCodeAt(i) != this.readInt8(this.position() + SIZEOF_INT + i)) {\n return false;\n }\n }\n return true;\n }\n /**\n * A helper function for generating list for obj api\n */\n createScalarList(listAccessor, listLength) {\n const ret = [];\n for (let i = 0; i < listLength; ++i) {\n const val = listAccessor(i);\n if (val !== null) {\n ret.push(val);\n }\n }\n return ret;\n }\n /**\n * A helper function for generating list for obj api\n * @param listAccessor function that accepts an index and return data at that index\n * @param listLength listLength\n * @param res result list\n */\n createObjList(listAccessor, listLength) {\n const ret = [];\n for (let i = 0; i < listLength; ++i) {\n const val = listAccessor(i);\n if (val !== null) {\n ret.push(val.unpack());\n }\n }\n return ret;\n }\n}\n","import { ByteBuffer } from \"./byte-buffer.js\";\nimport { SIZEOF_SHORT, SIZE_PREFIX_LENGTH, SIZEOF_INT, FILE_IDENTIFIER_LENGTH } from \"./constants.js\";\nexport class Builder {\n /**\n * Create a FlatBufferBuilder.\n */\n constructor(opt_initial_size) {\n /** Minimum alignment encountered so far. */\n this.minalign = 1;\n /** The vtable for the current table. */\n this.vtable = null;\n /** The amount of fields we're actually using. */\n this.vtable_in_use = 0;\n /** Whether we are currently serializing a table. */\n this.isNested = false;\n /** Starting offset of the current struct/table. */\n this.object_start = 0;\n /** List of offsets of all vtables. */\n this.vtables = [];\n /** For the current vector being built. */\n this.vector_num_elems = 0;\n /** False omits default values from the serialized data */\n this.force_defaults = false;\n this.string_maps = null;\n this.text_encoder = new TextEncoder();\n let initial_size;\n if (!opt_initial_size) {\n initial_size = 1024;\n }\n else {\n initial_size = opt_initial_size;\n }\n /**\n * @type {ByteBuffer}\n * @private\n */\n this.bb = ByteBuffer.allocate(initial_size);\n this.space = initial_size;\n }\n clear() {\n this.bb.clear();\n this.space = this.bb.capacity();\n this.minalign = 1;\n this.vtable = null;\n this.vtable_in_use = 0;\n this.isNested = false;\n this.object_start = 0;\n this.vtables = [];\n this.vector_num_elems = 0;\n this.force_defaults = false;\n this.string_maps = null;\n }\n /**\n * In order to save space, fields that are set to their default value\n * don't get serialized into the buffer. Forcing defaults provides a\n * way to manually disable this optimization.\n *\n * @param forceDefaults true always serializes default values\n */\n forceDefaults(forceDefaults) {\n this.force_defaults = forceDefaults;\n }\n /**\n * Get the ByteBuffer representing the FlatBuffer. Only call this after you've\n * called finish(). The actual data starts at the ByteBuffer's current position,\n * not necessarily at 0.\n */\n dataBuffer() {\n return this.bb;\n }\n /**\n * Get the bytes representing the FlatBuffer. Only call this after you've\n * called finish().\n */\n asUint8Array() {\n return this.bb.bytes().subarray(this.bb.position(), this.bb.position() + this.offset());\n }\n /**\n * Prepare to write an element of `size` after `additional_bytes` have been\n * written, e.g. if you write a string, you need to align such the int length\n * field is aligned to 4 bytes, and the string data follows it directly. If all\n * you need to do is alignment, `additional_bytes` will be 0.\n *\n * @param size This is the of the new element to write\n * @param additional_bytes The padding size\n */\n prep(size, additional_bytes) {\n // Track the biggest thing we've ever aligned to.\n if (size > this.minalign) {\n this.minalign = size;\n }\n // Find the amount of alignment needed such that `size` is properly\n // aligned after `additional_bytes`\n const align_size = ((~(this.bb.capacity() - this.space + additional_bytes)) + 1) & (size - 1);\n // Reallocate the buffer if needed.\n while (this.space < align_size + size + additional_bytes) {\n const old_buf_size = this.bb.capacity();\n this.bb = Builder.growByteBuffer(this.bb);\n this.space += this.bb.capacity() - old_buf_size;\n }\n this.pad(align_size);\n }\n pad(byte_size) {\n for (let i = 0; i < byte_size; i++) {\n this.bb.writeInt8(--this.space, 0);\n }\n }\n writeInt8(value) {\n this.bb.writeInt8(this.space -= 1, value);\n }\n writeInt16(value) {\n this.bb.writeInt16(this.space -= 2, value);\n }\n writeInt32(value) {\n this.bb.writeInt32(this.space -= 4, value);\n }\n writeInt64(value) {\n this.bb.writeInt64(this.space -= 8, value);\n }\n writeFloat32(value) {\n this.bb.writeFloat32(this.space -= 4, value);\n }\n writeFloat64(value) {\n this.bb.writeFloat64(this.space -= 8, value);\n }\n /**\n * Add an `int8` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param value The `int8` to add the buffer.\n */\n addInt8(value) {\n this.prep(1, 0);\n this.writeInt8(value);\n }\n /**\n * Add an `int16` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param value The `int16` to add the buffer.\n */\n addInt16(value) {\n this.prep(2, 0);\n this.writeInt16(value);\n }\n /**\n * Add an `int32` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param value The `int32` to add the buffer.\n */\n addInt32(value) {\n this.prep(4, 0);\n this.writeInt32(value);\n }\n /**\n * Add an `int64` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param value The `int64` to add the buffer.\n */\n addInt64(value) {\n this.prep(8, 0);\n this.writeInt64(value);\n }\n /**\n * Add a `float32` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param value The `float32` to add the buffer.\n */\n addFloat32(value) {\n this.prep(4, 0);\n this.writeFloat32(value);\n }\n /**\n * Add a `float64` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param value The `float64` to add the buffer.\n */\n addFloat64(value) {\n this.prep(8, 0);\n this.writeFloat64(value);\n }\n addFieldInt8(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addInt8(value);\n this.slot(voffset);\n }\n }\n addFieldInt16(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addInt16(value);\n this.slot(voffset);\n }\n }\n addFieldInt32(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addInt32(value);\n this.slot(voffset);\n }\n }\n addFieldInt64(voffset, value, defaultValue) {\n if (this.force_defaults || value !== defaultValue) {\n this.addInt64(value);\n this.slot(voffset);\n }\n }\n addFieldFloat32(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addFloat32(value);\n this.slot(voffset);\n }\n }\n addFieldFloat64(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addFloat64(value);\n this.slot(voffset);\n }\n }\n addFieldOffset(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addOffset(value);\n this.slot(voffset);\n }\n }\n /**\n * Structs are stored inline, so nothing additional is being added. `d` is always 0.\n */\n addFieldStruct(voffset, value, defaultValue) {\n if (value != defaultValue) {\n this.nested(value);\n this.slot(voffset);\n }\n }\n /**\n * Structures are always stored inline, they need to be created right\n * where they're used. You'll get this assertion failure if you\n * created it elsewhere.\n */\n nested(obj) {\n if (obj != this.offset()) {\n throw new TypeError('FlatBuffers: struct must be serialized inline.');\n }\n }\n /**\n * Should not be creating any other object, string or vector\n * while an object is being constructed\n */\n notNested() {\n if (this.isNested) {\n throw new TypeError('FlatBuffers: object serialization must not be nested.');\n }\n }\n /**\n * Set the current vtable at `voffset` to the current location in the buffer.\n */\n slot(voffset) {\n if (this.vtable !== null)\n this.vtable[voffset] = this.offset();\n }\n /**\n * @returns Offset relative to the end of the buffer.\n */\n offset() {\n return this.bb.capacity() - this.space;\n }\n /**\n * Doubles the size of the backing ByteBuffer and copies the old data towards\n * the end of the new buffer (since we build the buffer backwards).\n *\n * @param bb The current buffer with the existing data\n * @returns A new byte buffer with the old data copied\n * to it. The data is located at the end of the buffer.\n *\n * uint8Array.set() formally takes {Array<number>|ArrayBufferView}, so to pass\n * it a uint8Array we need to suppress the type check:\n * @suppress {checkTypes}\n */\n static growByteBuffer(bb) {\n const old_buf_size = bb.capacity();\n // Ensure we don't grow beyond what fits in an int.\n if (old_buf_size & 0xC0000000) {\n throw new Error('FlatBuffers: cannot grow buffer beyond 2 gigabytes.');\n }\n const new_buf_size = old_buf_size << 1;\n const nbb = ByteBuffer.allocate(new_buf_size);\n nbb.setPosition(new_buf_size - old_buf_size);\n nbb.bytes().set(bb.bytes(), new_buf_size - old_buf_size);\n return nbb;\n }\n /**\n * Adds on offset, relative to where it will be written.\n *\n * @param offset The offset to add.\n */\n addOffset(offset) {\n this.prep(SIZEOF_INT, 0); // Ensure alignment is already done.\n this.writeInt32(this.offset() - offset + SIZEOF_INT);\n }\n /**\n * Start encoding a new object in the buffer. Users will not usually need to\n * call this directly. The FlatBuffers compiler will generate helper methods\n * that call this method internally.\n */\n startObject(numfields) {\n this.notNested();\n if (this.vtable == null) {\n this.vtable = [];\n }\n this.vtable_in_use = numfields;\n for (let i = 0; i < numfields; i++) {\n this.vtable[i] = 0; // This will push additional elements as needed\n }\n this.isNested = true;\n this.object_start = this.offset();\n }\n /**\n * Finish off writing the object that is under construction.\n *\n * @returns The offset to the object inside `dataBuffer`\n */\n endObject() {\n if (this.vtable == null || !this.isNested) {\n throw new Error('FlatBuffers: endObject called without startObject');\n }\n this.addInt32(0);\n const vtableloc = this.offset();\n // Trim trailing zeroes.\n let i = this.vtable_in_use - 1;\n // eslint-disable-next-line no-empty\n for (; i >= 0 && this.vtable[i] == 0; i--) { }\n const trimmed_size = i + 1;\n // Write out the current vtable.\n for (; i >= 0; i--) {\n // Offset relative to the start of the table.\n this.addInt16(this.vtable[i] != 0 ? vtableloc - this.vtable[i] : 0);\n }\n const standard_fields = 2; // The fields below:\n this.addInt16(vtableloc - this.object_start);\n const len = (trimmed_size + standard_fields) * SIZEOF_SHORT;\n this.addInt16(len);\n // Search for an existing vtable that matches the current one.\n let existing_vtable = 0;\n const vt1 = this.space;\n outer_loop: for (i = 0; i < this.vtables.length; i++) {\n const vt2 = this.bb.capacity() - this.vtables[i];\n if (len == this.bb.readInt16(vt2)) {\n for (let j = SIZEOF_SHORT; j < len; j += SIZEOF_SHORT) {\n if (this.bb.readInt16(vt1 + j) != this.bb.readInt16(vt2 + j)) {\n continue outer_loop;\n }\n }\n existing_vtable = this.vtables[i];\n break;\n }\n }\n if (existing_vtable) {\n // Found a match:\n // Remove the current vtable.\n this.space = this.bb.capacity() - vtableloc;\n // Point table to existing vtable.\n this.bb.writeInt32(this.space, existing_vtable - vtableloc);\n }\n else {\n // No match:\n // Add the location of the current vtable to the list of vtables.\n this.vtables.push(this.offset());\n // Point table to current vtable.\n this.bb.writeInt32(this.bb.capacity() - vtableloc, this.offset() - vtableloc);\n }\n this.isNested = false;\n return vtableloc;\n }\n /**\n * Finalize a buffer, poiting to the given `root_table`.\n */\n finish(root_table, opt_file_identifier, opt_size_prefix) {\n const size_prefix = opt_size_prefix ? SIZE_PREFIX_LENGTH : 0;\n if (opt_file_identifier) {\n const file_identifier = opt_file_identifier;\n this.prep(this.minalign, SIZEOF_INT +\n FILE_IDENTIFIER_LENGTH + size_prefix);\n if (file_identifier.length != FILE_IDENTIFIER_LENGTH) {\n throw new TypeError('FlatBuffers: file identifier must be length ' +\n FILE_IDENTIFIER_LENGTH);\n }\n for (let i = FILE_IDENTIFIER_LENGTH - 1; i >= 0; i--) {\n this.writeInt8(file_identifier.charCodeAt(i));\n }\n }\n this.prep(this.minalign, SIZEOF_INT + size_prefix);\n this.addOffset(root_table);\n if (size_prefix) {\n this.addInt32(this.bb.capacity() - this.space);\n }\n this.bb.setPosition(this.space);\n }\n /**\n * Finalize a size prefixed buffer, pointing to the given `root_table`.\n */\n finishSizePrefixed(root_table, opt_file_identifier) {\n this.finish(root_table, opt_file_identifier, true);\n }\n /**\n * This checks a required field has been set in a given table that has\n * just been constructed.\n */\n requiredField(table, field) {\n const table_start = this.bb.capacity() - table;\n const vtable_start = table_start - this.bb.readInt32(table_start);\n const ok = field < this.bb.readInt16(vtable_start) &&\n this.bb.readInt16(vtable_start + field) != 0;\n // If this fails, the caller will show what field needs to be set.\n if (!ok) {\n throw new TypeError('FlatBuffers: field ' + field + ' must be set');\n }\n }\n /**\n * Start a new array/vector of objects. Users usually will not call\n * this directly. The FlatBuffers compiler will create a start/end\n * method for vector types in generated code.\n *\n * @param elem_size The size of each element in the array\n * @param num_elems The number of elements in the array\n * @param alignment The alignment of the array\n */\n startVector(elem_size, num_elems, alignment) {\n this.notNested();\n this.vector_num_elems = num_elems;\n this.prep(SIZEOF_INT, elem_size * num_elems);\n this.prep(alignment, elem_size * num_elems); // Just in case alignment > int.\n }\n /**\n * Finish off the creation of an array and all its elements. The array must be\n * created with `startVector`.\n *\n * @returns The offset at which the newly created array\n * starts.\n */\n endVector() {\n this.writeInt32(this.vector_num_elems);\n return this.offset();\n }\n /**\n * Encode the string `s` in the buffer using UTF-8. If the string passed has\n * already been seen, we return the offset of the already written string\n *\n * @param s The string to encode\n * @return The offset in the buffer where the encoded string starts\n */\n createSharedString(s) {\n if (!s) {\n return 0;\n }\n if (!this.string_maps) {\n this.string_maps = new Map();\n }\n if (this.string_maps.has(s)) {\n return this.string_maps.get(s);\n }\n const offset = this.createString(s);\n this.string_maps.set(s, offset);\n return offset;\n }\n /**\n * Encode the string `s` in the buffer using UTF-8. If a Uint8Array is passed\n * instead of a string, it is assumed to contain valid UTF-8 encoded data.\n *\n * @param s The string to encode\n * @return The offset in the buffer where the encoded string starts\n */\n createString(s) {\n if (s === null || s === undefined) {\n return 0;\n }\n let utf8;\n if (s instanceof Uint8Array) {\n utf8 = s;\n }\n else {\n utf8 = this.text_encoder.encode(s);\n }\n this.addInt8(0);\n this.startVector(1, utf8.length, 1);\n this.bb.setPosition(this.space -= utf8.length);\n this.bb.bytes().set(utf8, this.space);\n return this.endVector();\n }\n /**\n * Create a byte vector.\n *\n * @param v The bytes to add\n * @returns The offset in the buffer where the byte vector starts\n */\n createByteVector(v) {\n if (v === null || v === undefined) {\n return 0;\n }\n this.startVector(1, v.length, 1);\n this.bb.setPosition(this.space -= v.length);\n this.bb.bytes().set(v, this.space);\n return this.endVector();\n }\n /**\n * A helper function to pack an object\n *\n * @returns offset of obj\n */\n createObjectOffset(obj) {\n if (obj === null) {\n return 0;\n }\n if (typeof obj === 'string') {\n return this.createString(obj);\n }\n else {\n return obj.pack(this);\n }\n }\n /**\n * A helper function to pack a list of object\n *\n * @returns list of offsets of each non null object\n */\n createObjectOffsetList(list) {\n const ret = [];\n for (let i = 0; i < list.length; ++i) {\n const val = list[i];\n if (val !== null) {\n ret.push(this.createObjectOffset(val));\n }\n else {\n throw new TypeError('FlatBuffers: Argument for createObjectOffsetList cannot contain null.');\n }\n }\n return ret;\n }\n createStructOffsetList(list, startFunc) {\n startFunc(this, list.length);\n this.createObjectOffsetList(list.slice().reverse());\n return this.endVector();\n }\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class CounterPipeConfig implements flatbuffers.IUnpackableObject<CounterPipeConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):CounterPipeConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsCounterPipeConfig(bb:flatbuffers.ByteBuffer, obj?:CounterPipeConfig):CounterPipeConfig {\n return (obj || new CounterPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsCounterPipeConfig(bb:flatbuffers.ByteBuffer, obj?:CounterPipeConfig):CounterPipeConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new CounterPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nkinds(index: number):number|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint16(this.bb!.__vector(this.bb_pos + offset) + index * 2) : 0;\n}\n\nkindsLength():number {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nkindsArray():Uint16Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? new Uint16Array(this.bb!.bytes().buffer, this.bb!.bytes().byteOffset + this.bb!.__vector(this.bb_pos + offset), this.bb!.__vector_len(this.bb_pos + offset)) : null;\n}\n\npubkey(): ByteString|null\npubkey(optionalEncoding:flatbuffers.Encoding): ByteString|Uint8Array|null\npubkey(optionalEncoding?:any): ByteString|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__stringByteString(this.bb_pos + offset, optionalEncoding) : null;\n}\n\nstatic startCounterPipeConfig(builder:flatbuffers.Builder) {\n builder.startObject(2);\n}\n\nstatic addKinds(builder:flatbuffers.Builder, kindsOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, kindsOffset, 0);\n}\n\nstatic createKindsVector(builder:flatbuffers.Builder, data:number[]|Uint16Array):flatbuffers.Offset;\n/**\n * @deprecated This Uint8Array overload will be removed in the future.\n */\nstatic createKindsVector(builder:flatbuffers.Builder, data:number[]|Uint8Array):flatbuffers.Offset;\nstatic createKindsVector(builder:flatbuffers.Builder, data:number[]|Uint16Array|Uint8Array):flatbuffers.Offset {\n builder.startVector(2, data.length, 2);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addInt16(data[i]!);\n }\n return builder.endVector();\n}\n\nstatic startKindsVector(builder:flatbuffers.Builder, numElems:number) {\n builder.startVector(2, numElems, 2);\n}\n\nstatic addPubkey(builder:flatbuffers.Builder, pubkeyOffset:flatbuffers.Offset) {\n builder.addFieldOffset(1, pubkeyOffset, 0);\n}\n\nstatic endCounterPipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // kinds\n builder.requiredField(offset, 6) // pubkey\n return offset;\n}\n\nstatic createCounterPipeConfig(builder:flatbuffers.Builder, kindsOffset:flatbuffers.Offset, pubkeyOffset:flatbuffers.Offset):flatbuffers.Offset {\n CounterPipeConfig.startCounterPipeConfig(builder);\n CounterPipeConfig.addKinds(builder, kindsOffset);\n CounterPipeConfig.addPubkey(builder, pubkeyOffset);\n return CounterPipeConfig.endCounterPipeConfig(builder);\n}\n\nunpack(): CounterPipeConfigT {\n return new CounterPipeConfigT(\n this.bb!.createScalarList<number>(this.kinds.bind(this), this.kindsLength()),\n this.pubkey()\n );\n}\n\n\nunpackTo(_o: CounterPipeConfigT): void {\n _o.kinds = this.bb!.createScalarList<number>(this.kinds.bind(this), this.kindsLength());\n _o.pubkey = this.pubkey();\n}\n}\n\nexport class CounterPipeConfigT implements flatbuffers.IGeneratedObject {\nconstructor(\n public kinds: (number)[] = [],\n public pubkey: ByteString|Uint8Array|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const kinds = CounterPipeConfig.createKindsVector(builder, this.kinds);\n const pubkey = (this.pubkey !== null ? builder.createString(this.pubkey!) : 0);\n\n return CounterPipeConfig.createCounterPipeConfig(builder,\n kinds,\n pubkey\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class GetPublicKey implements flatbuffers.IUnpackableObject<GetPublicKeyT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):GetPublicKey {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsGetPublicKey(bb:flatbuffers.ByteBuffer, obj?:GetPublicKey):GetPublicKey {\n return (obj || new GetPublicKey()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsGetPublicKey(bb:flatbuffers.ByteBuffer, obj?:GetPublicKey):GetPublicKey {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new GetPublicKey()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic startGetPublicKey(builder:flatbuffers.Builder) {\n builder.startObject(0);\n}\n\nstatic endGetPublicKey(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n return offset;\n}\n\nstatic createGetPublicKey(builder:flatbuffers.Builder):flatbuffers.Offset {\n GetPublicKey.startGetPublicKey(builder);\n return GetPublicKey.endGetPublicKey(builder);\n}\n\nunpack(): GetPublicKeyT {\n return new GetPublicKeyT();\n}\n\n\nunpackTo(_o: GetPublicKeyT): void {}\n}\n\nexport class GetPublicKeyT implements flatbuffers.IGeneratedObject {\nconstructor(){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n return GetPublicKey.createGetPublicKey(builder);\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class KindFilterPipeConfig implements flatbuffers.IUnpackableObject<KindFilterPipeConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):KindFilterPipeConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsKindFilterPipeConfig(bb:flatbuffers.ByteBuffer, obj?:KindFilterPipeConfig):KindFilterPipeConfig {\n return (obj || new KindFilterPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsKindFilterPipeConfig(bb:flatbuffers.ByteBuffer, obj?:KindFilterPipeConfig):KindFilterPipeConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new KindFilterPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nkinds(index: number):number|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint16(this.bb!.__vector(this.bb_pos + offset) + index * 2) : 0;\n}\n\nkindsLength():number {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nkindsArray():Uint16Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? new Uint16Array(this.bb!.bytes().buffer, this.bb!.bytes().byteOffset + this.bb!.__vector(this.bb_pos + offset), this.bb!.__vector_len(this.bb_pos + offset)) : null;\n}\n\nstatic startKindFilterPipeConfig(builder:flatbuffers.Builder) {\n builder.startObject(1);\n}\n\nstatic addKinds(builder:flatbuffers.Builder, kindsOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, kindsOffset, 0);\n}\n\nstatic createKindsVector(builder:flatbuffers.Builder, data:number[]|Uint16Array):flatbuffers.Offset;\n/**\n * @deprecated This Uint8Array overload will be removed in the future.\n */\nstatic createKindsVector(builder:flatbuffers.Builder, data:number[]|Uint8Array):flatbuffers.Offset;\nstatic createKindsVector(builder:flatbuffers.Builder, data:number[]|Uint16Array|Uint8Array):flatbuffers.Offset {\n builder.startVector(2, data.length, 2);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addInt16(data[i]!);\n }\n return builder.endVector();\n}\n\nstatic startKindsVector(builder:flatbuffers.Builder, numElems:number) {\n builder.startVector(2, numElems, 2);\n}\n\nstatic endKindFilterPipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // kinds\n return offset;\n}\n\nstatic createKindFilterPipeConfig(builder:flatbuffers.Builder, kindsOffset:flatbuffers.Offset):flatbuffers.Offset {\n KindFilterPipeConfig.startKindFilterPipeConfig(builder);\n KindFilterPipeConfig.addKinds(builder, kindsOffset);\n return KindFilterPipeConfig.endKindFilterPipeConfig(builder);\n}\n\nunpack(): KindFilterPipeConfigT {\n return new KindFilterPipeConfigT(\n this.bb!.createScalarList<number>(this.kinds.bind(this), this.kindsLength())\n );\n}\n\n\nunpackTo(_o: KindFilterPipeConfigT): void {\n _o.kinds = this.bb!.createScalarList<number>(this.kinds.bind(this), this.kindsLength());\n}\n}\n\nexport class KindFilterPipeConfigT implements flatbuffers.IGeneratedObject {\nconstructor(\n public kinds: (number)[] = []\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const kinds = KindFilterPipeConfig.createKindsVector(builder, this.kinds);\n\n return KindFilterPipeConfig.createKindFilterPipeConfig(builder,\n kinds\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { StringVec, StringVecT } from '../../nostr/fb/string-vec.js';\n\n\nexport class Template implements flatbuffers.IUnpackableObject<TemplateT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):Template {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsTemplate(bb:flatbuffers.ByteBuffer, obj?:Template):Template {\n return (obj || new Template()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsTemplate(bb:flatbuffers.ByteBuffer, obj?:Template):Template {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Template()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nkind():number {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint16(this.bb_pos + offset) : 0;\n}\n\ncontent(): ByteString|null\ncontent(optionalEncoding:flatbuffers.Encoding): ByteString|Uint8Array|null\ncontent(optionalEncoding?:any): ByteString|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__stringByteString(this.bb_pos + offset, optionalEncoding) : null;\n}\n\ntags(index: number, obj?:StringVec):StringVec|null {\n const offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? (obj || new StringVec()).__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) : null;\n}\n\ntagsLength():number {\n const offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nstatic startTemplate(builder:flatbuffers.Builder) {\n builder.startObject(3);\n}\n\nstatic addKind(builder:flatbuffers.Builder, kind:number) {\n builder.addFieldInt16(0, kind, 0);\n}\n\nstatic addContent(builder:flatbuffers.Builder, contentOffset:flatbuffers.Offset) {\n builder.addFieldOffset(1, contentOffset, 0);\n}\n\nstatic addTags(builder:flatbuffers.Builder, tagsOffset:flatbuffers.Offset) {\n builder.addFieldOffset(2, tagsOffset, 0);\n}\n\nstatic createTagsVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]!);\n }\n return builder.endVector();\n}\n\nstatic startTagsVector(builder:flatbuffers.Builder, numElems:number) {\n builder.startVector(4, numElems, 4);\n}\n\nstatic endTemplate(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 6) // content\n builder.requiredField(offset, 8) // tags\n return offset;\n}\n\nstatic createTemplate(builder:flatbuffers.Builder, kind:number, contentOffset:flatbuffers.Offset, tagsOffset:flatbuffers.Offset):flatbuffers.Offset {\n Template.startTemplate(builder);\n Template.addKind(builder, kind);\n Template.addContent(builder, contentOffset);\n Template.addTags(builder, tagsOffset);\n return Template.endTemplate(builder);\n}\n\nunpack(): TemplateT {\n return new TemplateT(\n this.kind(),\n this.content(),\n this.bb!.createObjList<StringVec, StringVecT>(this.tags.bind(this), this.tagsLength())\n );\n}\n\n\nunpackTo(_o: TemplateT): void {\n _o.kind = this.kind();\n _o.content = this.content();\n _o.tags = this.bb!.createObjList<StringVec, StringVecT>(this.tags.bind(this), this.tagsLength());\n}\n}\n\nexport class TemplateT implements flatbuffers.IGeneratedObject {\nconstructor(\n public kind: number = 0,\n public content: ByteString|Uint8Array|null = null,\n public tags: (StringVecT)[] = []\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const content = (this.content !== null ? builder.createString(this.content!) : 0);\n const tags = Template.createTagsVector(builder, builder.createObjectOffsetList(this.tags));\n\n return Template.createTemplate(builder,\n this.kind,\n content,\n tags\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { Template, TemplateT } from '../../nostr/fb/template.js';\n\n\nexport class Publish implements flatbuffers.IUnpackableObject<PublishT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):Publish {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsPublish(bb:flatbuffers.ByteBuffer, obj?:Publish):Publish {\n return (obj || new Publish()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsPublish(bb:flatbuffers.ByteBuffer, obj?:Publish):Publish {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Publish()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\npublishId(): ByteString|null\npublishId(optionalEncoding:flatbuffers.Encoding): ByteString|Uint8Array|null\npublishId(optionalEncoding?:any): ByteString|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__stringByteString(this.bb_pos + offset, optionalEncoding) : null;\n}\n\ntemplate(obj?:Template):Template|null {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? (obj || new Template()).__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) : null;\n}\n\nstatic startPublish(builder:flatbuffers.Builder) {\n builder.startObject(2);\n}\n\nstatic addPublishId(builder:flatbuffers.Builder, publishIdOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, publishIdOffset, 0);\n}\n\nstatic addTemplate(builder:flatbuffers.Builder, templateOffset:flatbuffers.Offset) {\n builder.addFieldOffset(1, templateOffset, 0);\n}\n\nstatic endPublish(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // publish_id\n builder.requiredField(offset, 6) // template\n return offset;\n}\n\n\nunpack(): PublishT {\n return new PublishT(\n this.publishId(),\n (this.template() !== null ? this.template()!.unpack() : null)\n );\n}\n\n\nunpackTo(_o: PublishT): void {\n _o.publishId = this.publishId();\n _o.template = (this.template() !== null ? this.template()!.unpack() : null);\n}\n}\n\nexport class PublishT implements flatbuffers.IGeneratedObject {\nconstructor(\n public publishId: ByteString|Uint8Array|null = null,\n public template: TemplateT|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const publishId = (this.publishId !== null ? builder.createString(this.publishId!) : 0);\n const template = (this.template !== null ? this.template!.pack(builder) : 0);\n\n Publish.startPublish(builder);\n Publish.addPublishId(builder, publishId);\n Publish.addTemplate(builder, template);\n\n return Publish.endPublish(builder);\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class PrivateKey implements flatbuffers.IUnpackableObject<PrivateKeyT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):PrivateKey {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsPrivateKey(bb:flatbuffers.ByteBuffer, obj?:PrivateKey):PrivateKey {\n return (obj || new PrivateKey()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsPrivateKey(bb:flatbuffers.ByteBuffer, obj?:PrivateKey):PrivateKey {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new PrivateKey()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nprivateKey(): ByteString|null\nprivateKey(optionalEncoding:flatbuffers.Encoding): ByteString|Uint8Array|null\nprivateKey(optionalEncoding?:any): ByteString|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__stringByteString(this.bb_pos + offset, optionalEncoding) : null;\n}\n\nstatic startPrivateKey(builder:flatbuffers.Builder) {\n builder.startObject(1);\n}\n\nstatic addPrivateKey(builder:flatbuffers.Builder, privateKeyOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, privateKeyOffset, 0);\n}\n\nstatic endPrivateKey(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // private_key\n return offset;\n}\n\nstatic createPrivateKey(builder:flatbuffers.Builder, privateKeyOffset:flatbuffers.Offset):flatbuffers.Offset {\n PrivateKey.startPrivateKey(builder);\n PrivateKey.addPrivateKey(builder, privateKeyOffset);\n return PrivateKey.endPrivateKey(builder);\n}\n\nunpack(): PrivateKeyT {\n return new PrivateKeyT(\n this.privateKey()\n );\n}\n\n\nunpackTo(_o: PrivateKeyT): void {\n _o.privateKey = this.privateKey();\n}\n}\n\nexport class PrivateKeyT implements flatbuffers.IGeneratedObject {\nconstructor(\n public privateKey: ByteString|Uint8Array|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const privateKey = (this.privateKey !== null ? builder.createString(this.privateKey!) : 0);\n\n return PrivateKey.createPrivateKey(builder,\n privateKey\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport { PrivateKey, PrivateKeyT } from '../../nostr/fb/private-key.js';\n\n\nexport enum SignerType {\n NONE = 0,\n PrivateKey = 1\n}\n\nexport function unionToSignerType(\n type: SignerType,\n accessor: (obj:PrivateKey) => PrivateKey|null\n): PrivateKey|null {\n switch(SignerType[type]) {\n case 'NONE': return null; \n case 'PrivateKey': return accessor(new PrivateKey())! as PrivateKey;\n default: return null;\n }\n}\n\nexport function unionListToSignerType(\n type: SignerType, \n accessor: (index: number, obj:PrivateKey) => PrivateKey|null, \n index: number\n): PrivateKey|null {\n switch(SignerType[type]) {\n case 'NONE': return null; \n case 'PrivateKey': return accessor(index, new PrivateKey())! as PrivateKey;\n default: return null;\n }\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { PrivateKey, PrivateKeyT } from '../../nostr/fb/private-key.js';\nimport { SignerType, unionToSignerType, unionListToSignerType } from '../../nostr/fb/signer-type.js';\n\n\nexport class SetSigner implements flatbuffers.IUnpackableObject<SetSignerT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):SetSigner {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsSetSigner(bb:flatbuffers.ByteBuffer, obj?:SetSigner):SetSigner {\n return (obj || new SetSigner()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsSetSigner(bb:flatbuffers.ByteBuffer, obj?:SetSigner):SetSigner {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new SetSigner()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nsignerTypeType():SignerType {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint8(this.bb_pos + offset) : SignerType.NONE;\n}\n\nsignerType<T extends flatbuffers.Table>(obj:any):any|null {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__union(obj, this.bb_pos + offset) : null;\n}\n\nstatic startSetSigner(builder:flatbuffers.Builder) {\n builder.startObject(2);\n}\n\nstatic addSignerTypeType(builder:flatbuffers.Builder, signerTypeType:SignerType) {\n builder.addFieldInt8(0, signerTypeType, SignerType.NONE);\n}\n\nstatic addSignerType(builder:flatbuffers.Builder, signerTypeOffset:flatbuffers.Offset) {\n builder.addFieldOffset(1, signerTypeOffset, 0);\n}\n\nstatic endSetSigner(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 6) // signer_type\n return offset;\n}\n\nstatic createSetSigner(builder:flatbuffers.Builder, signerTypeType:SignerType, signerTypeOffset:flatbuffers.Offset):flatbuffers.Offset {\n SetSigner.startSetSigner(builder);\n SetSigner.addSignerTypeType(builder, signerTypeType);\n SetSigner.addSignerType(builder, signerTypeOffset);\n return SetSigner.endSetSigner(builder);\n}\n\nunpack(): SetSignerT {\n return new SetSignerT(\n this.signerTypeType(),\n (() => {\n const temp = unionToSignerType(this.signerTypeType(), this.signerType.bind(this));\n if(temp === null) { return null; }\n return temp.unpack()\n })()\n );\n}\n\n\nunpackTo(_o: SetSignerT): void {\n _o.signerTypeType = this.signerTypeType();\n _o.signerType = (() => {\n const temp = unionToSignerType(this.signerTypeType(), this.signerType.bind(this));\n if(temp === null) { return null; }\n return temp.unpack()\n })();\n}\n}\n\nexport class SetSignerT implements flatbuffers.IGeneratedObject {\nconstructor(\n public signerTypeType: SignerType = SignerType.NONE,\n public signerType: PrivateKeyT|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const signerType = builder.createObjectOffset(this.signerType);\n\n return SetSigner.createSetSigner(builder,\n this.signerTypeType,\n signerType\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { Template, TemplateT } from '../../nostr/fb/template.js';\n\n\nexport class SignEvent implements flatbuffers.IUnpackableObject<SignEventT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):SignEvent {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsSignEvent(bb:flatbuffers.ByteBuffer, obj?:SignEvent):SignEvent {\n return (obj || new SignEvent()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsSignEvent(bb:flatbuffers.ByteBuffer, obj?:SignEvent):SignEvent {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new SignEvent()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\ntemplate(obj?:Template):Template|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? (obj || new Template()).__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) : null;\n}\n\nstatic startSignEvent(builder:flatbuffers.Builder) {\n builder.startObject(1);\n}\n\nstatic addTemplate(builder:flatbuffers.Builder, templateOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, templateOffset, 0);\n}\n\nstatic endSignEvent(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // template\n return offset;\n}\n\nstatic createSignEvent(builder:flatbuffers.Builder, templateOffset:flatbuffers.Offset):flatbuffers.Offset {\n SignEvent.startSignEvent(builder);\n SignEvent.addTemplate(builder, templateOffset);\n return SignEvent.endSignEvent(builder);\n}\n\nunpack(): SignEventT {\n return new SignEventT(\n (this.template() !== null ? this.template()!.unpack() : null)\n );\n}\n\n\nunpackTo(_o: SignEventT): void {\n _o.template = (this.template() !== null ? this.template()!.unpack() : null);\n}\n}\n\nexport class SignEventT implements flatbuffers.IGeneratedObject {\nconstructor(\n public template: TemplateT|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const template = (this.template !== null ? this.template!.pack(builder) : 0);\n\n return SignEvent.createSignEvent(builder,\n template\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class NpubLimiterPipeConfig implements flatbuffers.IUnpackableObject<NpubLimiterPipeConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):NpubLimiterPipeConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsNpubLimiterPipeConfig(bb:flatbuffers.ByteBuffer, obj?:NpubLimiterPipeConfig):NpubLimiterPipeConfig {\n return (obj || new NpubLimiterPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsNpubLimiterPipeConfig(bb:flatbuffers.ByteBuffer, obj?:NpubLimiterPipeConfig):NpubLimiterPipeConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new NpubLimiterPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nkind():number {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint16(this.bb_pos + offset) : 0;\n}\n\nlimitPerNpub():number {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.readUint32(this.bb_pos + offset) : 0;\n}\n\nmaxTotalNpubs():number {\n const offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.readUint32(this.bb_pos + offset) : 0;\n}\n\nstatic startNpubLimiterPipeConfig(builder:flatbuffers.Builder) {\n builder.startObject(3);\n}\n\nstatic addKind(builder:flatbuffers.Builder, kind:number) {\n builder.addFieldInt16(0, kind, 0);\n}\n\nstatic addLimitPerNpub(builder:flatbuffers.Builder, limitPerNpub:number) {\n builder.addFieldInt32(1, limitPerNpub, 0);\n}\n\nstatic addMaxTotalNpubs(builder:flatbuffers.Builder, maxTotalNpubs:number) {\n builder.addFieldInt32(2, maxTotalNpubs, 0);\n}\n\nstatic endNpubLimiterPipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n return offset;\n}\n\nstatic createNpubLimiterPipeConfig(builder:flatbuffers.Builder, kind:number, limitPerNpub:number, maxTotalNpubs:number):flatbuffers.Offset {\n NpubLimiterPipeConfig.startNpubLimiterPipeConfig(builder);\n NpubLimiterPipeConfig.addKind(builder, kind);\n NpubLimiterPipeConfig.addLimitPerNpub(builder, limitPerNpub);\n NpubLimiterPipeConfig.addMaxTotalNpubs(builder, maxTotalNpubs);\n return NpubLimiterPipeConfig.endNpubLimiterPipeConfig(builder);\n}\n\nunpack(): NpubLimiterPipeConfigT {\n return new NpubLimiterPipeConfigT(\n this.kind(),\n this.limitPerNpub(),\n this.maxTotalNpubs()\n );\n}\n\n\nunpackTo(_o: NpubLimiterPipeConfigT): void {\n _o.kind = this.kind();\n _o.limitPerNpub = this.limitPerNpub();\n _o.maxTotalNpubs = this.maxTotalNpubs();\n}\n}\n\nexport class NpubLimiterPipeConfigT implements flatbuffers.IGeneratedObject {\nconstructor(\n public kind: number = 0,\n public limitPerNpub: number = 0,\n public maxTotalNpubs: number = 0\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n return NpubLimiterPipeConfig.createNpubLimiterPipeConfig(builder,\n this.kind,\n this.limitPerNpub,\n this.maxTotalNpubs\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class ParsePipeConfig implements flatbuffers.IUnpackableObject<ParsePipeConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):ParsePipeConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsParsePipeConfig(bb:flatbuffers.ByteBuffer, obj?:ParsePipeConfig):ParsePipeConfig {\n return (obj || new ParsePipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsParsePipeConfig(bb:flatbuffers.ByteBuffer, obj?:ParsePipeConfig):ParsePipeConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new ParsePipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic startParsePipeConfig(builder:flatbuffers.Builder) {\n builder.startObject(0);\n}\n\nstatic endParsePipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n return offset;\n}\n\nstatic createParsePipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n ParsePipeConfig.startParsePipeConfig(builder);\n return ParsePipeConfig.endParsePipeConfig(builder);\n}\n\nunpack(): ParsePipeConfigT {\n return new ParsePipeConfigT();\n}\n\n\nunpackTo(_o: ParsePipeConfigT): void {}\n}\n\nexport class ParsePipeConfigT implements flatbuffers.IGeneratedObject {\nconstructor(){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n return ParsePipeConfig.createParsePipeConfig(builder);\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class ProofVerificationPipeConfig implements flatbuffers.IUnpackableObject<ProofVerificationPipeConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):ProofVerificationPipeConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsProofVerificationPipeConfig(bb:flatbuffers.ByteBuffer, obj?:ProofVerificationPipeConfig):ProofVerificationPipeConfig {\n return (obj || new ProofVerificationPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsProofVerificationPipeConfig(bb:flatbuffers.ByteBuffer, obj?:ProofVerificationPipeConfig):ProofVerificationPipeConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new ProofVerificationPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nmaxProofs():number {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint32(this.bb_pos + offset) : 0;\n}\n\nstatic startProofVerificationPipeConfig(builder:flatbuffers.Builder) {\n builder.startObject(1);\n}\n\nstatic addMaxProofs(builder:flatbuffers.Builder, maxProofs:number) {\n builder.addFieldInt32(0, maxProofs, 0);\n}\n\nstatic endProofVerificationPipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n return offset;\n}\n\nstatic createProofVerificationPipeConfig(builder:flatbuffers.Builder, maxProofs:number):flatbuffers.Offset {\n ProofVerificationPipeConfig.startProofVerificationPipeConfig(builder);\n ProofVerificationPipeConfig.addMaxProofs(builder, maxProofs);\n return ProofVerificationPipeConfig.endProofVerificationPipeConfig(builder);\n}\n\nunpack(): ProofVerificationPipeConfigT {\n return new ProofVerificationPipeConfigT(\n this.maxProofs()\n );\n}\n\n\nunpackTo(_o: ProofVerificationPipeConfigT): void {\n _o.maxProofs = this.maxProofs();\n}\n}\n\nexport class ProofVerificationPipeConfigT implements flatbuffers.IGeneratedObject {\nconstructor(\n public maxProofs: number = 0\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n return ProofVerificationPipeConfig.createProofVerificationPipeConfig(builder,\n this.maxProofs\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class SaveToDbPipeConfig implements flatbuffers.IUnpackableObject<SaveToDbPipeConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):SaveToDbPipeConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsSaveToDbPipeConfig(bb:flatbuffers.ByteBuffer, obj?:SaveToDbPipeConfig):SaveToDbPipeConfig {\n return (obj || new SaveToDbPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsSaveToDbPipeConfig(bb:flatbuffers.ByteBuffer, obj?:SaveToDbPipeConfig):SaveToDbPipeConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new SaveToDbPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic startSaveToDbPipeConfig(builder:flatbuffers.Builder) {\n builder.startObject(0);\n}\n\nstatic endSaveToDbPipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n return offset;\n}\n\nstatic createSaveToDbPipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n SaveToDbPipeConfig.startSaveToDbPipeConfig(builder);\n return SaveToDbPipeConfig.endSaveToDbPipeConfig(builder);\n}\n\nunpack(): SaveToDbPipeConfigT {\n return new SaveToDbPipeConfigT();\n}\n\n\nunpackTo(_o: SaveToDbPipeConfigT): void {}\n}\n\nexport class SaveToDbPipeConfigT implements flatbuffers.IGeneratedObject {\nconstructor(){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n return SaveToDbPipeConfig.createSaveToDbPipeConfig(builder);\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class SerializeEventsPipeConfig implements flatbuffers.IUnpackableObject<SerializeEventsPipeConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):SerializeEventsPipeConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsSerializeEventsPipeConfig(bb:flatbuffers.ByteBuffer, obj?:SerializeEventsPipeConfig):SerializeEventsPipeConfig {\n return (obj || new SerializeEventsPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsSerializeEventsPipeConfig(bb:flatbuffers.ByteBuffer, obj?:SerializeEventsPipeConfig):SerializeEventsPipeConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new SerializeEventsPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nsubscriptionId(): ByteString|null\nsubscriptionId(optionalEncoding:flatbuffers.Encoding): ByteString|Uint8Array|null\nsubscriptionId(optionalEncoding?:any): ByteString|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__stringByteString(this.bb_pos + offset, optionalEncoding) : null;\n}\n\nstatic startSerializeEventsPipeConfig(builder:flatbuffers.Builder) {\n builder.startObject(1);\n}\n\nstatic addSubscriptionId(builder:flatbuffers.Builder, subscriptionIdOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, subscriptionIdOffset, 0);\n}\n\nstatic endSerializeEventsPipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // subscription_id\n return offset;\n}\n\nstatic createSerializeEventsPipeConfig(builder:flatbuffers.Builder, subscriptionIdOffset:flatbuffers.Offset):flatbuffers.Offset {\n SerializeEventsPipeConfig.startSerializeEventsPipeConfig(builder);\n SerializeEventsPipeConfig.addSubscriptionId(builder, subscriptionIdOffset);\n return SerializeEventsPipeConfig.endSerializeEventsPipeConfig(builder);\n}\n\nunpack(): SerializeEventsPipeConfigT {\n return new SerializeEventsPipeConfigT(\n this.subscriptionId()\n );\n}\n\n\nunpackTo(_o: SerializeEventsPipeConfigT): void {\n _o.subscriptionId = this.subscriptionId();\n}\n}\n\nexport class SerializeEventsPipeConfigT implements flatbuffers.IGeneratedObject {\nconstructor(\n public subscriptionId: ByteString|Uint8Array|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const subscriptionId = (this.subscriptionId !== null ? builder.createString(this.subscriptionId!) : 0);\n\n return SerializeEventsPipeConfig.createSerializeEventsPipeConfig(builder,\n subscriptionId\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport { CounterPipeConfig, CounterPipeConfigT } from '../../nostr/fb/counter-pipe-config.js';\nimport { KindFilterPipeConfig, KindFilterPipeConfigT } from '../../nostr/fb/kind-filter-pipe-config.js';\nimport { NpubLimiterPipeConfig, NpubLimiterPipeConfigT } from '../../nostr/fb/npub-limiter-pipe-config.js';\nimport { ParsePipeConfig, ParsePipeConfigT } from '../../nostr/fb/parse-pipe-config.js';\nimport { ProofVerificationPipeConfig, ProofVerificationPipeConfigT } from '../../nostr/fb/proof-verification-pipe-config.js';\nimport { SaveToDbPipeConfig, SaveToDbPipeConfigT } from '../../nostr/fb/save-to-db-pipe-config.js';\nimport { SerializeEventsPipeConfig, SerializeEventsPipeConfigT } from '../../nostr/fb/serialize-events-pipe-config.js';\n\n\nexport enum PipeConfig {\n NONE = 0,\n ParsePipeConfig = 1,\n KindFilterPipeConfig = 2,\n CounterPipeConfig = 3,\n NpubLimiterPipeConfig = 4,\n SaveToDbPipeConfig = 5,\n SerializeEventsPipeConfig = 6,\n ProofVerificationPipeConfig = 7\n}\n\nexport function unionToPipeConfig(\n type: PipeConfig,\n accessor: (obj:CounterPipeConfig|KindFilterPipeConfig|NpubLimiterPipeConfig|ParsePipeConfig|ProofVerificationPipeConfig|SaveToDbPipeConfig|SerializeEventsPipeConfig) => CounterPipeConfig|KindFilterPipeConfig|NpubLimiterPipeConfig|ParsePipeConfig|ProofVerificationPipeConfig|SaveToDbPipeConfig|SerializeEventsPipeConfig|null\n): CounterPipeConfig|KindFilterPipeConfig|NpubLimiterPipeConfig|ParsePipeConfig|ProofVerificationPipeConfig|SaveToDbPipeConfig|SerializeEventsPipeConfig|null {\n switch(PipeConfig[type]) {\n case 'NONE': return null; \n case 'ParsePipeConfig': return accessor(new ParsePipeConfig())! as ParsePipeConfig;\n case 'KindFilterPipeConfig': return accessor(new KindFilterPipeConfig())! as KindFilterPipeConfig;\n case 'CounterPipeConfig': return accessor(new CounterPipeConfig())! as CounterPipeConfig;\n case 'NpubLimiterPipeConfig': return accessor(new NpubLimiterPipeConfig())! as NpubLimiterPipeConfig;\n case 'SaveToDbPipeConfig': return accessor(new SaveToDbPipeConfig())! as SaveToDbPipeConfig;\n case 'SerializeEventsPipeConfig': return accessor(new SerializeEventsPipeConfig())! as SerializeEventsPipeConfig;\n case 'ProofVerificationPipeConfig': return accessor(new ProofVerificationPipeConfig())! as ProofVerificationPipeConfig;\n default: return null;\n }\n}\n\nexport function unionListToPipeConfig(\n type: PipeConfig, \n accessor: (index: number, obj:CounterPipeConfig|KindFilterPipeConfig|NpubLimiterPipeConfig|ParsePipeConfig|ProofVerificationPipeConfig|SaveToDbPipeConfig|SerializeEventsPipeConfig) => CounterPipeConfig|KindFilterPipeConfig|NpubLimiterPipeConfig|ParsePipeConfig|ProofVerificationPipeConfig|SaveToDbPipeConfig|SerializeEventsPipeConfig|null, \n index: number\n): CounterPipeConfig|KindFilterPipeConfig|NpubLimiterPipeConfig|ParsePipeConfig|ProofVerificationPipeConfig|SaveToDbPipeConfig|SerializeEventsPipeConfig|null {\n switch(PipeConfig[type]) {\n case 'NONE': return null; \n case 'ParsePipeConfig': return accessor(index, new ParsePipeConfig())! as ParsePipeConfig;\n case 'KindFilterPipeConfig': return accessor(index, new KindFilterPipeConfig())! as KindFilterPipeConfig;\n case 'CounterPipeConfig': return accessor(index, new CounterPipeConfig())! as CounterPipeConfig;\n case 'NpubLimiterPipeConfig': return accessor(index, new NpubLimiterPipeConfig())! as NpubLimiterPipeConfig;\n case 'SaveToDbPipeConfig': return accessor(index, new SaveToDbPipeConfig())! as SaveToDbPipeConfig;\n case 'SerializeEventsPipeConfig': return accessor(index, new SerializeEventsPipeConfig())! as SerializeEventsPipeConfig;\n case 'ProofVerificationPipeConfig': return accessor(index, new ProofVerificationPipeConfig())! as ProofVerificationPipeConfig;\n default: return null;\n }\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { CounterPipeConfig, CounterPipeConfigT } from '../../nostr/fb/counter-pipe-config.js';\nimport { KindFilterPipeConfig, KindFilterPipeConfigT } from '../../nostr/fb/kind-filter-pipe-config.js';\nimport { NpubLimiterPipeConfig, NpubLimiterPipeConfigT } from '../../nostr/fb/npub-limiter-pipe-config.js';\nimport { ParsePipeConfig, ParsePipeConfigT } from '../../nostr/fb/parse-pipe-config.js';\nimport { PipeConfig, unionToPipeConfig, unionListToPipeConfig } from '../../nostr/fb/pipe-config.js';\nimport { ProofVerificationPipeConfig, ProofVerificationPipeConfigT } from '../../nostr/fb/proof-verification-pipe-config.js';\nimport { SaveToDbPipeConfig, SaveToDbPipeConfigT } from '../../nostr/fb/save-to-db-pipe-config.js';\nimport { SerializeEventsPipeConfig, SerializeEventsPipeConfigT } from '../../nostr/fb/serialize-events-pipe-config.js';\n\n\nexport class Pipe implements flatbuffers.IUnpackableObject<PipeT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):Pipe {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsPipe(bb:flatbuffers.ByteBuffer, obj?:Pipe):Pipe {\n return (obj || new Pipe()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsPipe(bb:flatbuffers.ByteBuffer, obj?:Pipe):Pipe {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Pipe()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nconfigType():PipeConfig {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint8(this.bb_pos + offset) : PipeConfig.NONE;\n}\n\nconfig<T extends flatbuffers.Table>(obj:any):any|null {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__union(obj, this.bb_pos + offset) : null;\n}\n\nstatic startPipe(builder:flatbuffers.Builder) {\n builder.startObject(2);\n}\n\nstatic addConfigType(builder:flatbuffers.Builder, configType:PipeConfig) {\n builder.addFieldInt8(0, configType, PipeConfig.NONE);\n}\n\nstatic addConfig(builder:flatbuffers.Builder, configOffset:flatbuffers.Offset) {\n builder.addFieldOffset(1, configOffset, 0);\n}\n\nstatic endPipe(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 6) // config\n return offset;\n}\n\nstatic createPipe(builder:flatbuffers.Builder, configType:PipeConfig, configOffset:flatbuffers.Offset):flatbuffers.Offset {\n Pipe.startPipe(builder);\n Pipe.addConfigType(builder, configType);\n Pipe.addConfig(builder, configOffset);\n return Pipe.endPipe(builder);\n}\n\nunpack(): PipeT {\n return new PipeT(\n this.configType(),\n (() => {\n const temp = unionToPipeConfig(this.configType(), this.config.bind(this));\n if(temp === null) { return null; }\n return temp.unpack()\n })()\n );\n}\n\n\nunpackTo(_o: PipeT): void {\n _o.configType = this.configType();\n _o.config = (() => {\n const temp = unionToPipeConfig(this.configType(), this.config.bind(this));\n if(temp === null) { return null; }\n return temp.unpack()\n })();\n}\n}\n\nexport class PipeT implements flatbuffers.IGeneratedObject {\nconstructor(\n public configType: PipeConfig = PipeConfig.NONE,\n public config: CounterPipeConfigT|KindFilterPipeConfigT|NpubLimiterPipeConfigT|ParsePipeConfigT|ProofVerificationPipeConfigT|SaveToDbPipeConfigT|SerializeEventsPipeConfigT|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const config = builder.createObjectOffset(this.config);\n\n return Pipe.createPipe(builder,\n this.configType,\n config\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { Pipe, PipeT } from '../../nostr/fb/pipe.js';\n\n\nexport class PipelineConfig implements flatbuffers.IUnpackableObject<PipelineConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):PipelineConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsPipelineConfig(bb:flatbuffers.ByteBuffer, obj?:PipelineConfig):PipelineConfig {\n return (obj || new PipelineConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsPipelineConfig(bb:flatbuffers.ByteBuffer, obj?:PipelineConfig):PipelineConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new PipelineConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\npipes(index: number, obj?:Pipe):Pipe|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? (obj || new Pipe()).__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) : null;\n}\n\npipesLength():number {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nstatic startPipelineConfig(builder:flatbuffers.Builder) {\n builder.startObject(1);\n}\n\nstatic addPipes(builder:flatbuffers.Builder, pipesOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, pipesOffset, 0);\n}\n\nstatic createPipesVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]!);\n }\n return builder.endVector();\n}\n\nstatic startPipesVector(builder:flatbuffers.Builder, numElems:number) {\n builder.startVector(4, numElems, 4);\n}\n\nstatic endPipelineConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // pipes\n return offset;\n}\n\nstatic createPipelineConfig(builder:flatbuffers.Builder, pipesOffset:flatbuffers.Offset):flatbuffers.Offset {\n PipelineConfig.startPipelineConfig(builder);\n PipelineConfig.addPipes(builder, pipesOffset);\n return PipelineConfig.endPipelineConfig(builder);\n}\n\nunpack(): PipelineConfigT {\n return new PipelineConfigT(\n this.bb!.createObjList<Pipe, PipeT>(this.pipes.bind(this), this.pipesLength())\n );\n}\n\n\nunpackTo(_o: PipelineConfigT): void {\n _o.pipes = this.bb!.createObjList<Pipe, PipeT>(this.pipes.bind(this), this.pipesLength());\n}\n}\n\nexport class PipelineConfigT implements flatbuffers.IGeneratedObject {\nconstructor(\n public pipes: (PipeT)[] = []\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const pipes = PipelineConfig.createPipesVector(builder, builder.createObjectOffsetList(this.pipes));\n\n return PipelineConfig.createPipelineConfig(builder,\n pipes\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { PipelineConfig, PipelineConfigT } from '../../nostr/fb/pipeline-config.js';\n\n\nexport class SubscriptionConfig implements flatbuffers.IUnpackableObject<SubscriptionConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):SubscriptionConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsSubscriptionConfig(bb:flatbuffers.ByteBuffer, obj?:SubscriptionConfig):SubscriptionConfig {\n return (obj || new SubscriptionConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsSubscriptionConfig(bb:flatbuffers.ByteBuffer, obj?:SubscriptionConfig):SubscriptionConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new SubscriptionConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\npipeline(obj?:PipelineConfig):PipelineConfig|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? (obj || new PipelineConfig()).__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) : null;\n}\n\ncloseOnEose():boolean {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? !!this.bb!.readInt8(this.bb_pos + offset) : false;\n}\n\ncacheFirst():boolean {\n const offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? !!this.bb!.readInt8(this.bb_pos + offset) : true;\n}\n\ntimeoutMs():bigint {\n const offset = this.bb!.__offset(this.bb_pos, 10);\n return offset ? this.bb!.readUint64(this.bb_pos + offset) : BigInt('0');\n}\n\nmaxEvents():number {\n const offset = this.bb!.__offset(this.bb_pos, 12);\n return offset ? this.bb!.readUint32(this.bb_pos + offset) : 0;\n}\n\nskipCache():boolean {\n const offset = this.bb!.__offset(this.bb_pos, 14);\n return offset ? !!this.bb!.readInt8(this.bb_pos + offset) : false;\n}\n\nforce():boolean {\n const offset = this.bb!.__offset(this.bb_pos, 16);\n return offset ? !!this.bb!.readInt8(this.bb_pos + offset) : false;\n}\n\nbytesPerEvent():number {\n const offset = this.bb!.__offset(this.bb_pos, 18);\n return offset ? this.bb!.readUint32(this.bb_pos + offset) : 0;\n}\n\nstatic startSubscriptionConfig(builder:flatbuffers.Builder) {\n builder.startObject(8);\n}\n\nstatic addPipeline(builder:flatbuffers.Builder, pipelineOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, pipelineOffset, 0);\n}\n\nstatic addCloseOnEose(builder:flatbuffers.Builder, closeOnEose:boolean) {\n builder.addFieldInt8(1, +closeOnEose, +false);\n}\n\nstatic addCacheFirst(builder:flatbuffers.Builder, cacheFirst:boolean) {\n builder.addFieldInt8(2, +cacheFirst, +true);\n}\n\nstatic addTimeoutMs(builder:flatbuffers.Builder, timeoutMs:bigint) {\n builder.addFieldInt64(3, timeoutMs, BigInt('0'));\n}\n\nstatic addMaxEvents(builder:flatbuffers.Builder, maxEvents:number) {\n builder.addFieldInt32(4, maxEvents, 0);\n}\n\nstatic addSkipCache(builder:flatbuffers.Builder, skipCache:boolean) {\n builder.addFieldInt8(5, +skipCache, +false);\n}\n\nstatic addForce(builder:flatbuffers.Builder, force:boolean) {\n builder.addFieldInt8(6, +force, +false);\n}\n\nstatic addBytesPerEvent(builder:flatbuffers.Builder, bytesPerEvent:number) {\n builder.addFieldInt32(7, bytesPerEvent, 0);\n}\n\nstatic endSubscriptionConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n return offset;\n}\n\nstatic createSubscriptionConfig(builder:flatbuffers.Builder, pipelineOffset:flatbuffers.Offset, closeOnEose:boolean, cacheFirst:boolean, timeoutMs:bigint, maxEvents:number, skipCache:boolean, force:boolean, bytesPerEvent:number):flatbuffers.Offset {\n SubscriptionConfig.startSubscriptionConfig(builder);\n SubscriptionConfig.addPipeline(builder, pipelineOffset);\n SubscriptionConfig.addCloseOnEose(builder, closeOnEose);\n SubscriptionConfig.addCacheFirst(builder, cacheFirst);\n SubscriptionConfig.addTimeoutMs(builder, timeoutMs);\n SubscriptionConfig.addMaxEvents(builder, maxEvents);\n SubscriptionConfig.addSkipCache(builder, skipCache);\n SubscriptionConfig.addForce(builder, force);\n SubscriptionConfig.addBytesPerEvent(builder, bytesPerEvent);\n return SubscriptionConfig.endSubscriptionConfig(builder);\n}\n\nunpack(): SubscriptionConfigT {\n return new SubscriptionConfigT(\n (this.pipeline() !== null ? this.pipeline()!.unpack() : null),\n this.closeOnEose(),\n this.cacheFirst(),\n this.timeoutMs(),\n this.maxEvents(),\n this.skipCache(),\n this.force(),\n this.bytesPerEvent()\n );\n}\n\n\nunpackTo(_o: SubscriptionConfigT): void {\n _o.pipeline = (this.pipeline() !== null ? this.pipeline()!.unpack() : null);\n _o.closeOnEose = this.closeOnEose();\n _o.cacheFirst = this.cacheFirst();\n _o.timeoutMs = this.timeoutMs();\n _o.maxEvents = this.maxEvents();\n _o.skipCache = this.skipCache();\n _o.force = this.force();\n _o.bytesPerEvent = this.bytesPerEvent();\n}\n}\n\nexport class SubscriptionConfigT implements flatbuffers.IGeneratedObject {\nconstructor(\n public pipeline: PipelineConfigT|null = null,\n public closeOnEose: boolean = false,\n public cacheFirst: boolean = true,\n public timeoutMs: bigint = BigInt('0'),\n public maxEvents: number = 0,\n public skipCache: boolean = false,\n public force: boolean = false,\n public bytesPerEvent: number = 0\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const pipeline = (this.pipeline !== null ? this.pipeline!.pack(builder) : 0);\n\n return SubscriptionConfig.createSubscriptionConfig(builder,\n pipeline,\n this.closeOnEose,\n this.cacheFirst,\n this.timeoutMs,\n this.maxEvents,\n this.skipCache,\n this.force,\n this.bytesPerEvent\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { Request, RequestT } from '../../nostr/fb/request.js';\nimport { SubscriptionConfig, SubscriptionConfigT } from '../../nostr/fb/subscription-config.js';\n\n\nexport class Subscribe implements flatbuffers.IUnpackableObject<SubscribeT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):Subscribe {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsSubscribe(bb:flatbuffers.ByteBuffer, obj?:Subscribe):Subscribe {\n return (obj || new Subscribe()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsSubscribe(bb:flatbuffers.ByteBuffer, obj?:Subscribe):Subscribe {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Subscribe()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nsubscriptionId(): ByteString|null\nsubscriptionId(optionalEncoding:flatbuffers.Encoding): ByteString|Uint8Array|null\nsubscriptionId(optionalEncoding?:any): ByteString|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__stringByteString(this.bb_pos + offset, optionalEncoding) : null;\n}\n\nrequests(index: number, obj?:Request):Request|null {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? (obj || new Request()).__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) : null;\n}\n\nrequestsLength():number {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nconfig(obj?:SubscriptionConfig):SubscriptionConfig|null {\n const offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? (obj || new SubscriptionConfig()).__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) : null;\n}\n\nstatic startSubscribe(builder:flatbuffers.Builder) {\n builder.startObject(3);\n}\n\nstatic addSubscriptionId(builder:flatbuffers.Builder, subscriptionIdOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, subscriptionIdOffset, 0);\n}\n\nstatic addRequests(builder:flatbuffers.Builder, requestsOffset:flatbuffers.Offset) {\n builder.addFieldOffset(1, requestsOffset, 0);\n}\n\nstatic createRequestsVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]!);\n }\n return builder.endVector();\n}\n\nstatic startRequestsVector(builder:flatbuffers.Builder, numElems:number) {\n builder.startVector(4, numElems, 4);\n}\n\nstatic addConfig(builder:flatbuffers.Builder, configOffset:flatbuffers.Offset) {\n builder.addFieldOffset(2, configOffset, 0);\n}\n\nstatic endSubscribe(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // subscription_id\n builder.requiredField(offset, 6) // requests\n builder.requiredField(offset, 8) // config\n return offset;\n}\n\n\nunpack(): SubscribeT {\n return new SubscribeT(\n this.subscriptionId(),\n this.bb!.createObjList<Request, RequestT>(this.requests.bind(this), this.requestsLength()),\n (this.config() !== null ? this.config()!.unpack() : null)\n );\n}\n\n\nunpackTo(_o: SubscribeT): void {\n _o.subscriptionId = this.subscriptionId();\n _o.requests = this.bb!.createObjList<Request, RequestT>(this.requests.bind(this), this.requestsLength());\n _o.config = (this.config() !== null ? this.config()!.unpack() : null);\n}\n}\n\nexport class SubscribeT implements flatbuffers.IGeneratedObject {\nconstructor(\n public subscriptionId: ByteString|Uint8Array|null = null,\n public requests: (RequestT)[] = [],\n public config: SubscriptionConfigT|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const subscriptionId = (this.subscriptionId !== null ? builder.createString(this.subscriptionId!) : 0);\n const requests = Subscribe.createRequestsVector(builder, builder.createObjectOffsetList(this.requests));\n const config = (this.config !== null ? this.config!.pack(builder) : 0);\n\n Subscribe.startSubscribe(builder);\n Subscribe.addSubscriptionId(builder, subscriptionId);\n Subscribe.addRequests(builder, requests);\n Subscribe.addConfig(builder, config);\n\n return Subscribe.endSubscribe(builder);\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class Unsubscribe implements flatbuffers.IUnpackableObject<UnsubscribeT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):Unsubscribe {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsUnsubscribe(bb:flatbuffers.ByteBuffer, obj?:Unsubscribe):Unsubscribe {\n return (obj || new Unsubscribe()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsUnsubscribe(bb:flatbuffers.ByteBuffer, obj?:Unsubscribe):Unsubscribe {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Unsubscribe()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nsubscriptionId(): ByteString|null\nsubscriptionId(optionalEncoding:flatbuffers.Encoding): ByteString|Uint8Array|null\nsubscriptionId(optionalEncoding?:any): ByteString|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__stringByteString(this.bb_pos + offset, optionalEncoding) : null;\n}\n\nstatic startUnsubscribe(builder:flatbuffers.Builder) {\n builder.startObject(1);\n}\n\nstatic addSubscriptionId(builder:flatbuffers.Builder, subscriptionIdOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, subscriptionIdOffset, 0);\n}\n\nstatic endUnsubscribe(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // subscription_id\n return offset;\n}\n\nstatic createUnsubscribe(builder:flatbuffers.Builder, subscriptionIdOffset:flatbuffers.Offset):flatbuffers.Offset {\n Unsubscribe.startUnsubscribe(builder);\n Unsubscribe.addSubscriptionId(builder, subscriptionIdOffset);\n return Unsubscribe.endUnsubscribe(builder);\n}\n\nunpack(): UnsubscribeT {\n return new UnsubscribeT(\n this.subscriptionId()\n );\n}\n\n\nunpackTo(_o: UnsubscribeT): void {\n _o.subscriptionId = this.subscriptionId();\n}\n}\n\nexport class UnsubscribeT implements flatbuffers.IGeneratedObject {\nconstructor(\n public subscriptionId: ByteString|Uint8Array|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const subscriptionId = (this.subscriptionId !== null ? builder.createString(this.subscriptionId!) : 0);\n\n return Unsubscribe.createUnsubscribe(builder,\n subscriptionId\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport { GetPublicKey, GetPublicKeyT } from '../../nostr/fb/get-public-key.js';\nimport { Publish, PublishT } from '../../nostr/fb/publish.js';\nimport { SetSigner, SetSignerT } from '../../nostr/fb/set-signer.js';\nimport { SignEvent, SignEventT } from '../../nostr/fb/sign-event.js';\nimport { Subscribe, SubscribeT } from '../../nostr/fb/subscribe.js';\nimport { Unsubscribe, UnsubscribeT } from '../../nostr/fb/unsubscribe.js';\n\n\nexport enum MainContent {\n NONE = 0,\n Subscribe = 1,\n Unsubscribe = 2,\n Publish = 3,\n SignEvent = 4,\n SetSigner = 5,\n GetPublicKey = 6\n}\n\nexport function unionToMainContent(\n type: MainContent,\n accessor: (obj:GetPublicKey|Publish|SetSigner|SignEvent|Subscribe|Unsubscribe) => GetPublicKey|Publish|SetSigner|SignEvent|Subscribe|Unsubscribe|null\n): GetPublicKey|Publish|SetSigner|SignEvent|Subscribe|Unsubscribe|null {\n switch(MainContent[type]) {\n case 'NONE': return null; \n case 'Subscribe': return accessor(new Subscribe())! as Subscribe;\n case 'Unsubscribe': return accessor(new Unsubscribe())! as Unsubscribe;\n case 'Publish': return accessor(new Publish())! as Publish;\n case 'SignEvent': return accessor(new SignEvent())! as SignEvent;\n case 'SetSigner': return accessor(new SetSigner())! as SetSigner;\n case 'GetPublicKey': return accessor(new GetPublicKey())! as GetPublicKey;\n default: return null;\n }\n}\n\nexport function unionListToMainContent(\n type: MainContent, \n accessor: (index: number, obj:GetPublicKey|Publish|SetSigner|SignEvent|Subscribe|Unsubscribe) => GetPublicKey|Publish|SetSigner|SignEvent|Subscribe|Unsubscribe|null, \n index: number\n): GetPublicKey|Publish|SetSigner|SignEvent|Subscribe|Unsubscribe|null {\n switch(MainContent[type]) {\n case 'NONE': return null; \n case 'Subscribe': return accessor(index, new Subscribe())! as Subscribe;\n case 'Unsubscribe': return accessor(index, new Unsubscribe())! as Unsubscribe;\n case 'Publish': return accessor(index, new Publish())! as Publish;\n case 'SignEvent': return accessor(index, new SignEvent())! as SignEvent;\n case 'SetSigner': return accessor(index, new SetSigner())! as SetSigner;\n case 'GetPublicKey': return accessor(index, new GetPublicKey())! as GetPublicKey;\n default: return null;\n }\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { GetPublicKey, GetPublicKeyT } from '../../nostr/fb/get-public-key.js';\nimport { MainContent, unionToMainContent, unionListToMainContent } from '../../nostr/fb/main-content.js';\nimport { Publish, PublishT } from '../../nostr/fb/publish.js';\nimport { SetSigner, SetSignerT } from '../../nostr/fb/set-signer.js';\nimport { SignEvent, SignEventT } from '../../nostr/fb/sign-event.js';\nimport { Subscribe, SubscribeT } from '../../nostr/fb/subscribe.js';\nimport { Unsubscribe, UnsubscribeT } from '../../nostr/fb/unsubscribe.js';\n\n\nexport class MainMessage implements flatbuffers.IUnpackableObject<MainMessageT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):MainMessage {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsMainMessage(bb:flatbuffers.ByteBuffer, obj?:MainMessage):MainMessage {\n return (obj || new MainMessage()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsMainMessage(bb:flatbuffers.ByteBuffer, obj?:MainMessage):MainMessage {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new MainMessage()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\ncontentType():MainContent {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint8(this.bb_pos + offset) : MainContent.NONE;\n}\n\ncontent<T extends flatbuffers.Table>(obj:any):any|null {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__union(obj, this.bb_pos + offset) : null;\n}\n\nstatic startMainMessage(builder:flatbuffers.Builder) {\n builder.startObject(2);\n}\n\nstatic addContentType(builder:flatbuffers.Builder, contentType:MainContent) {\n builder.addFieldInt8(0, contentType, MainContent.NONE);\n}\n\nstatic addContent(builder:flatbuffers.Builder, contentOffset:flatbuffers.Offset) {\n builder.addFieldOffset(1, contentOffset, 0);\n}\n\nstatic endMainMessage(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 6) // content\n return offset;\n}\n\nstatic createMainMessage(builder:flatbuffers.Builder, contentType:MainContent, contentOffset:flatbuffers.Offset):flatbuffers.Offset {\n MainMessage.startMainMessage(builder);\n MainMessage.addContentType(builder, contentType);\n MainMessage.addContent(builder, contentOffset);\n return MainMessage.endMainMessage(builder);\n}\n\nunpack(): MainMessageT {\n return new MainMessageT(\n this.contentType(),\n (() => {\n const temp = unionToMainContent(this.contentType(), this.content.bind(this));\n if(temp === null) { return null; }\n return temp.unpack()\n })()\n );\n}\n\n\nunpackTo(_o: MainMessageT): void {\n _o.contentType = this.contentType();\n _o.content = (() => {\n const temp = unionToMainContent(this.contentType(), this.content.bind(this));\n if(temp === null) { return null; }\n return temp.unpack()\n })();\n}\n}\n\nexport class MainMessageT implements flatbuffers.IGeneratedObject {\nconstructor(\n public contentType: MainContent = MainContent.NONE,\n public content: GetPublicKeyT|PublishT|SetSignerT|SignEventT|SubscribeT|UnsubscribeT|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const content = builder.createObjectOffset(this.content);\n\n return MainMessage.createMainMessage(builder,\n this.contentType,\n content\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nexport enum ParsedDataUnion {\n Kind0Parsed = 0,\n Kind1Parsed = 1,\n Kind3Parsed = 3,\n Kind4Parsed = 4,\n Kind6Parsed = 6,\n Kind7Parsed = 7,\n Kind17Parsed = 17,\n Kind7374Parsed = 7374,\n Kind7375Parsed = 7375,\n Kind7376Parsed = 7376,\n Kind9321Parsed = 9321,\n Kind9735Parsed = 9735,\n Kind10002Parsed = 10002,\n Kind10019Parsed = 10019,\n Kind17375Parsed = 17375,\n Kind39089Parsed = 39089\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nexport enum SubscribeKind {\n CachedEvent = 0,\n FetchedEvent = 1,\n Count = 2,\n ConnectionStatus = 3,\n Eoce = 4,\n BufferFull = 5\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { BufferFull, BufferFullT } from '../../nostr/fb/buffer-full.js';\nimport { ConnectionStatus, ConnectionStatusT } from '../../nostr/fb/connection-status.js';\nimport { CountResponse, CountResponseT } from '../../nostr/fb/count-response.js';\nimport { Eoce, EoceT } from '../../nostr/fb/eoce.js';\nimport { Message, unionToMessage, unionListToMessage } from '../../nostr/fb/message.js';\nimport { MessageType } from '../../nostr/fb/message-type.js';\nimport { ParsedEvent, ParsedEventT } from '../../nostr/fb/parsed-event.js';\nimport { Pubkey, PubkeyT } from '../../nostr/fb/pubkey.js';\nimport { SignedEvent, SignedEventT } from '../../nostr/fb/signed-event.js';\nimport { ValidProofs, ValidProofsT } from '../../nostr/fb/valid-proofs.js';\n\n\nexport class WorkerMessage implements flatbuffers.IUnpackableObject<WorkerMessageT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):WorkerMessage {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsWorkerMessage(bb:flatbuffers.ByteBuffer, obj?:WorkerMessage):WorkerMessage {\n return (obj || new WorkerMessage()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsWorkerMessage(bb:flatbuffers.ByteBuffer, obj?:WorkerMessage):WorkerMessage {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new WorkerMessage()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\ntype():MessageType {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint32(this.bb_pos + offset) : MessageType.ParsedNostrEvent;\n}\n\ncontentType():Message {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.readUint8(this.bb_pos + offset) : Message.NONE;\n}\n\ncontent<T extends flatbuffers.Table>(obj:any):any|null {\n const offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.__union(obj, this.bb_pos + offset) : null;\n}\n\nstatic startWorkerMessage(builder:flatbuffers.Builder) {\n builder.startObject(3);\n}\n\nstatic addType(builder:flatbuffers.Builder, type:MessageType) {\n builder.addFieldInt32(0, type, MessageType.ParsedNostrEvent);\n}\n\nstatic addContentType(builder:flatbuffers.Builder, contentType:Message) {\n builder.addFieldInt8(1, contentType, Message.NONE);\n}\n\nstatic addContent(builder:flatbuffers.Builder, contentOffset:flatbuffers.Offset) {\n builder.addFieldOffset(2, contentOffset, 0);\n}\n\nstatic endWorkerMessage(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n return offset;\n}\n\nstatic finishWorkerMessageBuffer(builder:flatbuffers.Builder, offset:flatbuffers.Offset) {\n builder.finish(offset);\n}\n\nstatic finishSizePrefixedWorkerMessageBuffer(builder:flatbuffers.Builder, offset:flatbuffers.Offset) {\n builder.finish(offset, undefined, true);\n}\n\nstatic createWorkerMessage(builder:flatbuffers.Builder, type:MessageType, contentType:Message, contentOffset:flatbuffers.Offset):flatbuffers.Offset {\n WorkerMessage.startWorkerMessage(builder);\n WorkerMessage.addType(builder, type);\n WorkerMessage.addContentType(builder, contentType);\n WorkerMessage.addContent(builder, contentOffset);\n return WorkerMessage.endWorkerMessage(builder);\n}\n\nunpack(): WorkerMessageT {\n return new WorkerMessageT(\n this.type(),\n this.contentType(),\n (() => {\n const temp = unionToMessage(this.contentType(), this.content.bind(this));\n if(temp === null) { return null; }\n return temp.unpack()\n })()\n );\n}\n\n\nunpackTo(_o: WorkerMessageT): void {\n _o.type = this.type();\n _o.contentType = this.contentType();\n _o.content = (() => {\n const temp = unionToMessage(this.contentType(), this.content.bind(this));\n if(temp === null) { return null; }\n return temp.unpack()\n })();\n}\n}\n\nexport class WorkerMessageT implements flatbuffers.IGeneratedObject {\nconstructor(\n public type: MessageType = MessageType.ParsedNostrEvent,\n public contentType: Message = Message.NONE,\n public content: BufferFullT|ConnectionStatusT|CountResponseT|EoceT|ParsedEventT|PubkeyT|SignedEventT|ValidProofsT|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const content = builder.createObjectOffset(this.content);\n\n return WorkerMessage.createWorkerMessage(builder,\n this.type,\n this.contentType,\n content\n );\n}\n}\n","// lib/ByteString.ts\nexport class ByteString {\n private readonly view: Uint8Array;\n private _utf8?: string;\n\n constructor(view: Uint8Array) {\n this.view = view;\n }\n\n /**\n * Access underlying bytes\n */\n bytes(): Uint8Array {\n return this.view;\n }\n\n /**\n * Fast numeric discriminant (FNV-1a hash).\n * Not cryptographically secure, but great for Map/Set keys.\n */\n fnv1aHash(): number {\n let h = 2166136261 >>> 0;\n for (let i = 0; i < this.view.length; i++) {\n h ^= this.view[i];\n h = Math.imul(h, 16777619);\n }\n return h >>> 0;\n }\n\n /**\n * Return a stable hex string representation.\n */\n toHex(): string {\n return Array.from(this.view)\n .map(b => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n }\n\n /**\n * Decode as UTF-8 string.\n * If backed by SharedArrayBuffer, makes a safe copy.\n */\n utf8String(): string {\n if (this._utf8 !== undefined) return this._utf8;\n\n if (this.view.buffer instanceof SharedArrayBuffer) {\n const copy = new Uint8Array(this.view);\n return (this._utf8 = new TextDecoder(\"utf-8\").decode(copy));\n }\n return (this._utf8 = new TextDecoder(\"utf-8\").decode(this.view));\n }\n\n /**\n * For debugging/logging\n */\n toString(): string {\n return this.utf8String();\n }\n\n /**\n * Equality check by bytes\n */\n equals(other: ByteString): boolean {\n if (this.view.length !== other.view.length) return false;\n for (let i = 0; i < this.view.length; i++) {\n if (this.view[i] !== other.view[i]) return false;\n }\n return true;\n }\n}\n","import { encode } from \"@msgpack/msgpack\";\nimport { ByteBuffer } from \"flatbuffers\";\nimport { WorkerMessage } from \"src/generated/nostr/fb\";\nimport { ByteString } from \"src/lib/ByteString\";\n\nconst WorkerToMainMessageBufferFull = Object.freeze({\n SubscriptionEvent: {\n subscription_id: \"\",\n event_type: \"BUFFER_FULL\",\n event_data: []\n }\n});\n\n(ByteBuffer.prototype as any).__stringByteString = function(offset: number): ByteString {\n // Follow indirect: add the relative offset stored at this location\n offset += this.readInt32(offset);\n\n // Now at the start of the string object → first 4 bytes = length\n const length = this.readInt32(offset);\n const start = offset + 4;\n\n // Slice out exactly [start, start+length]\n const slice = this.bytes().subarray(start, start + length);\n\n return new ByteString(slice);\n}\n\n\n/**\n * Utility library for reading from SharedArrayBuffer with 4-byte header approach\n * Header format: [0-3]: Write position (4 bytes, little endian)\n * Data format: [4+]: [4-byte length][msgpack event][4-byte length][msgpack event]...\n */\nexport class SharedBufferReader {\n /**\n * Initialize a buffer for writing - sets the write position header to 4\n * @param buffer The SharedArrayBuffer to initialize\n */\n static initializeBuffer(buffer: SharedArrayBuffer): void {\n const view = new DataView(buffer);\n // Set initial write position to 4 (right after the header)\n view.setUint32(0, 4, true);\n }\n\n /**\n * Write a message to the SharedArrayBuffer\n * @param buffer The SharedArrayBuffer to write to\n * @param data The data to write (already encoded as Uint8Array)\n * @returns True if written successfully, false if buffer is full\n */\n static writeMessage(buffer: SharedArrayBuffer, data: Uint8Array): boolean {\n const view = new DataView(buffer);\n const uint8View = new Uint8Array(buffer);\n\n // Get current write position\n const currentWritePosition = view.getUint32(0, true);\n\n // Check if there's enough space (4 bytes for length + data length)\n const requiredSpace = 4 + data.length;\n if (currentWritePosition + requiredSpace > buffer.byteLength) {\n console.warn(\"Buffer full, cannot write message\");\n return false;\n }\n\n // Write the length prefix (4 bytes, little endian)\n view.setUint32(currentWritePosition, data.length, true);\n\n // Write the actual data\n uint8View.set(data, currentWritePosition + 4);\n\n // Update the write position header\n const newWritePosition = currentWritePosition + requiredSpace;\n view.setUint32(0, newWritePosition, true);\n\n return true;\n }\n\n /**\n * Write a message object to the SharedArrayBuffer (handles encoding)\n * @param buffer The SharedArrayBuffer to write to\n * @param message The message object to write\n * @returns True if written successfully, false if buffer is full\n */\n static writeMessageObject(buffer: SharedArrayBuffer, message: any): boolean {\n try {\n const encoded = encode(message);\n return this.writeMessage(buffer, new Uint8Array(encoded));\n } catch (error) {\n console.error(\"Failed to encode message:\", error);\n return false;\n }\n }\n\n\n /**\n * Read new messages from SharedArrayBuffer since last read position\n * @param buffer The SharedArrayBuffer to read from\n * @param lastReadPosition Last position read (default: 0, meaning read from beginning)\n * @returns Object containing new messages and updated read position\n */\n static readMessages(buffer: SharedArrayBuffer, lastReadPosition: number = 0) {\n const view = new DataView(buffer);\n const uint8View = new Uint8Array(buffer);\n\n const currentWritePosition = view.getUint32(0, true);\n const dataStartOffset = 4;\n let currentPos = lastReadPosition < dataStartOffset\n ? dataStartOffset\n : lastReadPosition;\n if (currentWritePosition <= currentPos) {\n return { messages: [], newReadPosition: currentPos, hasNewData: false };\n }\n\n const maxMessages = 128;\n const messages: WorkerMessage[] = new Array(maxMessages);\n let msgCount = 0;\n\n try {\n while (currentPos < currentWritePosition) {\n // Stop if we've filled this batch; leave currentPos at the start of the next message\n if (msgCount >= maxMessages) break;\n\n // Need enough bytes for header\n if (currentPos + 4 > currentWritePosition) break;\n\n const headerPos = currentPos;\n const eventLength = view.getUint32(headerPos, true);\n const payloadStart = headerPos + 4;\n const nextPos = payloadStart + eventLength;\n\n // Need the full payload to be available\n if (nextPos > currentWritePosition) break;\n\n // ⚡ ZERO-COPY: create subarray view directly over SharedArrayBuffer\n const flatBufferData = uint8View.subarray(payloadStart, nextPos);\n\n // Parse directly\n const bb = new ByteBuffer(flatBufferData);\n const message = WorkerMessage.getRootAsWorkerMessage(bb);\n\n messages[msgCount++] = message;\n\n // Advance to next message boundary\n currentPos = nextPos;\n }\n\n messages.length = msgCount;\n return {\n messages,\n newReadPosition: currentPos,\n hasNewData: msgCount > 0,\n };\n } catch (error) {\n console.error('Failed to decode FlatBuffer data from SharedArrayBuffer:', error);\n messages.length = msgCount;\n return {\n messages,\n newReadPosition: lastReadPosition < dataStartOffset\n ? dataStartOffset\n : lastReadPosition,\n hasNewData: false,\n };\n }\n }\n\n\n /**\n * Read all messages from SharedArrayBuffer from the beginning (ignores lastReadPosition)\n * @param buffer The SharedArrayBuffer to read from\n * @returns Object containing all messages in the buffer\n */\n static readAllMessages(buffer: SharedArrayBuffer): {\n messages: WorkerMessage[];\n totalMessages: number;\n } {\n const result = this.readMessages(buffer, 0); // Always start from beginning\n return {\n messages: result.messages,\n totalMessages: result.messages.length,\n };\n }\n\n /**\n * Get current write position from buffer header\n * @param buffer The SharedArrayBuffer to read from\n * @returns Current write position\n */\n static getCurrentWritePosition(buffer: SharedArrayBuffer): number {\n const view = new DataView(buffer);\n return view.getUint32(0, true);\n }\n\n /**\n * Check if buffer has new data since last read\n * @param buffer The SharedArrayBuffer to check\n * @param lastReadPosition Last position read\n * @returns True if there's new data to read\n */\n static hasNewData(\n buffer: SharedArrayBuffer,\n lastReadPosition: number,\n ): boolean {\n const currentWritePosition = this.getCurrentWritePosition(buffer);\n const dataStartOffset = 4;\n const actualLastReadPosition = Math.max(lastReadPosition, dataStartOffset);\n return currentWritePosition > actualLastReadPosition;\n }\n\n /**\n * Calculate recommended buffer size based on request limits\n * @param totalEventLimit Total expected events across all requests\n * @param bytesPerEvent Estimated bytes per event (default: 3072)\n * @returns Recommended buffer size in bytes\n */\n static calculateBufferSize(\n totalEventLimit: number = 100,\n bytesPerEvent: number = 3072,\n ): number {\n const headerSize = 4;\n const dataSize = totalEventLimit * bytesPerEvent;\n const overhead = Math.floor(dataSize * 0.25); // 25% overhead\n return headerSize + dataSize + overhead;\n }\n}\n","import { SharedBufferReader } from \"src/lib/SharedBuffer\";\n\n\nimport type { NostrEvent } from \"nostr-tools\";\n\nimport RustWorker from \"@candypoets/rust-worker/worker.js?worker\";\nimport * as flatbuffers from \"flatbuffers\";\nimport { RequestObject, SubscriptionConfig } from \"src/types\";\nimport { GetPublicKeyT, MainContent, MainMessageT, PipelineConfigT, PrivateKeyT, PublishT, RequestT, SetSignerT, SignerType, SignEventT, StringVecT, SubscribeT, SubscriptionConfigT, TemplateT, UnsubscribeT } from \"./generated/nostr/fb\";\n\nimport wasmAsset from \"@candypoets/rust-worker/rust_worker_bg.wasm?url\";\n\n/**\n * Configuration for the Nostr Manager\n */\nexport interface NostrManagerConfig {\n bufferKey: string;\n maxBufferSize: number;\n}\n\n// Globals for single fetch + per-worker copies\nlet originalWasmBuffer: ArrayBuffer | null = null;\nlet fetchPromise: Promise<void> | null = null;\n\nasync function ensureOriginalBuffer(): Promise<void> {\n if (fetchPromise) {\n return fetchPromise;\n }\n\n fetchPromise = fetch(wasmAsset).then((res) => {\n if (!res.ok) {\n throw new Error(`Failed to fetch WASM: ${res.status} ${res.statusText}`);\n }\n return res.arrayBuffer();\n }).then((buffer) => {\n originalWasmBuffer = buffer; // Cache the original (never transfer this one)\n }).catch((error) => {\n console.error(\"WASM fetch failed:\", error);\n throw error;\n });\n\n return fetchPromise;\n}\n\nasync function getWasmBuffer(): Promise<ArrayBuffer> {\n await ensureOriginalBuffer();\n if (!originalWasmBuffer) {\n throw new Error(\"Original WASM buffer not loaded\");\n }\n // Create a fresh copy for this worker (transferable, doesn't detach original)\n console.log(\"WASM buffer fetched and sending\");\n return originalWasmBuffer.slice(0);\n}\n\n/**\n * Pure TypeScript NostrClient that manages worker communication and state.\n * Uses WASM utilities for heavy lifting (encoding, decoding, crypto).\n */\nexport class NostrManager {\n\n private worker: Worker;\n private textEncoder = new TextEncoder();\n private subscriptions = new Map<\n string,\n {\n buffer: SharedArrayBuffer;\n options: SubscriptionConfig;\n refCount: number;\n }\n >();\n private publishes = new Map<string, {buffer: SharedArrayBuffer}>();\n private signers = new Map<string, string>(); // name -> secret key hex\n\n private signCB = (event: any) => {}\n private eventTarget = new EventTarget();\n\n public PERPETUAL_SUBSCRIPTIONS = [\"notifications\", \"starterpack\"];\n\n public ready: Promise<void>;\n\n constructor(config: NostrManagerConfig = {bufferKey: \"general\", maxBufferSize: 5_000_000}) {\n\n this.worker = this.createWorker();\n\n this.setupWorkerListener();\n\n this.ready = getWasmBuffer().then((wasmBuffer) => {\n this.worker.postMessage(\n { type: \"init\", payload: { bufferKey: config.bufferKey, maxBufferSize: config.maxBufferSize, wasmBuffer } },\n [wasmBuffer] // Transfer the copy (zero-copy to this worker)\n );\n }).catch((error) => {\n console.error(\"Failed to initialize worker with WASM:\", error);\n // Optionally terminate: this.worker.terminate();\n });\n }\n\n private createWorker(): Worker {\n return new RustWorker();\n }\n\n private setupWorkerListener() {\n this.worker.onmessage = async (event) => {\n const id = typeof event.data === \"string\" ? event.data : undefined;\n try {\n if (event.data.startsWith('{\"id\":')) {\n const parsed = JSON.parse(event.data);\n this.signCB(parsed);\n }\n } catch (error) {\n // console.error(\"Error parsing event data:\", error);\n }\n\n if (!id) return;\n\n // Prefer O(1) routing via your existing maps\n if (this.subscriptions.has(id)) {\n // Notify only the listeners for this subscription\n this.dispatch(`subscription:${id}`, id);\n return;\n }\n\n if (this.publishes.has(id)) {\n this.dispatch(`publish:${id}`, id);\n return;\n }\n };\n\n this.worker.onerror = (error) => {\n console.error(\"Worker error:\", error);\n };\n }\n\n public createShortId(input: string): string {\n if (input.length < 64) return input;\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n const shortId = Math.abs(hash).toString(36);\n return shortId.substring(0, 63);\n }\n\n public addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: AddEventListenerOptions\n ): void {\n this.eventTarget.addEventListener(type, listener as EventListener, options);\n }\n\n public removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: EventListenerOptions\n ): void {\n this.eventTarget.removeEventListener(type, listener as EventListener, options);\n }\n\n private dispatch(type: string, detail?: unknown): void {\n this.eventTarget.dispatchEvent(new CustomEvent(type, { detail }));\n }\n\n subscribe(\n subscriptionId: string,\n requests: RequestObject[],\n options: SubscriptionConfig,\n ): SharedArrayBuffer {\n const subId = this.createShortId(subscriptionId);\n\n const existingSubscription = this.subscriptions.get(subId);\n\n if (existingSubscription) {\n existingSubscription.refCount++;\n return existingSubscription.buffer;\n }\n\n\n const totalLimit = requests.reduce(\n (sum, req) => sum + (req.limit || 100),\n 0,\n );\n\n const bufferSize = SharedBufferReader.calculateBufferSize(\n totalLimit,\n options.bytesPerEvent,\n );\n\n let initialMessage: Uint8Array<ArrayBufferLike> = new Uint8Array();\n\n const buffer = new SharedArrayBuffer(bufferSize + initialMessage.length);\n\n // Initialize the buffer (sets write position to 4)\n SharedBufferReader.initializeBuffer(buffer);\n\n // Write the initial message if provided\n if(initialMessage.length > 0) {\n const success = SharedBufferReader.writeMessage(buffer, initialMessage);\n if (!success) {\n console.error(\"Failed to write initial message to buffer\");\n }\n }\n\n this.subscriptions.set(subId, {\n buffer,\n options,\n refCount: 1,\n });\n\n const optionsT = new SubscriptionConfigT(\n new PipelineConfigT((options.pipeline || [])),\n options.closeOnEose,\n options.cacheFirst,\n options.timeoutMs ? BigInt(options.timeoutMs) : undefined,\n options.maxEvents,\n options.skipCache,\n options.force,\n options.bytesPerEvent\n );\n\n\n\n const subscribeT = new SubscribeT(\n this.textEncoder.encode(subId),\n requests.map(r =>\n new RequestT(\n r.ids,\n r.authors,\n r.kinds,\n Object.entries(r.tags || {}).flatMap(([key, values]) => new StringVecT([key, ...values])),\n r.limit,\n r.since,\n r.until,\n this.textEncoder.encode(r.search),\n r.relays,\n r.closeOnEOSE,\n r.cacheFirst\n )\n ),\n optionsT)\n\n // Wrap in MainMessageT as Subscribe variant\n const mainT = new MainMessageT(MainContent.Subscribe, subscribeT);\n\n // Serialize with FlatBuffers builder\n const builder = new flatbuffers.Builder(2048);\n const mainOffset = mainT.pack(builder);\n builder.finish(mainOffset);\n const serializedMessage = builder.asUint8Array();\n\n try {\n this.worker.postMessage({\n serializedMessage,\n sharedBuffer: buffer,\n });\n\n return buffer;\n } catch (error) {\n this.subscriptions.delete(subId);\n throw error;\n }\n }\n\n getBuffer(subId: string): SharedArrayBuffer | undefined {\n const existingSubscription = this.subscriptions.get(subId);\n if (existingSubscription) {\n existingSubscription.refCount++;\n return existingSubscription.buffer;\n }\n return undefined;\n }\n\n unsubscribe(subscriptionId: string): void {\n const subId =\n subscriptionId.length < 64\n ? subscriptionId\n : this.createShortId(subscriptionId);\n const subscription = this.subscriptions.get(subId);\n if (subscription) {\n subscription.refCount--;\n }\n }\n\n publish(publish_id: string, event: NostrEvent): SharedArrayBuffer {\n\n // a publish buffer fit in 3kb\n const buffer = new SharedArrayBuffer(3072);\n\n // Initialize the buffer (sets write position to 4)\n SharedBufferReader.initializeBuffer(buffer);\n\n try {\n const templateT = new TemplateT(event.kind, this.textEncoder.encode(event.content), event.tags.map(t => new StringVecT(t)) || []);\n const publishT = new PublishT(this.textEncoder.encode(publish_id), templateT);\n\n // Wrap in MainMessageT as Publish variant\n const mainT = new MainMessageT(MainContent.Publish, publishT);\n\n // Serialize with FlatBuffers builder\n const builder = new flatbuffers.Builder(2048);\n const mainOffset = mainT.pack(builder);\n builder.finish(mainOffset);\n const serializedMessage = builder.asUint8Array();\n\n this.worker.postMessage({ serializedMessage, sharedBuffer: buffer });\n\n this.publishes.set(publish_id, {buffer});\n return buffer;\n } catch (error) {\n console.error(\"Failed to publish event:\", error);\n throw error;\n }\n }\n\n setSigner(name: string, secretKeyHex: string): void {\n this.ready.then(() => {\n console.log('setSigner', name, secretKeyHex);\n\n // Create the PrivateKeyT object\n const privateKeyT = new PrivateKeyT(this.textEncoder.encode(secretKeyHex));\n\n // Create the SetSignerT object and set the union\n const setSignerT = new SetSignerT(SignerType.PrivateKey, privateKeyT);\n\n // Create the MainMessageT with the properly constructed SetSignerT\n const mainT = new MainMessageT(MainContent.SetSigner, setSignerT);\n\n // Serialize with FlatBuffers builder (unchanged)\n const builder = new flatbuffers.Builder(2048);\n const mainOffset = mainT.pack(builder);\n builder.finish(mainOffset);\n const serializedMessage = builder.asUint8Array();\n\n this.worker.postMessage(serializedMessage);\n this.signers.set(name, secretKeyHex);\n })\n }\n\n signEvent(event: NostrEvent, cb: (event: NostrEvent) => void) {\n const mainT = new MainMessageT(MainContent.SignEvent, new SignEventT(new TemplateT(event.kind, this.textEncoder.encode(event.content), event.tags.map(t => new StringVecT(t)))));\n\n // Serialize with FlatBuffers builder\n const builder = new flatbuffers.Builder(2048);\n const mainOffset = mainT.pack(builder);\n builder.finish(mainOffset);\n const serializedMessage = builder.asUint8Array();\n this.signCB = cb;\n this.worker.postMessage(serializedMessage);\n }\n\n getPublicKey() {\n const mainT = new MainMessageT(MainContent.GetPublicKey, new GetPublicKeyT());\n\n // Serialize with FlatBuffers builder\n const builder = new flatbuffers.Builder(2048);\n const mainOffset = mainT.pack(builder);\n builder.finish(mainOffset);\n const serializedMessage = builder.asUint8Array();\n\n this.worker.postMessage(serializedMessage);\n }\n\n cleanup(): void {\n const subscriptionsToDelete: string[] = [];\n\n for (const [subId, subscription] of this.subscriptions.entries()) {\n if (\n subscription.refCount <= 0 &&\n !this.PERPETUAL_SUBSCRIPTIONS.includes(subId)\n ) {\n subscriptionsToDelete.push(subId);\n }\n }\n\n for (const subId of subscriptionsToDelete) {\n const subscription = this.subscriptions.get(subId);\n if (subscription) {\n const mainT = new MainMessageT(MainContent.Unsubscribe, new UnsubscribeT(this.textEncoder.encode(subId)));\n // Serialize with FlatBuffers builder\n const builder = new flatbuffers.Builder(2048);\n const mainOffset = mainT.pack(builder);\n builder.finish(mainOffset);\n const serializedMessage = builder.asUint8Array();\n\n this.worker.postMessage(serializedMessage);\n this.subscriptions.delete(subId);\n }\n }\n }\n}\n\nexport const nostrManager = new NostrManager();\n\n/**\n * Factory function to create a new NostrManager instance.\n * @param config - Configuration for the NostrManager.\n * @returns A new instance of NostrManager.\n */\nexport function createNostrManager(\n config: NostrManagerConfig,\n): NostrManager {\n return new NostrManager(config);\n}\n\nexport * from \"./types\";\n"],"names":["ByteBuffer","bytes_","byte_size","position","offset","int32","float32","isLittleEndian","float64","value","SIZEOF_INT","FILE_IDENTIFIER_LENGTH","result","i","bb_pos","vtable_offset","vtable","opt_encoding","length","utf8bytes","Encoding","o","ident","listAccessor","listLength","ret","val","Builder","opt_initial_size","initial_size","forceDefaults","size","additional_bytes","align_size","old_buf_size","voffset","defaultValue","obj","bb","new_buf_size","nbb","numfields","vtableloc","trimmed_size","standard_fields","len","SIZEOF_SHORT","existing_vtable","vt1","outer_loop","vt2","j","root_table","opt_file_identifier","opt_size_prefix","size_prefix","SIZE_PREFIX_LENGTH","file_identifier","table","field","table_start","vtable_start","elem_size","num_elems","alignment","s","utf8","v","list","startFunc","CounterPipeConfig","flatbuffers.SIZE_PREFIX_LENGTH","index","optionalEncoding","builder","kindsOffset","data","numElems","pubkeyOffset","CounterPipeConfigT","_o","kinds","pubkey","GetPublicKey","GetPublicKeyT","KindFilterPipeConfig","KindFilterPipeConfigT","Template","StringVec","kind","contentOffset","tagsOffset","TemplateT","content","tags","Publish","publishIdOffset","templateOffset","PublishT","publishId","template","PrivateKey","privateKeyOffset","PrivateKeyT","privateKey","SignerType","unionToSignerType","type","accessor","SetSigner","signerTypeType","signerTypeOffset","SetSignerT","temp","signerType","SignEvent","SignEventT","NpubLimiterPipeConfig","limitPerNpub","maxTotalNpubs","NpubLimiterPipeConfigT","ParsePipeConfig","ParsePipeConfigT","ProofVerificationPipeConfig","maxProofs","ProofVerificationPipeConfigT","SaveToDbPipeConfig","SaveToDbPipeConfigT","SerializeEventsPipeConfig","subscriptionIdOffset","SerializeEventsPipeConfigT","subscriptionId","PipeConfig","unionToPipeConfig","Pipe","configType","configOffset","PipeT","config","PipelineConfig","pipesOffset","PipelineConfigT","pipes","SubscriptionConfig","pipelineOffset","closeOnEose","cacheFirst","timeoutMs","maxEvents","skipCache","force","bytesPerEvent","SubscriptionConfigT","pipeline","Subscribe","Request","requestsOffset","SubscribeT","requests","Unsubscribe","UnsubscribeT","MainContent","unionToMainContent","MainMessage","contentType","MainMessageT","ParsedDataUnion","SubscribeKind","WorkerMessage","MessageType","Message","WorkerMessageT","unionToMessage","ByteString","view","h","b","copy","other","start","slice","SharedBufferReader","buffer","uint8View","currentWritePosition","requiredSpace","newWritePosition","message","encoded","encode","error","lastReadPosition","dataStartOffset","currentPos","maxMessages","messages","msgCount","headerPos","eventLength","payloadStart","nextPos","flatBufferData","actualLastReadPosition","totalEventLimit","dataSize","overhead","originalWasmBuffer","fetchPromise","ensureOriginalBuffer","wasmAsset","res","getWasmBuffer","NostrManager","event","wasmBuffer","RustWorker","id","parsed","input","hash","char","listener","options","detail","subId","existingSubscription","totalLimit","sum","req","bufferSize","initialMessage","optionsT","subscribeT","RequestT","r","key","values","StringVecT","mainT","flatbuffers.Builder","mainOffset","serializedMessage","subscription","publish_id","templateT","t","publishT","name","secretKeyHex","privateKeyT","setSignerT","cb","subscriptionsToDelete","nostrManager","createNostrManager"],"mappings":";;;;AAGO,MAAMA,EAAW;AAAA;AAAA;AAAA;AAAA,EAIpB,YAAYC,GAAQ;AAChB,SAAK,SAASA,GACd,KAAK,YAAY,GACjB,KAAK,gBAAgB,IAAI,YAAW;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO,SAASC,GAAW;AACvB,WAAO,IAAIF,EAAW,IAAI,WAAWE,CAAS,CAAC;AAAA,EACnD;AAAA,EACA,QAAQ;AACJ,SAAK,YAAY;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA,EAIA,QAAQ;AACJ,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW;AACP,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAIA,YAAYC,GAAU;AAClB,SAAK,YAAYA;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA,EAIA,WAAW;AACP,WAAO,KAAK,OAAO;AAAA,EACvB;AAAA,EACA,SAASC,GAAQ;AACb,WAAO,KAAK,UAAUA,CAAM,KAAK,MAAM;AAAA,EAC3C;AAAA,EACA,UAAUA,GAAQ;AACd,WAAO,KAAK,OAAOA,CAAM;AAAA,EAC7B;AAAA,EACA,UAAUA,GAAQ;AACd,WAAO,KAAK,WAAWA,CAAM,KAAK,MAAM;AAAA,EAC5C;AAAA,EACA,WAAWA,GAAQ;AACf,WAAO,KAAK,OAAOA,CAAM,IAAI,KAAK,OAAOA,IAAS,CAAC,KAAK;AAAA,EAC5D;AAAA,EACA,UAAUA,GAAQ;AACd,WAAO,KAAK,OAAOA,CAAM,IAAI,KAAK,OAAOA,IAAS,CAAC,KAAK,IAAI,KAAK,OAAOA,IAAS,CAAC,KAAK,KAAK,KAAK,OAAOA,IAAS,CAAC,KAAK;AAAA,EAC3H;AAAA,EACA,WAAWA,GAAQ;AACf,WAAO,KAAK,UAAUA,CAAM,MAAM;AAAA,EACtC;AAAA,EACA,UAAUA,GAAQ;AACd,WAAO,OAAO,OAAO,IAAI,OAAO,KAAK,WAAWA,CAAM,CAAC,KAAK,OAAO,KAAK,WAAWA,IAAS,CAAC,CAAC,KAAK,OAAO,EAAE,EAAE;AAAA,EAClH;AAAA,EACA,WAAWA,GAAQ;AACf,WAAO,OAAO,QAAQ,IAAI,OAAO,KAAK,WAAWA,CAAM,CAAC,KAAK,OAAO,KAAK,WAAWA,IAAS,CAAC,CAAC,KAAK,OAAO,EAAE,EAAE;AAAA,EACnH;AAAA,EACA,YAAYA,GAAQ;AAChB,WAAAC,EAAM,CAAC,IAAI,KAAK,UAAUD,CAAM,GACzBE,GAAQ,CAAC;AAAA,EACpB;AAAA,EACA,YAAYF,GAAQ;AAChB,WAAAC,EAAME,IAAiB,IAAI,CAAC,IAAI,KAAK,UAAUH,CAAM,GACrDC,EAAME,IAAiB,IAAI,CAAC,IAAI,KAAK,UAAUH,IAAS,CAAC,GAClDI,GAAQ,CAAC;AAAA,EACpB;AAAA,EACA,UAAUJ,GAAQK,GAAO;AACrB,SAAK,OAAOL,CAAM,IAAIK;AAAA,EAC1B;AAAA,EACA,WAAWL,GAAQK,GAAO;AACtB,SAAK,OAAOL,CAAM,IAAIK;AAAA,EAC1B;AAAA,EACA,WAAWL,GAAQK,GAAO;AACtB,SAAK,OAAOL,CAAM,IAAIK,GACtB,KAAK,OAAOL,IAAS,CAAC,IAAIK,KAAS;AAAA,EACvC;AAAA,EACA,YAAYL,GAAQK,GAAO;AACvB,SAAK,OAAOL,CAAM,IAAIK,GACtB,KAAK,OAAOL,IAAS,CAAC,IAAIK,KAAS;AAAA,EACvC;AAAA,EACA,WAAWL,GAAQK,GAAO;AACtB,SAAK,OAAOL,CAAM,IAAIK,GACtB,KAAK,OAAOL,IAAS,CAAC,IAAIK,KAAS,GACnC,KAAK,OAAOL,IAAS,CAAC,IAAIK,KAAS,IACnC,KAAK,OAAOL,IAAS,CAAC,IAAIK,KAAS;AAAA,EACvC;AAAA,EACA,YAAYL,GAAQK,GAAO;AACvB,SAAK,OAAOL,CAAM,IAAIK,GACtB,KAAK,OAAOL,IAAS,CAAC,IAAIK,KAAS,GACnC,KAAK,OAAOL,IAAS,CAAC,IAAIK,KAAS,IACnC,KAAK,OAAOL,IAAS,CAAC,IAAIK,KAAS;AAAA,EACvC;AAAA,EACA,WAAWL,GAAQK,GAAO;AACtB,SAAK,WAAWL,GAAQ,OAAO,OAAO,OAAO,IAAIK,CAAK,CAAC,CAAC,GACxD,KAAK,WAAWL,IAAS,GAAG,OAAO,OAAO,OAAO,IAAIK,KAAS,OAAO,EAAE,CAAC,CAAC,CAAC;AAAA,EAC9E;AAAA,EACA,YAAYL,GAAQK,GAAO;AACvB,SAAK,YAAYL,GAAQ,OAAO,OAAO,QAAQ,IAAIK,CAAK,CAAC,CAAC,GAC1D,KAAK,YAAYL,IAAS,GAAG,OAAO,OAAO,QAAQ,IAAIK,KAAS,OAAO,EAAE,CAAC,CAAC,CAAC;AAAA,EAChF;AAAA,EACA,aAAaL,GAAQK,GAAO;AACxB,IAAAH,GAAQ,CAAC,IAAIG,GACb,KAAK,WAAWL,GAAQC,EAAM,CAAC,CAAC;AAAA,EACpC;AAAA,EACA,aAAaD,GAAQK,GAAO;AACxB,IAAAD,GAAQ,CAAC,IAAIC,GACb,KAAK,WAAWL,GAAQC,EAAME,IAAiB,IAAI,CAAC,CAAC,GACrD,KAAK,WAAWH,IAAS,GAAGC,EAAME,IAAiB,IAAI,CAAC,CAAC;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,sBAAsB;AAClB,QAAI,KAAK,OAAO,SAAS,KAAK,YAAYG,IACtCC;AACA,YAAM,IAAI,MAAM,gEAAgE;AAEpF,QAAIC,IAAS;AACb,aAASC,IAAI,GAAGA,IAAIF,GAAwBE;AACxC,MAAAD,KAAU,OAAO,aAAa,KAAK,SAAS,KAAK,YAAYF,IAAaG,CAAC,CAAC;AAEhF,WAAOD;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,SAASE,GAAQC,GAAe;AAC5B,UAAMC,IAASF,IAAS,KAAK,UAAUA,CAAM;AAC7C,WAAOC,IAAgB,KAAK,UAAUC,CAAM,IAAI,KAAK,UAAUA,IAASD,CAAa,IAAI;AAAA,EAC7F;AAAA;AAAA;AAAA;AAAA,EAIA,QAAQ,GAAGX,GAAQ;AACf,aAAE,SAASA,IAAS,KAAK,UAAUA,CAAM,GACzC,EAAE,KAAK,MACA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,SAASA,GAAQa,GAAc;AAC3B,IAAAb,KAAU,KAAK,UAAUA,CAAM;AAC/B,UAAMc,IAAS,KAAK,UAAUd,CAAM;AACpC,IAAAA,KAAUM;AACV,UAAMS,IAAY,KAAK,OAAO,SAASf,GAAQA,IAASc,CAAM;AAC9D,WAAID,MAAiBG,GAAS,aACnBD,IAEA,KAAK,cAAc,OAAOA,CAAS;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,oBAAoBE,GAAGjB,GAAQ;AAC3B,WAAI,OAAOiB,KAAM,WACN,KAAK,SAASjB,CAAM,IAExB,KAAK,QAAQiB,GAAGjB,CAAM;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAIA,WAAWA,GAAQ;AACf,WAAOA,IAAS,KAAK,UAAUA,CAAM;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA,EAIA,SAASA,GAAQ;AACb,WAAOA,IAAS,KAAK,UAAUA,CAAM,IAAIM;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAIA,aAAaN,GAAQ;AACjB,WAAO,KAAK,UAAUA,IAAS,KAAK,UAAUA,CAAM,CAAC;AAAA,EACzD;AAAA,EACA,iBAAiBkB,GAAO;AACpB,QAAIA,EAAM,UAAUX;AAChB,YAAM,IAAI,MAAM,iDACZA,CAAsB;AAE9B,aAASE,IAAI,GAAGA,IAAIF,GAAwBE;AACxC,UAAIS,EAAM,WAAWT,CAAC,KAAK,KAAK,SAAS,KAAK,SAAQ,IAAKH,IAAaG,CAAC;AACrE,eAAO;AAGf,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAIA,iBAAiBU,GAAcC,GAAY;AACvC,UAAMC,IAAM,CAAA;AACZ,aAASZ,IAAI,GAAGA,IAAIW,GAAY,EAAEX,GAAG;AACjC,YAAMa,IAAMH,EAAaV,CAAC;AAC1B,MAAIa,MAAQ,QACRD,EAAI,KAAKC,CAAG;AAAA,IAEpB;AACA,WAAOD;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,cAAcF,GAAcC,GAAY;AACpC,UAAMC,IAAM,CAAA;AACZ,aAASZ,IAAI,GAAGA,IAAIW,GAAY,EAAEX,GAAG;AACjC,YAAMa,IAAMH,EAAaV,CAAC;AAC1B,MAAIa,MAAQ,QACRD,EAAI,KAAKC,EAAI,QAAQ;AAAA,IAE7B;AACA,WAAOD;AAAA,EACX;AACJ;ACpPO,MAAME,EAAQ;AAAA;AAAA;AAAA;AAAA,EAIjB,YAAYC,GAAkB;AAE1B,SAAK,WAAW,GAEhB,KAAK,SAAS,MAEd,KAAK,gBAAgB,GAErB,KAAK,WAAW,IAEhB,KAAK,eAAe,GAEpB,KAAK,UAAU,CAAA,GAEf,KAAK,mBAAmB,GAExB,KAAK,iBAAiB,IACtB,KAAK,cAAc,MACnB,KAAK,eAAe,IAAI,YAAW;AACnC,QAAIC;AACJ,IAAKD,IAIDC,IAAeD,IAHfC,IAAe,MASnB,KAAK,KAAK7B,EAAW,SAAS6B,CAAY,GAC1C,KAAK,QAAQA;AAAA,EACjB;AAAA,EACA,QAAQ;AACJ,SAAK,GAAG,MAAK,GACb,KAAK,QAAQ,KAAK,GAAG,SAAQ,GAC7B,KAAK,WAAW,GAChB,KAAK,SAAS,MACd,KAAK,gBAAgB,GACrB,KAAK,WAAW,IAChB,KAAK,eAAe,GACpB,KAAK,UAAU,CAAA,GACf,KAAK,mBAAmB,GACxB,KAAK,iBAAiB,IACtB,KAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,cAAcC,GAAe;AACzB,SAAK,iBAAiBA;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAa;AACT,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,eAAe;AACX,WAAO,KAAK,GAAG,MAAK,EAAG,SAAS,KAAK,GAAG,SAAQ,GAAI,KAAK,GAAG,SAAQ,IAAK,KAAK,OAAM,CAAE;AAAA,EAC1F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,KAAKC,GAAMC,GAAkB;AAEzB,IAAID,IAAO,KAAK,aACZ,KAAK,WAAWA;AAIpB,UAAME,IAAe,EAAE,KAAK,GAAG,SAAQ,IAAK,KAAK,QAAQD,KAAqB,IAAMD,IAAO;AAE3F,WAAO,KAAK,QAAQE,IAAaF,IAAOC,KAAkB;AACtD,YAAME,IAAe,KAAK,GAAG,SAAQ;AACrC,WAAK,KAAKP,EAAQ,eAAe,KAAK,EAAE,GACxC,KAAK,SAAS,KAAK,GAAG,SAAQ,IAAKO;AAAA,IACvC;AACA,SAAK,IAAID,CAAU;AAAA,EACvB;AAAA,EACA,IAAI/B,GAAW;AACX,aAASW,IAAI,GAAGA,IAAIX,GAAWW;AAC3B,WAAK,GAAG,UAAU,EAAE,KAAK,OAAO,CAAC;AAAA,EAEzC;AAAA,EACA,UAAUJ,GAAO;AACb,SAAK,GAAG,UAAU,KAAK,SAAS,GAAGA,CAAK;AAAA,EAC5C;AAAA,EACA,WAAWA,GAAO;AACd,SAAK,GAAG,WAAW,KAAK,SAAS,GAAGA,CAAK;AAAA,EAC7C;AAAA,EACA,WAAWA,GAAO;AACd,SAAK,GAAG,WAAW,KAAK,SAAS,GAAGA,CAAK;AAAA,EAC7C;AAAA,EACA,WAAWA,GAAO;AACd,SAAK,GAAG,WAAW,KAAK,SAAS,GAAGA,CAAK;AAAA,EAC7C;AAAA,EACA,aAAaA,GAAO;AAChB,SAAK,GAAG,aAAa,KAAK,SAAS,GAAGA,CAAK;AAAA,EAC/C;AAAA,EACA,aAAaA,GAAO;AAChB,SAAK,GAAG,aAAa,KAAK,SAAS,GAAGA,CAAK;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQA,GAAO;AACX,SAAK,KAAK,GAAG,CAAC,GACd,KAAK,UAAUA,CAAK;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,SAASA,GAAO;AACZ,SAAK,KAAK,GAAG,CAAC,GACd,KAAK,WAAWA,CAAK;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,SAASA,GAAO;AACZ,SAAK,KAAK,GAAG,CAAC,GACd,KAAK,WAAWA,CAAK;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,SAASA,GAAO;AACZ,SAAK,KAAK,GAAG,CAAC,GACd,KAAK,WAAWA,CAAK;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,WAAWA,GAAO;AACd,SAAK,KAAK,GAAG,CAAC,GACd,KAAK,aAAaA,CAAK;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,WAAWA,GAAO;AACd,SAAK,KAAK,GAAG,CAAC,GACd,KAAK,aAAaA,CAAK;AAAA,EAC3B;AAAA,EACA,aAAa0B,GAAS1B,GAAO2B,GAAc;AACvC,KAAI,KAAK,kBAAkB3B,KAAS2B,OAChC,KAAK,QAAQ3B,CAAK,GAClB,KAAK,KAAK0B,CAAO;AAAA,EAEzB;AAAA,EACA,cAAcA,GAAS1B,GAAO2B,GAAc;AACxC,KAAI,KAAK,kBAAkB3B,KAAS2B,OAChC,KAAK,SAAS3B,CAAK,GACnB,KAAK,KAAK0B,CAAO;AAAA,EAEzB;AAAA,EACA,cAAcA,GAAS1B,GAAO2B,GAAc;AACxC,KAAI,KAAK,kBAAkB3B,KAAS2B,OAChC,KAAK,SAAS3B,CAAK,GACnB,KAAK,KAAK0B,CAAO;AAAA,EAEzB;AAAA,EACA,cAAcA,GAAS1B,GAAO2B,GAAc;AACxC,KAAI,KAAK,kBAAkB3B,MAAU2B,OACjC,KAAK,SAAS3B,CAAK,GACnB,KAAK,KAAK0B,CAAO;AAAA,EAEzB;AAAA,EACA,gBAAgBA,GAAS1B,GAAO2B,GAAc;AAC1C,KAAI,KAAK,kBAAkB3B,KAAS2B,OAChC,KAAK,WAAW3B,CAAK,GACrB,KAAK,KAAK0B,CAAO;AAAA,EAEzB;AAAA,EACA,gBAAgBA,GAAS1B,GAAO2B,GAAc;AAC1C,KAAI,KAAK,kBAAkB3B,KAAS2B,OAChC,KAAK,WAAW3B,CAAK,GACrB,KAAK,KAAK0B,CAAO;AAAA,EAEzB;AAAA,EACA,eAAeA,GAAS1B,GAAO2B,GAAc;AACzC,KAAI,KAAK,kBAAkB3B,KAAS2B,OAChC,KAAK,UAAU3B,CAAK,GACpB,KAAK,KAAK0B,CAAO;AAAA,EAEzB;AAAA;AAAA;AAAA;AAAA,EAIA,eAAeA,GAAS1B,GAAO2B,GAAc;AACzC,IAAI3B,KAAS2B,MACT,KAAK,OAAO3B,CAAK,GACjB,KAAK,KAAK0B,CAAO;AAAA,EAEzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAOE,GAAK;AACR,QAAIA,KAAO,KAAK;AACZ,YAAM,IAAI,UAAU,gDAAgD;AAAA,EAE5E;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY;AACR,QAAI,KAAK;AACL,YAAM,IAAI,UAAU,uDAAuD;AAAA,EAEnF;AAAA;AAAA;AAAA;AAAA,EAIA,KAAKF,GAAS;AACV,IAAI,KAAK,WAAW,SAChB,KAAK,OAAOA,CAAO,IAAI,KAAK,OAAM;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAIA,SAAS;AACL,WAAO,KAAK,GAAG,SAAQ,IAAK,KAAK;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,OAAO,eAAeG,GAAI;AACtB,UAAMJ,IAAeI,EAAG,SAAQ;AAEhC,QAAIJ,IAAe;AACf,YAAM,IAAI,MAAM,qDAAqD;AAEzE,UAAMK,IAAeL,KAAgB,GAC/BM,IAAMxC,EAAW,SAASuC,CAAY;AAC5C,WAAAC,EAAI,YAAYD,IAAeL,CAAY,GAC3CM,EAAI,MAAK,EAAG,IAAIF,EAAG,MAAK,GAAIC,IAAeL,CAAY,GAChDM;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UAAUpC,GAAQ;AACd,SAAK,KAAKM,GAAY,CAAC,GACvB,KAAK,WAAW,KAAK,OAAM,IAAKN,IAASM,CAAU;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAY+B,GAAW;AACnB,SAAK,UAAS,GACV,KAAK,UAAU,SACf,KAAK,SAAS,CAAA,IAElB,KAAK,gBAAgBA;AACrB,aAAS5B,IAAI,GAAGA,IAAI4B,GAAW5B;AAC3B,WAAK,OAAOA,CAAC,IAAI;AAErB,SAAK,WAAW,IAChB,KAAK,eAAe,KAAK,OAAM;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAY;AACR,QAAI,KAAK,UAAU,QAAQ,CAAC,KAAK;AAC7B,YAAM,IAAI,MAAM,mDAAmD;AAEvE,SAAK,SAAS,CAAC;AACf,UAAM6B,IAAY,KAAK,OAAM;AAE7B,QAAI7B,IAAI,KAAK,gBAAgB;AAE7B,WAAOA,KAAK,KAAK,KAAK,OAAOA,CAAC,KAAK,GAAGA;AAAK;AAC3C,UAAM8B,IAAe9B,IAAI;AAEzB,WAAOA,KAAK,GAAGA;AAEX,WAAK,SAAS,KAAK,OAAOA,CAAC,KAAK,IAAI6B,IAAY,KAAK,OAAO7B,CAAC,IAAI,CAAC;AAEtE,UAAM+B,IAAkB;AACxB,SAAK,SAASF,IAAY,KAAK,YAAY;AAC3C,UAAMG,KAAOF,IAAeC,KAAmBE;AAC/C,SAAK,SAASD,CAAG;AAEjB,QAAIE,IAAkB;AACtB,UAAMC,IAAM,KAAK;AACjB,IAAAC,EAAY,MAAKpC,IAAI,GAAGA,IAAI,KAAK,QAAQ,QAAQA,KAAK;AAClD,YAAMqC,IAAM,KAAK,GAAG,SAAQ,IAAK,KAAK,QAAQrC,CAAC;AAC/C,UAAIgC,KAAO,KAAK,GAAG,UAAUK,CAAG,GAAG;AAC/B,iBAASC,IAAIL,GAAcK,IAAIN,GAAKM,KAAKL;AACrC,cAAI,KAAK,GAAG,UAAUE,IAAMG,CAAC,KAAK,KAAK,GAAG,UAAUD,IAAMC,CAAC;AACvD,qBAASF;AAGjB,QAAAF,IAAkB,KAAK,QAAQlC,CAAC;AAChC;AAAA,MACJ;AAAA,IACJ;AACA,WAAIkC,KAGA,KAAK,QAAQ,KAAK,GAAG,SAAQ,IAAKL,GAElC,KAAK,GAAG,WAAW,KAAK,OAAOK,IAAkBL,CAAS,MAK1D,KAAK,QAAQ,KAAK,KAAK,OAAM,CAAE,GAE/B,KAAK,GAAG,WAAW,KAAK,GAAG,SAAQ,IAAKA,GAAW,KAAK,OAAM,IAAKA,CAAS,IAEhF,KAAK,WAAW,IACTA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAIA,OAAOU,GAAYC,GAAqBC,GAAiB;AACrD,UAAMC,IAAcD,IAAkBE,IAAqB;AAC3D,QAAIH,GAAqB;AACrB,YAAMI,IAAkBJ;AAGxB,UAFA,KAAK,KAAK,KAAK,UAAU3C,IACrBC,IAAyB4C,CAAW,GACpCE,EAAgB,UAAU9C;AAC1B,cAAM,IAAI,UAAU,iDAChBA,CAAsB;AAE9B,eAASE,IAAIF,IAAyB,GAAGE,KAAK,GAAGA;AAC7C,aAAK,UAAU4C,EAAgB,WAAW5C,CAAC,CAAC;AAAA,IAEpD;AACA,SAAK,KAAK,KAAK,UAAUH,IAAa6C,CAAW,GACjD,KAAK,UAAUH,CAAU,GACrBG,KACA,KAAK,SAAS,KAAK,GAAG,SAAQ,IAAK,KAAK,KAAK,GAEjD,KAAK,GAAG,YAAY,KAAK,KAAK;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA,EAIA,mBAAmBH,GAAYC,GAAqB;AAChD,SAAK,OAAOD,GAAYC,GAAqB,EAAI;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,cAAcK,GAAOC,GAAO;AACxB,UAAMC,IAAc,KAAK,GAAG,SAAQ,IAAKF,GACnCG,IAAeD,IAAc,KAAK,GAAG,UAAUA,CAAW;AAIhE,QAAI,EAHOD,IAAQ,KAAK,GAAG,UAAUE,CAAY,KAC7C,KAAK,GAAG,UAAUA,IAAeF,CAAK,KAAK;AAG3C,YAAM,IAAI,UAAU,wBAAwBA,IAAQ,cAAc;AAAA,EAE1E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,YAAYG,GAAWC,GAAWC,GAAW;AACzC,SAAK,UAAS,GACd,KAAK,mBAAmBD,GACxB,KAAK,KAAKrD,GAAYoD,IAAYC,CAAS,GAC3C,KAAK,KAAKC,GAAWF,IAAYC,CAAS;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,YAAY;AACR,gBAAK,WAAW,KAAK,gBAAgB,GAC9B,KAAK,OAAM;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,mBAAmBE,GAAG;AAClB,QAAI,CAACA;AACD,aAAO;AAKX,QAHK,KAAK,gBACN,KAAK,cAAc,oBAAI,IAAG,IAE1B,KAAK,YAAY,IAAIA,CAAC;AACtB,aAAO,KAAK,YAAY,IAAIA,CAAC;AAEjC,UAAM7D,IAAS,KAAK,aAAa6D,CAAC;AAClC,gBAAK,YAAY,IAAIA,GAAG7D,CAAM,GACvBA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,aAAa6D,GAAG;AACZ,QAAIA,KAAM;AACN,aAAO;AAEX,QAAIC;AACJ,WAAID,aAAa,aACbC,IAAOD,IAGPC,IAAO,KAAK,aAAa,OAAOD,CAAC,GAErC,KAAK,QAAQ,CAAC,GACd,KAAK,YAAY,GAAGC,EAAK,QAAQ,CAAC,GAClC,KAAK,GAAG,YAAY,KAAK,SAASA,EAAK,MAAM,GAC7C,KAAK,GAAG,MAAK,EAAG,IAAIA,GAAM,KAAK,KAAK,GAC7B,KAAK,UAAS;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,iBAAiBC,GAAG;AAChB,WAAIA,KAAM,OACC,KAEX,KAAK,YAAY,GAAGA,EAAE,QAAQ,CAAC,GAC/B,KAAK,GAAG,YAAY,KAAK,SAASA,EAAE,MAAM,GAC1C,KAAK,GAAG,MAAK,EAAG,IAAIA,GAAG,KAAK,KAAK,GAC1B,KAAK,UAAS;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,mBAAmB9B,GAAK;AACpB,WAAIA,MAAQ,OACD,IAEP,OAAOA,KAAQ,WACR,KAAK,aAAaA,CAAG,IAGrBA,EAAI,KAAK,IAAI;AAAA,EAE5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,uBAAuB+B,GAAM;AACzB,UAAM3C,IAAM,CAAA;AACZ,aAASZ,IAAI,GAAGA,IAAIuD,EAAK,QAAQ,EAAEvD,GAAG;AAClC,YAAMa,IAAM0C,EAAKvD,CAAC;AAClB,UAAIa,MAAQ;AACR,QAAAD,EAAI,KAAK,KAAK,mBAAmBC,CAAG,CAAC;AAAA;AAGrC,cAAM,IAAI,UAAU,uEAAuE;AAAA,IAEnG;AACA,WAAOD;AAAA,EACX;AAAA,EACA,uBAAuB2C,GAAMC,GAAW;AACpC,WAAAA,EAAU,MAAMD,EAAK,MAAM,GAC3B,KAAK,uBAAuBA,EAAK,MAAK,EAAG,QAAO,CAAE,GAC3C,KAAK,UAAS;AAAA,EACzB;AACJ;AC3gBO,MAAME,EAA+E;AAAA,EAArF,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOzD,GAAUyB,GAA6C;AAC9D,gBAAK,SAASzB,GACd,KAAK,KAAKyB,GACH;AAAA,EACT;AAAA,EAEA,OAAO,2BAA2BA,GAA2BD,GAA0C;AACrG,YAAQA,KAAO,IAAIiC,EAAA,GAAqB,OAAOhC,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAChG;AAAA,EAEA,OAAO,uCAAuCA,GAA2BD,GAA0C;AACjH,WAAAC,EAAG,YAAYA,EAAG,SAAA,IAAaiC,CAA8B,IACrDlC,KAAO,IAAIiC,EAAA,GAAqB,OAAOhC,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAChG;AAAA,EAEA,MAAMkC,GAA2B;AAC/B,UAAMpE,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,WAAW,KAAK,GAAI,SAAS,KAAK,SAASA,CAAM,IAAIoE,IAAQ,CAAC,IAAI;AAAA,EAC7F;AAAA,EAEA,cAAqB;AACnB,UAAMpE,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,aAAa,KAAK,SAASA,CAAM,IAAI;AAAA,EAChE;AAAA,EAEA,aAA8B;AAC5B,UAAMA,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,IAAI,YAAY,KAAK,GAAI,QAAQ,QAAQ,KAAK,GAAI,MAAA,EAAQ,aAAa,KAAK,GAAI,SAAS,KAAK,SAASA,CAAM,GAAG,KAAK,GAAI,aAAa,KAAK,SAASA,CAAM,CAAC,IAAI;AAAA,EACjL;AAAA,EAIA,OAAOqE,GAAmD;AACxD,UAAMrE,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,mBAAmB,KAAK,SAASA,GAAQqE,CAAgB,IAAI;AAAA,EACxF;AAAA,EAEA,OAAO,uBAAuBC,GAA6B;AACzD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,SAASA,GAA6BC,GAAgC;AAC3E,IAAAD,EAAQ,eAAe,GAAGC,GAAa,CAAC;AAAA,EAC1C;AAAA,EAOA,OAAO,kBAAkBD,GAA6BE,GAAyD;AAC7G,IAAAF,EAAQ,YAAY,GAAGE,EAAK,QAAQ,CAAC;AACrC,aAAS/D,IAAI+D,EAAK,SAAS,GAAG/D,KAAK,GAAGA;AACpC,MAAA6D,EAAQ,SAASE,EAAK/D,CAAC,CAAE;AAE3B,WAAO6D,EAAQ,UAAA;AAAA,EACjB;AAAA,EAEA,OAAO,iBAAiBA,GAA6BG,GAAiB;AACpE,IAAAH,EAAQ,YAAY,GAAGG,GAAU,CAAC;AAAA,EACpC;AAAA,EAEA,OAAO,UAAUH,GAA6BI,GAAiC;AAC7E,IAAAJ,EAAQ,eAAe,GAAGI,GAAc,CAAC;AAAA,EAC3C;AAAA,EAEA,OAAO,qBAAqBJ,GAAgD;AAC1E,UAAMtE,IAASsE,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAActE,GAAQ,CAAC,GAC/BsE,EAAQ,cAActE,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAEA,OAAO,wBAAwBsE,GAA6BC,GAAgCG,GAAoD;AAC9I,WAAAR,EAAkB,uBAAuBI,CAAO,GAChDJ,EAAkB,SAASI,GAASC,CAAW,GAC/CL,EAAkB,UAAUI,GAASI,CAAY,GAC1CR,EAAkB,qBAAqBI,CAAO;AAAA,EACvD;AAAA,EAEA,SAA6B;AAC3B,WAAO,IAAIK;AAAA,MACT,KAAK,GAAI,iBAAyB,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,aAAa;AAAA,MAC3E,KAAK,OAAA;AAAA,IAAO;AAAA,EAEhB;AAAA,EAGA,SAASC,GAA8B;AACrC,IAAAA,EAAG,QAAQ,KAAK,GAAI,iBAAyB,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,YAAA,CAAa,GACtFA,EAAG,SAAS,KAAK,OAAA;AAAA,EACnB;AACA;AAEO,MAAMD,GAA2D;AAAA,EACxE,YACSE,IAAoB,IACpBC,IAAqC,MAC7C;AAFQ,SAAA,QAAAD,GACA,KAAA,SAAAC;AAAA,EACP;AAAA,EAGF,KAAKR,GAAiD;AACpD,UAAMO,IAAQX,EAAkB,kBAAkBI,GAAS,KAAK,KAAK,GAC/DQ,IAAU,KAAK,WAAW,OAAOR,EAAQ,aAAa,KAAK,MAAO,IAAI;AAE5E,WAAOJ,EAAkB;AAAA,MAAwBI;AAAA,MAC/CO;AAAA,MACAC;AAAA,IAAA;AAAA,EAEJ;AACA;ACjHO,MAAMC,EAAqE;AAAA,EAA3E,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOtE,GAAUyB,GAAwC;AACzD,gBAAK,SAASzB,GACd,KAAK,KAAKyB,GACH;AAAA,EACT;AAAA,EAEA,OAAO,sBAAsBA,GAA2BD,GAAgC;AACtF,YAAQA,KAAO,IAAI8C,EAAA,GAAgB,OAAO7C,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC3F;AAAA,EAEA,OAAO,kCAAkCA,GAA2BD,GAAgC;AAClG,WAAAC,EAAG,YAAYA,EAAG,SAAA,IAAaiC,CAA8B,IACrDlC,KAAO,IAAI8C,EAAA,GAAgB,OAAO7C,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC3F;AAAA,EAEA,OAAO,kBAAkBoC,GAA6B;AACpD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,gBAAgBA,GAAgD;AAErE,WADeA,EAAQ,UAAA;AAAA,EAEzB;AAAA,EAEA,OAAO,mBAAmBA,GAAgD;AACxE,WAAAS,EAAa,kBAAkBT,CAAO,GAC/BS,EAAa,gBAAgBT,CAAO;AAAA,EAC7C;AAAA,EAEA,SAAwB;AACtB,WAAO,IAAIU,GAAA;AAAA,EACb;AAAA,EAGA,SAASJ,GAAyB;AAAA,EAAC;AACnC;AAEO,MAAMI,GAAsD;AAAA,EACnE,cAAa;AAAA,EAAC;AAAA,EAGd,KAAKV,GAAiD;AACpD,WAAOS,EAAa,mBAAmBT,CAAO;AAAA,EAChD;AACA;AC/CO,MAAMW,EAAqF;AAAA,EAA3F,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOxE,GAAUyB,GAAgD;AACjE,gBAAK,SAASzB,GACd,KAAK,KAAKyB,GACH;AAAA,EACT;AAAA,EAEA,OAAO,8BAA8BA,GAA2BD,GAAgD;AAC9G,YAAQA,KAAO,IAAIgD,EAAA,GAAwB,OAAO/C,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACnG;AAAA,EAEA,OAAO,0CAA0CA,GAA2BD,GAAgD;AAC1H,WAAAC,EAAG,YAAYA,EAAG,SAAA,IAAaiC,CAA8B,IACrDlC,KAAO,IAAIgD,EAAA,GAAwB,OAAO/C,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACnG;AAAA,EAEA,MAAMkC,GAA2B;AAC/B,UAAMpE,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,WAAW,KAAK,GAAI,SAAS,KAAK,SAASA,CAAM,IAAIoE,IAAQ,CAAC,IAAI;AAAA,EAC7F;AAAA,EAEA,cAAqB;AACnB,UAAMpE,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,aAAa,KAAK,SAASA,CAAM,IAAI;AAAA,EAChE;AAAA,EAEA,aAA8B;AAC5B,UAAMA,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,IAAI,YAAY,KAAK,GAAI,QAAQ,QAAQ,KAAK,GAAI,MAAA,EAAQ,aAAa,KAAK,GAAI,SAAS,KAAK,SAASA,CAAM,GAAG,KAAK,GAAI,aAAa,KAAK,SAASA,CAAM,CAAC,IAAI;AAAA,EACjL;AAAA,EAEA,OAAO,0BAA0BsE,GAA6B;AAC5D,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,SAASA,GAA6BC,GAAgC;AAC3E,IAAAD,EAAQ,eAAe,GAAGC,GAAa,CAAC;AAAA,EAC1C;AAAA,EAOA,OAAO,kBAAkBD,GAA6BE,GAAyD;AAC7G,IAAAF,EAAQ,YAAY,GAAGE,EAAK,QAAQ,CAAC;AACrC,aAAS/D,IAAI+D,EAAK,SAAS,GAAG/D,KAAK,GAAGA;AACpC,MAAA6D,EAAQ,SAASE,EAAK/D,CAAC,CAAE;AAE3B,WAAO6D,EAAQ,UAAA;AAAA,EACjB;AAAA,EAEA,OAAO,iBAAiBA,GAA6BG,GAAiB;AACpE,IAAAH,EAAQ,YAAY,GAAGG,GAAU,CAAC;AAAA,EACpC;AAAA,EAEA,OAAO,wBAAwBH,GAAgD;AAC7E,UAAMtE,IAASsE,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAActE,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAEA,OAAO,2BAA2BsE,GAA6BC,GAAmD;AAChH,WAAAU,EAAqB,0BAA0BX,CAAO,GACtDW,EAAqB,SAASX,GAASC,CAAW,GAC3CU,EAAqB,wBAAwBX,CAAO;AAAA,EAC7D;AAAA,EAEA,SAAgC;AAC9B,WAAO,IAAIY;AAAA,MACT,KAAK,GAAI,iBAAyB,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,YAAA,CAAa;AAAA,IAAA;AAAA,EAE/E;AAAA,EAGA,SAASN,GAAiC;AACxC,IAAAA,EAAG,QAAQ,KAAK,GAAI,iBAAyB,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,YAAA,CAAa;AAAA,EACxF;AACA;AAEO,MAAMM,GAA8D;AAAA,EAC3E,YACSL,IAAoB,IAC5B;AADQ,SAAA,QAAAA;AAAA,EACP;AAAA,EAGF,KAAKP,GAAiD;AACpD,UAAMO,IAAQI,EAAqB,kBAAkBX,GAAS,KAAK,KAAK;AAExE,WAAOW,EAAqB;AAAA,MAA2BX;AAAA,MACrDO;AAAA,IAAA;AAAA,EAEJ;AACA;AC9FO,MAAMM,EAA6D;AAAA,EAAnE,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAO1E,GAAUyB,GAAoC;AACrD,gBAAK,SAASzB,GACd,KAAK,KAAKyB,GACH;AAAA,EACT;AAAA,EAEA,OAAO,kBAAkBA,GAA2BD,GAAwB;AAC1E,YAAQA,KAAO,IAAIkD,EAAA,GAAY,OAAOjD,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACvF;AAAA,EAEA,OAAO,8BAA8BA,GAA2BD,GAAwB;AACtF,WAAAC,EAAG,YAAYA,EAAG,SAAA,IAAaiC,CAA8B,IACrDlC,KAAO,IAAIkD,EAAA,GAAY,OAAOjD,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACvF;AAAA,EAEA,OAAc;AACZ,UAAMlC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,WAAW,KAAK,SAASA,CAAM,IAAI;AAAA,EAC9D;AAAA,EAIA,QAAQqE,GAAmD;AACzD,UAAMrE,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,mBAAmB,KAAK,SAASA,GAAQqE,CAAgB,IAAI;AAAA,EACxF;AAAA,EAEA,KAAKD,GAAenC,GAA+B;AACjD,UAAMjC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,KAAUiC,KAAO,IAAImD,GAAA,GAAa,OAAO,KAAK,GAAI,WAAW,KAAK,GAAI,SAAS,KAAK,SAASpF,CAAM,IAAIoE,IAAQ,CAAC,GAAG,KAAK,EAAG,IAAI;AAAA,EACxI;AAAA,EAEA,aAAoB;AAClB,UAAMpE,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,aAAa,KAAK,SAASA,CAAM,IAAI;AAAA,EAChE;AAAA,EAEA,OAAO,cAAcsE,GAA6B;AAChD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,QAAQA,GAA6Be,GAAa;AACvD,IAAAf,EAAQ,cAAc,GAAGe,GAAM,CAAC;AAAA,EAClC;AAAA,EAEA,OAAO,WAAWf,GAA6BgB,GAAkC;AAC/E,IAAAhB,EAAQ,eAAe,GAAGgB,GAAe,CAAC;AAAA,EAC5C;AAAA,EAEA,OAAO,QAAQhB,GAA6BiB,GAA+B;AACzE,IAAAjB,EAAQ,eAAe,GAAGiB,GAAY,CAAC;AAAA,EACzC;AAAA,EAEA,OAAO,iBAAiBjB,GAA6BE,GAA8C;AACjG,IAAAF,EAAQ,YAAY,GAAGE,EAAK,QAAQ,CAAC;AACrC,aAAS/D,IAAI+D,EAAK,SAAS,GAAG/D,KAAK,GAAGA;AACpC,MAAA6D,EAAQ,UAAUE,EAAK/D,CAAC,CAAE;AAE5B,WAAO6D,EAAQ,UAAA;AAAA,EACjB;AAAA,EAEA,OAAO,gBAAgBA,GAA6BG,GAAiB;AACnE,IAAAH,EAAQ,YAAY,GAAGG,GAAU,CAAC;AAAA,EACpC;AAAA,EAEA,OAAO,YAAYH,GAAgD;AACjE,UAAMtE,IAASsE,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAActE,GAAQ,CAAC,GAC/BsE,EAAQ,cAActE,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAEA,OAAO,eAAesE,GAA6Be,GAAaC,GAAkCC,GAAkD;AAClJ,WAAAJ,EAAS,cAAcb,CAAO,GAC9Ba,EAAS,QAAQb,GAASe,CAAI,GAC9BF,EAAS,WAAWb,GAASgB,CAAa,GAC1CH,EAAS,QAAQb,GAASiB,CAAU,GAC7BJ,EAAS,YAAYb,CAAO;AAAA,EACrC;AAAA,EAEA,SAAoB;AAClB,WAAO,IAAIkB;AAAA,MACT,KAAK,KAAA;AAAA,MACL,KAAK,QAAA;AAAA,MACL,KAAK,GAAI,cAAqC,KAAK,KAAK,KAAK,IAAI,GAAG,KAAK,WAAA,CAAY;AAAA,IAAA;AAAA,EAEzF;AAAA,EAGA,SAASZ,GAAqB;AAC5B,IAAAA,EAAG,OAAO,KAAK,KAAA,GACfA,EAAG,UAAU,KAAK,QAAA,GAClBA,EAAG,OAAO,KAAK,GAAI,cAAqC,KAAK,KAAK,KAAK,IAAI,GAAG,KAAK,WAAA,CAAY;AAAA,EACjG;AACA;AAEO,MAAMY,GAAkD;AAAA,EAC/D,YACSH,IAAe,GACfI,IAAsC,MACtCC,IAAuB,IAC/B;AAHQ,SAAA,OAAAL,GACA,KAAA,UAAAI,GACA,KAAA,OAAAC;AAAA,EACP;AAAA,EAGF,KAAKpB,GAAiD;AACpD,UAAMmB,IAAW,KAAK,YAAY,OAAOnB,EAAQ,aAAa,KAAK,OAAQ,IAAI,GACzEoB,IAAOP,EAAS,iBAAiBb,GAASA,EAAQ,uBAAuB,KAAK,IAAI,CAAC;AAEzF,WAAOa,EAAS;AAAA,MAAeb;AAAA,MAC7B,KAAK;AAAA,MACLmB;AAAA,MACAC;AAAA,IAAA;AAAA,EAEJ;AACA;ACrHO,MAAMC,EAA2D;AAAA,EAAjE,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOlF,GAAUyB,GAAmC;AACpD,gBAAK,SAASzB,GACd,KAAK,KAAKyB,GACH;AAAA,EACT;AAAA,EAEA,OAAO,iBAAiBA,GAA2BD,GAAsB;AACvE,YAAQA,KAAO,IAAI0D,EAAA,GAAW,OAAOzD,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACtF;AAAA,EAEA,OAAO,6BAA6BA,GAA2BD,GAAsB;AACnF,WAAAC,EAAG,YAAYA,EAAG,SAAA,IAAaiC,CAA8B,IACrDlC,KAAO,IAAI0D,EAAA,GAAW,OAAOzD,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACtF;AAAA,EAIA,UAAUmC,GAAmD;AAC3D,UAAMrE,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,mBAAmB,KAAK,SAASA,GAAQqE,CAAgB,IAAI;AAAA,EACxF;AAAA,EAEA,SAASpC,GAA6B;AACpC,UAAMjC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,KAAUiC,KAAO,IAAIkD,EAAA,GAAY,OAAO,KAAK,GAAI,WAAW,KAAK,SAASnF,CAAM,GAAG,KAAK,EAAG,IAAI;AAAA,EACxG;AAAA,EAEA,OAAO,aAAasE,GAA6B;AAC/C,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,aAAaA,GAA6BsB,GAAoC;AACnF,IAAAtB,EAAQ,eAAe,GAAGsB,GAAiB,CAAC;AAAA,EAC9C;AAAA,EAEA,OAAO,YAAYtB,GAA6BuB,GAAmC;AACjF,IAAAvB,EAAQ,eAAe,GAAGuB,GAAgB,CAAC;AAAA,EAC7C;AAAA,EAEA,OAAO,WAAWvB,GAAgD;AAChE,UAAMtE,IAASsE,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAActE,GAAQ,CAAC,GAC/BsE,EAAQ,cAActE,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAGA,SAAmB;AACjB,WAAO,IAAI8F;AAAA,MACT,KAAK,UAAA;AAAA,MACJ,KAAK,eAAe,OAAO,KAAK,SAAA,EAAY,WAAW;AAAA,IAAA;AAAA,EAE5D;AAAA,EAGA,SAASlB,GAAoB;AAC3B,IAAAA,EAAG,YAAY,KAAK,UAAA,GACpBA,EAAG,WAAY,KAAK,SAAA,MAAe,OAAO,KAAK,SAAA,EAAY,OAAA,IAAW;AAAA,EACxE;AACA;AAEO,MAAMkB,GAAiD;AAAA,EAC9D,YACSC,IAAwC,MACxCC,IAA2B,MACnC;AAFQ,SAAA,YAAAD,GACA,KAAA,WAAAC;AAAA,EACP;AAAA,EAGF,KAAK1B,GAAiD;AACpD,UAAMyB,IAAa,KAAK,cAAc,OAAOzB,EAAQ,aAAa,KAAK,SAAU,IAAI,GAC/E0B,IAAY,KAAK,aAAa,OAAO,KAAK,SAAU,KAAK1B,CAAO,IAAI;AAE1E,WAAAqB,EAAQ,aAAarB,CAAO,GAC5BqB,EAAQ,aAAarB,GAASyB,CAAS,GACvCJ,EAAQ,YAAYrB,GAAS0B,CAAQ,GAE9BL,EAAQ,WAAWrB,CAAO;AAAA,EACnC;AACA;AClFO,MAAM2B,EAAiE;AAAA,EAAvE,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOxF,GAAUyB,GAAsC;AACvD,gBAAK,SAASzB,GACd,KAAK,KAAKyB,GACH;AAAA,EACT;AAAA,EAEA,OAAO,oBAAoBA,GAA2BD,GAA4B;AAChF,YAAQA,KAAO,IAAIgE,EAAA,GAAc,OAAO/D,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACzF;AAAA,EAEA,OAAO,gCAAgCA,GAA2BD,GAA4B;AAC5F,WAAAC,EAAG,YAAYA,EAAG,SAAA,IAAaiC,CAA8B,IACrDlC,KAAO,IAAIgE,EAAA,GAAc,OAAO/D,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACzF;AAAA,EAIA,WAAWmC,GAAmD;AAC5D,UAAMrE,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,mBAAmB,KAAK,SAASA,GAAQqE,CAAgB,IAAI;AAAA,EACxF;AAAA,EAEA,OAAO,gBAAgBC,GAA6B;AAClD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,cAAcA,GAA6B4B,GAAqC;AACrF,IAAA5B,EAAQ,eAAe,GAAG4B,GAAkB,CAAC;AAAA,EAC/C;AAAA,EAEA,OAAO,cAAc5B,GAAgD;AACnE,UAAMtE,IAASsE,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAActE,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAEA,OAAO,iBAAiBsE,GAA6B4B,GAAwD;AAC3G,WAAAD,EAAW,gBAAgB3B,CAAO,GAClC2B,EAAW,cAAc3B,GAAS4B,CAAgB,GAC3CD,EAAW,cAAc3B,CAAO;AAAA,EACzC;AAAA,EAEA,SAAsB;AACpB,WAAO,IAAI6B;AAAA,MACT,KAAK,WAAA;AAAA,IAAW;AAAA,EAEpB;AAAA,EAGA,SAASvB,GAAuB;AAC9B,IAAAA,EAAG,aAAa,KAAK,WAAA;AAAA,EACvB;AACA;AAEO,MAAMuB,GAAoD;AAAA,EACjE,YACSC,IAAyC,MACjD;AADQ,SAAA,aAAAA;AAAA,EACP;AAAA,EAGF,KAAK9B,GAAiD;AACpD,UAAM8B,IAAc,KAAK,eAAe,OAAO9B,EAAQ,aAAa,KAAK,UAAW,IAAI;AAExF,WAAO2B,EAAW;AAAA,MAAiB3B;AAAA,MACjC8B;AAAA,IAAA;AAAA,EAEJ;AACA;ACvEO,IAAKC,sBAAAA,OACVA,EAAAA,EAAA,OAAO,CAAA,IAAP,QACAA,EAAAA,EAAA,aAAa,CAAA,IAAb,cAFUA,IAAAA,KAAA,CAAA,CAAA;AAKL,SAASC,GACdC,GACAC,GACiB;AACjB,UAAOH,EAAWE,CAAI,GAAA;AAAA,IACpB,KAAK;AAAQ,aAAO;AAAA,IACpB,KAAK;AAAc,aAAOC,EAAS,IAAIP,GAAY;AAAA,IACnD;AAAS,aAAO;AAAA,EAAA;AAEpB;ACXO,MAAMQ,EAA+D;AAAA,EAArE,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOhG,GAAUyB,GAAqC;AACtD,gBAAK,SAASzB,GACd,KAAK,KAAKyB,GACH;AAAA,EACT;AAAA,EAEA,OAAO,mBAAmBA,GAA2BD,GAA0B;AAC7E,YAAQA,KAAO,IAAIwE,EAAA,GAAa,OAAOvE,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACxF;AAAA,EAEA,OAAO,+BAA+BA,GAA2BD,GAA0B;AACzF,WAAAC,EAAG,YAAYA,EAAG,SAAA,IAAaiC,CAA8B,IACrDlC,KAAO,IAAIwE,EAAA,GAAa,OAAOvE,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACxF;AAAA,EAEA,iBAA4B;AAC1B,UAAMlC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,UAAU,KAAK,SAASA,CAAM,IAAIqG,EAAW;AAAA,EACxE;AAAA,EAEA,WAAwCpE,GAAkB;AACxD,UAAMjC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,QAAQiC,GAAK,KAAK,SAASjC,CAAM,IAAI;AAAA,EAChE;AAAA,EAEA,OAAO,eAAesE,GAA6B;AACjD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,kBAAkBA,GAA6BoC,GAA2B;AAC/E,IAAApC,EAAQ,aAAa,GAAGoC,GAAgBL,EAAW,IAAI;AAAA,EACzD;AAAA,EAEA,OAAO,cAAc/B,GAA6BqC,GAAqC;AACrF,IAAArC,EAAQ,eAAe,GAAGqC,GAAkB,CAAC;AAAA,EAC/C;AAAA,EAEA,OAAO,aAAarC,GAAgD;AAClE,UAAMtE,IAASsE,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAActE,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAEA,OAAO,gBAAgBsE,GAA6BoC,GAA2BC,GAAwD;AACrI,WAAAF,EAAU,eAAenC,CAAO,GAChCmC,EAAU,kBAAkBnC,GAASoC,CAAc,GACnDD,EAAU,cAAcnC,GAASqC,CAAgB,GAC1CF,EAAU,aAAanC,CAAO;AAAA,EACvC;AAAA,EAEA,SAAqB;AACnB,WAAO,IAAIsC;AAAA,MACT,KAAK,eAAA;AAAA,OACJ,MAAM;AACL,cAAMC,IAAOP,GAAkB,KAAK,eAAA,GAAkB,KAAK,WAAW,KAAK,IAAI,CAAC;AAChF,eAAGO,MAAS,OAAe,OACpBA,EAAK,OAAA;AAAA,MAChB,GAAA;AAAA,IAAG;AAAA,EAEL;AAAA,EAGA,SAASjC,GAAsB;AAC7B,IAAAA,EAAG,iBAAiB,KAAK,eAAA,GACzBA,EAAG,cAAc,MAAM;AACnB,YAAMiC,IAAOP,GAAkB,KAAK,eAAA,GAAkB,KAAK,WAAW,KAAK,IAAI,CAAC;AAChF,aAAGO,MAAS,OAAe,OACpBA,EAAK,OAAA;AAAA,IAChB,GAAA;AAAA,EACF;AACA;AAEO,MAAMD,GAAmD;AAAA,EAChE,YACSF,IAA6BL,EAAW,MACxCS,IAA+B,MACvC;AAFQ,SAAA,iBAAAJ,GACA,KAAA,aAAAI;AAAA,EACP;AAAA,EAGF,KAAKxC,GAAiD;AACpD,UAAMwC,IAAaxC,EAAQ,mBAAmB,KAAK,UAAU;AAE7D,WAAOmC,EAAU;AAAA,MAAgBnC;AAAA,MAC/B,KAAK;AAAA,MACLwC;AAAA,IAAA;AAAA,EAEJ;AACA;AC3FO,MAAMC,EAA+D;AAAA,EAArE,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOtG,GAAUyB,GAAqC;AACtD,gBAAK,SAASzB,GACd,KAAK,KAAKyB,GACH;AAAA,EACT;AAAA,EAEA,OAAO,mBAAmBA,GAA2BD,GAA0B;AAC7E,YAAQA,KAAO,IAAI8E,EAAA,GAAa,OAAO7E,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACxF;AAAA,EAEA,OAAO,+BAA+BA,GAA2BD,GAA0B;AACzF,WAAAC,EAAG,YAAYA,EAAG,SAAA,IAAaiC,CAA8B,IACrDlC,KAAO,IAAI8E,EAAA,GAAa,OAAO7E,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACxF;AAAA,EAEA,SAASD,GAA6B;AACpC,UAAMjC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,KAAUiC,KAAO,IAAIkD,EAAA,GAAY,OAAO,KAAK,GAAI,WAAW,KAAK,SAASnF,CAAM,GAAG,KAAK,EAAG,IAAI;AAAA,EACxG;AAAA,EAEA,OAAO,eAAesE,GAA6B;AACjD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,YAAYA,GAA6BuB,GAAmC;AACjF,IAAAvB,EAAQ,eAAe,GAAGuB,GAAgB,CAAC;AAAA,EAC7C;AAAA,EAEA,OAAO,aAAavB,GAAgD;AAClE,UAAMtE,IAASsE,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAActE,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAEA,OAAO,gBAAgBsE,GAA6BuB,GAAsD;AACxG,WAAAkB,EAAU,eAAezC,CAAO,GAChCyC,EAAU,YAAYzC,GAASuB,CAAc,GACtCkB,EAAU,aAAazC,CAAO;AAAA,EACvC;AAAA,EAEA,SAAqB;AACnB,WAAO,IAAI0C;AAAA,MACR,KAAK,eAAe,OAAO,KAAK,SAAA,EAAY,WAAW;AAAA,IAAA;AAAA,EAE5D;AAAA,EAGA,SAASpC,GAAsB;AAC7B,IAAAA,EAAG,WAAY,KAAK,SAAA,MAAe,OAAO,KAAK,SAAA,EAAY,OAAA,IAAW;AAAA,EACxE;AACA;AAEO,MAAMoC,GAAmD;AAAA,EAChE,YACShB,IAA2B,MACnC;AADQ,SAAA,WAAAA;AAAA,EACP;AAAA,EAGF,KAAK1B,GAAiD;AACpD,UAAM0B,IAAY,KAAK,aAAa,OAAO,KAAK,SAAU,KAAK1B,CAAO,IAAI;AAE1E,WAAOyC,EAAU;AAAA,MAAgBzC;AAAA,MAC/B0B;AAAA,IAAA;AAAA,EAEJ;AACA;ACrEO,MAAMiB,EAAuF;AAAA,EAA7F,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOxG,GAAUyB,GAAiD;AAClE,gBAAK,SAASzB,GACd,KAAK,KAAKyB,GACH;AAAA,EACT;AAAA,EAEA,OAAO,+BAA+BA,GAA2BD,GAAkD;AACjH,YAAQA,KAAO,IAAIgF,EAAA,GAAyB,OAAO/E,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACpG;AAAA,EAEA,OAAO,2CAA2CA,GAA2BD,GAAkD;AAC7H,WAAAC,EAAG,YAAYA,EAAG,SAAA,IAAaiC,CAA8B,IACrDlC,KAAO,IAAIgF,EAAA,GAAyB,OAAO/E,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACpG;AAAA,EAEA,OAAc;AACZ,UAAMlC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,WAAW,KAAK,SAASA,CAAM,IAAI;AAAA,EAC9D;AAAA,EAEA,eAAsB;AACpB,UAAMA,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,WAAW,KAAK,SAASA,CAAM,IAAI;AAAA,EAC9D;AAAA,EAEA,gBAAuB;AACrB,UAAMA,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,WAAW,KAAK,SAASA,CAAM,IAAI;AAAA,EAC9D;AAAA,EAEA,OAAO,2BAA2BsE,GAA6B;AAC7D,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,QAAQA,GAA6Be,GAAa;AACvD,IAAAf,EAAQ,cAAc,GAAGe,GAAM,CAAC;AAAA,EAClC;AAAA,EAEA,OAAO,gBAAgBf,GAA6B4C,GAAqB;AACvE,IAAA5C,EAAQ,cAAc,GAAG4C,GAAc,CAAC;AAAA,EAC1C;AAAA,EAEA,OAAO,iBAAiB5C,GAA6B6C,GAAsB;AACzE,IAAA7C,EAAQ,cAAc,GAAG6C,GAAe,CAAC;AAAA,EAC3C;AAAA,EAEA,OAAO,yBAAyB7C,GAAgD;AAE9E,WADeA,EAAQ,UAAA;AAAA,EAEzB;AAAA,EAEA,OAAO,4BAA4BA,GAA6Be,GAAa6B,GAAqBC,GAAyC;AACzI,WAAAF,EAAsB,2BAA2B3C,CAAO,GACxD2C,EAAsB,QAAQ3C,GAASe,CAAI,GAC3C4B,EAAsB,gBAAgB3C,GAAS4C,CAAY,GAC3DD,EAAsB,iBAAiB3C,GAAS6C,CAAa,GACtDF,EAAsB,yBAAyB3C,CAAO;AAAA,EAC/D;AAAA,EAEA,SAAiC;AAC/B,WAAO,IAAI8C;AAAA,MACT,KAAK,KAAA;AAAA,MACL,KAAK,aAAA;AAAA,MACL,KAAK,cAAA;AAAA,IAAc;AAAA,EAEvB;AAAA,EAGA,SAASxC,GAAkC;AACzC,IAAAA,EAAG,OAAO,KAAK,KAAA,GACfA,EAAG,eAAe,KAAK,aAAA,GACvBA,EAAG,gBAAgB,KAAK,cAAA;AAAA,EAC1B;AACA;AAEO,MAAMwC,GAA+D;AAAA,EAC5E,YACS/B,IAAe,GACf6B,IAAuB,GACvBC,IAAwB,GAChC;AAHQ,SAAA,OAAA9B,GACA,KAAA,eAAA6B,GACA,KAAA,gBAAAC;AAAA,EACP;AAAA,EAGF,KAAK7C,GAAiD;AACpD,WAAO2C,EAAsB;AAAA,MAA4B3C;AAAA,MACvD,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IAAA;AAAA,EAET;AACA;AC7FO,MAAM+C,EAA2E;AAAA,EAAjF,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAO5G,GAAUyB,GAA2C;AAC5D,gBAAK,SAASzB,GACd,KAAK,KAAKyB,GACH;AAAA,EACT;AAAA,EAEA,OAAO,yBAAyBA,GAA2BD,GAAsC;AAC/F,YAAQA,KAAO,IAAIoF,EAAA,GAAmB,OAAOnF,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC9F;AAAA,EAEA,OAAO,qCAAqCA,GAA2BD,GAAsC;AAC3G,WAAAC,EAAG,YAAYA,EAAG,SAAA,IAAaiC,CAA8B,IACrDlC,KAAO,IAAIoF,EAAA,GAAmB,OAAOnF,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC9F;AAAA,EAEA,OAAO,qBAAqBoC,GAA6B;AACvD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,mBAAmBA,GAAgD;AAExE,WADeA,EAAQ,UAAA;AAAA,EAEzB;AAAA,EAEA,OAAO,sBAAsBA,GAAgD;AAC3E,WAAA+C,EAAgB,qBAAqB/C,CAAO,GACrC+C,EAAgB,mBAAmB/C,CAAO;AAAA,EACnD;AAAA,EAEA,SAA2B;AACzB,WAAO,IAAIgD,GAAA;AAAA,EACb;AAAA,EAGA,SAAS1C,GAA4B;AAAA,EAAC;AACtC;AAEO,MAAM0C,GAAyD;AAAA,EACtE,cAAa;AAAA,EAAC;AAAA,EAGd,KAAKhD,GAAiD;AACpD,WAAO+C,EAAgB,sBAAsB/C,CAAO;AAAA,EACtD;AACA;AC/CO,MAAMiD,EAAmG;AAAA,EAAzG,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAO9G,GAAUyB,GAAuD;AACxE,gBAAK,SAASzB,GACd,KAAK,KAAKyB,GACH;AAAA,EACT;AAAA,EAEA,OAAO,qCAAqCA,GAA2BD,GAA8D;AACnI,YAAQA,KAAO,IAAIsF,EAAA,GAA+B,OAAOrF,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC1G;AAAA,EAEA,OAAO,iDAAiDA,GAA2BD,GAA8D;AAC/I,WAAAC,EAAG,YAAYA,EAAG,SAAA,IAAaiC,CAA8B,IACrDlC,KAAO,IAAIsF,EAAA,GAA+B,OAAOrF,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC1G;AAAA,EAEA,YAAmB;AACjB,UAAMlC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,WAAW,KAAK,SAASA,CAAM,IAAI;AAAA,EAC9D;AAAA,EAEA,OAAO,iCAAiCsE,GAA6B;AACnE,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,aAAaA,GAA6BkD,GAAkB;AACjE,IAAAlD,EAAQ,cAAc,GAAGkD,GAAW,CAAC;AAAA,EACvC;AAAA,EAEA,OAAO,+BAA+BlD,GAAgD;AAEpF,WADeA,EAAQ,UAAA;AAAA,EAEzB;AAAA,EAEA,OAAO,kCAAkCA,GAA6BkD,GAAqC;AACzG,WAAAD,EAA4B,iCAAiCjD,CAAO,GACpEiD,EAA4B,aAAajD,GAASkD,CAAS,GACpDD,EAA4B,+BAA+BjD,CAAO;AAAA,EAC3E;AAAA,EAEA,SAAuC;AACrC,WAAO,IAAImD;AAAA,MACT,KAAK,UAAA;AAAA,IAAU;AAAA,EAEnB;AAAA,EAGA,SAAS7C,GAAwC;AAC/C,IAAAA,EAAG,YAAY,KAAK,UAAA;AAAA,EACtB;AACA;AAEO,MAAM6C,GAAqE;AAAA,EAClF,YACSD,IAAoB,GAC5B;AADQ,SAAA,YAAAA;AAAA,EACP;AAAA,EAGF,KAAKlD,GAAiD;AACpD,WAAOiD,EAA4B;AAAA,MAAkCjD;AAAA,MACnE,KAAK;AAAA,IAAA;AAAA,EAET;AACA;ACjEO,MAAMoD,EAAiF;AAAA,EAAvF,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOjH,GAAUyB,GAA8C;AAC/D,gBAAK,SAASzB,GACd,KAAK,KAAKyB,GACH;AAAA,EACT;AAAA,EAEA,OAAO,4BAA4BA,GAA2BD,GAA4C;AACxG,YAAQA,KAAO,IAAIyF,EAAA,GAAsB,OAAOxF,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACjG;AAAA,EAEA,OAAO,wCAAwCA,GAA2BD,GAA4C;AACpH,WAAAC,EAAG,YAAYA,EAAG,SAAA,IAAaiC,CAA8B,IACrDlC,KAAO,IAAIyF,EAAA,GAAsB,OAAOxF,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACjG;AAAA,EAEA,OAAO,wBAAwBoC,GAA6B;AAC1D,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,sBAAsBA,GAAgD;AAE3E,WADeA,EAAQ,UAAA;AAAA,EAEzB;AAAA,EAEA,OAAO,yBAAyBA,GAAgD;AAC9E,WAAAoD,EAAmB,wBAAwBpD,CAAO,GAC3CoD,EAAmB,sBAAsBpD,CAAO;AAAA,EACzD;AAAA,EAEA,SAA8B;AAC5B,WAAO,IAAIqD,GAAA;AAAA,EACb;AAAA,EAGA,SAAS/C,GAA+B;AAAA,EAAC;AACzC;AAEO,MAAM+C,GAA4D;AAAA,EACzE,cAAa;AAAA,EAAC;AAAA,EAGd,KAAKrD,GAAiD;AACpD,WAAOoD,EAAmB,yBAAyBpD,CAAO;AAAA,EAC5D;AACA;AC/CO,MAAMsD,EAA+F;AAAA,EAArG,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOnH,GAAUyB,GAAqD;AACtE,gBAAK,SAASzB,GACd,KAAK,KAAKyB,GACH;AAAA,EACT;AAAA,EAEA,OAAO,mCAAmCA,GAA2BD,GAA0D;AAC7H,YAAQA,KAAO,IAAI2F,EAAA,GAA6B,OAAO1F,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACxG;AAAA,EAEA,OAAO,+CAA+CA,GAA2BD,GAA0D;AACzI,WAAAC,EAAG,YAAYA,EAAG,SAAA,IAAaiC,CAA8B,IACrDlC,KAAO,IAAI2F,EAAA,GAA6B,OAAO1F,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACxG;AAAA,EAIA,eAAemC,GAAmD;AAChE,UAAMrE,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,mBAAmB,KAAK,SAASA,GAAQqE,CAAgB,IAAI;AAAA,EACxF;AAAA,EAEA,OAAO,+BAA+BC,GAA6B;AACjE,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,kBAAkBA,GAA6BuD,GAAyC;AAC7F,IAAAvD,EAAQ,eAAe,GAAGuD,GAAsB,CAAC;AAAA,EACnD;AAAA,EAEA,OAAO,6BAA6BvD,GAAgD;AAClF,UAAMtE,IAASsE,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAActE,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAEA,OAAO,gCAAgCsE,GAA6BuD,GAA4D;AAC9H,WAAAD,EAA0B,+BAA+BtD,CAAO,GAChEsD,EAA0B,kBAAkBtD,GAASuD,CAAoB,GAClED,EAA0B,6BAA6BtD,CAAO;AAAA,EACvE;AAAA,EAEA,SAAqC;AACnC,WAAO,IAAIwD;AAAA,MACT,KAAK,eAAA;AAAA,IAAe;AAAA,EAExB;AAAA,EAGA,SAASlD,GAAsC;AAC7C,IAAAA,EAAG,iBAAiB,KAAK,eAAA;AAAA,EAC3B;AACA;AAEO,MAAMkD,GAAmE;AAAA,EAChF,YACSC,IAA6C,MACrD;AADQ,SAAA,iBAAAA;AAAA,EACP;AAAA,EAGF,KAAKzD,GAAiD;AACpD,UAAMyD,IAAkB,KAAK,mBAAmB,OAAOzD,EAAQ,aAAa,KAAK,cAAe,IAAI;AAEpG,WAAOsD,EAA0B;AAAA,MAAgCtD;AAAA,MAC/DyD;AAAA,IAAA;AAAA,EAEJ;AACA;ACjEO,IAAKC,sBAAAA,OACVA,EAAAA,EAAA,OAAO,CAAA,IAAP,QACAA,EAAAA,EAAA,kBAAkB,CAAA,IAAlB,mBACAA,EAAAA,EAAA,uBAAuB,CAAA,IAAvB,wBACAA,EAAAA,EAAA,oBAAoB,CAAA,IAApB,qBACAA,EAAAA,EAAA,wBAAwB,CAAA,IAAxB,yBACAA,EAAAA,EAAA,qBAAqB,CAAA,IAArB,sBACAA,EAAAA,EAAA,4BAA4B,CAAA,IAA5B,6BACAA,EAAAA,EAAA,8BAA8B,CAAA,IAA9B,+BARUA,IAAAA,KAAA,CAAA,CAAA;AAWL,SAASC,GACd1B,GACAC,GAC4J;AAC5J,UAAOwB,EAAWzB,CAAI,GAAA;AAAA,IACpB,KAAK;AAAQ,aAAO;AAAA,IACpB,KAAK;AAAmB,aAAOC,EAAS,IAAIa,GAAiB;AAAA,IAC7D,KAAK;AAAwB,aAAOb,EAAS,IAAIvB,GAAsB;AAAA,IACvE,KAAK;AAAqB,aAAOuB,EAAS,IAAItC,GAAmB;AAAA,IACjE,KAAK;AAAyB,aAAOsC,EAAS,IAAIS,GAAuB;AAAA,IACzE,KAAK;AAAsB,aAAOT,EAAS,IAAIkB,GAAoB;AAAA,IACnE,KAAK;AAA6B,aAAOlB,EAAS,IAAIoB,GAA2B;AAAA,IACjF,KAAK;AAA+B,aAAOpB,EAAS,IAAIe,GAA6B;AAAA,IACrF;AAAS,aAAO;AAAA,EAAA;AAEpB;ACvBO,MAAMW,EAAqD;AAAA,EAA3D,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOzH,GAAUyB,GAAgC;AACjD,gBAAK,SAASzB,GACd,KAAK,KAAKyB,GACH;AAAA,EACT;AAAA,EAEA,OAAO,cAAcA,GAA2BD,GAAgB;AAC9D,YAAQA,KAAO,IAAIiG,EAAA,GAAQ,OAAOhG,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACnF;AAAA,EAEA,OAAO,0BAA0BA,GAA2BD,GAAgB;AAC1E,WAAAC,EAAG,YAAYA,EAAG,SAAA,IAAaiC,CAA8B,IACrDlC,KAAO,IAAIiG,EAAA,GAAQ,OAAOhG,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACnF;AAAA,EAEA,aAAwB;AACtB,UAAMlC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,UAAU,KAAK,SAASA,CAAM,IAAIgI,EAAW;AAAA,EACxE;AAAA,EAEA,OAAoC/F,GAAkB;AACpD,UAAMjC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,QAAQiC,GAAK,KAAK,SAASjC,CAAM,IAAI;AAAA,EAChE;AAAA,EAEA,OAAO,UAAUsE,GAA6B;AAC5C,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,cAAcA,GAA6B6D,GAAuB;AACvE,IAAA7D,EAAQ,aAAa,GAAG6D,GAAYH,EAAW,IAAI;AAAA,EACrD;AAAA,EAEA,OAAO,UAAU1D,GAA6B8D,GAAiC;AAC7E,IAAA9D,EAAQ,eAAe,GAAG8D,GAAc,CAAC;AAAA,EAC3C;AAAA,EAEA,OAAO,QAAQ9D,GAAgD;AAC7D,UAAMtE,IAASsE,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAActE,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAEA,OAAO,WAAWsE,GAA6B6D,GAAuBC,GAAoD;AACxH,WAAAF,EAAK,UAAU5D,CAAO,GACtB4D,EAAK,cAAc5D,GAAS6D,CAAU,GACtCD,EAAK,UAAU5D,GAAS8D,CAAY,GAC7BF,EAAK,QAAQ5D,CAAO;AAAA,EAC7B;AAAA,EAEA,SAAgB;AACd,WAAO,IAAI+D;AAAA,MACT,KAAK,WAAA;AAAA,OACJ,MAAM;AACL,cAAMxB,IAAOoB,GAAkB,KAAK,WAAA,GAAc,KAAK,OAAO,KAAK,IAAI,CAAC;AACxE,eAAGpB,MAAS,OAAe,OACpBA,EAAK,OAAA;AAAA,MAChB,GAAA;AAAA,IAAG;AAAA,EAEL;AAAA,EAGA,SAASjC,GAAiB;AACxB,IAAAA,EAAG,aAAa,KAAK,WAAA,GACrBA,EAAG,UAAU,MAAM;AACf,YAAMiC,IAAOoB,GAAkB,KAAK,WAAA,GAAc,KAAK,OAAO,KAAK,IAAI,CAAC;AACxE,aAAGpB,MAAS,OAAe,OACpBA,EAAK,OAAA;AAAA,IAChB,GAAA;AAAA,EACF;AACA;AAEO,MAAMwB,GAA8C;AAAA,EAC3D,YACSF,IAAyBH,EAAW,MACpCM,IAA4K,MACpL;AAFQ,SAAA,aAAAH,GACA,KAAA,SAAAG;AAAA,EACP;AAAA,EAGF,KAAKhE,GAAiD;AACpD,UAAMgE,IAAShE,EAAQ,mBAAmB,KAAK,MAAM;AAErD,WAAO4D,EAAK;AAAA,MAAW5D;AAAA,MACrB,KAAK;AAAA,MACLgE;AAAA,IAAA;AAAA,EAEJ;AACA;ACjGO,MAAMC,EAAyE;AAAA,EAA/E,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAO9H,GAAUyB,GAA0C;AAC3D,gBAAK,SAASzB,GACd,KAAK,KAAKyB,GACH;AAAA,EACT;AAAA,EAEA,OAAO,wBAAwBA,GAA2BD,GAAoC;AAC5F,YAAQA,KAAO,IAAIsG,EAAA,GAAkB,OAAOrG,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC7F;AAAA,EAEA,OAAO,oCAAoCA,GAA2BD,GAAoC;AACxG,WAAAC,EAAG,YAAYA,EAAG,SAAA,IAAaiC,CAA8B,IACrDlC,KAAO,IAAIsG,EAAA,GAAkB,OAAOrG,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC7F;AAAA,EAEA,MAAMkC,GAAenC,GAAqB;AACxC,UAAMjC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,KAAUiC,KAAO,IAAIiG,EAAA,GAAQ,OAAO,KAAK,GAAI,WAAW,KAAK,GAAI,SAAS,KAAK,SAASlI,CAAM,IAAIoE,IAAQ,CAAC,GAAG,KAAK,EAAG,IAAI;AAAA,EACnI;AAAA,EAEA,cAAqB;AACnB,UAAMpE,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,aAAa,KAAK,SAASA,CAAM,IAAI;AAAA,EAChE;AAAA,EAEA,OAAO,oBAAoBsE,GAA6B;AACtD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,SAASA,GAA6BkE,GAAgC;AAC3E,IAAAlE,EAAQ,eAAe,GAAGkE,GAAa,CAAC;AAAA,EAC1C;AAAA,EAEA,OAAO,kBAAkBlE,GAA6BE,GAA8C;AAClG,IAAAF,EAAQ,YAAY,GAAGE,EAAK,QAAQ,CAAC;AACrC,aAAS/D,IAAI+D,EAAK,SAAS,GAAG/D,KAAK,GAAGA;AACpC,MAAA6D,EAAQ,UAAUE,EAAK/D,CAAC,CAAE;AAE5B,WAAO6D,EAAQ,UAAA;AAAA,EACjB;AAAA,EAEA,OAAO,iBAAiBA,GAA6BG,GAAiB;AACpE,IAAAH,EAAQ,YAAY,GAAGG,GAAU,CAAC;AAAA,EACpC;AAAA,EAEA,OAAO,kBAAkBH,GAAgD;AACvE,UAAMtE,IAASsE,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAActE,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAEA,OAAO,qBAAqBsE,GAA6BkE,GAAmD;AAC1G,WAAAD,EAAe,oBAAoBjE,CAAO,GAC1CiE,EAAe,SAASjE,GAASkE,CAAW,GACrCD,EAAe,kBAAkBjE,CAAO;AAAA,EACjD;AAAA,EAEA,SAA0B;AACxB,WAAO,IAAImE;AAAA,MACT,KAAK,GAAI,cAA2B,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,YAAA,CAAa;AAAA,IAAA;AAAA,EAEjF;AAAA,EAGA,SAAS7D,GAA2B;AAClC,IAAAA,EAAG,QAAQ,KAAK,GAAI,cAA2B,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,YAAA,CAAa;AAAA,EAC1F;AACA;AAEO,MAAM6D,GAAwD;AAAA,EACrE,YACSC,IAAmB,IAC3B;AADQ,SAAA,QAAAA;AAAA,EACP;AAAA,EAGF,KAAKpE,GAAiD;AACpD,UAAMoE,IAAQH,EAAe,kBAAkBjE,GAASA,EAAQ,uBAAuB,KAAK,KAAK,CAAC;AAElG,WAAOiE,EAAe;AAAA,MAAqBjE;AAAA,MACzCoE;AAAA,IAAA;AAAA,EAEJ;AACA;ACrFO,MAAMC,EAAiF;AAAA,EAAvF,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOlI,GAAUyB,GAA8C;AAC/D,gBAAK,SAASzB,GACd,KAAK,KAAKyB,GACH;AAAA,EACT;AAAA,EAEA,OAAO,4BAA4BA,GAA2BD,GAA4C;AACxG,YAAQA,KAAO,IAAI0G,EAAA,GAAsB,OAAOzG,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACjG;AAAA,EAEA,OAAO,wCAAwCA,GAA2BD,GAA4C;AACpH,WAAAC,EAAG,YAAYA,EAAG,SAAA,IAAaiC,CAA8B,IACrDlC,KAAO,IAAI0G,EAAA,GAAsB,OAAOzG,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACjG;AAAA,EAEA,SAASD,GAAyC;AAChD,UAAMjC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,KAAUiC,KAAO,IAAIsG,EAAA,GAAkB,OAAO,KAAK,GAAI,WAAW,KAAK,SAASvI,CAAM,GAAG,KAAK,EAAG,IAAI;AAAA,EAC9G;AAAA,EAEA,cAAsB;AACpB,UAAMA,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,CAAC,CAAC,KAAK,GAAI,SAAS,KAAK,SAASA,CAAM,IAAI;AAAA,EAC9D;AAAA,EAEA,aAAqB;AACnB,UAAMA,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,CAAC,CAAC,KAAK,GAAI,SAAS,KAAK,SAASA,CAAM,IAAI;AAAA,EAC9D;AAAA,EAEA,YAAmB;AACjB,UAAMA,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,EAAE;AAChD,WAAOA,IAAS,KAAK,GAAI,WAAW,KAAK,SAASA,CAAM,IAAI,OAAO,GAAG;AAAA,EACxE;AAAA,EAEA,YAAmB;AACjB,UAAMA,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,EAAE;AAChD,WAAOA,IAAS,KAAK,GAAI,WAAW,KAAK,SAASA,CAAM,IAAI;AAAA,EAC9D;AAAA,EAEA,YAAoB;AAClB,UAAMA,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,EAAE;AAChD,WAAOA,IAAS,CAAC,CAAC,KAAK,GAAI,SAAS,KAAK,SAASA,CAAM,IAAI;AAAA,EAC9D;AAAA,EAEA,QAAgB;AACd,UAAMA,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,EAAE;AAChD,WAAOA,IAAS,CAAC,CAAC,KAAK,GAAI,SAAS,KAAK,SAASA,CAAM,IAAI;AAAA,EAC9D;AAAA,EAEA,gBAAuB;AACrB,UAAMA,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,EAAE;AAChD,WAAOA,IAAS,KAAK,GAAI,WAAW,KAAK,SAASA,CAAM,IAAI;AAAA,EAC9D;AAAA,EAEA,OAAO,wBAAwBsE,GAA6B;AAC1D,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,YAAYA,GAA6BsE,GAAmC;AACjF,IAAAtE,EAAQ,eAAe,GAAGsE,GAAgB,CAAC;AAAA,EAC7C;AAAA,EAEA,OAAO,eAAetE,GAA6BuE,GAAqB;AACtE,IAAAvE,EAAQ,aAAa,GAAG,CAACuE,GAAa,CAAM;AAAA,EAC9C;AAAA,EAEA,OAAO,cAAcvE,GAA6BwE,GAAoB;AACpE,IAAAxE,EAAQ,aAAa,GAAG,CAACwE,GAAY,CAAK;AAAA,EAC5C;AAAA,EAEA,OAAO,aAAaxE,GAA6ByE,GAAkB;AACjE,IAAAzE,EAAQ,cAAc,GAAGyE,GAAW,OAAO,GAAG,CAAC;AAAA,EACjD;AAAA,EAEA,OAAO,aAAazE,GAA6B0E,GAAkB;AACjE,IAAA1E,EAAQ,cAAc,GAAG0E,GAAW,CAAC;AAAA,EACvC;AAAA,EAEA,OAAO,aAAa1E,GAA6B2E,GAAmB;AAClE,IAAA3E,EAAQ,aAAa,GAAG,CAAC2E,GAAW,CAAM;AAAA,EAC5C;AAAA,EAEA,OAAO,SAAS3E,GAA6B4E,GAAe;AAC1D,IAAA5E,EAAQ,aAAa,GAAG,CAAC4E,GAAO,CAAM;AAAA,EACxC;AAAA,EAEA,OAAO,iBAAiB5E,GAA6B6E,GAAsB;AACzE,IAAA7E,EAAQ,cAAc,GAAG6E,GAAe,CAAC;AAAA,EAC3C;AAAA,EAEA,OAAO,sBAAsB7E,GAAgD;AAE3E,WADeA,EAAQ,UAAA;AAAA,EAEzB;AAAA,EAEA,OAAO,yBAAyBA,GAA6BsE,GAAmCC,GAAqBC,GAAoBC,GAAkBC,GAAkBC,GAAmBC,GAAeC,GAAyC;AACtP,WAAAR,EAAmB,wBAAwBrE,CAAO,GAClDqE,EAAmB,YAAYrE,GAASsE,CAAc,GACtDD,EAAmB,eAAerE,GAASuE,CAAW,GACtDF,EAAmB,cAAcrE,GAASwE,CAAU,GACpDH,EAAmB,aAAarE,GAASyE,CAAS,GAClDJ,EAAmB,aAAarE,GAAS0E,CAAS,GAClDL,EAAmB,aAAarE,GAAS2E,CAAS,GAClDN,EAAmB,SAASrE,GAAS4E,CAAK,GAC1CP,EAAmB,iBAAiBrE,GAAS6E,CAAa,GACnDR,EAAmB,sBAAsBrE,CAAO;AAAA,EACzD;AAAA,EAEA,SAA8B;AAC5B,WAAO,IAAI8E;AAAA,MACR,KAAK,eAAe,OAAO,KAAK,SAAA,EAAY,WAAW;AAAA,MACxD,KAAK,YAAA;AAAA,MACL,KAAK,WAAA;AAAA,MACL,KAAK,UAAA;AAAA,MACL,KAAK,UAAA;AAAA,MACL,KAAK,UAAA;AAAA,MACL,KAAK,MAAA;AAAA,MACL,KAAK,cAAA;AAAA,IAAc;AAAA,EAEvB;AAAA,EAGA,SAASxE,GAA+B;AACtC,IAAAA,EAAG,WAAY,KAAK,SAAA,MAAe,OAAO,KAAK,SAAA,EAAY,OAAA,IAAW,MACtEA,EAAG,cAAc,KAAK,YAAA,GACtBA,EAAG,aAAa,KAAK,WAAA,GACrBA,EAAG,YAAY,KAAK,UAAA,GACpBA,EAAG,YAAY,KAAK,UAAA,GACpBA,EAAG,YAAY,KAAK,UAAA,GACpBA,EAAG,QAAQ,KAAK,MAAA,GAChBA,EAAG,gBAAgB,KAAK,cAAA;AAAA,EAC1B;AACA;AAEO,MAAMwE,GAA4D;AAAA,EACzE,YACSC,IAAiC,MACjCR,IAAuB,IACvBC,IAAsB,IACtBC,IAAoB,OAAO,GAAG,GAC9BC,IAAoB,GACpBC,IAAqB,IACrBC,IAAiB,IACjBC,IAAwB,GAChC;AARQ,SAAA,WAAAE,GACA,KAAA,cAAAR,GACA,KAAA,aAAAC,GACA,KAAA,YAAAC,GACA,KAAA,YAAAC,GACA,KAAA,YAAAC,GACA,KAAA,QAAAC,GACA,KAAA,gBAAAC;AAAA,EACP;AAAA,EAGF,KAAK7E,GAAiD;AACpD,UAAM+E,IAAY,KAAK,aAAa,OAAO,KAAK,SAAU,KAAK/E,CAAO,IAAI;AAE1E,WAAOqE,EAAmB;AAAA,MAAyBrE;AAAA,MACjD+E;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IAAA;AAAA,EAET;AACA;ACpKO,MAAMC,EAA+D;AAAA,EAArE,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAO7I,GAAUyB,GAAqC;AACtD,gBAAK,SAASzB,GACd,KAAK,KAAKyB,GACH;AAAA,EACT;AAAA,EAEA,OAAO,mBAAmBA,GAA2BD,GAA0B;AAC7E,YAAQA,KAAO,IAAIqH,EAAA,GAAa,OAAOpH,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACxF;AAAA,EAEA,OAAO,+BAA+BA,GAA2BD,GAA0B;AACzF,WAAAC,EAAG,YAAYA,EAAG,SAAA,IAAaiC,CAA8B,IACrDlC,KAAO,IAAIqH,EAAA,GAAa,OAAOpH,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACxF;AAAA,EAIA,eAAemC,GAAmD;AAChE,UAAMrE,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,mBAAmB,KAAK,SAASA,GAAQqE,CAAgB,IAAI;AAAA,EACxF;AAAA,EAEA,SAASD,GAAenC,GAA2B;AACjD,UAAMjC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,KAAUiC,KAAO,IAAIsH,GAAA,GAAW,OAAO,KAAK,GAAI,WAAW,KAAK,GAAI,SAAS,KAAK,SAASvJ,CAAM,IAAIoE,IAAQ,CAAC,GAAG,KAAK,EAAG,IAAI;AAAA,EACtI;AAAA,EAEA,iBAAwB;AACtB,UAAMpE,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,aAAa,KAAK,SAASA,CAAM,IAAI;AAAA,EAChE;AAAA,EAEA,OAAOiC,GAAiD;AACtD,UAAMjC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,KAAUiC,KAAO,IAAI0G,EAAA,GAAsB,OAAO,KAAK,GAAI,WAAW,KAAK,SAAS3I,CAAM,GAAG,KAAK,EAAG,IAAI;AAAA,EAClH;AAAA,EAEA,OAAO,eAAesE,GAA6B;AACjD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,kBAAkBA,GAA6BuD,GAAyC;AAC7F,IAAAvD,EAAQ,eAAe,GAAGuD,GAAsB,CAAC;AAAA,EACnD;AAAA,EAEA,OAAO,YAAYvD,GAA6BkF,GAAmC;AACjF,IAAAlF,EAAQ,eAAe,GAAGkF,GAAgB,CAAC;AAAA,EAC7C;AAAA,EAEA,OAAO,qBAAqBlF,GAA6BE,GAA8C;AACrG,IAAAF,EAAQ,YAAY,GAAGE,EAAK,QAAQ,CAAC;AACrC,aAAS/D,IAAI+D,EAAK,SAAS,GAAG/D,KAAK,GAAGA;AACpC,MAAA6D,EAAQ,UAAUE,EAAK/D,CAAC,CAAE;AAE5B,WAAO6D,EAAQ,UAAA;AAAA,EACjB;AAAA,EAEA,OAAO,oBAAoBA,GAA6BG,GAAiB;AACvE,IAAAH,EAAQ,YAAY,GAAGG,GAAU,CAAC;AAAA,EACpC;AAAA,EAEA,OAAO,UAAUH,GAA6B8D,GAAiC;AAC7E,IAAA9D,EAAQ,eAAe,GAAG8D,GAAc,CAAC;AAAA,EAC3C;AAAA,EAEA,OAAO,aAAa9D,GAAgD;AAClE,UAAMtE,IAASsE,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAActE,GAAQ,CAAC,GAC/BsE,EAAQ,cAActE,GAAQ,CAAC,GAC/BsE,EAAQ,cAActE,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAGA,SAAqB;AACnB,WAAO,IAAIyJ;AAAA,MACT,KAAK,eAAA;AAAA,MACL,KAAK,GAAI,cAAiC,KAAK,SAAS,KAAK,IAAI,GAAG,KAAK,gBAAgB;AAAA,MACxF,KAAK,aAAa,OAAO,KAAK,OAAA,EAAU,WAAW;AAAA,IAAA;AAAA,EAExD;AAAA,EAGA,SAAS7E,GAAsB;AAC7B,IAAAA,EAAG,iBAAiB,KAAK,eAAA,GACzBA,EAAG,WAAW,KAAK,GAAI,cAAiC,KAAK,SAAS,KAAK,IAAI,GAAG,KAAK,eAAA,CAAgB,GACvGA,EAAG,SAAU,KAAK,OAAA,MAAa,OAAO,KAAK,OAAA,EAAU,OAAA,IAAW;AAAA,EAClE;AACA;AAEO,MAAM6E,GAAmD;AAAA,EAChE,YACS1B,IAA6C,MAC7C2B,IAAyB,CAAA,GACzBpB,IAAmC,MAC3C;AAHQ,SAAA,iBAAAP,GACA,KAAA,WAAA2B,GACA,KAAA,SAAApB;AAAA,EACP;AAAA,EAGF,KAAKhE,GAAiD;AACpD,UAAMyD,IAAkB,KAAK,mBAAmB,OAAOzD,EAAQ,aAAa,KAAK,cAAe,IAAI,GAC9FoF,IAAWJ,EAAU,qBAAqBhF,GAASA,EAAQ,uBAAuB,KAAK,QAAQ,CAAC,GAChGgE,IAAU,KAAK,WAAW,OAAO,KAAK,OAAQ,KAAKhE,CAAO,IAAI;AAEpE,WAAAgF,EAAU,eAAehF,CAAO,GAChCgF,EAAU,kBAAkBhF,GAASyD,CAAc,GACnDuB,EAAU,YAAYhF,GAASoF,CAAQ,GACvCJ,EAAU,UAAUhF,GAASgE,CAAM,GAE5BgB,EAAU,aAAahF,CAAO;AAAA,EACvC;AACA;ACnHO,MAAMqF,EAAmE;AAAA,EAAzE,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOlJ,GAAUyB,GAAuC;AACxD,gBAAK,SAASzB,GACd,KAAK,KAAKyB,GACH;AAAA,EACT;AAAA,EAEA,OAAO,qBAAqBA,GAA2BD,GAA8B;AACnF,YAAQA,KAAO,IAAI0H,EAAA,GAAe,OAAOzH,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC1F;AAAA,EAEA,OAAO,iCAAiCA,GAA2BD,GAA8B;AAC/F,WAAAC,EAAG,YAAYA,EAAG,SAAA,IAAaiC,CAA8B,IACrDlC,KAAO,IAAI0H,EAAA,GAAe,OAAOzH,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC1F;AAAA,EAIA,eAAemC,GAAmD;AAChE,UAAMrE,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,mBAAmB,KAAK,SAASA,GAAQqE,CAAgB,IAAI;AAAA,EACxF;AAAA,EAEA,OAAO,iBAAiBC,GAA6B;AACnD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,kBAAkBA,GAA6BuD,GAAyC;AAC7F,IAAAvD,EAAQ,eAAe,GAAGuD,GAAsB,CAAC;AAAA,EACnD;AAAA,EAEA,OAAO,eAAevD,GAAgD;AACpE,UAAMtE,IAASsE,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAActE,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAEA,OAAO,kBAAkBsE,GAA6BuD,GAA4D;AAChH,WAAA8B,EAAY,iBAAiBrF,CAAO,GACpCqF,EAAY,kBAAkBrF,GAASuD,CAAoB,GACpD8B,EAAY,eAAerF,CAAO;AAAA,EAC3C;AAAA,EAEA,SAAuB;AACrB,WAAO,IAAIsF;AAAA,MACT,KAAK,eAAA;AAAA,IAAe;AAAA,EAExB;AAAA,EAGA,SAAShF,GAAwB;AAC/B,IAAAA,EAAG,iBAAiB,KAAK,eAAA;AAAA,EAC3B;AACA;AAEO,MAAMgF,GAAqD;AAAA,EAClE,YACS7B,IAA6C,MACrD;AADQ,SAAA,iBAAAA;AAAA,EACP;AAAA,EAGF,KAAKzD,GAAiD;AACpD,UAAMyD,IAAkB,KAAK,mBAAmB,OAAOzD,EAAQ,aAAa,KAAK,cAAe,IAAI;AAEpG,WAAOqF,EAAY;AAAA,MAAkBrF;AAAA,MACnCyD;AAAA,IAAA;AAAA,EAEJ;AACA;AClEO,IAAK8B,sBAAAA,OACVA,EAAAA,EAAA,OAAO,CAAA,IAAP,QACAA,EAAAA,EAAA,YAAY,CAAA,IAAZ,aACAA,EAAAA,EAAA,cAAc,CAAA,IAAd,eACAA,EAAAA,EAAA,UAAU,CAAA,IAAV,WACAA,EAAAA,EAAA,YAAY,CAAA,IAAZ,aACAA,EAAAA,EAAA,YAAY,CAAA,IAAZ,aACAA,EAAAA,EAAA,eAAe,CAAA,IAAf,gBAPUA,IAAAA,KAAA,CAAA,CAAA;AAUL,SAASC,GACdvD,GACAC,GACqE;AACrE,UAAOqD,EAAYtD,CAAI,GAAA;AAAA,IACrB,KAAK;AAAQ,aAAO;AAAA,IACpB,KAAK;AAAa,aAAOC,EAAS,IAAI8C,GAAW;AAAA,IACjD,KAAK;AAAe,aAAO9C,EAAS,IAAImD,GAAa;AAAA,IACrD,KAAK;AAAW,aAAOnD,EAAS,IAAIb,GAAS;AAAA,IAC7C,KAAK;AAAa,aAAOa,EAAS,IAAIO,GAAW;AAAA,IACjD,KAAK;AAAa,aAAOP,EAAS,IAAIC,GAAW;AAAA,IACjD,KAAK;AAAgB,aAAOD,EAAS,IAAIzB,GAAc;AAAA,IACvD;AAAS,aAAO;AAAA,EAAA;AAEpB;ACrBO,MAAMgF,EAAmE;AAAA,EAAzE,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOtJ,GAAUyB,GAAuC;AACxD,gBAAK,SAASzB,GACd,KAAK,KAAKyB,GACH;AAAA,EACT;AAAA,EAEA,OAAO,qBAAqBA,GAA2BD,GAA8B;AACnF,YAAQA,KAAO,IAAI8H,EAAA,GAAe,OAAO7H,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC1F;AAAA,EAEA,OAAO,iCAAiCA,GAA2BD,GAA8B;AAC/F,WAAAC,EAAG,YAAYA,EAAG,SAAA,IAAaiC,CAA8B,IACrDlC,KAAO,IAAI8H,EAAA,GAAe,OAAO7H,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC1F;AAAA,EAEA,cAA0B;AACxB,UAAMlC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,UAAU,KAAK,SAASA,CAAM,IAAI6J,EAAY;AAAA,EACzE;AAAA,EAEA,QAAqC5H,GAAkB;AACrD,UAAMjC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,QAAQiC,GAAK,KAAK,SAASjC,CAAM,IAAI;AAAA,EAChE;AAAA,EAEA,OAAO,iBAAiBsE,GAA6B;AACnD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,eAAeA,GAA6B0F,GAAyB;AAC1E,IAAA1F,EAAQ,aAAa,GAAG0F,GAAaH,EAAY,IAAI;AAAA,EACvD;AAAA,EAEA,OAAO,WAAWvF,GAA6BgB,GAAkC;AAC/E,IAAAhB,EAAQ,eAAe,GAAGgB,GAAe,CAAC;AAAA,EAC5C;AAAA,EAEA,OAAO,eAAehB,GAAgD;AACpE,UAAMtE,IAASsE,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAActE,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAEA,OAAO,kBAAkBsE,GAA6B0F,GAAyB1E,GAAqD;AAClI,WAAAyE,EAAY,iBAAiBzF,CAAO,GACpCyF,EAAY,eAAezF,GAAS0F,CAAW,GAC/CD,EAAY,WAAWzF,GAASgB,CAAa,GACtCyE,EAAY,eAAezF,CAAO;AAAA,EAC3C;AAAA,EAEA,SAAuB;AACrB,WAAO,IAAI2F;AAAA,MACT,KAAK,YAAA;AAAA,OACJ,MAAM;AACL,cAAMpD,IAAOiD,GAAmB,KAAK,YAAA,GAAe,KAAK,QAAQ,KAAK,IAAI,CAAC;AAC3E,eAAGjD,MAAS,OAAe,OACpBA,EAAK,OAAA;AAAA,MAChB,GAAA;AAAA,IAAG;AAAA,EAEL;AAAA,EAGA,SAASjC,GAAwB;AAC/B,IAAAA,EAAG,cAAc,KAAK,YAAA,GACtBA,EAAG,WAAW,MAAM;AAChB,YAAMiC,IAAOiD,GAAmB,KAAK,YAAA,GAAe,KAAK,QAAQ,KAAK,IAAI,CAAC;AAC3E,aAAGjD,MAAS,OAAe,OACpBA,EAAK,OAAA;AAAA,IAChB,GAAA;AAAA,EACF;AACA;AAEO,MAAMoD,EAAqD;AAAA,EAClE,YACSD,IAA2BH,EAAY,MACvCpE,IAAqF,MAC7F;AAFQ,SAAA,cAAAuE,GACA,KAAA,UAAAvE;AAAA,EACP;AAAA,EAGF,KAAKnB,GAAiD;AACpD,UAAMmB,IAAUnB,EAAQ,mBAAmB,KAAK,OAAO;AAEvD,WAAOyF,EAAY;AAAA,MAAkBzF;AAAA,MACnC,KAAK;AAAA,MACLmB;AAAA,IAAA;AAAA,EAEJ;AACA;ACrGO,IAAKyE,uBAAAA,OACVA,EAAAA,EAAA,cAAc,CAAA,IAAd,eACAA,EAAAA,EAAA,cAAc,CAAA,IAAd,eACAA,EAAAA,EAAA,cAAc,CAAA,IAAd,eACAA,EAAAA,EAAA,cAAc,CAAA,IAAd,eACAA,EAAAA,EAAA,cAAc,CAAA,IAAd,eACAA,EAAAA,EAAA,cAAc,CAAA,IAAd,eACAA,EAAAA,EAAA,eAAe,EAAA,IAAf,gBACAA,EAAAA,EAAA,iBAAiB,IAAA,IAAjB,kBACAA,EAAAA,EAAA,iBAAiB,IAAA,IAAjB,kBACAA,EAAAA,EAAA,iBAAiB,IAAA,IAAjB,kBACAA,EAAAA,EAAA,iBAAiB,IAAA,IAAjB,kBACAA,EAAAA,EAAA,iBAAiB,IAAA,IAAjB,kBACAA,EAAAA,EAAA,kBAAkB,KAAA,IAAlB,mBACAA,EAAAA,EAAA,kBAAkB,KAAA,IAAlB,mBACAA,EAAAA,EAAA,kBAAkB,KAAA,IAAlB,mBACAA,EAAAA,EAAA,kBAAkB,KAAA,IAAlB,mBAhBUA,IAAAA,MAAA,CAAA,CAAA,GCAAC,uBAAAA,OACVA,EAAAA,EAAA,cAAc,CAAA,IAAd,eACAA,EAAAA,EAAA,eAAe,CAAA,IAAf,gBACAA,EAAAA,EAAA,QAAQ,CAAA,IAAR,SACAA,EAAAA,EAAA,mBAAmB,CAAA,IAAnB,oBACAA,EAAAA,EAAA,OAAO,CAAA,IAAP,QACAA,EAAAA,EAAA,aAAa,CAAA,IAAb,cANUA,IAAAA,MAAA,CAAA,CAAA;ACcL,MAAMC,EAAuE;AAAA,EAA7E,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAO3J,GAAUyB,GAAyC;AAC1D,gBAAK,SAASzB,GACd,KAAK,KAAKyB,GACH;AAAA,EACT;AAAA,EAEA,OAAO,uBAAuBA,GAA2BD,GAAkC;AACzF,YAAQA,KAAO,IAAImI,EAAA,GAAiB,OAAOlI,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC5F;AAAA,EAEA,OAAO,mCAAmCA,GAA2BD,GAAkC;AACrG,WAAAC,EAAG,YAAYA,EAAG,SAAA,IAAaiC,CAA8B,IACrDlC,KAAO,IAAImI,EAAA,GAAiB,OAAOlI,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC5F;AAAA,EAEA,OAAmB;AACjB,UAAMlC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,WAAW,KAAK,SAASA,CAAM,IAAIqK,EAAY;AAAA,EAC1E;AAAA,EAEA,cAAsB;AACpB,UAAMrK,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,UAAU,KAAK,SAASA,CAAM,IAAIsK,GAAQ;AAAA,EACrE;AAAA,EAEA,QAAqCrI,GAAkB;AACrD,UAAMjC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,QAAQiC,GAAK,KAAK,SAASjC,CAAM,IAAI;AAAA,EAChE;AAAA,EAEA,OAAO,mBAAmBsE,GAA6B;AACrD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,QAAQA,GAA6BiC,GAAkB;AAC5D,IAAAjC,EAAQ,cAAc,GAAGiC,GAAM8D,EAAY,gBAAgB;AAAA,EAC7D;AAAA,EAEA,OAAO,eAAe/F,GAA6B0F,GAAqB;AACtE,IAAA1F,EAAQ,aAAa,GAAG0F,GAAaM,GAAQ,IAAI;AAAA,EACnD;AAAA,EAEA,OAAO,WAAWhG,GAA6BgB,GAAkC;AAC/E,IAAAhB,EAAQ,eAAe,GAAGgB,GAAe,CAAC;AAAA,EAC5C;AAAA,EAEA,OAAO,iBAAiBhB,GAAgD;AAEtE,WADeA,EAAQ,UAAA;AAAA,EAEzB;AAAA,EAEA,OAAO,0BAA0BA,GAA6BtE,GAA2B;AACvF,IAAAsE,EAAQ,OAAOtE,CAAM;AAAA,EACvB;AAAA,EAEA,OAAO,sCAAsCsE,GAA6BtE,GAA2B;AACnG,IAAAsE,EAAQ,OAAOtE,GAAQ,QAAW,EAAI;AAAA,EACxC;AAAA,EAEA,OAAO,oBAAoBsE,GAA6BiC,GAAkByD,GAAqB1E,GAAqD;AAClJ,WAAA8E,EAAc,mBAAmB9F,CAAO,GACxC8F,EAAc,QAAQ9F,GAASiC,CAAI,GACnC6D,EAAc,eAAe9F,GAAS0F,CAAW,GACjDI,EAAc,WAAW9F,GAASgB,CAAa,GACxC8E,EAAc,iBAAiB9F,CAAO;AAAA,EAC/C;AAAA,EAEA,SAAyB;AACvB,WAAO,IAAIiG;AAAA,MACT,KAAK,KAAA;AAAA,MACL,KAAK,YAAA;AAAA,OACJ,MAAM;AACL,cAAM1D,IAAO2D,GAAe,KAAK,YAAA,GAAe,KAAK,QAAQ,KAAK,IAAI,CAAC;AACvE,eAAG3D,MAAS,OAAe,OACpBA,EAAK,OAAA;AAAA,MAChB,GAAA;AAAA,IAAG;AAAA,EAEL;AAAA,EAGA,SAASjC,GAA0B;AACjC,IAAAA,EAAG,OAAO,KAAK,KAAA,GACfA,EAAG,cAAc,KAAK,YAAA,GACtBA,EAAG,WAAW,MAAM;AAChB,YAAMiC,IAAO2D,GAAe,KAAK,YAAA,GAAe,KAAK,QAAQ,KAAK,IAAI,CAAC;AACvE,aAAG3D,MAAS,OAAe,OACpBA,EAAK,OAAA;AAAA,IAChB,GAAA;AAAA,EACF;AACA;AAEO,MAAM0D,GAAuD;AAAA,EACpE,YACShE,IAAoB8D,EAAY,kBAChCL,IAAuBM,GAAQ,MAC/B7E,IAAkH,MAC1H;AAHQ,SAAA,OAAAc,GACA,KAAA,cAAAyD,GACA,KAAA,UAAAvE;AAAA,EACP;AAAA,EAGF,KAAKnB,GAAiD;AACpD,UAAMmB,IAAUnB,EAAQ,mBAAmB,KAAK,OAAO;AAEvD,WAAO8F,EAAc;AAAA,MAAoB9F;AAAA,MACvC,KAAK;AAAA,MACL,KAAK;AAAA,MACLmB;AAAA,IAAA;AAAA,EAEJ;AACA;ACjIO,MAAMgF,GAAW;AAAA,EAItB,YAAYC,GAAkB;AAC5B,SAAK,OAAOA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,QAAoB;AAClB,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAoB;AAClB,QAAIC,IAAI;AACR,aAASlK,IAAI,GAAGA,IAAI,KAAK,KAAK,QAAQA;AACpC,MAAAkK,KAAK,KAAK,KAAKlK,CAAC,GAChBkK,IAAI,KAAK,KAAKA,GAAG,QAAQ;AAE3B,WAAOA,MAAM;AAAA,EACf;AAAA;AAAA;AAAA;AAAA,EAKA,QAAgB;AACd,WAAO,MAAM,KAAK,KAAK,IAAI,EACxB,IAAI,CAAAC,MAAKA,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EACxC,KAAK,EAAE;AAAA,EACZ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAqB;AACnB,QAAI,KAAK,UAAU,OAAW,QAAO,KAAK;AAEvC,QAAI,KAAK,KAAK,kBAAkB,mBAAmB;AACjD,YAAMC,IAAO,IAAI,WAAW,KAAK,IAAI;AACrC,aAAQ,KAAK,QAAQ,IAAI,YAAY,OAAO,EAAE,OAAOA,CAAI;AAAA,IAC3D;AACA,WAAQ,KAAK,QAAQ,IAAI,YAAY,OAAO,EAAE,OAAO,KAAK,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA,EAKA,WAAmB;AACjB,WAAO,KAAK,WAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,OAAOC,GAA4B;AACjC,QAAI,KAAK,KAAK,WAAWA,EAAM,KAAK,OAAQ,QAAO;AACnD,aAASrK,IAAI,GAAGA,IAAI,KAAK,KAAK,QAAQA;AACpC,UAAI,KAAK,KAAKA,CAAC,MAAMqK,EAAM,KAAKrK,CAAC,EAAG,QAAO;AAE7C,WAAO;AAAA,EACT;AACF;ACxDCb,EAAW,UAAkB,qBAAqB,SAASI,GAA4B;AAEtF,EAAAA,KAAU,KAAK,UAAUA,CAAM;AAG/B,QAAMc,IAAS,KAAK,UAAUd,CAAM,GAC9B+K,IAAQ/K,IAAS,GAGjBgL,IAAQ,KAAK,MAAA,EAAQ,SAASD,GAAOA,IAAQjK,CAAM;AAEzD,SAAO,IAAI2J,GAAWO,CAAK;AAC7B;AAQO,MAAMC,EAAmB;AAAA;AAAA;AAAA;AAAA;AAAA,EAK5B,OAAO,iBAAiBC,GAAiC;AAGvD,IAFa,IAAI,SAASA,CAAM,EAE3B,UAAU,GAAG,GAAG,EAAI;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,aAAaA,GAA2B1G,GAA2B;AACxE,UAAMkG,IAAO,IAAI,SAASQ,CAAM,GAC1BC,IAAY,IAAI,WAAWD,CAAM,GAGjCE,IAAuBV,EAAK,UAAU,GAAG,EAAI,GAG7CW,IAAgB,IAAI7G,EAAK;AAC/B,QAAI4G,IAAuBC,IAAgBH,EAAO;AAChD,qBAAQ,KAAK,mCAAmC,GACzC;AAIT,IAAAR,EAAK,UAAUU,GAAsB5G,EAAK,QAAQ,EAAI,GAGtD2G,EAAU,IAAI3G,GAAM4G,IAAuB,CAAC;AAG5C,UAAME,IAAmBF,IAAuBC;AAChD,WAAAX,EAAK,UAAU,GAAGY,GAAkB,EAAI,GAEjC;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,mBAAmBJ,GAA2BK,GAAuB;AAC1E,QAAI;AACF,YAAMC,IAAUC,GAAOF,CAAO;AAC9B,aAAO,KAAK,aAAaL,GAAQ,IAAI,WAAWM,CAAO,CAAC;AAAA,IAC1D,SAASE,GAAO;AACd,qBAAQ,MAAM,6BAA6BA,CAAK,GACzC;AAAA,IACT;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASD,OAAO,aAAaR,GAA2BS,IAA2B,GAAG;AAC1E,UAAMjB,IAAO,IAAI,SAASQ,CAAM,GAC1BC,IAAY,IAAI,WAAWD,CAAM,GAEjCE,IAAuBV,EAAK,UAAU,GAAG,EAAI,GAC7CkB,IAAkB;AACxB,QAAIC,IAAaF,IAAmBC,IAC9BA,IACAD;AACN,QAAIP,KAAwBS;AACxB,aAAO,EAAE,UAAU,CAAA,GAAI,iBAAiBA,GAAY,YAAY,GAAA;AAGpE,UAAMC,IAAc,KACdC,IAA4B,IAAI,MAAMD,CAAW;AACvD,QAAIE,IAAW;AAEf,QAAI;AACA,aAAOH,IAAaT,KAEZ,EAAAY,KAAYF,KAGZD,IAAa,IAAIT,MALiB;AAOtC,cAAMa,IAAYJ,GACZK,IAAcxB,EAAK,UAAUuB,GAAW,EAAI,GAC5CE,IAAeF,IAAY,GAC3BG,IAAUD,IAAeD;AAG/B,YAAIE,IAAUhB,EAAsB;AAGpC,cAAMiB,IAAiBlB,EAAU,SAASgB,GAAcC,CAAO,GAGzDlK,IAAK,IAAItC,EAAWyM,CAAc,GAClCd,IAAUnB,EAAc,uBAAuBlI,CAAE;AAEvD,QAAA6J,EAASC,GAAU,IAAIT,GAGvBM,IAAaO;AAAA,MACjB;AAEA,aAAAL,EAAS,SAASC,GACX;AAAA,QACH,UAAAD;AAAA,QACA,iBAAiBF;AAAA,QACjB,YAAYG,IAAW;AAAA,MAAA;AAAA,IAE/B,SAASN,GAAO;AACZ,qBAAQ,MAAM,4DAA4DA,CAAK,GAC/EK,EAAS,SAASC,GACX;AAAA,QACH,UAAAD;AAAA,QACA,iBAAiBJ,IAAmBC,IAC9BA,IACAD;AAAA,QACN,YAAY;AAAA,MAAA;AAAA,IAEpB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,gBAAgBT,GAGrB;AACA,UAAM1K,IAAS,KAAK,aAAa0K,GAAQ,CAAC;AAC1C,WAAO;AAAA,MACL,UAAU1K,EAAO;AAAA,MACjB,eAAeA,EAAO,SAAS;AAAA,IAAA;AAAA,EAEnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,wBAAwB0K,GAAmC;AAEhE,WADa,IAAI,SAASA,CAAM,EACpB,UAAU,GAAG,EAAI;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,WACLA,GACAS,GACS;AACT,UAAMP,IAAuB,KAAK,wBAAwBF,CAAM,GAE1DoB,IAAyB,KAAK,IAAIX,GADhB,CACiD;AACzE,WAAOP,IAAuBkB;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,oBACLC,IAA0B,KAC1BpD,IAAwB,MAChB;AAER,UAAMqD,IAAWD,IAAkBpD,GAC7BsD,IAAW,KAAK,MAAMD,IAAW,IAAI;AAC3C,WAAO,IAAaA,IAAWC;AAAA,EACjC;AACF;AC1MA,IAAIC,KAAyC,MACzCC,IAAqC;AAEzC,eAAeC,KAAsC;AACnD,SAAID,MAIJA,IAAe,MAAME,EAAS,EAAE,KAAK,CAACC,MAAQ;AAC5C,QAAI,CAACA,EAAI;AACP,YAAM,IAAI,MAAM,yBAAyBA,EAAI,MAAM,IAAIA,EAAI,UAAU,EAAE;AAEzE,WAAOA,EAAI,YAAA;AAAA,EACb,CAAC,EAAE,KAAK,CAAC5B,MAAW;AAClB,IAAAwB,KAAqBxB;AAAA,EACvB,CAAC,EAAE,MAAM,CAACQ,MAAU;AAClB,kBAAQ,MAAM,sBAAsBA,CAAK,GACnCA;AAAA,EACR,CAAC,GAEMiB;AACT;AAEA,eAAeI,KAAsC;AAEnD,MADA,MAAMH,GAAA,GACF,CAACF;AACH,UAAM,IAAI,MAAM,iCAAiC;AAGnD,iBAAQ,IAAI,iCAAiC,GACtCA,GAAmB,MAAM,CAAC;AACnC;AAMO,MAAMM,GAAa;AAAA,EAsBxB,YAAY1E,IAA6B,EAAC,WAAW,WAAW,eAAe,OAAY;AAnB3F,SAAQ,cAAc,IAAI,YAAA,GAC1B,KAAQ,oCAAoB,IAAA,GAQ5B,KAAQ,gCAAgB,IAAA,GACxB,KAAQ,8BAAc,IAAA,GAEtB,KAAQ,SAAS,CAAC2E,MAAe;AAAA,IAAC,GAClC,KAAQ,cAAc,IAAI,YAAA,GAE1B,KAAO,0BAA0B,CAAC,iBAAiB,aAAa,GAM9D,KAAK,SAAS,KAAK,aAAA,GAEnB,KAAK,oBAAA,GAEL,KAAK,QAAQF,GAAA,EAAgB,KAAK,CAACG,MAAe;AAChD,WAAK,OAAO;AAAA,QACV,EAAE,MAAM,QAAQ,SAAS,EAAE,WAAW5E,EAAO,WAAW,eAAeA,EAAO,eAAe,YAAA4E,EAAA,EAAW;AAAA,QACxG,CAACA,CAAU;AAAA;AAAA,MAAA;AAAA,IAEf,CAAC,EAAE,MAAM,CAACxB,MAAU;AAClB,cAAQ,MAAM,0CAA0CA,CAAK;AAAA,IAE/D,CAAC;AAAA,EACH;AAAA,EAEQ,eAAuB;AAC7B,WAAO,IAAIyB,GAAA;AAAA,EACb;AAAA,EAEQ,sBAAsB;AAC5B,SAAK,OAAO,YAAY,OAAOF,MAAU;AACvC,YAAMG,IAAK,OAAOH,EAAM,QAAS,WAAWA,EAAM,OAAO;AACzD,UAAI;AACF,YAAIA,EAAM,KAAK,WAAW,QAAQ,GAAG;AACnC,gBAAMI,IAAS,KAAK,MAAMJ,EAAM,IAAI;AACpC,eAAK,OAAOI,CAAM;AAAA,QACpB;AAAA,MACF,QAAgB;AAAA,MAEhB;AAEA,UAAKD,GAGL;AAAA,YAAI,KAAK,cAAc,IAAIA,CAAE,GAAG;AAE9B,eAAK,SAAS,gBAAgBA,CAAE,IAAIA,CAAE;AACtC;AAAA,QACF;AAEA,YAAI,KAAK,UAAU,IAAIA,CAAE,GAAG;AAC1B,eAAK,SAAS,WAAWA,CAAE,IAAIA,CAAE;AACjC;AAAA,QACF;AAAA;AAAA,IACF,GAEA,KAAK,OAAO,UAAU,CAAC1B,MAAU;AAC/B,cAAQ,MAAM,iBAAiBA,CAAK;AAAA,IACtC;AAAA,EACF;AAAA,EAEO,cAAc4B,GAAuB;AAC1C,QAAIA,EAAM,SAAS,GAAI,QAAOA;AAC9B,QAAIC,IAAO;AACX,aAAS9M,IAAI,GAAGA,IAAI6M,EAAM,QAAQ7M,KAAK;AACrC,YAAM+M,IAAOF,EAAM,WAAW7M,CAAC;AAC/B,MAAA8M,KAAQA,KAAQ,KAAKA,IAAOC,GAC5BD,IAAOA,IAAOA;AAAA,IAChB;AAEA,WADgB,KAAK,IAAIA,CAAI,EAAE,SAAS,EAAE,EAC3B,UAAU,GAAG,EAAE;AAAA,EAChC;AAAA,EAEO,iBACLhH,GACAkH,GACAC,GACM;AACN,SAAK,YAAY,iBAAiBnH,GAAMkH,GAA2BC,CAAO;AAAA,EAC5E;AAAA,EAEO,oBACLnH,GACAkH,GACAC,GACM;AACN,SAAK,YAAY,oBAAoBnH,GAAMkH,GAA2BC,CAAO;AAAA,EAC/E;AAAA,EAEQ,SAASnH,GAAcoH,GAAwB;AACrD,SAAK,YAAY,cAAc,IAAI,YAAYpH,GAAM,EAAE,QAAAoH,EAAA,CAAQ,CAAC;AAAA,EAClE;AAAA,EAEA,UACE5F,GACA2B,GACAgE,GACmB;AACnB,UAAME,IAAQ,KAAK,cAAc7F,CAAc,GAEzC8F,IAAuB,KAAK,cAAc,IAAID,CAAK;AAEzD,QAAIC;AACF,aAAAA,EAAqB,YACdA,EAAqB;AAI9B,UAAMC,IAAapE,EAAS;AAAA,MAC1B,CAACqE,GAAKC,MAAQD,KAAOC,EAAI,SAAS;AAAA,MAClC;AAAA,IAAA,GAGIC,IAAahD,EAAmB;AAAA,MACpC6C;AAAA,MACAJ,EAAQ;AAAA,IAAA;AAGV,QAAIQ,IAA8C,IAAI,WAAA;AAEtD,UAAMhD,IAAS,IAAI,kBAAkB+C,IAAaC,EAAe,MAAM;AAGvE,IAAAjD,EAAmB,iBAAiBC,CAAM,GAGvCgD,EAAe,SAAS,MACTjD,EAAmB,aAAaC,GAAQgD,CAAc,KAEpE,QAAQ,MAAM,2CAA2C,IAI7D,KAAK,cAAc,IAAIN,GAAO;AAAA,MAC5B,QAAA1C;AAAA,MACA,SAAAwC;AAAA,MACA,UAAU;AAAA,IAAA,CACX;AAED,UAAMS,IAAW,IAAI/E;AAAA,MACnB,IAAIX,GAAiBiF,EAAQ,YAAY,EAAG;AAAA,MAC5CA,EAAQ;AAAA,MACRA,EAAQ;AAAA,MACRA,EAAQ,YAAY,OAAOA,EAAQ,SAAS,IAAI;AAAA,MAChDA,EAAQ;AAAA,MACRA,EAAQ;AAAA,MACRA,EAAQ;AAAA,MACRA,EAAQ;AAAA,IAAA,GAKJU,IAAa,IAAI3E;AAAA,MACrB,KAAK,YAAY,OAAOmE,CAAK;AAAA,MAC7BlE,EAAS;AAAA,QAAI,OACX,IAAI2E;AAAA,UACFC,EAAE;AAAA,UACFA,EAAE;AAAA,UACFA,EAAE;AAAA,UACF,OAAO,QAAQA,EAAE,QAAQ,CAAA,CAAE,EAAE,QAAQ,CAAC,CAACC,GAAKC,EAAM,MAAM,IAAIC,EAAW,CAACF,GAAK,GAAGC,EAAM,CAAC,CAAC;AAAA,UACxFF,EAAE;AAAA,UACFA,EAAE;AAAA,UACFA,EAAE;AAAA,UACF,KAAK,YAAY,OAAOA,EAAE,MAAM;AAAA,UAChCA,EAAE;AAAA,UACFA,EAAE;AAAA,UACFA,EAAE;AAAA,QAAA;AAAA,MACJ;AAAA,MAEFH;AAAA,IAAA,GAGIO,IAAQ,IAAIzE,EAAaJ,EAAY,WAAWuE,CAAU,GAG1D9J,IAAU,IAAIqK,EAAoB,IAAI,GACtCC,IAAaF,EAAM,KAAKpK,CAAO;AACrC,IAAAA,EAAQ,OAAOsK,CAAU;AACzB,UAAMC,IAAoBvK,EAAQ,aAAA;AAElC,QAAI;AACF,kBAAK,OAAO,YAAY;AAAA,QACtB,mBAAAuK;AAAA,QACA,cAAc3D;AAAA,MAAA,CACf,GAEMA;AAAA,IACT,SAASQ,GAAO;AACd,iBAAK,cAAc,OAAOkC,CAAK,GACzBlC;AAAA,IACR;AAAA,EACF;AAAA,EAEA,UAAUkC,GAA8C;AACtD,UAAMC,IAAuB,KAAK,cAAc,IAAID,CAAK;AACzD,QAAIC;AACF,aAAAA,EAAqB,YACdA,EAAqB;AAAA,EAGhC;AAAA,EAEA,YAAY9F,GAA8B;AACxC,UAAM6F,IACJ7F,EAAe,SAAS,KACpBA,IACA,KAAK,cAAcA,CAAc,GACjC+G,IAAe,KAAK,cAAc,IAAIlB,CAAK;AACjD,IAAIkB,KACFA,EAAa;AAAA,EAEjB;AAAA,EAEA,QAAQC,GAAoB9B,GAAsC;AAGhE,UAAM/B,IAAS,IAAI,kBAAkB,IAAI;AAGzC,IAAAD,EAAmB,iBAAiBC,CAAM;AAE1C,QAAI;AACF,YAAM8D,IAAY,IAAIxJ,GAAUyH,EAAM,MAAM,KAAK,YAAY,OAAOA,EAAM,OAAO,GAAGA,EAAM,KAAK,IAAI,CAAAgC,MAAK,IAAIR,EAAWQ,CAAC,CAAC,KAAK,EAAE,GAC1HC,IAAW,IAAIpJ,GAAS,KAAK,YAAY,OAAOiJ,CAAU,GAAGC,CAAS,GAGtEN,IAAQ,IAAIzE,EAAaJ,EAAY,SAASqF,CAAQ,GAGtD5K,IAAU,IAAIqK,EAAoB,IAAI,GACtCC,IAAaF,EAAM,KAAKpK,CAAO;AACrC,MAAAA,EAAQ,OAAOsK,CAAU;AACzB,YAAMC,IAAoBvK,EAAQ,aAAA;AAElC,kBAAK,OAAO,YAAY,EAAE,mBAAAuK,GAAmB,cAAc3D,GAAQ,GAEnE,KAAK,UAAU,IAAI6D,GAAY,EAAC,QAAA7D,GAAO,GAChCA;AAAA,IACT,SAASQ,GAAO;AACd,oBAAQ,MAAM,4BAA4BA,CAAK,GACzCA;AAAA,IACR;AAAA,EACF;AAAA,EAEA,UAAUyD,GAAcC,GAA4B;AAClD,SAAK,MAAM,KAAK,MAAM;AACpB,cAAQ,IAAI,aAAaD,GAAMC,CAAY;AAG3C,YAAMC,IAAc,IAAIlJ,GAAY,KAAK,YAAY,OAAOiJ,CAAY,CAAC,GAGnEE,IAAa,IAAI1I,GAAWP,EAAW,YAAYgJ,CAAW,GAG9DX,IAAQ,IAAIzE,EAAaJ,EAAY,WAAWyF,CAAU,GAG1DhL,IAAU,IAAIqK,EAAoB,IAAI,GACtCC,IAAaF,EAAM,KAAKpK,CAAO;AACrC,MAAAA,EAAQ,OAAOsK,CAAU;AACzB,YAAMC,IAAoBvK,EAAQ,aAAA;AAElC,WAAK,OAAO,YAAYuK,CAAiB,GACzC,KAAK,QAAQ,IAAIM,GAAMC,CAAY;AAAA,IACrC,CAAC;AAAA,EACH;AAAA,EAEA,UAAUnC,GAAmBsC,GAAiC;AAC5D,UAAMb,IAAQ,IAAIzE,EAAaJ,EAAY,WAAW,IAAI7C,GAAW,IAAIxB,GAAUyH,EAAM,MAAM,KAAK,YAAY,OAAOA,EAAM,OAAO,GAAGA,EAAM,KAAK,IAAI,CAAAgC,MAAK,IAAIR,EAAWQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAGzK3K,IAAU,IAAIqK,EAAoB,IAAI,GACtCC,IAAaF,EAAM,KAAKpK,CAAO;AACrC,IAAAA,EAAQ,OAAOsK,CAAU;AACzB,UAAMC,IAAoBvK,EAAQ,aAAA;AAClC,SAAK,SAASiL,GACd,KAAK,OAAO,YAAYV,CAAiB;AAAA,EAC3C;AAAA,EAEA,eAAe;AACb,UAAMH,IAAQ,IAAIzE,EAAaJ,EAAY,cAAc,IAAI7E,IAAe,GAGtEV,IAAU,IAAIqK,EAAoB,IAAI,GACtCC,IAAaF,EAAM,KAAKpK,CAAO;AACrC,IAAAA,EAAQ,OAAOsK,CAAU;AACzB,UAAMC,IAAoBvK,EAAQ,aAAA;AAElC,SAAK,OAAO,YAAYuK,CAAiB;AAAA,EAC3C;AAAA,EAEA,UAAgB;AACd,UAAMW,IAAkC,CAAA;AAExC,eAAW,CAAC5B,GAAOkB,CAAY,KAAK,KAAK,cAAc;AACrD,MACEA,EAAa,YAAY,KACzB,CAAC,KAAK,wBAAwB,SAASlB,CAAK,KAE5C4B,EAAsB,KAAK5B,CAAK;AAIpC,eAAWA,KAAS4B;AAElB,UADqB,KAAK,cAAc,IAAI5B,CAAK,GAC/B;AAChB,cAAMc,IAAQ,IAAIzE,EAAaJ,EAAY,aAAa,IAAID,GAAa,KAAK,YAAY,OAAOgE,CAAK,CAAC,CAAC,GAElGtJ,IAAU,IAAIqK,EAAoB,IAAI,GACtCC,IAAaF,EAAM,KAAKpK,CAAO;AACrC,QAAAA,EAAQ,OAAOsK,CAAU;AACzB,cAAMC,IAAoBvK,EAAQ,aAAA;AAElC,aAAK,OAAO,YAAYuK,CAAiB,GACzC,KAAK,cAAc,OAAOjB,CAAK;AAAA,MACjC;AAAA,EAEJ;AACF;AAEO,MAAM6B,KAAe,IAAIzC,GAAA;AAOzB,SAAS0C,GACdpH,GACc;AACd,SAAO,IAAI0E,GAAa1E,CAAM;AAChC;","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"index2.js","sources":["../../../node_modules/flatbuffers/mjs/builder.js","../src/generated/nostr/fb/counter-pipe-config.ts","../src/generated/nostr/fb/get-public-key.ts","../src/generated/nostr/fb/kind-filter-pipe-config.ts","../src/generated/nostr/fb/template.ts","../src/generated/nostr/fb/publish.ts","../src/generated/nostr/fb/private-key.ts","../src/generated/nostr/fb/signer-type.ts","../src/generated/nostr/fb/set-signer.ts","../src/generated/nostr/fb/sign-event.ts","../src/generated/nostr/fb/npub-limiter-pipe-config.ts","../src/generated/nostr/fb/parse-pipe-config.ts","../src/generated/nostr/fb/proof-verification-pipe-config.ts","../src/generated/nostr/fb/save-to-db-pipe-config.ts","../src/generated/nostr/fb/serialize-events-pipe-config.ts","../src/generated/nostr/fb/pipe-config.ts","../src/generated/nostr/fb/pipe.ts","../src/generated/nostr/fb/pipeline-config.ts","../src/generated/nostr/fb/subscription-config.ts","../src/generated/nostr/fb/subscribe.ts","../src/generated/nostr/fb/unsubscribe.ts","../src/generated/nostr/fb/main-content.ts","../src/generated/nostr/fb/main-message.ts","../src/generated/nostr/fb/msg-kind.ts","../src/generated/nostr/fb/parsed-data-union.ts","../src/generated/nostr/fb/relay-ref.ts","../src/generated/nostr/fb/subscribe-kind.ts","../src/generated/nostr/fb/worker-line.ts","../src/generated/nostr/fb/worker-message.ts","../src/lib/SharedBuffer.ts","../src/ws/ring-buffer.ts","../src/ws/types.ts","../src/ws/connection.ts","../src/ws/registry.ts","../src/ws/index.ts","../src/index.ts"],"sourcesContent":["import { ByteBuffer } from \"./byte-buffer.js\";\nimport { SIZEOF_SHORT, SIZE_PREFIX_LENGTH, SIZEOF_INT, FILE_IDENTIFIER_LENGTH } from \"./constants.js\";\nexport class Builder {\n /**\n * Create a FlatBufferBuilder.\n */\n constructor(opt_initial_size) {\n /** Minimum alignment encountered so far. */\n this.minalign = 1;\n /** The vtable for the current table. */\n this.vtable = null;\n /** The amount of fields we're actually using. */\n this.vtable_in_use = 0;\n /** Whether we are currently serializing a table. */\n this.isNested = false;\n /** Starting offset of the current struct/table. */\n this.object_start = 0;\n /** List of offsets of all vtables. */\n this.vtables = [];\n /** For the current vector being built. */\n this.vector_num_elems = 0;\n /** False omits default values from the serialized data */\n this.force_defaults = false;\n this.string_maps = null;\n this.text_encoder = new TextEncoder();\n let initial_size;\n if (!opt_initial_size) {\n initial_size = 1024;\n }\n else {\n initial_size = opt_initial_size;\n }\n /**\n * @type {ByteBuffer}\n * @private\n */\n this.bb = ByteBuffer.allocate(initial_size);\n this.space = initial_size;\n }\n clear() {\n this.bb.clear();\n this.space = this.bb.capacity();\n this.minalign = 1;\n this.vtable = null;\n this.vtable_in_use = 0;\n this.isNested = false;\n this.object_start = 0;\n this.vtables = [];\n this.vector_num_elems = 0;\n this.force_defaults = false;\n this.string_maps = null;\n }\n /**\n * In order to save space, fields that are set to their default value\n * don't get serialized into the buffer. Forcing defaults provides a\n * way to manually disable this optimization.\n *\n * @param forceDefaults true always serializes default values\n */\n forceDefaults(forceDefaults) {\n this.force_defaults = forceDefaults;\n }\n /**\n * Get the ByteBuffer representing the FlatBuffer. Only call this after you've\n * called finish(). The actual data starts at the ByteBuffer's current position,\n * not necessarily at 0.\n */\n dataBuffer() {\n return this.bb;\n }\n /**\n * Get the bytes representing the FlatBuffer. Only call this after you've\n * called finish().\n */\n asUint8Array() {\n return this.bb.bytes().subarray(this.bb.position(), this.bb.position() + this.offset());\n }\n /**\n * Prepare to write an element of `size` after `additional_bytes` have been\n * written, e.g. if you write a string, you need to align such the int length\n * field is aligned to 4 bytes, and the string data follows it directly. If all\n * you need to do is alignment, `additional_bytes` will be 0.\n *\n * @param size This is the of the new element to write\n * @param additional_bytes The padding size\n */\n prep(size, additional_bytes) {\n // Track the biggest thing we've ever aligned to.\n if (size > this.minalign) {\n this.minalign = size;\n }\n // Find the amount of alignment needed such that `size` is properly\n // aligned after `additional_bytes`\n const align_size = ((~(this.bb.capacity() - this.space + additional_bytes)) + 1) & (size - 1);\n // Reallocate the buffer if needed.\n while (this.space < align_size + size + additional_bytes) {\n const old_buf_size = this.bb.capacity();\n this.bb = Builder.growByteBuffer(this.bb);\n this.space += this.bb.capacity() - old_buf_size;\n }\n this.pad(align_size);\n }\n pad(byte_size) {\n for (let i = 0; i < byte_size; i++) {\n this.bb.writeInt8(--this.space, 0);\n }\n }\n writeInt8(value) {\n this.bb.writeInt8(this.space -= 1, value);\n }\n writeInt16(value) {\n this.bb.writeInt16(this.space -= 2, value);\n }\n writeInt32(value) {\n this.bb.writeInt32(this.space -= 4, value);\n }\n writeInt64(value) {\n this.bb.writeInt64(this.space -= 8, value);\n }\n writeFloat32(value) {\n this.bb.writeFloat32(this.space -= 4, value);\n }\n writeFloat64(value) {\n this.bb.writeFloat64(this.space -= 8, value);\n }\n /**\n * Add an `int8` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param value The `int8` to add the buffer.\n */\n addInt8(value) {\n this.prep(1, 0);\n this.writeInt8(value);\n }\n /**\n * Add an `int16` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param value The `int16` to add the buffer.\n */\n addInt16(value) {\n this.prep(2, 0);\n this.writeInt16(value);\n }\n /**\n * Add an `int32` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param value The `int32` to add the buffer.\n */\n addInt32(value) {\n this.prep(4, 0);\n this.writeInt32(value);\n }\n /**\n * Add an `int64` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param value The `int64` to add the buffer.\n */\n addInt64(value) {\n this.prep(8, 0);\n this.writeInt64(value);\n }\n /**\n * Add a `float32` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param value The `float32` to add the buffer.\n */\n addFloat32(value) {\n this.prep(4, 0);\n this.writeFloat32(value);\n }\n /**\n * Add a `float64` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param value The `float64` to add the buffer.\n */\n addFloat64(value) {\n this.prep(8, 0);\n this.writeFloat64(value);\n }\n addFieldInt8(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addInt8(value);\n this.slot(voffset);\n }\n }\n addFieldInt16(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addInt16(value);\n this.slot(voffset);\n }\n }\n addFieldInt32(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addInt32(value);\n this.slot(voffset);\n }\n }\n addFieldInt64(voffset, value, defaultValue) {\n if (this.force_defaults || value !== defaultValue) {\n this.addInt64(value);\n this.slot(voffset);\n }\n }\n addFieldFloat32(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addFloat32(value);\n this.slot(voffset);\n }\n }\n addFieldFloat64(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addFloat64(value);\n this.slot(voffset);\n }\n }\n addFieldOffset(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addOffset(value);\n this.slot(voffset);\n }\n }\n /**\n * Structs are stored inline, so nothing additional is being added. `d` is always 0.\n */\n addFieldStruct(voffset, value, defaultValue) {\n if (value != defaultValue) {\n this.nested(value);\n this.slot(voffset);\n }\n }\n /**\n * Structures are always stored inline, they need to be created right\n * where they're used. You'll get this assertion failure if you\n * created it elsewhere.\n */\n nested(obj) {\n if (obj != this.offset()) {\n throw new TypeError('FlatBuffers: struct must be serialized inline.');\n }\n }\n /**\n * Should not be creating any other object, string or vector\n * while an object is being constructed\n */\n notNested() {\n if (this.isNested) {\n throw new TypeError('FlatBuffers: object serialization must not be nested.');\n }\n }\n /**\n * Set the current vtable at `voffset` to the current location in the buffer.\n */\n slot(voffset) {\n if (this.vtable !== null)\n this.vtable[voffset] = this.offset();\n }\n /**\n * @returns Offset relative to the end of the buffer.\n */\n offset() {\n return this.bb.capacity() - this.space;\n }\n /**\n * Doubles the size of the backing ByteBuffer and copies the old data towards\n * the end of the new buffer (since we build the buffer backwards).\n *\n * @param bb The current buffer with the existing data\n * @returns A new byte buffer with the old data copied\n * to it. The data is located at the end of the buffer.\n *\n * uint8Array.set() formally takes {Array<number>|ArrayBufferView}, so to pass\n * it a uint8Array we need to suppress the type check:\n * @suppress {checkTypes}\n */\n static growByteBuffer(bb) {\n const old_buf_size = bb.capacity();\n // Ensure we don't grow beyond what fits in an int.\n if (old_buf_size & 0xC0000000) {\n throw new Error('FlatBuffers: cannot grow buffer beyond 2 gigabytes.');\n }\n const new_buf_size = old_buf_size << 1;\n const nbb = ByteBuffer.allocate(new_buf_size);\n nbb.setPosition(new_buf_size - old_buf_size);\n nbb.bytes().set(bb.bytes(), new_buf_size - old_buf_size);\n return nbb;\n }\n /**\n * Adds on offset, relative to where it will be written.\n *\n * @param offset The offset to add.\n */\n addOffset(offset) {\n this.prep(SIZEOF_INT, 0); // Ensure alignment is already done.\n this.writeInt32(this.offset() - offset + SIZEOF_INT);\n }\n /**\n * Start encoding a new object in the buffer. Users will not usually need to\n * call this directly. The FlatBuffers compiler will generate helper methods\n * that call this method internally.\n */\n startObject(numfields) {\n this.notNested();\n if (this.vtable == null) {\n this.vtable = [];\n }\n this.vtable_in_use = numfields;\n for (let i = 0; i < numfields; i++) {\n this.vtable[i] = 0; // This will push additional elements as needed\n }\n this.isNested = true;\n this.object_start = this.offset();\n }\n /**\n * Finish off writing the object that is under construction.\n *\n * @returns The offset to the object inside `dataBuffer`\n */\n endObject() {\n if (this.vtable == null || !this.isNested) {\n throw new Error('FlatBuffers: endObject called without startObject');\n }\n this.addInt32(0);\n const vtableloc = this.offset();\n // Trim trailing zeroes.\n let i = this.vtable_in_use - 1;\n // eslint-disable-next-line no-empty\n for (; i >= 0 && this.vtable[i] == 0; i--) { }\n const trimmed_size = i + 1;\n // Write out the current vtable.\n for (; i >= 0; i--) {\n // Offset relative to the start of the table.\n this.addInt16(this.vtable[i] != 0 ? vtableloc - this.vtable[i] : 0);\n }\n const standard_fields = 2; // The fields below:\n this.addInt16(vtableloc - this.object_start);\n const len = (trimmed_size + standard_fields) * SIZEOF_SHORT;\n this.addInt16(len);\n // Search for an existing vtable that matches the current one.\n let existing_vtable = 0;\n const vt1 = this.space;\n outer_loop: for (i = 0; i < this.vtables.length; i++) {\n const vt2 = this.bb.capacity() - this.vtables[i];\n if (len == this.bb.readInt16(vt2)) {\n for (let j = SIZEOF_SHORT; j < len; j += SIZEOF_SHORT) {\n if (this.bb.readInt16(vt1 + j) != this.bb.readInt16(vt2 + j)) {\n continue outer_loop;\n }\n }\n existing_vtable = this.vtables[i];\n break;\n }\n }\n if (existing_vtable) {\n // Found a match:\n // Remove the current vtable.\n this.space = this.bb.capacity() - vtableloc;\n // Point table to existing vtable.\n this.bb.writeInt32(this.space, existing_vtable - vtableloc);\n }\n else {\n // No match:\n // Add the location of the current vtable to the list of vtables.\n this.vtables.push(this.offset());\n // Point table to current vtable.\n this.bb.writeInt32(this.bb.capacity() - vtableloc, this.offset() - vtableloc);\n }\n this.isNested = false;\n return vtableloc;\n }\n /**\n * Finalize a buffer, poiting to the given `root_table`.\n */\n finish(root_table, opt_file_identifier, opt_size_prefix) {\n const size_prefix = opt_size_prefix ? SIZE_PREFIX_LENGTH : 0;\n if (opt_file_identifier) {\n const file_identifier = opt_file_identifier;\n this.prep(this.minalign, SIZEOF_INT +\n FILE_IDENTIFIER_LENGTH + size_prefix);\n if (file_identifier.length != FILE_IDENTIFIER_LENGTH) {\n throw new TypeError('FlatBuffers: file identifier must be length ' +\n FILE_IDENTIFIER_LENGTH);\n }\n for (let i = FILE_IDENTIFIER_LENGTH - 1; i >= 0; i--) {\n this.writeInt8(file_identifier.charCodeAt(i));\n }\n }\n this.prep(this.minalign, SIZEOF_INT + size_prefix);\n this.addOffset(root_table);\n if (size_prefix) {\n this.addInt32(this.bb.capacity() - this.space);\n }\n this.bb.setPosition(this.space);\n }\n /**\n * Finalize a size prefixed buffer, pointing to the given `root_table`.\n */\n finishSizePrefixed(root_table, opt_file_identifier) {\n this.finish(root_table, opt_file_identifier, true);\n }\n /**\n * This checks a required field has been set in a given table that has\n * just been constructed.\n */\n requiredField(table, field) {\n const table_start = this.bb.capacity() - table;\n const vtable_start = table_start - this.bb.readInt32(table_start);\n const ok = field < this.bb.readInt16(vtable_start) &&\n this.bb.readInt16(vtable_start + field) != 0;\n // If this fails, the caller will show what field needs to be set.\n if (!ok) {\n throw new TypeError('FlatBuffers: field ' + field + ' must be set');\n }\n }\n /**\n * Start a new array/vector of objects. Users usually will not call\n * this directly. The FlatBuffers compiler will create a start/end\n * method for vector types in generated code.\n *\n * @param elem_size The size of each element in the array\n * @param num_elems The number of elements in the array\n * @param alignment The alignment of the array\n */\n startVector(elem_size, num_elems, alignment) {\n this.notNested();\n this.vector_num_elems = num_elems;\n this.prep(SIZEOF_INT, elem_size * num_elems);\n this.prep(alignment, elem_size * num_elems); // Just in case alignment > int.\n }\n /**\n * Finish off the creation of an array and all its elements. The array must be\n * created with `startVector`.\n *\n * @returns The offset at which the newly created array\n * starts.\n */\n endVector() {\n this.writeInt32(this.vector_num_elems);\n return this.offset();\n }\n /**\n * Encode the string `s` in the buffer using UTF-8. If the string passed has\n * already been seen, we return the offset of the already written string\n *\n * @param s The string to encode\n * @return The offset in the buffer where the encoded string starts\n */\n createSharedString(s) {\n if (!s) {\n return 0;\n }\n if (!this.string_maps) {\n this.string_maps = new Map();\n }\n if (this.string_maps.has(s)) {\n return this.string_maps.get(s);\n }\n const offset = this.createString(s);\n this.string_maps.set(s, offset);\n return offset;\n }\n /**\n * Encode the string `s` in the buffer using UTF-8. If a Uint8Array is passed\n * instead of a string, it is assumed to contain valid UTF-8 encoded data.\n *\n * @param s The string to encode\n * @return The offset in the buffer where the encoded string starts\n */\n createString(s) {\n if (s === null || s === undefined) {\n return 0;\n }\n let utf8;\n if (s instanceof Uint8Array) {\n utf8 = s;\n }\n else {\n utf8 = this.text_encoder.encode(s);\n }\n this.addInt8(0);\n this.startVector(1, utf8.length, 1);\n this.bb.setPosition(this.space -= utf8.length);\n this.bb.bytes().set(utf8, this.space);\n return this.endVector();\n }\n /**\n * Create a byte vector.\n *\n * @param v The bytes to add\n * @returns The offset in the buffer where the byte vector starts\n */\n createByteVector(v) {\n if (v === null || v === undefined) {\n return 0;\n }\n this.startVector(1, v.length, 1);\n this.bb.setPosition(this.space -= v.length);\n this.bb.bytes().set(v, this.space);\n return this.endVector();\n }\n /**\n * A helper function to pack an object\n *\n * @returns offset of obj\n */\n createObjectOffset(obj) {\n if (obj === null) {\n return 0;\n }\n if (typeof obj === 'string') {\n return this.createString(obj);\n }\n else {\n return obj.pack(this);\n }\n }\n /**\n * A helper function to pack a list of object\n *\n * @returns list of offsets of each non null object\n */\n createObjectOffsetList(list) {\n const ret = [];\n for (let i = 0; i < list.length; ++i) {\n const val = list[i];\n if (val !== null) {\n ret.push(this.createObjectOffset(val));\n }\n else {\n throw new TypeError('FlatBuffers: Argument for createObjectOffsetList cannot contain null.');\n }\n }\n return ret;\n }\n createStructOffsetList(list, startFunc) {\n startFunc(this, list.length);\n this.createObjectOffsetList(list.slice().reverse());\n return this.endVector();\n }\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class CounterPipeConfig implements flatbuffers.IUnpackableObject<CounterPipeConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):CounterPipeConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsCounterPipeConfig(bb:flatbuffers.ByteBuffer, obj?:CounterPipeConfig):CounterPipeConfig {\n return (obj || new CounterPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsCounterPipeConfig(bb:flatbuffers.ByteBuffer, obj?:CounterPipeConfig):CounterPipeConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new CounterPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nkinds(index: number):number|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint16(this.bb!.__vector(this.bb_pos + offset) + index * 2) : 0;\n}\n\nkindsLength():number {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nkindsArray():Uint16Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? new Uint16Array(this.bb!.bytes().buffer, this.bb!.bytes().byteOffset + this.bb!.__vector(this.bb_pos + offset), this.bb!.__vector_len(this.bb_pos + offset)) : null;\n}\n\npubkey(): ByteString|null\npubkey(optionalEncoding:flatbuffers.Encoding): ByteString|Uint8Array|null\npubkey(optionalEncoding?:any): ByteString|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__stringByteString(this.bb_pos + offset, optionalEncoding) : null;\n}\n\nstatic startCounterPipeConfig(builder:flatbuffers.Builder) {\n builder.startObject(2);\n}\n\nstatic addKinds(builder:flatbuffers.Builder, kindsOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, kindsOffset, 0);\n}\n\nstatic createKindsVector(builder:flatbuffers.Builder, data:number[]|Uint16Array):flatbuffers.Offset;\n/**\n * @deprecated This Uint8Array overload will be removed in the future.\n */\nstatic createKindsVector(builder:flatbuffers.Builder, data:number[]|Uint8Array):flatbuffers.Offset;\nstatic createKindsVector(builder:flatbuffers.Builder, data:number[]|Uint16Array|Uint8Array):flatbuffers.Offset {\n builder.startVector(2, data.length, 2);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addInt16(data[i]!);\n }\n return builder.endVector();\n}\n\nstatic startKindsVector(builder:flatbuffers.Builder, numElems:number) {\n builder.startVector(2, numElems, 2);\n}\n\nstatic addPubkey(builder:flatbuffers.Builder, pubkeyOffset:flatbuffers.Offset) {\n builder.addFieldOffset(1, pubkeyOffset, 0);\n}\n\nstatic endCounterPipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // kinds\n builder.requiredField(offset, 6) // pubkey\n return offset;\n}\n\nstatic createCounterPipeConfig(builder:flatbuffers.Builder, kindsOffset:flatbuffers.Offset, pubkeyOffset:flatbuffers.Offset):flatbuffers.Offset {\n CounterPipeConfig.startCounterPipeConfig(builder);\n CounterPipeConfig.addKinds(builder, kindsOffset);\n CounterPipeConfig.addPubkey(builder, pubkeyOffset);\n return CounterPipeConfig.endCounterPipeConfig(builder);\n}\n\nunpack(): CounterPipeConfigT {\n return new CounterPipeConfigT(\n this.bb!.createScalarList<number>(this.kinds.bind(this), this.kindsLength()),\n this.pubkey()\n );\n}\n\n\nunpackTo(_o: CounterPipeConfigT): void {\n _o.kinds = this.bb!.createScalarList<number>(this.kinds.bind(this), this.kindsLength());\n _o.pubkey = this.pubkey();\n}\n}\n\nexport class CounterPipeConfigT implements flatbuffers.IGeneratedObject {\nconstructor(\n public kinds: (number)[] = [],\n public pubkey: ByteString|Uint8Array|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const kinds = CounterPipeConfig.createKindsVector(builder, this.kinds);\n const pubkey = (this.pubkey !== null ? builder.createString(this.pubkey!) : 0);\n\n return CounterPipeConfig.createCounterPipeConfig(builder,\n kinds,\n pubkey\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class GetPublicKey implements flatbuffers.IUnpackableObject<GetPublicKeyT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):GetPublicKey {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsGetPublicKey(bb:flatbuffers.ByteBuffer, obj?:GetPublicKey):GetPublicKey {\n return (obj || new GetPublicKey()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsGetPublicKey(bb:flatbuffers.ByteBuffer, obj?:GetPublicKey):GetPublicKey {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new GetPublicKey()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic startGetPublicKey(builder:flatbuffers.Builder) {\n builder.startObject(0);\n}\n\nstatic endGetPublicKey(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n return offset;\n}\n\nstatic createGetPublicKey(builder:flatbuffers.Builder):flatbuffers.Offset {\n GetPublicKey.startGetPublicKey(builder);\n return GetPublicKey.endGetPublicKey(builder);\n}\n\nunpack(): GetPublicKeyT {\n return new GetPublicKeyT();\n}\n\n\nunpackTo(_o: GetPublicKeyT): void {}\n}\n\nexport class GetPublicKeyT implements flatbuffers.IGeneratedObject {\nconstructor(){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n return GetPublicKey.createGetPublicKey(builder);\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class KindFilterPipeConfig implements flatbuffers.IUnpackableObject<KindFilterPipeConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):KindFilterPipeConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsKindFilterPipeConfig(bb:flatbuffers.ByteBuffer, obj?:KindFilterPipeConfig):KindFilterPipeConfig {\n return (obj || new KindFilterPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsKindFilterPipeConfig(bb:flatbuffers.ByteBuffer, obj?:KindFilterPipeConfig):KindFilterPipeConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new KindFilterPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nkinds(index: number):number|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint16(this.bb!.__vector(this.bb_pos + offset) + index * 2) : 0;\n}\n\nkindsLength():number {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nkindsArray():Uint16Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? new Uint16Array(this.bb!.bytes().buffer, this.bb!.bytes().byteOffset + this.bb!.__vector(this.bb_pos + offset), this.bb!.__vector_len(this.bb_pos + offset)) : null;\n}\n\nstatic startKindFilterPipeConfig(builder:flatbuffers.Builder) {\n builder.startObject(1);\n}\n\nstatic addKinds(builder:flatbuffers.Builder, kindsOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, kindsOffset, 0);\n}\n\nstatic createKindsVector(builder:flatbuffers.Builder, data:number[]|Uint16Array):flatbuffers.Offset;\n/**\n * @deprecated This Uint8Array overload will be removed in the future.\n */\nstatic createKindsVector(builder:flatbuffers.Builder, data:number[]|Uint8Array):flatbuffers.Offset;\nstatic createKindsVector(builder:flatbuffers.Builder, data:number[]|Uint16Array|Uint8Array):flatbuffers.Offset {\n builder.startVector(2, data.length, 2);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addInt16(data[i]!);\n }\n return builder.endVector();\n}\n\nstatic startKindsVector(builder:flatbuffers.Builder, numElems:number) {\n builder.startVector(2, numElems, 2);\n}\n\nstatic endKindFilterPipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // kinds\n return offset;\n}\n\nstatic createKindFilterPipeConfig(builder:flatbuffers.Builder, kindsOffset:flatbuffers.Offset):flatbuffers.Offset {\n KindFilterPipeConfig.startKindFilterPipeConfig(builder);\n KindFilterPipeConfig.addKinds(builder, kindsOffset);\n return KindFilterPipeConfig.endKindFilterPipeConfig(builder);\n}\n\nunpack(): KindFilterPipeConfigT {\n return new KindFilterPipeConfigT(\n this.bb!.createScalarList<number>(this.kinds.bind(this), this.kindsLength())\n );\n}\n\n\nunpackTo(_o: KindFilterPipeConfigT): void {\n _o.kinds = this.bb!.createScalarList<number>(this.kinds.bind(this), this.kindsLength());\n}\n}\n\nexport class KindFilterPipeConfigT implements flatbuffers.IGeneratedObject {\nconstructor(\n public kinds: (number)[] = []\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const kinds = KindFilterPipeConfig.createKindsVector(builder, this.kinds);\n\n return KindFilterPipeConfig.createKindFilterPipeConfig(builder,\n kinds\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { StringVec, StringVecT } from '../../nostr/fb/string-vec.js';\n\n\nexport class Template implements flatbuffers.IUnpackableObject<TemplateT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):Template {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsTemplate(bb:flatbuffers.ByteBuffer, obj?:Template):Template {\n return (obj || new Template()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsTemplate(bb:flatbuffers.ByteBuffer, obj?:Template):Template {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Template()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nkind():number {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint16(this.bb_pos + offset) : 0;\n}\n\ncontent(): ByteString|null\ncontent(optionalEncoding:flatbuffers.Encoding): ByteString|Uint8Array|null\ncontent(optionalEncoding?:any): ByteString|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__stringByteString(this.bb_pos + offset, optionalEncoding) : null;\n}\n\ntags(index: number, obj?:StringVec):StringVec|null {\n const offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? (obj || new StringVec()).__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) : null;\n}\n\ntagsLength():number {\n const offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nstatic startTemplate(builder:flatbuffers.Builder) {\n builder.startObject(3);\n}\n\nstatic addKind(builder:flatbuffers.Builder, kind:number) {\n builder.addFieldInt16(0, kind, 0);\n}\n\nstatic addContent(builder:flatbuffers.Builder, contentOffset:flatbuffers.Offset) {\n builder.addFieldOffset(1, contentOffset, 0);\n}\n\nstatic addTags(builder:flatbuffers.Builder, tagsOffset:flatbuffers.Offset) {\n builder.addFieldOffset(2, tagsOffset, 0);\n}\n\nstatic createTagsVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]!);\n }\n return builder.endVector();\n}\n\nstatic startTagsVector(builder:flatbuffers.Builder, numElems:number) {\n builder.startVector(4, numElems, 4);\n}\n\nstatic endTemplate(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 6) // content\n builder.requiredField(offset, 8) // tags\n return offset;\n}\n\nstatic createTemplate(builder:flatbuffers.Builder, kind:number, contentOffset:flatbuffers.Offset, tagsOffset:flatbuffers.Offset):flatbuffers.Offset {\n Template.startTemplate(builder);\n Template.addKind(builder, kind);\n Template.addContent(builder, contentOffset);\n Template.addTags(builder, tagsOffset);\n return Template.endTemplate(builder);\n}\n\nunpack(): TemplateT {\n return new TemplateT(\n this.kind(),\n this.content(),\n this.bb!.createObjList<StringVec, StringVecT>(this.tags.bind(this), this.tagsLength())\n );\n}\n\n\nunpackTo(_o: TemplateT): void {\n _o.kind = this.kind();\n _o.content = this.content();\n _o.tags = this.bb!.createObjList<StringVec, StringVecT>(this.tags.bind(this), this.tagsLength());\n}\n}\n\nexport class TemplateT implements flatbuffers.IGeneratedObject {\nconstructor(\n public kind: number = 0,\n public content: ByteString|Uint8Array|null = null,\n public tags: (StringVecT)[] = []\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const content = (this.content !== null ? builder.createString(this.content!) : 0);\n const tags = Template.createTagsVector(builder, builder.createObjectOffsetList(this.tags));\n\n return Template.createTemplate(builder,\n this.kind,\n content,\n tags\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { Template, TemplateT } from '../../nostr/fb/template.js';\n\n\nexport class Publish implements flatbuffers.IUnpackableObject<PublishT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):Publish {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsPublish(bb:flatbuffers.ByteBuffer, obj?:Publish):Publish {\n return (obj || new Publish()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsPublish(bb:flatbuffers.ByteBuffer, obj?:Publish):Publish {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Publish()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\npublishId(): ByteString|null\npublishId(optionalEncoding:flatbuffers.Encoding): ByteString|Uint8Array|null\npublishId(optionalEncoding?:any): ByteString|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__stringByteString(this.bb_pos + offset, optionalEncoding) : null;\n}\n\ntemplate(obj?:Template):Template|null {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? (obj || new Template()).__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) : null;\n}\n\nstatic startPublish(builder:flatbuffers.Builder) {\n builder.startObject(2);\n}\n\nstatic addPublishId(builder:flatbuffers.Builder, publishIdOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, publishIdOffset, 0);\n}\n\nstatic addTemplate(builder:flatbuffers.Builder, templateOffset:flatbuffers.Offset) {\n builder.addFieldOffset(1, templateOffset, 0);\n}\n\nstatic endPublish(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // publish_id\n builder.requiredField(offset, 6) // template\n return offset;\n}\n\n\nunpack(): PublishT {\n return new PublishT(\n this.publishId(),\n (this.template() !== null ? this.template()!.unpack() : null)\n );\n}\n\n\nunpackTo(_o: PublishT): void {\n _o.publishId = this.publishId();\n _o.template = (this.template() !== null ? this.template()!.unpack() : null);\n}\n}\n\nexport class PublishT implements flatbuffers.IGeneratedObject {\nconstructor(\n public publishId: ByteString|Uint8Array|null = null,\n public template: TemplateT|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const publishId = (this.publishId !== null ? builder.createString(this.publishId!) : 0);\n const template = (this.template !== null ? this.template!.pack(builder) : 0);\n\n Publish.startPublish(builder);\n Publish.addPublishId(builder, publishId);\n Publish.addTemplate(builder, template);\n\n return Publish.endPublish(builder);\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class PrivateKey implements flatbuffers.IUnpackableObject<PrivateKeyT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):PrivateKey {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsPrivateKey(bb:flatbuffers.ByteBuffer, obj?:PrivateKey):PrivateKey {\n return (obj || new PrivateKey()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsPrivateKey(bb:flatbuffers.ByteBuffer, obj?:PrivateKey):PrivateKey {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new PrivateKey()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nprivateKey(): ByteString|null\nprivateKey(optionalEncoding:flatbuffers.Encoding): ByteString|Uint8Array|null\nprivateKey(optionalEncoding?:any): ByteString|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__stringByteString(this.bb_pos + offset, optionalEncoding) : null;\n}\n\nstatic startPrivateKey(builder:flatbuffers.Builder) {\n builder.startObject(1);\n}\n\nstatic addPrivateKey(builder:flatbuffers.Builder, privateKeyOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, privateKeyOffset, 0);\n}\n\nstatic endPrivateKey(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // private_key\n return offset;\n}\n\nstatic createPrivateKey(builder:flatbuffers.Builder, privateKeyOffset:flatbuffers.Offset):flatbuffers.Offset {\n PrivateKey.startPrivateKey(builder);\n PrivateKey.addPrivateKey(builder, privateKeyOffset);\n return PrivateKey.endPrivateKey(builder);\n}\n\nunpack(): PrivateKeyT {\n return new PrivateKeyT(\n this.privateKey()\n );\n}\n\n\nunpackTo(_o: PrivateKeyT): void {\n _o.privateKey = this.privateKey();\n}\n}\n\nexport class PrivateKeyT implements flatbuffers.IGeneratedObject {\nconstructor(\n public privateKey: ByteString|Uint8Array|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const privateKey = (this.privateKey !== null ? builder.createString(this.privateKey!) : 0);\n\n return PrivateKey.createPrivateKey(builder,\n privateKey\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport { PrivateKey, PrivateKeyT } from '../../nostr/fb/private-key.js';\n\n\nexport enum SignerType {\n NONE = 0,\n PrivateKey = 1\n}\n\nexport function unionToSignerType(\n type: SignerType,\n accessor: (obj:PrivateKey) => PrivateKey|null\n): PrivateKey|null {\n switch(SignerType[type]) {\n case 'NONE': return null; \n case 'PrivateKey': return accessor(new PrivateKey())! as PrivateKey;\n default: return null;\n }\n}\n\nexport function unionListToSignerType(\n type: SignerType, \n accessor: (index: number, obj:PrivateKey) => PrivateKey|null, \n index: number\n): PrivateKey|null {\n switch(SignerType[type]) {\n case 'NONE': return null; \n case 'PrivateKey': return accessor(index, new PrivateKey())! as PrivateKey;\n default: return null;\n }\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { PrivateKey, PrivateKeyT } from '../../nostr/fb/private-key.js';\nimport { SignerType, unionToSignerType, unionListToSignerType } from '../../nostr/fb/signer-type.js';\n\n\nexport class SetSigner implements flatbuffers.IUnpackableObject<SetSignerT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):SetSigner {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsSetSigner(bb:flatbuffers.ByteBuffer, obj?:SetSigner):SetSigner {\n return (obj || new SetSigner()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsSetSigner(bb:flatbuffers.ByteBuffer, obj?:SetSigner):SetSigner {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new SetSigner()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nsignerTypeType():SignerType {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint8(this.bb_pos + offset) : SignerType.NONE;\n}\n\nsignerType<T extends flatbuffers.Table>(obj:any):any|null {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__union(obj, this.bb_pos + offset) : null;\n}\n\nstatic startSetSigner(builder:flatbuffers.Builder) {\n builder.startObject(2);\n}\n\nstatic addSignerTypeType(builder:flatbuffers.Builder, signerTypeType:SignerType) {\n builder.addFieldInt8(0, signerTypeType, SignerType.NONE);\n}\n\nstatic addSignerType(builder:flatbuffers.Builder, signerTypeOffset:flatbuffers.Offset) {\n builder.addFieldOffset(1, signerTypeOffset, 0);\n}\n\nstatic endSetSigner(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 6) // signer_type\n return offset;\n}\n\nstatic createSetSigner(builder:flatbuffers.Builder, signerTypeType:SignerType, signerTypeOffset:flatbuffers.Offset):flatbuffers.Offset {\n SetSigner.startSetSigner(builder);\n SetSigner.addSignerTypeType(builder, signerTypeType);\n SetSigner.addSignerType(builder, signerTypeOffset);\n return SetSigner.endSetSigner(builder);\n}\n\nunpack(): SetSignerT {\n return new SetSignerT(\n this.signerTypeType(),\n (() => {\n const temp = unionToSignerType(this.signerTypeType(), this.signerType.bind(this));\n if(temp === null) { return null; }\n return temp.unpack()\n })()\n );\n}\n\n\nunpackTo(_o: SetSignerT): void {\n _o.signerTypeType = this.signerTypeType();\n _o.signerType = (() => {\n const temp = unionToSignerType(this.signerTypeType(), this.signerType.bind(this));\n if(temp === null) { return null; }\n return temp.unpack()\n })();\n}\n}\n\nexport class SetSignerT implements flatbuffers.IGeneratedObject {\nconstructor(\n public signerTypeType: SignerType = SignerType.NONE,\n public signerType: PrivateKeyT|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const signerType = builder.createObjectOffset(this.signerType);\n\n return SetSigner.createSetSigner(builder,\n this.signerTypeType,\n signerType\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { Template, TemplateT } from '../../nostr/fb/template.js';\n\n\nexport class SignEvent implements flatbuffers.IUnpackableObject<SignEventT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):SignEvent {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsSignEvent(bb:flatbuffers.ByteBuffer, obj?:SignEvent):SignEvent {\n return (obj || new SignEvent()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsSignEvent(bb:flatbuffers.ByteBuffer, obj?:SignEvent):SignEvent {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new SignEvent()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\ntemplate(obj?:Template):Template|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? (obj || new Template()).__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) : null;\n}\n\nstatic startSignEvent(builder:flatbuffers.Builder) {\n builder.startObject(1);\n}\n\nstatic addTemplate(builder:flatbuffers.Builder, templateOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, templateOffset, 0);\n}\n\nstatic endSignEvent(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // template\n return offset;\n}\n\nstatic createSignEvent(builder:flatbuffers.Builder, templateOffset:flatbuffers.Offset):flatbuffers.Offset {\n SignEvent.startSignEvent(builder);\n SignEvent.addTemplate(builder, templateOffset);\n return SignEvent.endSignEvent(builder);\n}\n\nunpack(): SignEventT {\n return new SignEventT(\n (this.template() !== null ? this.template()!.unpack() : null)\n );\n}\n\n\nunpackTo(_o: SignEventT): void {\n _o.template = (this.template() !== null ? this.template()!.unpack() : null);\n}\n}\n\nexport class SignEventT implements flatbuffers.IGeneratedObject {\nconstructor(\n public template: TemplateT|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const template = (this.template !== null ? this.template!.pack(builder) : 0);\n\n return SignEvent.createSignEvent(builder,\n template\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class NpubLimiterPipeConfig implements flatbuffers.IUnpackableObject<NpubLimiterPipeConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):NpubLimiterPipeConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsNpubLimiterPipeConfig(bb:flatbuffers.ByteBuffer, obj?:NpubLimiterPipeConfig):NpubLimiterPipeConfig {\n return (obj || new NpubLimiterPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsNpubLimiterPipeConfig(bb:flatbuffers.ByteBuffer, obj?:NpubLimiterPipeConfig):NpubLimiterPipeConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new NpubLimiterPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nkind():number {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint16(this.bb_pos + offset) : 0;\n}\n\nlimitPerNpub():number {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.readUint32(this.bb_pos + offset) : 0;\n}\n\nmaxTotalNpubs():number {\n const offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.readUint32(this.bb_pos + offset) : 0;\n}\n\nstatic startNpubLimiterPipeConfig(builder:flatbuffers.Builder) {\n builder.startObject(3);\n}\n\nstatic addKind(builder:flatbuffers.Builder, kind:number) {\n builder.addFieldInt16(0, kind, 0);\n}\n\nstatic addLimitPerNpub(builder:flatbuffers.Builder, limitPerNpub:number) {\n builder.addFieldInt32(1, limitPerNpub, 0);\n}\n\nstatic addMaxTotalNpubs(builder:flatbuffers.Builder, maxTotalNpubs:number) {\n builder.addFieldInt32(2, maxTotalNpubs, 0);\n}\n\nstatic endNpubLimiterPipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n return offset;\n}\n\nstatic createNpubLimiterPipeConfig(builder:flatbuffers.Builder, kind:number, limitPerNpub:number, maxTotalNpubs:number):flatbuffers.Offset {\n NpubLimiterPipeConfig.startNpubLimiterPipeConfig(builder);\n NpubLimiterPipeConfig.addKind(builder, kind);\n NpubLimiterPipeConfig.addLimitPerNpub(builder, limitPerNpub);\n NpubLimiterPipeConfig.addMaxTotalNpubs(builder, maxTotalNpubs);\n return NpubLimiterPipeConfig.endNpubLimiterPipeConfig(builder);\n}\n\nunpack(): NpubLimiterPipeConfigT {\n return new NpubLimiterPipeConfigT(\n this.kind(),\n this.limitPerNpub(),\n this.maxTotalNpubs()\n );\n}\n\n\nunpackTo(_o: NpubLimiterPipeConfigT): void {\n _o.kind = this.kind();\n _o.limitPerNpub = this.limitPerNpub();\n _o.maxTotalNpubs = this.maxTotalNpubs();\n}\n}\n\nexport class NpubLimiterPipeConfigT implements flatbuffers.IGeneratedObject {\nconstructor(\n public kind: number = 0,\n public limitPerNpub: number = 0,\n public maxTotalNpubs: number = 0\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n return NpubLimiterPipeConfig.createNpubLimiterPipeConfig(builder,\n this.kind,\n this.limitPerNpub,\n this.maxTotalNpubs\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class ParsePipeConfig implements flatbuffers.IUnpackableObject<ParsePipeConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):ParsePipeConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsParsePipeConfig(bb:flatbuffers.ByteBuffer, obj?:ParsePipeConfig):ParsePipeConfig {\n return (obj || new ParsePipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsParsePipeConfig(bb:flatbuffers.ByteBuffer, obj?:ParsePipeConfig):ParsePipeConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new ParsePipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic startParsePipeConfig(builder:flatbuffers.Builder) {\n builder.startObject(0);\n}\n\nstatic endParsePipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n return offset;\n}\n\nstatic createParsePipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n ParsePipeConfig.startParsePipeConfig(builder);\n return ParsePipeConfig.endParsePipeConfig(builder);\n}\n\nunpack(): ParsePipeConfigT {\n return new ParsePipeConfigT();\n}\n\n\nunpackTo(_o: ParsePipeConfigT): void {}\n}\n\nexport class ParsePipeConfigT implements flatbuffers.IGeneratedObject {\nconstructor(){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n return ParsePipeConfig.createParsePipeConfig(builder);\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class ProofVerificationPipeConfig implements flatbuffers.IUnpackableObject<ProofVerificationPipeConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):ProofVerificationPipeConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsProofVerificationPipeConfig(bb:flatbuffers.ByteBuffer, obj?:ProofVerificationPipeConfig):ProofVerificationPipeConfig {\n return (obj || new ProofVerificationPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsProofVerificationPipeConfig(bb:flatbuffers.ByteBuffer, obj?:ProofVerificationPipeConfig):ProofVerificationPipeConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new ProofVerificationPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nmaxProofs():number {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint32(this.bb_pos + offset) : 0;\n}\n\nstatic startProofVerificationPipeConfig(builder:flatbuffers.Builder) {\n builder.startObject(1);\n}\n\nstatic addMaxProofs(builder:flatbuffers.Builder, maxProofs:number) {\n builder.addFieldInt32(0, maxProofs, 0);\n}\n\nstatic endProofVerificationPipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n return offset;\n}\n\nstatic createProofVerificationPipeConfig(builder:flatbuffers.Builder, maxProofs:number):flatbuffers.Offset {\n ProofVerificationPipeConfig.startProofVerificationPipeConfig(builder);\n ProofVerificationPipeConfig.addMaxProofs(builder, maxProofs);\n return ProofVerificationPipeConfig.endProofVerificationPipeConfig(builder);\n}\n\nunpack(): ProofVerificationPipeConfigT {\n return new ProofVerificationPipeConfigT(\n this.maxProofs()\n );\n}\n\n\nunpackTo(_o: ProofVerificationPipeConfigT): void {\n _o.maxProofs = this.maxProofs();\n}\n}\n\nexport class ProofVerificationPipeConfigT implements flatbuffers.IGeneratedObject {\nconstructor(\n public maxProofs: number = 0\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n return ProofVerificationPipeConfig.createProofVerificationPipeConfig(builder,\n this.maxProofs\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class SaveToDbPipeConfig implements flatbuffers.IUnpackableObject<SaveToDbPipeConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):SaveToDbPipeConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsSaveToDbPipeConfig(bb:flatbuffers.ByteBuffer, obj?:SaveToDbPipeConfig):SaveToDbPipeConfig {\n return (obj || new SaveToDbPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsSaveToDbPipeConfig(bb:flatbuffers.ByteBuffer, obj?:SaveToDbPipeConfig):SaveToDbPipeConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new SaveToDbPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic startSaveToDbPipeConfig(builder:flatbuffers.Builder) {\n builder.startObject(0);\n}\n\nstatic endSaveToDbPipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n return offset;\n}\n\nstatic createSaveToDbPipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n SaveToDbPipeConfig.startSaveToDbPipeConfig(builder);\n return SaveToDbPipeConfig.endSaveToDbPipeConfig(builder);\n}\n\nunpack(): SaveToDbPipeConfigT {\n return new SaveToDbPipeConfigT();\n}\n\n\nunpackTo(_o: SaveToDbPipeConfigT): void {}\n}\n\nexport class SaveToDbPipeConfigT implements flatbuffers.IGeneratedObject {\nconstructor(){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n return SaveToDbPipeConfig.createSaveToDbPipeConfig(builder);\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class SerializeEventsPipeConfig implements flatbuffers.IUnpackableObject<SerializeEventsPipeConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):SerializeEventsPipeConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsSerializeEventsPipeConfig(bb:flatbuffers.ByteBuffer, obj?:SerializeEventsPipeConfig):SerializeEventsPipeConfig {\n return (obj || new SerializeEventsPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsSerializeEventsPipeConfig(bb:flatbuffers.ByteBuffer, obj?:SerializeEventsPipeConfig):SerializeEventsPipeConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new SerializeEventsPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nsubscriptionId(): ByteString|null\nsubscriptionId(optionalEncoding:flatbuffers.Encoding): ByteString|Uint8Array|null\nsubscriptionId(optionalEncoding?:any): ByteString|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__stringByteString(this.bb_pos + offset, optionalEncoding) : null;\n}\n\nstatic startSerializeEventsPipeConfig(builder:flatbuffers.Builder) {\n builder.startObject(1);\n}\n\nstatic addSubscriptionId(builder:flatbuffers.Builder, subscriptionIdOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, subscriptionIdOffset, 0);\n}\n\nstatic endSerializeEventsPipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // subscription_id\n return offset;\n}\n\nstatic createSerializeEventsPipeConfig(builder:flatbuffers.Builder, subscriptionIdOffset:flatbuffers.Offset):flatbuffers.Offset {\n SerializeEventsPipeConfig.startSerializeEventsPipeConfig(builder);\n SerializeEventsPipeConfig.addSubscriptionId(builder, subscriptionIdOffset);\n return SerializeEventsPipeConfig.endSerializeEventsPipeConfig(builder);\n}\n\nunpack(): SerializeEventsPipeConfigT {\n return new SerializeEventsPipeConfigT(\n this.subscriptionId()\n );\n}\n\n\nunpackTo(_o: SerializeEventsPipeConfigT): void {\n _o.subscriptionId = this.subscriptionId();\n}\n}\n\nexport class SerializeEventsPipeConfigT implements flatbuffers.IGeneratedObject {\nconstructor(\n public subscriptionId: ByteString|Uint8Array|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const subscriptionId = (this.subscriptionId !== null ? builder.createString(this.subscriptionId!) : 0);\n\n return SerializeEventsPipeConfig.createSerializeEventsPipeConfig(builder,\n subscriptionId\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport { CounterPipeConfig, CounterPipeConfigT } from '../../nostr/fb/counter-pipe-config.js';\nimport { KindFilterPipeConfig, KindFilterPipeConfigT } from '../../nostr/fb/kind-filter-pipe-config.js';\nimport { NpubLimiterPipeConfig, NpubLimiterPipeConfigT } from '../../nostr/fb/npub-limiter-pipe-config.js';\nimport { ParsePipeConfig, ParsePipeConfigT } from '../../nostr/fb/parse-pipe-config.js';\nimport { ProofVerificationPipeConfig, ProofVerificationPipeConfigT } from '../../nostr/fb/proof-verification-pipe-config.js';\nimport { SaveToDbPipeConfig, SaveToDbPipeConfigT } from '../../nostr/fb/save-to-db-pipe-config.js';\nimport { SerializeEventsPipeConfig, SerializeEventsPipeConfigT } from '../../nostr/fb/serialize-events-pipe-config.js';\n\n\nexport enum PipeConfig {\n NONE = 0,\n ParsePipeConfig = 1,\n KindFilterPipeConfig = 2,\n CounterPipeConfig = 3,\n NpubLimiterPipeConfig = 4,\n SaveToDbPipeConfig = 5,\n SerializeEventsPipeConfig = 6,\n ProofVerificationPipeConfig = 7\n}\n\nexport function unionToPipeConfig(\n type: PipeConfig,\n accessor: (obj:CounterPipeConfig|KindFilterPipeConfig|NpubLimiterPipeConfig|ParsePipeConfig|ProofVerificationPipeConfig|SaveToDbPipeConfig|SerializeEventsPipeConfig) => CounterPipeConfig|KindFilterPipeConfig|NpubLimiterPipeConfig|ParsePipeConfig|ProofVerificationPipeConfig|SaveToDbPipeConfig|SerializeEventsPipeConfig|null\n): CounterPipeConfig|KindFilterPipeConfig|NpubLimiterPipeConfig|ParsePipeConfig|ProofVerificationPipeConfig|SaveToDbPipeConfig|SerializeEventsPipeConfig|null {\n switch(PipeConfig[type]) {\n case 'NONE': return null; \n case 'ParsePipeConfig': return accessor(new ParsePipeConfig())! as ParsePipeConfig;\n case 'KindFilterPipeConfig': return accessor(new KindFilterPipeConfig())! as KindFilterPipeConfig;\n case 'CounterPipeConfig': return accessor(new CounterPipeConfig())! as CounterPipeConfig;\n case 'NpubLimiterPipeConfig': return accessor(new NpubLimiterPipeConfig())! as NpubLimiterPipeConfig;\n case 'SaveToDbPipeConfig': return accessor(new SaveToDbPipeConfig())! as SaveToDbPipeConfig;\n case 'SerializeEventsPipeConfig': return accessor(new SerializeEventsPipeConfig())! as SerializeEventsPipeConfig;\n case 'ProofVerificationPipeConfig': return accessor(new ProofVerificationPipeConfig())! as ProofVerificationPipeConfig;\n default: return null;\n }\n}\n\nexport function unionListToPipeConfig(\n type: PipeConfig, \n accessor: (index: number, obj:CounterPipeConfig|KindFilterPipeConfig|NpubLimiterPipeConfig|ParsePipeConfig|ProofVerificationPipeConfig|SaveToDbPipeConfig|SerializeEventsPipeConfig) => CounterPipeConfig|KindFilterPipeConfig|NpubLimiterPipeConfig|ParsePipeConfig|ProofVerificationPipeConfig|SaveToDbPipeConfig|SerializeEventsPipeConfig|null, \n index: number\n): CounterPipeConfig|KindFilterPipeConfig|NpubLimiterPipeConfig|ParsePipeConfig|ProofVerificationPipeConfig|SaveToDbPipeConfig|SerializeEventsPipeConfig|null {\n switch(PipeConfig[type]) {\n case 'NONE': return null; \n case 'ParsePipeConfig': return accessor(index, new ParsePipeConfig())! as ParsePipeConfig;\n case 'KindFilterPipeConfig': return accessor(index, new KindFilterPipeConfig())! as KindFilterPipeConfig;\n case 'CounterPipeConfig': return accessor(index, new CounterPipeConfig())! as CounterPipeConfig;\n case 'NpubLimiterPipeConfig': return accessor(index, new NpubLimiterPipeConfig())! as NpubLimiterPipeConfig;\n case 'SaveToDbPipeConfig': return accessor(index, new SaveToDbPipeConfig())! as SaveToDbPipeConfig;\n case 'SerializeEventsPipeConfig': return accessor(index, new SerializeEventsPipeConfig())! as SerializeEventsPipeConfig;\n case 'ProofVerificationPipeConfig': return accessor(index, new ProofVerificationPipeConfig())! as ProofVerificationPipeConfig;\n default: return null;\n }\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { CounterPipeConfig, CounterPipeConfigT } from '../../nostr/fb/counter-pipe-config.js';\nimport { KindFilterPipeConfig, KindFilterPipeConfigT } from '../../nostr/fb/kind-filter-pipe-config.js';\nimport { NpubLimiterPipeConfig, NpubLimiterPipeConfigT } from '../../nostr/fb/npub-limiter-pipe-config.js';\nimport { ParsePipeConfig, ParsePipeConfigT } from '../../nostr/fb/parse-pipe-config.js';\nimport { PipeConfig, unionToPipeConfig, unionListToPipeConfig } from '../../nostr/fb/pipe-config.js';\nimport { ProofVerificationPipeConfig, ProofVerificationPipeConfigT } from '../../nostr/fb/proof-verification-pipe-config.js';\nimport { SaveToDbPipeConfig, SaveToDbPipeConfigT } from '../../nostr/fb/save-to-db-pipe-config.js';\nimport { SerializeEventsPipeConfig, SerializeEventsPipeConfigT } from '../../nostr/fb/serialize-events-pipe-config.js';\n\n\nexport class Pipe implements flatbuffers.IUnpackableObject<PipeT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):Pipe {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsPipe(bb:flatbuffers.ByteBuffer, obj?:Pipe):Pipe {\n return (obj || new Pipe()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsPipe(bb:flatbuffers.ByteBuffer, obj?:Pipe):Pipe {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Pipe()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nconfigType():PipeConfig {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint8(this.bb_pos + offset) : PipeConfig.NONE;\n}\n\nconfig<T extends flatbuffers.Table>(obj:any):any|null {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__union(obj, this.bb_pos + offset) : null;\n}\n\nstatic startPipe(builder:flatbuffers.Builder) {\n builder.startObject(2);\n}\n\nstatic addConfigType(builder:flatbuffers.Builder, configType:PipeConfig) {\n builder.addFieldInt8(0, configType, PipeConfig.NONE);\n}\n\nstatic addConfig(builder:flatbuffers.Builder, configOffset:flatbuffers.Offset) {\n builder.addFieldOffset(1, configOffset, 0);\n}\n\nstatic endPipe(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 6) // config\n return offset;\n}\n\nstatic createPipe(builder:flatbuffers.Builder, configType:PipeConfig, configOffset:flatbuffers.Offset):flatbuffers.Offset {\n Pipe.startPipe(builder);\n Pipe.addConfigType(builder, configType);\n Pipe.addConfig(builder, configOffset);\n return Pipe.endPipe(builder);\n}\n\nunpack(): PipeT {\n return new PipeT(\n this.configType(),\n (() => {\n const temp = unionToPipeConfig(this.configType(), this.config.bind(this));\n if(temp === null) { return null; }\n return temp.unpack()\n })()\n );\n}\n\n\nunpackTo(_o: PipeT): void {\n _o.configType = this.configType();\n _o.config = (() => {\n const temp = unionToPipeConfig(this.configType(), this.config.bind(this));\n if(temp === null) { return null; }\n return temp.unpack()\n })();\n}\n}\n\nexport class PipeT implements flatbuffers.IGeneratedObject {\nconstructor(\n public configType: PipeConfig = PipeConfig.NONE,\n public config: CounterPipeConfigT|KindFilterPipeConfigT|NpubLimiterPipeConfigT|ParsePipeConfigT|ProofVerificationPipeConfigT|SaveToDbPipeConfigT|SerializeEventsPipeConfigT|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const config = builder.createObjectOffset(this.config);\n\n return Pipe.createPipe(builder,\n this.configType,\n config\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { Pipe, PipeT } from '../../nostr/fb/pipe.js';\n\n\nexport class PipelineConfig implements flatbuffers.IUnpackableObject<PipelineConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):PipelineConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsPipelineConfig(bb:flatbuffers.ByteBuffer, obj?:PipelineConfig):PipelineConfig {\n return (obj || new PipelineConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsPipelineConfig(bb:flatbuffers.ByteBuffer, obj?:PipelineConfig):PipelineConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new PipelineConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\npipes(index: number, obj?:Pipe):Pipe|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? (obj || new Pipe()).__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) : null;\n}\n\npipesLength():number {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nstatic startPipelineConfig(builder:flatbuffers.Builder) {\n builder.startObject(1);\n}\n\nstatic addPipes(builder:flatbuffers.Builder, pipesOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, pipesOffset, 0);\n}\n\nstatic createPipesVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]!);\n }\n return builder.endVector();\n}\n\nstatic startPipesVector(builder:flatbuffers.Builder, numElems:number) {\n builder.startVector(4, numElems, 4);\n}\n\nstatic endPipelineConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // pipes\n return offset;\n}\n\nstatic createPipelineConfig(builder:flatbuffers.Builder, pipesOffset:flatbuffers.Offset):flatbuffers.Offset {\n PipelineConfig.startPipelineConfig(builder);\n PipelineConfig.addPipes(builder, pipesOffset);\n return PipelineConfig.endPipelineConfig(builder);\n}\n\nunpack(): PipelineConfigT {\n return new PipelineConfigT(\n this.bb!.createObjList<Pipe, PipeT>(this.pipes.bind(this), this.pipesLength())\n );\n}\n\n\nunpackTo(_o: PipelineConfigT): void {\n _o.pipes = this.bb!.createObjList<Pipe, PipeT>(this.pipes.bind(this), this.pipesLength());\n}\n}\n\nexport class PipelineConfigT implements flatbuffers.IGeneratedObject {\nconstructor(\n public pipes: (PipeT)[] = []\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const pipes = PipelineConfig.createPipesVector(builder, builder.createObjectOffsetList(this.pipes));\n\n return PipelineConfig.createPipelineConfig(builder,\n pipes\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { PipelineConfig, PipelineConfigT } from '../../nostr/fb/pipeline-config.js';\n\n\nexport class SubscriptionConfig implements flatbuffers.IUnpackableObject<SubscriptionConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):SubscriptionConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsSubscriptionConfig(bb:flatbuffers.ByteBuffer, obj?:SubscriptionConfig):SubscriptionConfig {\n return (obj || new SubscriptionConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsSubscriptionConfig(bb:flatbuffers.ByteBuffer, obj?:SubscriptionConfig):SubscriptionConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new SubscriptionConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\npipeline(obj?:PipelineConfig):PipelineConfig|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? (obj || new PipelineConfig()).__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) : null;\n}\n\ncloseOnEose():boolean {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? !!this.bb!.readInt8(this.bb_pos + offset) : false;\n}\n\ncacheFirst():boolean {\n const offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? !!this.bb!.readInt8(this.bb_pos + offset) : true;\n}\n\ntimeoutMs():bigint {\n const offset = this.bb!.__offset(this.bb_pos, 10);\n return offset ? this.bb!.readUint64(this.bb_pos + offset) : BigInt('0');\n}\n\nmaxEvents():number {\n const offset = this.bb!.__offset(this.bb_pos, 12);\n return offset ? this.bb!.readUint32(this.bb_pos + offset) : 0;\n}\n\nskipCache():boolean {\n const offset = this.bb!.__offset(this.bb_pos, 14);\n return offset ? !!this.bb!.readInt8(this.bb_pos + offset) : false;\n}\n\nforce():boolean {\n const offset = this.bb!.__offset(this.bb_pos, 16);\n return offset ? !!this.bb!.readInt8(this.bb_pos + offset) : false;\n}\n\nbytesPerEvent():number {\n const offset = this.bb!.__offset(this.bb_pos, 18);\n return offset ? this.bb!.readUint32(this.bb_pos + offset) : 0;\n}\n\nstatic startSubscriptionConfig(builder:flatbuffers.Builder) {\n builder.startObject(8);\n}\n\nstatic addPipeline(builder:flatbuffers.Builder, pipelineOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, pipelineOffset, 0);\n}\n\nstatic addCloseOnEose(builder:flatbuffers.Builder, closeOnEose:boolean) {\n builder.addFieldInt8(1, +closeOnEose, +false);\n}\n\nstatic addCacheFirst(builder:flatbuffers.Builder, cacheFirst:boolean) {\n builder.addFieldInt8(2, +cacheFirst, +true);\n}\n\nstatic addTimeoutMs(builder:flatbuffers.Builder, timeoutMs:bigint) {\n builder.addFieldInt64(3, timeoutMs, BigInt('0'));\n}\n\nstatic addMaxEvents(builder:flatbuffers.Builder, maxEvents:number) {\n builder.addFieldInt32(4, maxEvents, 0);\n}\n\nstatic addSkipCache(builder:flatbuffers.Builder, skipCache:boolean) {\n builder.addFieldInt8(5, +skipCache, +false);\n}\n\nstatic addForce(builder:flatbuffers.Builder, force:boolean) {\n builder.addFieldInt8(6, +force, +false);\n}\n\nstatic addBytesPerEvent(builder:flatbuffers.Builder, bytesPerEvent:number) {\n builder.addFieldInt32(7, bytesPerEvent, 0);\n}\n\nstatic endSubscriptionConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n return offset;\n}\n\nstatic createSubscriptionConfig(builder:flatbuffers.Builder, pipelineOffset:flatbuffers.Offset, closeOnEose:boolean, cacheFirst:boolean, timeoutMs:bigint, maxEvents:number, skipCache:boolean, force:boolean, bytesPerEvent:number):flatbuffers.Offset {\n SubscriptionConfig.startSubscriptionConfig(builder);\n SubscriptionConfig.addPipeline(builder, pipelineOffset);\n SubscriptionConfig.addCloseOnEose(builder, closeOnEose);\n SubscriptionConfig.addCacheFirst(builder, cacheFirst);\n SubscriptionConfig.addTimeoutMs(builder, timeoutMs);\n SubscriptionConfig.addMaxEvents(builder, maxEvents);\n SubscriptionConfig.addSkipCache(builder, skipCache);\n SubscriptionConfig.addForce(builder, force);\n SubscriptionConfig.addBytesPerEvent(builder, bytesPerEvent);\n return SubscriptionConfig.endSubscriptionConfig(builder);\n}\n\nunpack(): SubscriptionConfigT {\n return new SubscriptionConfigT(\n (this.pipeline() !== null ? this.pipeline()!.unpack() : null),\n this.closeOnEose(),\n this.cacheFirst(),\n this.timeoutMs(),\n this.maxEvents(),\n this.skipCache(),\n this.force(),\n this.bytesPerEvent()\n );\n}\n\n\nunpackTo(_o: SubscriptionConfigT): void {\n _o.pipeline = (this.pipeline() !== null ? this.pipeline()!.unpack() : null);\n _o.closeOnEose = this.closeOnEose();\n _o.cacheFirst = this.cacheFirst();\n _o.timeoutMs = this.timeoutMs();\n _o.maxEvents = this.maxEvents();\n _o.skipCache = this.skipCache();\n _o.force = this.force();\n _o.bytesPerEvent = this.bytesPerEvent();\n}\n}\n\nexport class SubscriptionConfigT implements flatbuffers.IGeneratedObject {\nconstructor(\n public pipeline: PipelineConfigT|null = null,\n public closeOnEose: boolean = false,\n public cacheFirst: boolean = true,\n public timeoutMs: bigint = BigInt('0'),\n public maxEvents: number = 0,\n public skipCache: boolean = false,\n public force: boolean = false,\n public bytesPerEvent: number = 0\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const pipeline = (this.pipeline !== null ? this.pipeline!.pack(builder) : 0);\n\n return SubscriptionConfig.createSubscriptionConfig(builder,\n pipeline,\n this.closeOnEose,\n this.cacheFirst,\n this.timeoutMs,\n this.maxEvents,\n this.skipCache,\n this.force,\n this.bytesPerEvent\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { Request, RequestT } from '../../nostr/fb/request.js';\nimport { SubscriptionConfig, SubscriptionConfigT } from '../../nostr/fb/subscription-config.js';\n\n\nexport class Subscribe implements flatbuffers.IUnpackableObject<SubscribeT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):Subscribe {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsSubscribe(bb:flatbuffers.ByteBuffer, obj?:Subscribe):Subscribe {\n return (obj || new Subscribe()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsSubscribe(bb:flatbuffers.ByteBuffer, obj?:Subscribe):Subscribe {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Subscribe()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nsubscriptionId(): ByteString|null\nsubscriptionId(optionalEncoding:flatbuffers.Encoding): ByteString|Uint8Array|null\nsubscriptionId(optionalEncoding?:any): ByteString|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__stringByteString(this.bb_pos + offset, optionalEncoding) : null;\n}\n\nrequests(index: number, obj?:Request):Request|null {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? (obj || new Request()).__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) : null;\n}\n\nrequestsLength():number {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nconfig(obj?:SubscriptionConfig):SubscriptionConfig|null {\n const offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? (obj || new SubscriptionConfig()).__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) : null;\n}\n\nstatic startSubscribe(builder:flatbuffers.Builder) {\n builder.startObject(3);\n}\n\nstatic addSubscriptionId(builder:flatbuffers.Builder, subscriptionIdOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, subscriptionIdOffset, 0);\n}\n\nstatic addRequests(builder:flatbuffers.Builder, requestsOffset:flatbuffers.Offset) {\n builder.addFieldOffset(1, requestsOffset, 0);\n}\n\nstatic createRequestsVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]!);\n }\n return builder.endVector();\n}\n\nstatic startRequestsVector(builder:flatbuffers.Builder, numElems:number) {\n builder.startVector(4, numElems, 4);\n}\n\nstatic addConfig(builder:flatbuffers.Builder, configOffset:flatbuffers.Offset) {\n builder.addFieldOffset(2, configOffset, 0);\n}\n\nstatic endSubscribe(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // subscription_id\n builder.requiredField(offset, 6) // requests\n builder.requiredField(offset, 8) // config\n return offset;\n}\n\n\nunpack(): SubscribeT {\n return new SubscribeT(\n this.subscriptionId(),\n this.bb!.createObjList<Request, RequestT>(this.requests.bind(this), this.requestsLength()),\n (this.config() !== null ? this.config()!.unpack() : null)\n );\n}\n\n\nunpackTo(_o: SubscribeT): void {\n _o.subscriptionId = this.subscriptionId();\n _o.requests = this.bb!.createObjList<Request, RequestT>(this.requests.bind(this), this.requestsLength());\n _o.config = (this.config() !== null ? this.config()!.unpack() : null);\n}\n}\n\nexport class SubscribeT implements flatbuffers.IGeneratedObject {\nconstructor(\n public subscriptionId: ByteString|Uint8Array|null = null,\n public requests: (RequestT)[] = [],\n public config: SubscriptionConfigT|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const subscriptionId = (this.subscriptionId !== null ? builder.createString(this.subscriptionId!) : 0);\n const requests = Subscribe.createRequestsVector(builder, builder.createObjectOffsetList(this.requests));\n const config = (this.config !== null ? this.config!.pack(builder) : 0);\n\n Subscribe.startSubscribe(builder);\n Subscribe.addSubscriptionId(builder, subscriptionId);\n Subscribe.addRequests(builder, requests);\n Subscribe.addConfig(builder, config);\n\n return Subscribe.endSubscribe(builder);\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class Unsubscribe implements flatbuffers.IUnpackableObject<UnsubscribeT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):Unsubscribe {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsUnsubscribe(bb:flatbuffers.ByteBuffer, obj?:Unsubscribe):Unsubscribe {\n return (obj || new Unsubscribe()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsUnsubscribe(bb:flatbuffers.ByteBuffer, obj?:Unsubscribe):Unsubscribe {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Unsubscribe()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nsubscriptionId(): ByteString|null\nsubscriptionId(optionalEncoding:flatbuffers.Encoding): ByteString|Uint8Array|null\nsubscriptionId(optionalEncoding?:any): ByteString|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__stringByteString(this.bb_pos + offset, optionalEncoding) : null;\n}\n\nstatic startUnsubscribe(builder:flatbuffers.Builder) {\n builder.startObject(1);\n}\n\nstatic addSubscriptionId(builder:flatbuffers.Builder, subscriptionIdOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, subscriptionIdOffset, 0);\n}\n\nstatic endUnsubscribe(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // subscription_id\n return offset;\n}\n\nstatic createUnsubscribe(builder:flatbuffers.Builder, subscriptionIdOffset:flatbuffers.Offset):flatbuffers.Offset {\n Unsubscribe.startUnsubscribe(builder);\n Unsubscribe.addSubscriptionId(builder, subscriptionIdOffset);\n return Unsubscribe.endUnsubscribe(builder);\n}\n\nunpack(): UnsubscribeT {\n return new UnsubscribeT(\n this.subscriptionId()\n );\n}\n\n\nunpackTo(_o: UnsubscribeT): void {\n _o.subscriptionId = this.subscriptionId();\n}\n}\n\nexport class UnsubscribeT implements flatbuffers.IGeneratedObject {\nconstructor(\n public subscriptionId: ByteString|Uint8Array|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const subscriptionId = (this.subscriptionId !== null ? builder.createString(this.subscriptionId!) : 0);\n\n return Unsubscribe.createUnsubscribe(builder,\n subscriptionId\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport { GetPublicKey, GetPublicKeyT } from '../../nostr/fb/get-public-key.js';\nimport { Publish, PublishT } from '../../nostr/fb/publish.js';\nimport { SetSigner, SetSignerT } from '../../nostr/fb/set-signer.js';\nimport { SignEvent, SignEventT } from '../../nostr/fb/sign-event.js';\nimport { Subscribe, SubscribeT } from '../../nostr/fb/subscribe.js';\nimport { Unsubscribe, UnsubscribeT } from '../../nostr/fb/unsubscribe.js';\n\n\nexport enum MainContent {\n NONE = 0,\n Subscribe = 1,\n Unsubscribe = 2,\n Publish = 3,\n SignEvent = 4,\n SetSigner = 5,\n GetPublicKey = 6\n}\n\nexport function unionToMainContent(\n type: MainContent,\n accessor: (obj:GetPublicKey|Publish|SetSigner|SignEvent|Subscribe|Unsubscribe) => GetPublicKey|Publish|SetSigner|SignEvent|Subscribe|Unsubscribe|null\n): GetPublicKey|Publish|SetSigner|SignEvent|Subscribe|Unsubscribe|null {\n switch(MainContent[type]) {\n case 'NONE': return null; \n case 'Subscribe': return accessor(new Subscribe())! as Subscribe;\n case 'Unsubscribe': return accessor(new Unsubscribe())! as Unsubscribe;\n case 'Publish': return accessor(new Publish())! as Publish;\n case 'SignEvent': return accessor(new SignEvent())! as SignEvent;\n case 'SetSigner': return accessor(new SetSigner())! as SetSigner;\n case 'GetPublicKey': return accessor(new GetPublicKey())! as GetPublicKey;\n default: return null;\n }\n}\n\nexport function unionListToMainContent(\n type: MainContent, \n accessor: (index: number, obj:GetPublicKey|Publish|SetSigner|SignEvent|Subscribe|Unsubscribe) => GetPublicKey|Publish|SetSigner|SignEvent|Subscribe|Unsubscribe|null, \n index: number\n): GetPublicKey|Publish|SetSigner|SignEvent|Subscribe|Unsubscribe|null {\n switch(MainContent[type]) {\n case 'NONE': return null; \n case 'Subscribe': return accessor(index, new Subscribe())! as Subscribe;\n case 'Unsubscribe': return accessor(index, new Unsubscribe())! as Unsubscribe;\n case 'Publish': return accessor(index, new Publish())! as Publish;\n case 'SignEvent': return accessor(index, new SignEvent())! as SignEvent;\n case 'SetSigner': return accessor(index, new SetSigner())! as SetSigner;\n case 'GetPublicKey': return accessor(index, new GetPublicKey())! as GetPublicKey;\n default: return null;\n }\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { GetPublicKey, GetPublicKeyT } from '../../nostr/fb/get-public-key.js';\nimport { MainContent, unionToMainContent, unionListToMainContent } from '../../nostr/fb/main-content.js';\nimport { Publish, PublishT } from '../../nostr/fb/publish.js';\nimport { SetSigner, SetSignerT } from '../../nostr/fb/set-signer.js';\nimport { SignEvent, SignEventT } from '../../nostr/fb/sign-event.js';\nimport { Subscribe, SubscribeT } from '../../nostr/fb/subscribe.js';\nimport { Unsubscribe, UnsubscribeT } from '../../nostr/fb/unsubscribe.js';\n\n\nexport class MainMessage implements flatbuffers.IUnpackableObject<MainMessageT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):MainMessage {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsMainMessage(bb:flatbuffers.ByteBuffer, obj?:MainMessage):MainMessage {\n return (obj || new MainMessage()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsMainMessage(bb:flatbuffers.ByteBuffer, obj?:MainMessage):MainMessage {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new MainMessage()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\ncontentType():MainContent {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint8(this.bb_pos + offset) : MainContent.NONE;\n}\n\ncontent<T extends flatbuffers.Table>(obj:any):any|null {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__union(obj, this.bb_pos + offset) : null;\n}\n\nstatic startMainMessage(builder:flatbuffers.Builder) {\n builder.startObject(2);\n}\n\nstatic addContentType(builder:flatbuffers.Builder, contentType:MainContent) {\n builder.addFieldInt8(0, contentType, MainContent.NONE);\n}\n\nstatic addContent(builder:flatbuffers.Builder, contentOffset:flatbuffers.Offset) {\n builder.addFieldOffset(1, contentOffset, 0);\n}\n\nstatic endMainMessage(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 6) // content\n return offset;\n}\n\nstatic createMainMessage(builder:flatbuffers.Builder, contentType:MainContent, contentOffset:flatbuffers.Offset):flatbuffers.Offset {\n MainMessage.startMainMessage(builder);\n MainMessage.addContentType(builder, contentType);\n MainMessage.addContent(builder, contentOffset);\n return MainMessage.endMainMessage(builder);\n}\n\nunpack(): MainMessageT {\n return new MainMessageT(\n this.contentType(),\n (() => {\n const temp = unionToMainContent(this.contentType(), this.content.bind(this));\n if(temp === null) { return null; }\n return temp.unpack()\n })()\n );\n}\n\n\nunpackTo(_o: MainMessageT): void {\n _o.contentType = this.contentType();\n _o.content = (() => {\n const temp = unionToMainContent(this.contentType(), this.content.bind(this));\n if(temp === null) { return null; }\n return temp.unpack()\n })();\n}\n}\n\nexport class MainMessageT implements flatbuffers.IGeneratedObject {\nconstructor(\n public contentType: MainContent = MainContent.NONE,\n public content: GetPublicKeyT|PublishT|SetSignerT|SignEventT|SubscribeT|UnsubscribeT|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const content = builder.createObjectOffset(this.content);\n\n return MainMessage.createMainMessage(builder,\n this.contentType,\n content\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nexport enum MsgKind {\n Unknown = 0,\n Event = 1,\n Eose = 2,\n Ok = 3,\n Closed = 4,\n Notice = 5,\n Auth = 6\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nexport enum ParsedDataUnion {\n Kind0Parsed = 0,\n Kind1Parsed = 1,\n Kind3Parsed = 3,\n Kind4Parsed = 4,\n Kind6Parsed = 6,\n Kind7Parsed = 7,\n Kind17Parsed = 17,\n Kind7374Parsed = 7374,\n Kind7375Parsed = 7375,\n Kind7376Parsed = 7376,\n Kind9321Parsed = 9321,\n Kind9735Parsed = 9735,\n Kind10002Parsed = 10002,\n Kind10019Parsed = 10019,\n Kind17375Parsed = 17375,\n Kind39089Parsed = 39089\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class RelayRef implements flatbuffers.IUnpackableObject<RelayRefT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):RelayRef {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsRelayRef(bb:flatbuffers.ByteBuffer, obj?:RelayRef):RelayRef {\n return (obj || new RelayRef()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsRelayRef(bb:flatbuffers.ByteBuffer, obj?:RelayRef):RelayRef {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new RelayRef()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nurl(): ByteString|null\nurl(optionalEncoding:flatbuffers.Encoding): ByteString|Uint8Array|null\nurl(optionalEncoding?:any): ByteString|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__stringByteString(this.bb_pos + offset, optionalEncoding) : null;\n}\n\nstatic startRelayRef(builder:flatbuffers.Builder) {\n builder.startObject(1);\n}\n\nstatic addUrl(builder:flatbuffers.Builder, urlOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, urlOffset, 0);\n}\n\nstatic endRelayRef(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // url\n return offset;\n}\n\nstatic createRelayRef(builder:flatbuffers.Builder, urlOffset:flatbuffers.Offset):flatbuffers.Offset {\n RelayRef.startRelayRef(builder);\n RelayRef.addUrl(builder, urlOffset);\n return RelayRef.endRelayRef(builder);\n}\n\nunpack(): RelayRefT {\n return new RelayRefT(\n this.url()\n );\n}\n\n\nunpackTo(_o: RelayRefT): void {\n _o.url = this.url();\n}\n}\n\nexport class RelayRefT implements flatbuffers.IGeneratedObject {\nconstructor(\n public url: ByteString|Uint8Array|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const url = (this.url !== null ? builder.createString(this.url!) : 0);\n\n return RelayRef.createRelayRef(builder,\n url\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nexport enum SubscribeKind {\n CachedEvent = 0,\n FetchedEvent = 1,\n Count = 2,\n ConnectionStatus = 3,\n Eoce = 4,\n BufferFull = 5\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { MsgKind } from '../../nostr/fb/msg-kind.js';\nimport { RelayRef, RelayRefT } from '../../nostr/fb/relay-ref.js';\n\n\nexport class WorkerLine implements flatbuffers.IUnpackableObject<WorkerLineT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):WorkerLine {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsWorkerLine(bb:flatbuffers.ByteBuffer, obj?:WorkerLine):WorkerLine {\n return (obj || new WorkerLine()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsWorkerLine(bb:flatbuffers.ByteBuffer, obj?:WorkerLine):WorkerLine {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new WorkerLine()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nrelay(obj?:RelayRef):RelayRef|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? (obj || new RelayRef()).__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) : null;\n}\n\nkind():MsgKind {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.readInt16(this.bb_pos + offset) : MsgKind.Unknown;\n}\n\nsubId(): ByteString|null\nsubId(optionalEncoding:flatbuffers.Encoding): ByteString|Uint8Array|null\nsubId(optionalEncoding?:any): ByteString|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.__stringByteString(this.bb_pos + offset, optionalEncoding) : null;\n}\n\nraw(index: number):number|null {\n const offset = this.bb!.__offset(this.bb_pos, 10);\n return offset ? this.bb!.readUint8(this.bb!.__vector(this.bb_pos + offset) + index) : 0;\n}\n\nrawLength():number {\n const offset = this.bb!.__offset(this.bb_pos, 10);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nrawArray():Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 10);\n return offset ? new Uint8Array(this.bb!.bytes().buffer, this.bb!.bytes().byteOffset + this.bb!.__vector(this.bb_pos + offset), this.bb!.__vector_len(this.bb_pos + offset)) : null;\n}\n\nstatic startWorkerLine(builder:flatbuffers.Builder) {\n builder.startObject(4);\n}\n\nstatic addRelay(builder:flatbuffers.Builder, relayOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, relayOffset, 0);\n}\n\nstatic addKind(builder:flatbuffers.Builder, kind:MsgKind) {\n builder.addFieldInt16(1, kind, MsgKind.Unknown);\n}\n\nstatic addSubId(builder:flatbuffers.Builder, subIdOffset:flatbuffers.Offset) {\n builder.addFieldOffset(2, subIdOffset, 0);\n}\n\nstatic addRaw(builder:flatbuffers.Builder, rawOffset:flatbuffers.Offset) {\n builder.addFieldOffset(3, rawOffset, 0);\n}\n\nstatic createRawVector(builder:flatbuffers.Builder, data:number[]|Uint8Array):flatbuffers.Offset {\n builder.startVector(1, data.length, 1);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addInt8(data[i]!);\n }\n return builder.endVector();\n}\n\nstatic startRawVector(builder:flatbuffers.Builder, numElems:number) {\n builder.startVector(1, numElems, 1);\n}\n\nstatic endWorkerLine(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // relay\n builder.requiredField(offset, 10) // raw\n return offset;\n}\n\nstatic createWorkerLine(builder:flatbuffers.Builder, relayOffset:flatbuffers.Offset, kind:MsgKind, subIdOffset:flatbuffers.Offset, rawOffset:flatbuffers.Offset):flatbuffers.Offset {\n WorkerLine.startWorkerLine(builder);\n WorkerLine.addRelay(builder, relayOffset);\n WorkerLine.addKind(builder, kind);\n WorkerLine.addSubId(builder, subIdOffset);\n WorkerLine.addRaw(builder, rawOffset);\n return WorkerLine.endWorkerLine(builder);\n}\n\nunpack(): WorkerLineT {\n return new WorkerLineT(\n (this.relay() !== null ? this.relay()!.unpack() : null),\n this.kind(),\n this.subId(),\n this.bb!.createScalarList<number>(this.raw.bind(this), this.rawLength())\n );\n}\n\n\nunpackTo(_o: WorkerLineT): void {\n _o.relay = (this.relay() !== null ? this.relay()!.unpack() : null);\n _o.kind = this.kind();\n _o.subId = this.subId();\n _o.raw = this.bb!.createScalarList<number>(this.raw.bind(this), this.rawLength());\n}\n}\n\nexport class WorkerLineT implements flatbuffers.IGeneratedObject {\nconstructor(\n public relay: RelayRefT|null = null,\n public kind: MsgKind = MsgKind.Unknown,\n public subId: ByteString|Uint8Array|null = null,\n public raw: (number)[] = []\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const relay = (this.relay !== null ? this.relay!.pack(builder) : 0);\n const subId = (this.subId !== null ? builder.createString(this.subId!) : 0);\n const raw = WorkerLine.createRawVector(builder, this.raw);\n\n return WorkerLine.createWorkerLine(builder,\n relay,\n this.kind,\n subId,\n raw\n );\n}\n}\n","import { ByteString } from \"src/lib/ByteString\";\n// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { BufferFull, BufferFullT } from '../../nostr/fb/buffer-full.js';\nimport { ConnectionStatus, ConnectionStatusT } from '../../nostr/fb/connection-status.js';\nimport { CountResponse, CountResponseT } from '../../nostr/fb/count-response.js';\nimport { Eoce, EoceT } from '../../nostr/fb/eoce.js';\nimport { Message, unionToMessage, unionListToMessage } from '../../nostr/fb/message.js';\nimport { MessageType } from '../../nostr/fb/message-type.js';\nimport { ParsedEvent, ParsedEventT } from '../../nostr/fb/parsed-event.js';\nimport { Pubkey, PubkeyT } from '../../nostr/fb/pubkey.js';\nimport { SignedEvent, SignedEventT } from '../../nostr/fb/signed-event.js';\nimport { ValidProofs, ValidProofsT } from '../../nostr/fb/valid-proofs.js';\n\n\nexport class WorkerMessage implements flatbuffers.IUnpackableObject<WorkerMessageT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):WorkerMessage {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsWorkerMessage(bb:flatbuffers.ByteBuffer, obj?:WorkerMessage):WorkerMessage {\n return (obj || new WorkerMessage()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsWorkerMessage(bb:flatbuffers.ByteBuffer, obj?:WorkerMessage):WorkerMessage {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new WorkerMessage()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\ntype():MessageType {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint32(this.bb_pos + offset) : MessageType.ParsedNostrEvent;\n}\n\ncontentType():Message {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.readUint8(this.bb_pos + offset) : Message.NONE;\n}\n\ncontent<T extends flatbuffers.Table>(obj:any):any|null {\n const offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.__union(obj, this.bb_pos + offset) : null;\n}\n\nstatic startWorkerMessage(builder:flatbuffers.Builder) {\n builder.startObject(3);\n}\n\nstatic addType(builder:flatbuffers.Builder, type:MessageType) {\n builder.addFieldInt32(0, type, MessageType.ParsedNostrEvent);\n}\n\nstatic addContentType(builder:flatbuffers.Builder, contentType:Message) {\n builder.addFieldInt8(1, contentType, Message.NONE);\n}\n\nstatic addContent(builder:flatbuffers.Builder, contentOffset:flatbuffers.Offset) {\n builder.addFieldOffset(2, contentOffset, 0);\n}\n\nstatic endWorkerMessage(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n return offset;\n}\n\nstatic finishWorkerMessageBuffer(builder:flatbuffers.Builder, offset:flatbuffers.Offset) {\n builder.finish(offset);\n}\n\nstatic finishSizePrefixedWorkerMessageBuffer(builder:flatbuffers.Builder, offset:flatbuffers.Offset) {\n builder.finish(offset, undefined, true);\n}\n\nstatic createWorkerMessage(builder:flatbuffers.Builder, type:MessageType, contentType:Message, contentOffset:flatbuffers.Offset):flatbuffers.Offset {\n WorkerMessage.startWorkerMessage(builder);\n WorkerMessage.addType(builder, type);\n WorkerMessage.addContentType(builder, contentType);\n WorkerMessage.addContent(builder, contentOffset);\n return WorkerMessage.endWorkerMessage(builder);\n}\n\nunpack(): WorkerMessageT {\n return new WorkerMessageT(\n this.type(),\n this.contentType(),\n (() => {\n const temp = unionToMessage(this.contentType(), this.content.bind(this));\n if(temp === null) { return null; }\n return temp.unpack()\n })()\n );\n}\n\n\nunpackTo(_o: WorkerMessageT): void {\n _o.type = this.type();\n _o.contentType = this.contentType();\n _o.content = (() => {\n const temp = unionToMessage(this.contentType(), this.content.bind(this));\n if(temp === null) { return null; }\n return temp.unpack()\n })();\n}\n}\n\nexport class WorkerMessageT implements flatbuffers.IGeneratedObject {\nconstructor(\n public type: MessageType = MessageType.ParsedNostrEvent,\n public contentType: Message = Message.NONE,\n public content: BufferFullT|ConnectionStatusT|CountResponseT|EoceT|ParsedEventT|PubkeyT|SignedEventT|ValidProofsT|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const content = builder.createObjectOffset(this.content);\n\n return WorkerMessage.createWorkerMessage(builder,\n this.type,\n this.contentType,\n content\n );\n}\n}\n","import { encode } from \"@msgpack/msgpack\";\nimport { ByteBuffer } from \"flatbuffers\";\nimport { WorkerMessage } from \"src/generated/nostr/fb\";\n\n\n/**\n * Utility library for reading from SharedArrayBuffer with 4-byte header approach\n * Header format: [0-3]: Write position (4 bytes, little endian)\n * Data format: [4+]: [4-byte length][msgpack event][4-byte length][msgpack event]...\n */\nexport class SharedBufferReader {\n /**\n * Initialize a buffer for writing - sets the write position header to 4\n * @param buffer The SharedArrayBuffer to initialize\n */\n static initializeBuffer(buffer: SharedArrayBuffer): void {\n const view = new DataView(buffer);\n // Set initial write position to 4 (right after the header)\n view.setUint32(0, 4, true);\n }\n\n /**\n * Write a message to the SharedArrayBuffer\n * @param buffer The SharedArrayBuffer to write to\n * @param data The data to write (already encoded as Uint8Array)\n * @returns True if written successfully, false if buffer is full\n */\n static writeMessage(buffer: SharedArrayBuffer, data: Uint8Array): boolean {\n const view = new DataView(buffer);\n const uint8View = new Uint8Array(buffer);\n\n // Get current write position\n const currentWritePosition = view.getUint32(0, true);\n\n // Check if there's enough space (4 bytes for length + data length)\n const requiredSpace = 4 + data.length;\n if (currentWritePosition + requiredSpace > buffer.byteLength) {\n console.warn(\"Buffer full, cannot write message\");\n return false;\n }\n\n // Write the length prefix (4 bytes, little endian)\n view.setUint32(currentWritePosition, data.length, true);\n\n // Write the actual data\n uint8View.set(data, currentWritePosition + 4);\n\n // Update the write position header\n const newWritePosition = currentWritePosition + requiredSpace;\n view.setUint32(0, newWritePosition, true);\n\n return true;\n }\n\n /**\n * Write a message object to the SharedArrayBuffer (handles encoding)\n * @param buffer The SharedArrayBuffer to write to\n * @param message The message object to write\n * @returns True if written successfully, false if buffer is full\n */\n static writeMessageObject(buffer: SharedArrayBuffer, message: any): boolean {\n try {\n const encoded = encode(message);\n return this.writeMessage(buffer, new Uint8Array(encoded));\n } catch (error) {\n console.error(\"Failed to encode message:\", error);\n return false;\n }\n }\n\n\n /**\n * Read new messages from SharedArrayBuffer since last read position\n * @param buffer The SharedArrayBuffer to read from\n * @param lastReadPosition Last position read (default: 0, meaning read from beginning)\n * @returns Object containing new messages and updated read position\n */\n static readMessages(buffer: SharedArrayBuffer, lastReadPosition: number = 0) {\n const view = new DataView(buffer);\n const uint8View = new Uint8Array(buffer);\n\n const currentWritePosition = view.getUint32(0, true);\n const dataStartOffset = 4;\n let currentPos = lastReadPosition < dataStartOffset\n ? dataStartOffset\n : lastReadPosition;\n if (currentWritePosition <= currentPos) {\n return { messages: [], newReadPosition: currentPos, hasNewData: false };\n }\n\n const maxMessages = 128;\n const messages: WorkerMessage[] = new Array(maxMessages);\n let msgCount = 0;\n\n try {\n while (currentPos < currentWritePosition) {\n // Stop if we've filled this batch; leave currentPos at the start of the next message\n if (msgCount >= maxMessages) break;\n\n // Need enough bytes for header\n if (currentPos + 4 > currentWritePosition) break;\n\n const headerPos = currentPos;\n const eventLength = view.getUint32(headerPos, true);\n const payloadStart = headerPos + 4;\n const nextPos = payloadStart + eventLength;\n\n // Need the full payload to be available\n if (nextPos > currentWritePosition) break;\n\n // ⚡ ZERO-COPY: create subarray view directly over SharedArrayBuffer\n const flatBufferData = uint8View.subarray(payloadStart, nextPos);\n\n // Parse directly\n const bb = new ByteBuffer(flatBufferData);\n const message = WorkerMessage.getRootAsWorkerMessage(bb);\n\n messages[msgCount++] = message;\n\n // Advance to next message boundary\n currentPos = nextPos;\n }\n\n messages.length = msgCount;\n return {\n messages,\n newReadPosition: currentPos,\n hasNewData: msgCount > 0,\n };\n } catch (error) {\n console.error('Failed to decode FlatBuffer data from SharedArrayBuffer:', error);\n messages.length = msgCount;\n return {\n messages,\n newReadPosition: lastReadPosition < dataStartOffset\n ? dataStartOffset\n : lastReadPosition,\n hasNewData: false,\n };\n }\n }\n\n\n /**\n * Read all messages from SharedArrayBuffer from the beginning (ignores lastReadPosition)\n * @param buffer The SharedArrayBuffer to read from\n * @returns Object containing all messages in the buffer\n */\n static readAllMessages(buffer: SharedArrayBuffer): {\n messages: WorkerMessage[];\n totalMessages: number;\n } {\n const result = this.readMessages(buffer, 0); // Always start from beginning\n return {\n messages: result.messages,\n totalMessages: result.messages.length,\n };\n }\n\n /**\n * Get current write position from buffer header\n * @param buffer The SharedArrayBuffer to read from\n * @returns Current write position\n */\n static getCurrentWritePosition(buffer: SharedArrayBuffer): number {\n const view = new DataView(buffer);\n return view.getUint32(0, true);\n }\n\n /**\n * Check if buffer has new data since last read\n * @param buffer The SharedArrayBuffer to check\n * @param lastReadPosition Last position read\n * @returns True if there's new data to read\n */\n static hasNewData(\n buffer: SharedArrayBuffer,\n lastReadPosition: number,\n ): boolean {\n const currentWritePosition = this.getCurrentWritePosition(buffer);\n const dataStartOffset = 4;\n const actualLastReadPosition = Math.max(lastReadPosition, dataStartOffset);\n return currentWritePosition > actualLastReadPosition;\n }\n\n /**\n * Calculate recommended buffer size based on request limits\n * @param totalEventLimit Total expected events across all requests\n * @param bytesPerEvent Estimated bytes per event (default: 3072)\n * @returns Recommended buffer size in bytes\n */\n static calculateBufferSize(\n totalEventLimit: number = 100,\n bytesPerEvent: number = 3072,\n ): number {\n const headerSize = 4;\n const dataSize = totalEventLimit * bytesPerEvent;\n const overhead = Math.floor(dataSize * 0.25); // 25% overhead\n return headerSize + dataSize + overhead;\n }\n}\n","\n\n\n\nexport class ByteRingBuffer {\n private readonly sab: SharedArrayBuffer;\n private readonly dataView: DataView;\n private readonly dataStart: number = 32;\n private readonly capacity: number;\n private dropped: number = 0;\n\n constructor(buffer: SharedArrayBuffer) {\n this.sab = buffer;\n this.dataView = new DataView(buffer);\n this.capacity = this.dataView.getUint32(0, true); // little-endian\n\n // Read initial state (assume Rust sets capacity, head=0, tail=0, seq=0)\n // We don't reset here; assume initialized\n }\n\n private getHead(): number {\n return this.dataView.getUint32(4, true) % this.capacity;\n }\n\n private setHead(value: number): void {\n this.dataView.setUint32(4, value % this.capacity, true);\n }\n\n private getTail(): number {\n return this.dataView.getUint32(8, true) % this.capacity;\n }\n\n private setTail(value: number): void {\n this.dataView.setUint32(8, value % this.capacity, true);\n }\n\n private getSeq(): number {\n return this.dataView.getUint32(12, true);\n }\n\n private setSeq(value: number): void {\n this.dataView.setUint32(12, value, true);\n }\n\n getFreeSpace(): number {\n const head = this.getHead();\n const tail = this.getTail();\n const used = (head - tail + this.capacity) % this.capacity;\n return this.capacity - used;\n }\n\n getDropped(): number {\n return this.dropped;\n }\n\n hasRecords(): boolean {\n return this.getHead() !== this.getTail();\n }\n\n readNext(): { payload: Uint8Array } | null {\n const p = this.read();\n return p ? { payload: p } : null;\n }\n\n /**\n * Writes a payload to the ring buffer, overwriting old records if necessary.\n * Returns the sequence number if successful, -1 if dropped (couldn't make space).\n */\n write(payload: Uint8Array): number {\n const N = payload.byteLength;\n const len = 8 + N; // type(2) + pad(2) + seq(4) + payload(N)\n const totalSize = 4 + len + 4; // len + variable + trailer\n\n // Make space by skipping records\n let droppedThisWrite = 0;\n while (this.getFreeSpace() < totalSize) {\n if (!this.skipRecord()) {\n // Can't skip more (uncommitted record), drop this write\n this.dropped += droppedThisWrite + 1;\n return -1;\n }\n droppedThisWrite++;\n }\n\n // Enough space, write\n const mySeq = this.getSeq() + 1;\n this.setSeq(mySeq);\n\n let writePos = this.getHead();\n\n\n // Write len\n this.dataView.setUint32(this.dataStart + writePos, len, true);\n writePos = (writePos + 4) % this.capacity;\n\n // Write type (0)\n this.dataView.setUint16(this.dataStart + writePos, 0, true);\n writePos = (writePos + 2) % this.capacity;\n\n // Write pad (0)\n this.dataView.setUint16(this.dataStart + writePos, 0, true);\n writePos = (writePos + 2) % this.capacity;\n\n // Write seq\n this.dataView.setUint32(this.dataStart + writePos, mySeq, true);\n writePos = (writePos + 4) % this.capacity;\n\n // Write payload (possibly wrapped)\n this.copyBytes(writePos, payload, 0, N);\n writePos = (writePos + N) % this.capacity;\n\n // Write trailer (len)\n this.dataView.setUint32(this.dataStart + writePos, len, true);\n writePos = (writePos + 4) % this.capacity;\n\n // Advance head\n this.setHead(writePos);\n\n this.dropped += droppedThisWrite;\n return mySeq;\n }\n\n /**\n * Reads the next committed payload or null if none ready.\n * Advances tail on success.\n */\n read(): Uint8Array | null {\n let readPos = this.getTail();\n if (readPos === this.getHead()) return null; // empty\n\n const len = this.dataView.getUint32(this.dataStart + readPos, true);\n if (len === 0) return null;\n\n const trailerPos = (readPos + 4 + len) % this.capacity;\n const trailer = this.dataView.getUint32(this.dataStart + trailerPos, true);\n\n if (trailer !== len) return null; // not committed\n\n // Read variable part (len bytes from readPos + 4)\n const variable = new Uint8Array(len);\n this.copyFromRing((readPos + 4) % this.capacity, variable, 0, len);\n\n // Extract payload (skip type+pad+seq = 8 bytes)\n const payload = variable.subarray(8);\n\n // Advance tail\n const advance = 4 + len + 4; // len field + variable + trailer\n this.setTail((this.getTail() + advance) % this.capacity);\n\n return payload;\n }\n\n private skipRecord(): boolean {\n let readPos = this.getTail();\n if (readPos === this.getHead()) return false; // empty\n\n const len = this.dataView.getUint32(this.dataStart + readPos, true);\n if (len === 0) return false;\n\n const trailerPos = (readPos + 4 + len) % this.capacity;\n const trailer = this.dataView.getUint32(this.dataStart + trailerPos, true);\n\n if (trailer !== len) return false; // not committed\n\n // Skip by advancing tail\n const advance = 4 + len + 4;\n this.setTail((this.getTail() + advance) % this.capacity);\n return true;\n }\n\n private copyBytes(targetPos: number, source: Uint8Array, sourceOffset: number, length: number): void {\n let remaining = length;\n let srcOffset = sourceOffset;\n let tgt = targetPos;\n\n while (remaining > 0) {\n const spaceToEnd = this.capacity - (tgt % this.capacity);\n const chunkSize = Math.min(remaining, spaceToEnd);\n const tgtAbs = this.dataStart + (tgt % this.capacity);\n const srcChunk = source.subarray(srcOffset, srcOffset + chunkSize);\n new Uint8Array(this.sab, tgtAbs, chunkSize).set(srcChunk);\n remaining -= chunkSize;\n srcOffset += chunkSize;\n tgt += chunkSize;\n }\n }\n\n private copyFromRing(sourcePos: number, target: Uint8Array, targetOffset: number, length: number): void {\n let remaining = length;\n let tgtOffset = targetOffset;\n let src = sourcePos;\n\n while (remaining > 0) {\n const spaceToEnd = this.capacity - (src % this.capacity);\n const chunkSize = Math.min(remaining, spaceToEnd);\n const srcAbs = this.dataStart + (src % this.capacity);\n const srcChunk = new Uint8Array(this.sab, srcAbs, chunkSize);\n target.set(srcChunk, tgtOffset);\n remaining -= chunkSize;\n tgtOffset += chunkSize;\n src += chunkSize;\n }\n }\n}\n\n// Idempotent header initializer for rings created on the TS side.\n// If capacity (u32 at offset 0) is 0, we set it to (byteLength - 32)\n// and zero head, tail, and seq. Reserved bytes are cleared as well.\nexport function initializeRingHeader(buffer: SharedArrayBuffer): void {\n const HEADER = 32;\n const view = new DataView(buffer);\n const total = buffer.byteLength;\n\n if (total < HEADER) {\n throw new Error(`Ring buffer too small: ${total} bytes`);\n }\n\n const cap = view.getUint32(0, true);\n if (cap !== 0) {\n // Already initialized; nothing to do.\n return;\n }\n\n const capacity = total - HEADER;\n if (capacity <= 0) {\n throw new Error(`Invalid ring capacity computed from total=${total}`);\n }\n\n // Initialize header: capacity, head=0, tail=0, seq=0, reserved=0\n view.setUint32(0, capacity, true); // capacity\n view.setUint32(4, 0, true); // head\n view.setUint32(8, 0, true); // tail\n view.setUint32(12, 0, true); // seq\n // Zero reserved [16..32)\n for (let off = 16; off < 32; off += 4) {\n view.setUint32(off, 0, true);\n }\n}\n","export enum ConnectionStatus {\n Idle = 'idle',\n Connecting = 'connecting',\n Ready = 'ready',\n Closing = 'closing',\n Closed = 'closed',\n Error = 'error',\n}\n\nexport enum MsgKind {\n Unknown = 0,\n Event = 1,\n Eose = 2,\n Ok = 3,\n Closed = 4,\n Notice = 5,\n Auth = 6,\n}\n\n // MsgKind is defined in FlatBuffers schema; import from generated code\n // export type { MsgKind } from '../fb/worker_messages_generated';\n\nexport interface RelayConfig {\n connectTimeoutMs?: number;\n writeTimeoutMs?: number;\n retryBaseMs?: number;\n retryMaxMs?: number;\n retryMultiplier?: number;\n retryJitter?: number;\n retry?: {\n baseMs: number;\n maxMs: number;\n multiplier: number;\n jitter: number;\n };\n idleTimeoutMs?: number;\n}\n\nexport interface RelayStats {\n sent: number;\n received: number;\n reconnects: number;\n lastActivity: number; // timestamp\n uptime?: number;\n dropped: number; // for ring buffer overwrites\n}\n\nexport interface InboundEnvelope {\n relays: string[];\n frames: string[];\n}\n\nexport interface WorkerLine {\n relay: {\n url: string;\n };\n kind: number; // MsgKind from generated\n sub_id?: string;\n raw: Uint8Array; // UTF-8 bytes\n}\n\nexport type FrameCallback = (frame: string) => void;\nexport type MessageHandler = (url: string, kind: MsgKind, subId: string | null, rawText: string) => void;\n","import { ConnectionStatus, RelayConfig, RelayStats } from './types';\n\n// Callback invoked for every incoming websocket text frame\nexport type MessageHandler = (\n\turl: string,\n\tkind: number, // 1=EVENT, 2=EOSE, 3=OK, 4=CLOSED, 5=NOTICE, 6=AUTH, 0=UNKNOWN\n\tsubId: string | null, // present for EVENT/EOSE/CLOSED\n\trawText: string\n) => void;\n\nexport class RelayConnection {\n\tprivate url: string;\n\tprivate config: RelayConfig;\n\tprivate status: ConnectionStatus = ConnectionStatus.Closed;\n\tprivate ws: WebSocket | null = null;\n\tprivate reconnectTimer: number | null = null;\n\tprivate abortController: AbortController | null = null;\n\n\tprivate attempts: number = 0; // reconnection attempts after first failure\n\tprivate givenUp: boolean = false; // set when attempts reached cap\n\tprivate lastActivity: number = Date.now();\n\tprivate stats: RelayStats = {\n\t\tdropped: 0,\n\t\tsent: 0,\n\t\treceived: 0,\n\t\treconnects: 0, // mirrors attempts for visibility\n\t\tlastActivity: Date.now()\n\t};\n\tprivate readyWaiters: Array<(ok: boolean) => void> = [];\n\tpublic messageHandler: MessageHandler | null = null;\n\n\tconstructor(url: string, config: Partial<RelayConfig> = {}) {\n\t\tthis.url = url;\n\t\tthis.config = {\n\t\t\tconnectTimeoutMs: 5_000,\n\t\t\twriteTimeoutMs: 10_000,\n\t\t\tretry: {\n\t\t\t\tbaseMs: 300,\n\t\t\t\tmaxMs: 10_000,\n\t\t\t\tmultiplier: 1.6,\n\t\t\t\tjitter: 0.1\n\t\t\t},\n\t\t\tmaxReconnectAttempts: 2, // default: 2 retries\n\t\t\tidleTimeoutMs: 300_000,\n\t\t\t...config\n\t\t};\n\t}\n\n\tgetUrl(): string {\n\t\treturn this.url;\n\t}\n\tgetStatus(): ConnectionStatus {\n\t\treturn this.status;\n\t}\n\tgetStats(): RelayStats {\n\t\treturn { ...this.stats, reconnects: this.attempts, lastActivity: this.lastActivity };\n\t}\n\tgetLastActivity(): number {\n\t\treturn this.lastActivity;\n\t}\n\thasGivenUp(): boolean {\n\t\treturn this.givenUp;\n\t}\n\n\tsetMessageHandler(handler: MessageHandler): void {\n\t\tthis.messageHandler = handler;\n\t}\n\n\t// Fire-and-forget connect. It never throws. Use waitForReady() to await.\n\tconnect(): void {\n\t\tif (this.givenUp) return;\n\t\tif (this.status === ConnectionStatus.Connecting || this.status === ConnectionStatus.Ready)\n\t\t\treturn;\n\n\t\t// Clear pending reconnect\n\t\tif (this.reconnectTimer) {\n\t\t\tclearTimeout(this.reconnectTimer);\n\t\t\tthis.reconnectTimer = null;\n\t\t}\n\n\t\tthis.status = ConnectionStatus.Connecting;\n\t\tthis.abortController = new AbortController();\n\t\tconst signal = this.abortController.signal;\n\n\t\ttry {\n\t\t\tthis.ws = new WebSocket(this.url);\n\t\t\tthis.ws.binaryType = 'arraybuffer';\n\n\t\t\tconst cleanup = () => {\n\t\t\t\tif (!this.ws) return;\n\t\t\t\tthis.ws.onopen = null as any;\n\t\t\t\tthis.ws.onclose = null as any;\n\t\t\t\tthis.ws.onerror = null as any;\n\t\t\t\tthis.ws.onmessage = null as any;\n\t\t\t};\n\n\t\t\tconst onOpen = () => {\n\t\t\t\t// Success: reset attempts and flags\n\t\t\t\tthis.status = ConnectionStatus.Ready;\n\t\t\t\tthis.attempts = 0;\n\t\t\t\tthis.givenUp = false;\n\t\t\t\tthis.lastActivity = Date.now();\n\t\t\t\tthis.stats.lastActivity = this.lastActivity;\n\t\t\t\tthis.resolveReady(true);\n\t\t\t};\n\n\t\t\tconst onClose = (ev: CloseEvent) => {\n\t\t\t\tcleanup();\n\t\t\t\tthis.status = ConnectionStatus.Closed;\n\t\t\t\tthis.resolveReady(false);\n\t\t\t\tif (ev.code !== 1000) {\n\t\t\t\t\tthis.scheduleReconnect();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst onError = (_ev: Event) => {\n\t\t\t\t// Treat like close; don’t throw\n\t\t\t\tcleanup();\n\t\t\t\tthis.status = ConnectionStatus.Closed;\n\t\t\t\tthis.resolveReady(false);\n\t\t\t\tthis.scheduleReconnect();\n\t\t\t};\n\n\t\t\tconst onMessage = (event: MessageEvent) => {\n\t\t\t\tthis.lastActivity = Date.now();\n\t\t\t\tthis.stats.lastActivity = this.lastActivity;\n\t\t\t\tthis.stats.received++;\n\n\t\t\t\tif (typeof event.data === 'string') {\n\t\t\t\t\tconst rawText = event.data;\n\t\t\t\t\tconst { kind, subId } = this.shallowScan(rawText);\n\t\t\t\t\tif (this.messageHandler) {\n\t\t\t\t\t\tthis.messageHandler(this.url, kind, subId, rawText);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Attach\n\t\t\tthis.ws.onopen = onOpen;\n\t\t\tthis.ws.onclose = onClose;\n\t\t\tthis.ws.onerror = onError;\n\t\t\tthis.ws.onmessage = onMessage;\n\n\t\t\t// Timeout and abort\n\t\t\tconst to = setTimeout(() => {\n\t\t\t\tif (this.status === ConnectionStatus.Connecting) {\n\t\t\t\t\tcleanup();\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.ws?.close();\n\t\t\t\t\t} catch {}\n\t\t\t\t\tthis.status = ConnectionStatus.Closed;\n\t\t\t\t\tthis.resolveReady(false);\n\t\t\t\t\tthis.scheduleReconnect();\n\t\t\t\t}\n\t\t\t}, this.config.connectTimeoutMs);\n\n\t\t\tsignal.addEventListener('abort', () => {\n\t\t\t\tclearTimeout(to);\n\t\t\t\tcleanup();\n\t\t\t\ttry {\n\t\t\t\t\tthis.ws?.close();\n\t\t\t\t} catch {}\n\t\t\t\tthis.status = ConnectionStatus.Closed;\n\t\t\t\tthis.resolveReady(false);\n\t\t\t\tthis.scheduleReconnect();\n\t\t\t});\n\t\t} catch {\n\t\t\tthis.status = ConnectionStatus.Closed;\n\t\t\tthis.resolveReady(false);\n\t\t\tthis.scheduleReconnect();\n\t\t}\n\t}\n\n\tasync sendMessage(frame: string): Promise<void> {\n\t\tif (this.status !== ConnectionStatus.Ready || !this.ws) {\n\t\t\tthrow new Error('Connection not ready');\n\t\t}\n\t\tthis.ws.send(frame);\n\t\tthis.stats.sent++;\n\t\tthis.lastActivity = Date.now();\n\t\tthis.stats.lastActivity = this.lastActivity;\n\t}\n\n\tasync waitForReady(timeoutMs: number = this.config.connectTimeoutMs ?? 5_000): Promise<void> {\n\t\tif (this.status === ConnectionStatus.Ready) return;\n\n\t\treturn new Promise<void>((resolve, reject) => {\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\tthis.removeReadyResolver(resolver);\n\t\t\t\treject(new Error('Timeout waiting for ready'));\n\t\t\t}, timeoutMs);\n\n\t\t\tconst resolver = (ok: boolean) => {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tif (ok) resolve();\n\t\t\t\telse reject(new Error('Connection closed'));\n\t\t\t};\n\t\t\tthis.readyWaiters.push(resolver);\n\t\t});\n\t}\n\n\tasync close(): Promise<void> {\n\t\tif (this.abortController) this.abortController.abort();\n\t\tif (this.reconnectTimer) {\n\t\t\tclearTimeout(this.reconnectTimer);\n\t\t\tthis.reconnectTimer = null;\n\t\t}\n\t\tthis.closeWebSocket();\n\t\tthis.status = ConnectionStatus.Closed;\n\t\tthis.resolveReady(false);\n\t}\n\n\tshouldCloseDueToInactivity(): boolean {\n\t\treturn Date.now() - this.lastActivity > (this.config.idleTimeoutMs ?? 300_000);\n\t}\n\n\t// Internals\n\n\tprivate resolveReady(ok: boolean) {\n\t\tif (this.readyWaiters.length === 0) return;\n\t\tconst waiters = this.readyWaiters.slice();\n\t\tthis.readyWaiters.length = 0;\n\t\tfor (const fn of waiters) {\n\t\t\ttry {\n\t\t\t\tfn(ok);\n\t\t\t} catch {}\n\t\t}\n\t}\n\n\tprivate removeReadyResolver(fn: (ok: boolean) => void) {\n\t\tconst idx = this.readyWaiters.indexOf(fn);\n\t\tif (idx >= 0) this.readyWaiters.splice(idx, 1);\n\t}\n\n\tprivate closeWebSocket() {\n\t\tif (this.ws) {\n\t\t\ttry {\n\t\t\t\tthis.ws.close(1000, 'Normal closure');\n\t\t\t} catch {}\n\t\t\tthis.ws = null;\n\t\t}\n\t}\n\n\tprivate scheduleReconnect(): void {\n\t\tif (this.status !== ConnectionStatus.Closed || !this.config.retry?.baseMs) return;\n\n\t\tconst cap = this.config.maxReconnectAttempts ?? 2;\n\t\tif (cap > 0 && this.attempts >= cap) {\n\t\t\tthis.givenUp = true;\n\t\t\treturn;\n\t\t}\n\n\t\tconst base = this.config.retry.baseMs;\n\t\tconst max = this.config.retry.maxMs ?? 10_000;\n\t\tconst mult = this.config.retry.multiplier ?? 1.6;\n\t\tconst jitter = this.config.retry.jitter ?? 0.1;\n\n\t\t// Calculate delay using current attempts\n\t\tconst delay =\n\t\t\tMath.min(base * Math.pow(mult, this.attempts), max) *\n\t\t\t(1 + (Math.random() - 0.5) * jitter * 2);\n\n\t\tthis.reconnectTimer = setTimeout(() => {\n\t\t\t// Increment attempts when actually trying again\n\t\t\tthis.attempts++;\n\t\t\tthis.stats.reconnects = this.attempts;\n\t\t\tthis.connect();\n\t\t}, delay) as unknown as number;\n\t}\n\n\t// Efficient shallow scan for kind+subId\n\tprivate shallowScan(s: string): { kind: number; subId: string | null } {\n\t\tlet i = 0;\n\t\tconst n = s.length;\n\t\twhile (i < n && s.charCodeAt(i) <= 32) i++;\n\t\tif (i >= n || s[i] !== '[') return { kind: 0, subId: null };\n\t\ti++;\n\t\twhile (i < n && s.charCodeAt(i) <= 32) i++;\n\t\tif (i >= n || s[i] !== '\"') return { kind: 0, subId: null };\n\t\ti++;\n\t\tlet start = i;\n\t\twhile (i < n && s[i] !== '\"') i++;\n\t\tconst kindStr = s.slice(start, i).toUpperCase();\n\t\ti++;\n\t\tlet kind = 0;\n\t\tif (kindStr === 'EVENT') kind = 1;\n\t\telse if (kindStr === 'EOSE') kind = 2;\n\t\telse if (kindStr === 'OK') kind = 3;\n\t\telse if (kindStr === 'CLOSED') kind = 4;\n\t\telse if (kindStr === 'NOTICE') kind = 5;\n\t\telse if (kindStr === 'AUTH') kind = 6;\n\n\t\tif (kind === 1 || kind === 2 || kind === 4) {\n\t\t\twhile (i < n && s[i] !== ',') i++;\n\t\t\tif (i < n && s[i] === ',') i++;\n\t\t\twhile (i < n && s.charCodeAt(i) <= 32) i++;\n\t\t\tif (i < n && s[i] === '\"') {\n\t\t\t\ti++;\n\t\t\t\tstart = i;\n\t\t\t\twhile (i < n && s[i] !== '\"') i++;\n\t\t\t\tconst subId = s.slice(start, i);\n\t\t\t\treturn { kind, subId };\n\t\t\t}\n\t\t}\n\t\treturn { kind, subId: null };\n\t}\n}\n","import { RelayConfig, ConnectionStatus } from './types';\nimport { RelayConnection } from './connection';\n\nexport class ConnectionRegistry {\n\tprivate connections = new Map<string, RelayConnection>();\n\tprivate disabledRelays = new Set<string>();\n\tprivate nextAllowed = new Map<string, number>(); // cooldown timestamps per URL (ms)\n\tprivate subCounts = new Map<string, number>(); // active subscription count per URL\n\tprivate disconnectTimers = new Map<string, number>(); // delayed disconnect timers\n\tprivate config: RelayConfig;\n\n\tprivate readonly cooldownMs = 60_000; // after failures\n\tprivate readonly closeDelayMs = 1_000; // after last CLOSE\n\n\tconstructor(config: RelayConfig) {\n\t\tthis.config = { maxReconnectAttempts: 2, ...config };\n\t}\n\n\tprivate now(): number {\n\t\treturn Date.now();\n\t}\n\n\tprivate detectKind(frame: string): 'REQ' | 'CLOSE' | 'OTHER' {\n\t\tconst m = frame.match(/^\\s*\\[\\s*\"([^\"]+)\"/);\n\t\tif (!m) return 'OTHER';\n\t\tconst k = m[1].toUpperCase();\n\t\tif (k === 'REQ') return 'REQ';\n\t\tif (k === 'CLOSE') return 'CLOSE';\n\t\treturn 'OTHER';\n\t}\n\n\tprivate getCount(url: string): number {\n\t\treturn this.subCounts.get(url) ?? 0;\n\t}\n\tprivate setCount(url: string, value: number): void {\n\t\tthis.subCounts.set(url, Math.max(0, value));\n\t}\n\tprivate cancelPendingDisconnect(url: string): void {\n\t\tconst id = this.disconnectTimers.get(url);\n\t\tif (typeof id === 'number') {\n\t\t\tclearTimeout(id);\n\t\t\tthis.disconnectTimers.delete(url);\n\t\t}\n\t}\n\tprivate scheduleDisconnectIfIdle(url: string): void {\n\t\tif (this.disconnectTimers.has(url)) return;\n\t\tconst id = setTimeout(async () => {\n\t\t\tthis.disconnectTimers.delete(url);\n\t\t\tif (this.getCount(url) === 0) {\n\t\t\t\tawait this.disconnect(url);\n\t\t\t}\n\t\t}, this.closeDelayMs) as unknown as number;\n\t\tthis.disconnectTimers.set(url, id);\n\t}\n\tprivate bumpCount(url: string, delta: number): void {\n\t\tconst next = this.getCount(url) + delta;\n\t\tthis.setCount(url, next);\n\t\tif (delta > 0) {\n\t\t\tthis.cancelPendingDisconnect(url);\n\t\t} else if (delta < 0 && this.getCount(url) === 0) {\n\t\t\tthis.scheduleDisconnectIfIdle(url);\n\t\t}\n\t}\n\n\tprivate giveUpOrCooldown(url: string, conn?: RelayConnection) {\n\t\tif (conn?.hasGivenUp()) {\n\t\t\tif (!this.disabledRelays.has(url)) {\n\t\t\t\tconsole.warn(`[registry] disabling relay ${url}: max attempts reached`);\n\t\t\t}\n\t\t\tthis.disabledRelays.add(url);\n\t\t\tthis.nextAllowed.set(url, this.now() + this.cooldownMs);\n\t\t} else {\n\t\t\tthis.nextAllowed.set(url, this.now() + Math.min(this.cooldownMs, 10_000));\n\t\t}\n\t}\n\n\tprivate isCoolingDown(url: string): boolean {\n\t\tconst at = this.nextAllowed.get(url) ?? 0;\n\t\treturn this.now() < at;\n\t}\n\n\tasync ensureConnection(url: string): Promise<RelayConnection> {\n\t\tif (this.disabledRelays.has(url)) {\n\t\t\tthrow new Error(`Relay disabled: ${url}`);\n\t\t}\n\t\tif (this.isCoolingDown(url)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Relay ${url} cooling down until ${new Date(this.nextAllowed.get(url)!).toISOString()}`\n\t\t\t);\n\t\t}\n\n\t\tlet conn = this.connections.get(url);\n\t\tif (!conn) {\n\t\t\tconn = new RelayConnection(url, this.config);\n\t\t\tthis.connections.set(url, conn);\n\t\t\tconn.connect(); // fire-and-forget\n\t\t}\n\n\t\tif (conn.getStatus() !== ConnectionStatus.Ready) {\n\t\t\ttry {\n\t\t\t\tawait conn.waitForReady(this.config.connectTimeoutMs ?? 5_000);\n\t\t\t} catch (e) {\n\t\t\t\tthis.giveUpOrCooldown(url, conn);\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t}\n\n\t\tif (conn.getStatus() !== ConnectionStatus.Ready) {\n\t\t\tthis.giveUpOrCooldown(url, conn);\n\t\t\tthrow new Error(`Relay ${url} not ready`);\n\t\t}\n\n\t\treturn conn;\n\t}\n\n\tasync sendFrame(url: string, frame: string): Promise<void> {\n\t\tif (this.disabledRelays.has(url) || this.isCoolingDown(url)) return;\n\n\t\tconst kind = this.detectKind(frame);\n\t\tconst conn = await this.ensureConnection(url);\n\n\t\ttry {\n\t\t\tawait conn.sendMessage(frame);\n\t\t} catch (e) {\n\t\t\tthis.giveUpOrCooldown(url, conn);\n\t\t\tawait this.disconnect(url);\n\t\t\tthrow e;\n\t\t}\n\n\t\tif (kind === 'REQ') this.bumpCount(url, +1);\n\t\telse if (kind === 'CLOSE') this.bumpCount(url, -1);\n\t}\n\n\tasync sendToRelays(relays: string[], frames: string[]): Promise<void> {\n\t\tfor (const url of relays) {\n\t\t\tif (this.disabledRelays.has(url) || this.isCoolingDown(url)) continue;\n\n\t\t\ttry {\n\t\t\t\tfor (const frame of frames) {\n\t\t\t\t\tawait this.sendFrame(url, frame);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(`[registry] failed to send to ${url}:`, error);\n\t\t\t\t// continue to next relay\n\t\t\t}\n\t\t}\n\t}\n\n\tasync disconnect(url: string): Promise<void> {\n\t\tconst connection = this.connections.get(url);\n\t\tif (connection) {\n\t\t\tawait connection.close();\n\t\t\tthis.connections.delete(url);\n\t\t}\n\t\tthis.cancelPendingDisconnect(url);\n\t\tthis.subCounts.delete(url);\n\t}\n\n\tasync disconnectAll(): Promise<void> {\n\t\tfor (const [url] of this.connections) {\n\t\t\tawait this.disconnect(url);\n\t\t}\n\t}\n\n\tenableRelay(url: string): void {\n\t\tthis.disabledRelays.delete(url);\n\t\tthis.nextAllowed.delete(url);\n\t}\n\n\tisRelayDisabled(url: string): boolean {\n\t\treturn this.disabledRelays.has(url);\n\t}\n\n\tgetActiveReqCount(url: string): number {\n\t\treturn this.getCount(url);\n\t}\n\n\tgetConnectionStatus(url: string): ConnectionStatus | undefined {\n\t\tconst connection = this.connections.get(url);\n\t\treturn connection ? connection.getStatus() : undefined;\n\t}\n\n\tgetAllStatuses(): Map<string, ConnectionStatus> {\n\t\treturn new Map(\n\t\t\tArray.from(this.connections.entries()).map(([url, conn]) => [url, conn.getStatus()])\n\t\t);\n\t}\n}\n","import * as flatbuffers from 'flatbuffers'; // Assume @flatbuffers/flatbuffers is available via bundler\nimport * as WorkerMessages from 'src/generated/nostr/fb'; // Generated from schemas/worker_messages.fbs\nimport { ByteRingBuffer, initializeRingHeader } from 'src/ws/ring-buffer';\nimport { MsgKind, RelayConfig } from 'src/ws/types';\nimport { ConnectionRegistry } from './registry';\n\n// Message handler for connections: builds FlatBuffers WorkerLine and writes to output ring\nfunction handleIncomingMessage(\n\toutputRing: ByteRingBuffer,\n\turl: string,\n\tkind: MsgKind,\n\tsubId: string | null,\n\trawText: string\n): void {\n\tconst encoder = new TextEncoder();\n\tconst rawBytes = encoder.encode(rawText);\n\n\t// Build FlatBuffers WorkerLine\n\tconst builder = new flatbuffers.Builder(1024);\n\tconst relayOffset = WorkerMessages.RelayRef.createRelayRef(builder, builder.createString(url));\n\tconst kindEnum = kind;\n\n\tlet subIdOffset: flatbuffers.Offset | null = null;\n\tif (subId) {\n\t\tsubIdOffset = builder.createString(subId);\n\t}\n\n\tconst rawOffset = builder.createByteVector(rawBytes);\n\n\tWorkerMessages.WorkerLine.startWorkerLine(builder);\n\tWorkerMessages.WorkerLine.addRelay(builder, relayOffset);\n\tWorkerMessages.WorkerLine.addKind(builder, kindEnum);\n\tif (subIdOffset) {\n\t\tWorkerMessages.WorkerLine.addSubId(builder, subIdOffset);\n\t}\n\tWorkerMessages.WorkerLine.addRaw(builder, rawOffset);\n\tconst lineOffset = WorkerMessages.WorkerLine.endWorkerLine(builder);\n\n\tbuilder.finish(lineOffset);\n\tconst fbBytes = new Uint8Array(builder.asUint8Array());\n\n\t// Write to output ring\n\toutputRing.write(fbBytes);\n}\n\nclass WSManager {\n\tprivate inRing: SharedArrayBuffer = new SharedArrayBuffer(1 * 1024 * 1024); // 1MB\n\tprivate outRing: SharedArrayBuffer = new SharedArrayBuffer(5 * 1024 * 1024); // 5MB\n\tprivate inputRing: ByteRingBuffer;\n\tprivate outputRing: ByteRingBuffer;\n\tprivate registry: ConnectionRegistry;\n\n\t// Adaptive backoff state\n\tprivate static readonly MIN_BACKOFF_MS = 10;\n\tprivate static readonly MAX_BACKOFF_MS = 1000;\n\tprivate static readonly BACKOFF_MULTIPLIER = 2;\n\n\tprivate inputLoopBackoffMs = WSManager.MIN_BACKOFF_MS;\n\tprivate inputLoopTimer: number | null = null;\n\tprivate decoder = new TextDecoder();\n\n\tconstructor(config: RelayConfig) {\n\t\tinitializeRingHeader(this.inRing);\n\t\tinitializeRingHeader(this.outRing);\n\n\t\t// Create ring buffers\n\t\tthis.inputRing = new ByteRingBuffer(this.inRing);\n\t\tthis.outputRing = new ByteRingBuffer(this.outRing);\n\n\t\t// Create registry\n\t\tthis.registry = new ConnectionRegistry(config || {});\n\n\t\t// Set up message handler for all future connections\n\t\tconst globalMessageHandler = (\n\t\t\turl: string,\n\t\t\tkind: MsgKind,\n\t\t\tsubId: string | null,\n\t\t\trawText: string\n\t\t) => {\n\t\t\thandleIncomingMessage(this.outputRing, url, kind, subId, rawText);\n\t\t};\n\n\t\t// Override ensureConnection to set handler\n\t\tconst originalEnsure = this.registry.ensureConnection.bind(this.registry);\n\t\tthis.registry.ensureConnection = async (url: string) => {\n\t\t\tconst conn = await originalEnsure(url);\n\t\t\tif (!conn.messageHandler) {\n\t\t\t\tconn.setMessageHandler(globalMessageHandler);\n\t\t\t}\n\t\t\treturn conn;\n\t\t};\n\n\t\t// Start the input loop\n\t\tthis.processInputLoop();\n\n\t\tconsole.log('WS Manager initialized');\n\t}\n\n\t// External API: reset the input-loop backoff to be aggressive immediately\n\tpublic resetInputLoopBackoff(): void {\n\t\tthis.inputLoopBackoffMs = WSManager.MIN_BACKOFF_MS;\n\t\tif (this.inputLoopTimer !== null) {\n\t\t\tclearTimeout(this.inputLoopTimer);\n\t\t\tthis.inputLoopTimer = null;\n\t\t}\n\t\tthis.scheduleInputLoop();\n\t}\n\n\t// Scheduler helper\n\tprivate scheduleInputLoop(): void {\n\t\tconst anyGlobal = globalThis as any;\n\t\tif (typeof anyGlobal.requestIdleCallback === 'function') {\n\t\t\tanyGlobal.requestIdleCallback(() => this.processInputLoop(), {\n\t\t\t\ttimeout: this.inputLoopBackoffMs\n\t\t\t});\n\t\t} else {\n\t\t\tthis.inputLoopTimer = setTimeout(\n\t\t\t\t() => this.processInputLoop(),\n\t\t\t\tthis.inputLoopBackoffMs\n\t\t\t) as unknown as number;\n\t\t}\n\t}\n\n\t// Input processing loop: poll the input ring and dispatch envelopes with adaptive backoff\n\tprivate processInputLoop = (): void => {\n\t\tlet processed = 0;\n\n\t\twhile (true) {\n\t\t\tconst record = this.inputRing.read();\n\t\t\tif (!record) break;\n\n\t\t\tconst envelopeStr = this.decoder.decode(record);\n\t\t\tlet envelope: any;\n\t\t\ttry {\n\t\t\t\tenvelope = JSON.parse(envelopeStr);\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn('Invalid envelope JSON:', e);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (!Array.isArray(envelope.relays) || !Array.isArray(envelope.frames)) {\n\t\t\t\tconsole.warn('Invalid envelope structure');\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Fire-and-forget send to avoid blocking the loop\n\t\t\tthis.registry.sendToRelays(envelope.relays, envelope.frames).catch(console.error);\n\t\t\tprocessed++;\n\t\t}\n\n\t\t// Adaptive backoff: reset when work was found; otherwise grow (capped)\n\t\tthis.inputLoopBackoffMs =\n\t\t\tprocessed > 0\n\t\t\t\t? WSManager.MIN_BACKOFF_MS\n\t\t\t\t: Math.min(\n\t\t\t\t\t\tthis.inputLoopBackoffMs * WSManager.BACKOFF_MULTIPLIER,\n\t\t\t\t\t\tWSManager.MAX_BACKOFF_MS\n\t\t\t\t\t);\n\n\t\tthis.scheduleInputLoop();\n\t};\n\n\tgetInRing(): SharedArrayBuffer {\n\t\treturn this.inRing;\n\t}\n\n\tgetOutRing(): SharedArrayBuffer {\n\t\treturn this.outRing;\n\t}\n}\n\nexport const wsManager = new WSManager({});\n","import RustWorker from '@candypoets/rust-worker/worker.js?worker';\nimport wasmAsset from '@candypoets/rust-worker/rust_worker_bg.wasm?url';\nimport type { NostrEvent } from 'nostr-tools';\n\nimport { SharedBufferReader } from 'src/lib/SharedBuffer';\nimport { wsManager } from 'src/ws';\n\nimport * as flatbuffers from 'flatbuffers';\nimport { RequestObject, SubscriptionConfig } from 'src/types';\nimport {\n\tGetPublicKeyT,\n\tMainContent,\n\tMainMessageT,\n\tPipelineConfigT,\n\tPrivateKeyT,\n\tPublishT,\n\tRequestT,\n\tSetSignerT,\n\tSignerType,\n\tSignEventT,\n\tStringVecT,\n\tSubscribeT,\n\tSubscriptionConfigT,\n\tTemplateT,\n\tUnsubscribeT\n} from './generated/nostr/fb';\n\n/**\n * Configuration for the Nostr Manager\n */\nexport interface NostrManagerConfig {\n\tbufferKey: string;\n\tmaxBufferSize: number;\n}\n\n// Globals for single fetch + per-worker copies\nlet originalWasmBuffer: ArrayBuffer | null = null;\nlet fetchPromise: Promise<void> | null = null;\n\nasync function ensureOriginalBuffer(): Promise<void> {\n\tif (fetchPromise) {\n\t\treturn fetchPromise;\n\t}\n\n\tfetchPromise = fetch(wasmAsset)\n\t\t.then((res) => {\n\t\t\tif (!res.ok) {\n\t\t\t\tthrow new Error(`Failed to fetch WASM: ${res.status} ${res.statusText}`);\n\t\t\t}\n\t\t\treturn res.arrayBuffer();\n\t\t})\n\t\t.then((buffer) => {\n\t\t\toriginalWasmBuffer = buffer; // Cache the original (never transfer this one)\n\t\t})\n\t\t.catch((error) => {\n\t\t\tconsole.error('WASM fetch failed:', error);\n\t\t\tthrow error;\n\t\t});\n\n\treturn fetchPromise;\n}\n\n/**\n * Pure TypeScript NostrClient that manages worker communication and state.\n * Uses WASM utilities for heavy lifting (encoding, decoding, crypto).\n */\nexport class NostrManager {\n\tprivate worker: Worker;\n\tprivate textEncoder = new TextEncoder();\n\tprivate subscriptions = new Map<\n\t\tstring,\n\t\t{\n\t\t\tbuffer: SharedArrayBuffer;\n\t\t\toptions: SubscriptionConfig;\n\t\t\trefCount: number;\n\t\t}\n\t>();\n\tprivate publishes = new Map<string, { buffer: SharedArrayBuffer }>();\n\tprivate signers = new Map<string, string>(); // name -> secret key hex\n\n\tprivate signCB = (event: any) => {};\n\tprivate eventTarget = new EventTarget();\n\n\tpublic PERPETUAL_SUBSCRIPTIONS = ['notifications', 'starterpack'];\n\n\tpublic ready: Promise<void>;\n\n\tconstructor(config: NostrManagerConfig = { bufferKey: 'general', maxBufferSize: 5_000_000 }) {\n\t\tconsole.log('constructing nostrManager');\n\t\tthis.worker = this.createWorker();\n\n\t\tthis.setupWorkerListener();\n\n\t\tthis.ready = (async () => {\n\t\t\tconst inRing = wsManager.getInRing();\n\t\t\tconst outRing = wsManager.getOutRing();\n\n\t\t\tawait ensureOriginalBuffer();\n\n\t\t\tthis.worker.postMessage(\n\t\t\t\t{\n\t\t\t\t\ttype: 'init',\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tbufferKey: config.bufferKey,\n\t\t\t\t\t\tmaxBufferSize: config.maxBufferSize,\n\t\t\t\t\t\twasmBuffer: originalWasmBuffer,\n\t\t\t\t\t\tinRing,\n\t\t\t\t\t\toutRing\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// [inRing, outRing] // Transfer the copy (zero-copy to this worker)\n\t\t\t);\n\t\t})().catch((error) => {\n\t\t\tconsole.error('Failed to initialize worker with WASM:', error);\n\t\t\t// Optionally terminate: this.worker.terminate();\n\t\t});\n\t}\n\n\tprivate createWorker(): Worker {\n\t\treturn new RustWorker();\n\t}\n\n\tprivate setupWorkerListener() {\n\t\tthis.worker.onmessage = async (event) => {\n\t\t\tconst id = typeof event.data === 'string' ? event.data : undefined;\n\t\t\ttry {\n\t\t\t\tif (event.data.startsWith('{\"id\":')) {\n\t\t\t\t\tconst parsed = JSON.parse(event.data);\n\t\t\t\t\tthis.signCB(parsed);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\t// console.error(\"Error parsing event data:\", error);\n\t\t\t}\n\n\t\t\tif (!id) return;\n\n\t\t\t// Prefer O(1) routing via your existing maps\n\t\t\tif (this.subscriptions.has(id)) {\n\t\t\t\t// Notify only the listeners for this subscription\n\t\t\t\tthis.dispatch(`subscription:${id}`, id);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (this.publishes.has(id)) {\n\t\t\t\tthis.dispatch(`publish:${id}`, id);\n\t\t\t\treturn;\n\t\t\t}\n\t\t};\n\n\t\tthis.worker.onerror = (error) => {\n\t\t\tconsole.error('Worker error:', error);\n\t\t};\n\t}\n\n\tpublic createShortId(input: string): string {\n\t\tif (input.length < 64) return input;\n\t\tlet hash = 0;\n\t\tfor (let i = 0; i < input.length; i++) {\n\t\t\tconst char = input.charCodeAt(i);\n\t\t\thash = (hash << 5) - hash + char;\n\t\t\thash = hash & hash;\n\t\t}\n\t\tconst shortId = Math.abs(hash).toString(36);\n\t\treturn shortId.substring(0, 63);\n\t}\n\n\tpublic addEventListener(\n\t\ttype: string,\n\t\tlistener: EventListenerOrEventListenerObject,\n\t\toptions?: AddEventListenerOptions\n\t): void {\n\t\tthis.eventTarget.addEventListener(type, listener as EventListener, options);\n\t}\n\n\tpublic removeEventListener(\n\t\ttype: string,\n\t\tlistener: EventListenerOrEventListenerObject,\n\t\toptions?: EventListenerOptions\n\t): void {\n\t\tthis.eventTarget.removeEventListener(type, listener as EventListener, options);\n\t}\n\n\tprivate dispatch(type: string, detail?: unknown): void {\n\t\tthis.eventTarget.dispatchEvent(new CustomEvent(type, { detail }));\n\t}\n\n\tsubscribe(\n\t\tsubscriptionId: string,\n\t\trequests: RequestObject[],\n\t\toptions: SubscriptionConfig\n\t): SharedArrayBuffer {\n\t\tconst subId = this.createShortId(subscriptionId);\n\n\t\tconst existingSubscription = this.subscriptions.get(subId);\n\n\t\tif (existingSubscription) {\n\t\t\texistingSubscription.refCount++;\n\t\t\treturn existingSubscription.buffer;\n\t\t}\n\n\t\tconst totalLimit = requests.reduce((sum, req) => sum + (req.limit || 100), 0);\n\n\t\tconst bufferSize = SharedBufferReader.calculateBufferSize(totalLimit, options.bytesPerEvent);\n\n\t\tlet initialMessage: Uint8Array<ArrayBufferLike> = new Uint8Array();\n\n\t\tconst buffer = new SharedArrayBuffer(bufferSize + initialMessage.length);\n\n\t\t// Initialize the buffer (sets write position to 4)\n\t\tSharedBufferReader.initializeBuffer(buffer);\n\n\t\t// Write the initial message if provided\n\t\tif (initialMessage.length > 0) {\n\t\t\tconst success = SharedBufferReader.writeMessage(buffer, initialMessage);\n\t\t\tif (!success) {\n\t\t\t\tconsole.error('Failed to write initial message to buffer');\n\t\t\t}\n\t\t}\n\n\t\tthis.subscriptions.set(subId, {\n\t\t\tbuffer,\n\t\t\toptions,\n\t\t\trefCount: 1\n\t\t});\n\n\t\tconst optionsT = new SubscriptionConfigT(\n\t\t\tnew PipelineConfigT(options.pipeline || []),\n\t\t\toptions.closeOnEose,\n\t\t\toptions.cacheFirst,\n\t\t\toptions.timeoutMs ? BigInt(options.timeoutMs) : undefined,\n\t\t\toptions.maxEvents,\n\t\t\toptions.skipCache,\n\t\t\toptions.force,\n\t\t\toptions.bytesPerEvent\n\t\t);\n\n\t\tconst subscribeT = new SubscribeT(\n\t\t\tthis.textEncoder.encode(subId),\n\t\t\trequests.map(\n\t\t\t\t(r) =>\n\t\t\t\t\tnew RequestT(\n\t\t\t\t\t\tr.ids,\n\t\t\t\t\t\tr.authors,\n\t\t\t\t\t\tr.kinds,\n\t\t\t\t\t\tObject.entries(r.tags || {}).flatMap(\n\t\t\t\t\t\t\t([key, values]) => new StringVecT([key, ...values])\n\t\t\t\t\t\t),\n\t\t\t\t\t\tr.limit,\n\t\t\t\t\t\tr.since,\n\t\t\t\t\t\tr.until,\n\t\t\t\t\t\tthis.textEncoder.encode(r.search),\n\t\t\t\t\t\tr.relays,\n\t\t\t\t\t\tr.closeOnEOSE,\n\t\t\t\t\t\tr.cacheFirst\n\t\t\t\t\t)\n\t\t\t),\n\t\t\toptionsT\n\t\t);\n\n\t\t// Wrap in MainMessageT as Subscribe variant\n\t\tconst mainT = new MainMessageT(MainContent.Subscribe, subscribeT);\n\n\t\t// Serialize with FlatBuffers builder\n\t\tconst builder = new flatbuffers.Builder(2048);\n\t\tconst mainOffset = mainT.pack(builder);\n\t\tbuilder.finish(mainOffset);\n\t\tconst serializedMessage = builder.asUint8Array();\n\n\t\ttry {\n\t\t\twsManager.resetInputLoopBackoff();\n\t\t\tthis.worker.postMessage({\n\t\t\t\tserializedMessage,\n\t\t\t\tsharedBuffer: buffer\n\t\t\t});\n\n\t\t\treturn buffer;\n\t\t} catch (error) {\n\t\t\tthis.subscriptions.delete(subId);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tgetBuffer(subId: string): SharedArrayBuffer | undefined {\n\t\tconst existingSubscription = this.subscriptions.get(subId);\n\t\tif (existingSubscription) {\n\t\t\texistingSubscription.refCount++;\n\t\t\treturn existingSubscription.buffer;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tunsubscribe(subscriptionId: string): void {\n\t\tconst subId = subscriptionId.length < 64 ? subscriptionId : this.createShortId(subscriptionId);\n\t\tconst subscription = this.subscriptions.get(subId);\n\t\tif (subscription) {\n\t\t\tsubscription.refCount--;\n\t\t}\n\t}\n\n\tpublish(publish_id: string, event: NostrEvent): SharedArrayBuffer {\n\t\t// a publish buffer fit in 3kb\n\t\tconst buffer = new SharedArrayBuffer(3072);\n\n\t\t// Initialize the buffer (sets write position to 4)\n\t\tSharedBufferReader.initializeBuffer(buffer);\n\n\t\ttry {\n\t\t\tconst templateT = new TemplateT(\n\t\t\t\tevent.kind,\n\t\t\t\tthis.textEncoder.encode(event.content),\n\t\t\t\tevent.tags.map((t) => new StringVecT(t)) || []\n\t\t\t);\n\t\t\tconst publishT = new PublishT(this.textEncoder.encode(publish_id), templateT);\n\n\t\t\t// Wrap in MainMessageT as Publish variant\n\t\t\tconst mainT = new MainMessageT(MainContent.Publish, publishT);\n\n\t\t\t// Serialize with FlatBuffers builder\n\t\t\tconst builder = new flatbuffers.Builder(2048);\n\t\t\tconst mainOffset = mainT.pack(builder);\n\t\t\tbuilder.finish(mainOffset);\n\t\t\tconst serializedMessage = builder.asUint8Array();\n\n\t\t\twsManager.resetInputLoopBackoff();\n\t\t\tthis.worker.postMessage({ serializedMessage, sharedBuffer: buffer });\n\n\t\t\tthis.publishes.set(publish_id, { buffer });\n\t\t\treturn buffer;\n\t\t} catch (error) {\n\t\t\tconsole.error('Failed to publish event:', error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tsetSigner(name: string, secretKeyHex: string): void {\n\t\tthis.ready.then(() => {\n\t\t\tconsole.log('setSigner', name, secretKeyHex);\n\n\t\t\t// Create the PrivateKeyT object\n\t\t\tconst privateKeyT = new PrivateKeyT(this.textEncoder.encode(secretKeyHex));\n\n\t\t\t// Create the SetSignerT object and set the union\n\t\t\tconst setSignerT = new SetSignerT(SignerType.PrivateKey, privateKeyT);\n\n\t\t\t// Create the MainMessageT with the properly constructed SetSignerT\n\t\t\tconst mainT = new MainMessageT(MainContent.SetSigner, setSignerT);\n\n\t\t\t// Serialize with FlatBuffers builder (unchanged)\n\t\t\tconst builder = new flatbuffers.Builder(2048);\n\t\t\tconst mainOffset = mainT.pack(builder);\n\t\t\tbuilder.finish(mainOffset);\n\t\t\tconst serializedMessage = builder.asUint8Array();\n\n\t\t\tthis.worker.postMessage(serializedMessage);\n\t\t\tthis.signers.set(name, secretKeyHex);\n\t\t});\n\t}\n\n\tsignEvent(event: NostrEvent, cb: (event: NostrEvent) => void) {\n\t\tconst mainT = new MainMessageT(\n\t\t\tMainContent.SignEvent,\n\t\t\tnew SignEventT(\n\t\t\t\tnew TemplateT(\n\t\t\t\t\tevent.kind,\n\t\t\t\t\tthis.textEncoder.encode(event.content),\n\t\t\t\t\tevent.tags.map((t) => new StringVecT(t))\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\n\t\t// Serialize with FlatBuffers builder\n\t\tconst builder = new flatbuffers.Builder(2048);\n\t\tconst mainOffset = mainT.pack(builder);\n\t\tbuilder.finish(mainOffset);\n\t\tconst serializedMessage = builder.asUint8Array();\n\t\tthis.signCB = cb;\n\t\tthis.worker.postMessage(serializedMessage);\n\t}\n\n\tgetPublicKey() {\n\t\tconst mainT = new MainMessageT(MainContent.GetPublicKey, new GetPublicKeyT());\n\n\t\t// Serialize with FlatBuffers builder\n\t\tconst builder = new flatbuffers.Builder(2048);\n\t\tconst mainOffset = mainT.pack(builder);\n\t\tbuilder.finish(mainOffset);\n\t\tconst serializedMessage = builder.asUint8Array();\n\n\t\tthis.worker.postMessage(serializedMessage);\n\t}\n\n\tcleanup(): void {\n\t\tconst subscriptionsToDelete: string[] = [];\n\n\t\tfor (const [subId, subscription] of this.subscriptions.entries()) {\n\t\t\tif (subscription.refCount <= 0 && !this.PERPETUAL_SUBSCRIPTIONS.includes(subId)) {\n\t\t\t\tsubscriptionsToDelete.push(subId);\n\t\t\t}\n\t\t}\n\n\t\tfor (const subId of subscriptionsToDelete) {\n\t\t\tconst subscription = this.subscriptions.get(subId);\n\t\t\tif (subscription) {\n\t\t\t\tconst mainT = new MainMessageT(\n\t\t\t\t\tMainContent.Unsubscribe,\n\t\t\t\t\tnew UnsubscribeT(this.textEncoder.encode(subId))\n\t\t\t\t);\n\t\t\t\t// Serialize with FlatBuffers builder\n\t\t\t\tconst builder = new flatbuffers.Builder(2048);\n\t\t\t\tconst mainOffset = mainT.pack(builder);\n\t\t\t\tbuilder.finish(mainOffset);\n\t\t\t\tconst serializedMessage = builder.asUint8Array();\n\t\t\t\twsManager.resetInputLoopBackoff();\n\t\t\t\tthis.worker.postMessage(serializedMessage);\n\t\t\t\tthis.subscriptions.delete(subId);\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport const nostrManager = new NostrManager();\n\n/**\n * Factory function to create a new NostrManager instance.\n * @param config - Configuration for the NostrManager.\n * @returns A new instance of NostrManager.\n */\nexport function createNostrManager(config: NostrManagerConfig): NostrManager {\n\treturn new NostrManager(config);\n}\n\nexport * from './types';\n"],"names":["Builder","opt_initial_size","initial_size","ByteBuffer","forceDefaults","size","additional_bytes","align_size","old_buf_size","byte_size","i","value","voffset","defaultValue","obj","bb","new_buf_size","nbb","offset","SIZEOF_INT","numfields","vtableloc","trimmed_size","standard_fields","len","SIZEOF_SHORT","existing_vtable","vt1","outer_loop","vt2","j","root_table","opt_file_identifier","opt_size_prefix","size_prefix","SIZE_PREFIX_LENGTH","file_identifier","FILE_IDENTIFIER_LENGTH","table","field","table_start","vtable_start","elem_size","num_elems","alignment","s","utf8","v","list","ret","val","startFunc","CounterPipeConfig","flatbuffers.SIZE_PREFIX_LENGTH","index","optionalEncoding","builder","kindsOffset","data","numElems","pubkeyOffset","CounterPipeConfigT","_o","kinds","pubkey","GetPublicKey","GetPublicKeyT","KindFilterPipeConfig","KindFilterPipeConfigT","Template","StringVec","kind","contentOffset","tagsOffset","TemplateT","content","tags","Publish","publishIdOffset","templateOffset","PublishT","publishId","template","PrivateKey","privateKeyOffset","PrivateKeyT","privateKey","SignerType","unionToSignerType","type","accessor","SetSigner","signerTypeType","signerTypeOffset","SetSignerT","temp","signerType","SignEvent","SignEventT","NpubLimiterPipeConfig","limitPerNpub","maxTotalNpubs","NpubLimiterPipeConfigT","ParsePipeConfig","ParsePipeConfigT","ProofVerificationPipeConfig","maxProofs","ProofVerificationPipeConfigT","SaveToDbPipeConfig","SaveToDbPipeConfigT","SerializeEventsPipeConfig","subscriptionIdOffset","SerializeEventsPipeConfigT","subscriptionId","PipeConfig","unionToPipeConfig","Pipe","configType","configOffset","PipeT","config","PipelineConfig","pipesOffset","PipelineConfigT","pipes","SubscriptionConfig","pipelineOffset","closeOnEose","cacheFirst","timeoutMs","maxEvents","skipCache","force","bytesPerEvent","SubscriptionConfigT","pipeline","Subscribe","Request","requestsOffset","SubscribeT","requests","Unsubscribe","UnsubscribeT","MainContent","unionToMainContent","MainMessage","contentType","MainMessageT","MsgKind","ParsedDataUnion","RelayRef","urlOffset","RelayRefT","url","SubscribeKind","WorkerLine","relayOffset","subIdOffset","rawOffset","WorkerLineT","relay","subId","raw","WorkerMessage","MessageType","Message","WorkerMessageT","unionToMessage","SharedBufferReader","buffer","view","uint8View","currentWritePosition","requiredSpace","newWritePosition","message","encoded","encode","error","lastReadPosition","dataStartOffset","currentPos","maxMessages","messages","msgCount","headerPos","eventLength","payloadStart","nextPos","flatBufferData","result","actualLastReadPosition","totalEventLimit","dataSize","overhead","ByteRingBuffer","head","tail","used","p","payload","N","totalSize","droppedThisWrite","mySeq","writePos","readPos","trailerPos","variable","advance","targetPos","source","sourceOffset","length","remaining","srcOffset","tgt","spaceToEnd","chunkSize","tgtAbs","srcChunk","sourcePos","target","targetOffset","tgtOffset","src","srcAbs","initializeRingHeader","total","capacity","off","ConnectionStatus","RelayConnection","handler","signal","cleanup","onOpen","onClose","ev","onError","_ev","onMessage","event","rawText","to","frame","resolve","reject","timer","resolver","ok","waiters","fn","idx","cap","base","max","mult","jitter","delay","n","start","kindStr","ConnectionRegistry","m","k","id","delta","next","conn","at","e","relays","frames","connection","handleIncomingMessage","outputRing","rawBytes","flatbuffers.Builder","WorkerMessages.RelayRef","kindEnum","WorkerMessages.WorkerLine","lineOffset","fbBytes","WSManager","processed","record","envelopeStr","envelope","globalMessageHandler","originalEnsure","anyGlobal","wsManager","originalWasmBuffer","fetchPromise","ensureOriginalBuffer","wasmAsset","res","NostrManager","inRing","outRing","RustWorker","parsed","input","hash","char","listener","options","detail","existingSubscription","totalLimit","sum","req","bufferSize","initialMessage","optionsT","subscribeT","r","RequestT","key","values","StringVecT","mainT","mainOffset","serializedMessage","subscription","publish_id","templateT","t","publishT","name","secretKeyHex","privateKeyT","setSignerT","cb","subscriptionsToDelete","nostrManager","createNostrManager"],"mappings":"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","x_google_ignoreList":[0]}