@multitapio/multitap 0.0.13 → 0.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/codegen/config.d.ts +5 -2
- package/dist/codegen/config.d.ts.map +1 -1
- package/dist/codegen/rust.d.ts +3 -6
- package/dist/codegen/rust.d.ts.map +1 -1
- package/dist/codegen/typescript.d.ts +3 -6
- package/dist/codegen/typescript.d.ts.map +1 -1
- package/dist/diagnostics.js +404 -8
- package/dist/executor.d.ts +27 -0
- package/dist/executor.d.ts.map +1 -1
- package/dist/init-data.d.ts +25 -0
- package/dist/init-data.d.ts.map +1 -0
- package/dist/lib.js +610 -9
- package/dist/schema.d.ts +68 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/session.d.ts +5 -0
- package/dist/session.d.ts.map +1 -1
- package/dist/test-session.d.ts +4 -0
- package/dist/test-session.d.ts.map +1 -1
- package/dist/types/codegen/config.d.ts +5 -2
- package/dist/types/codegen/config.d.ts.map +1 -1
- package/dist/types/codegen/rust.d.ts +3 -6
- package/dist/types/codegen/rust.d.ts.map +1 -1
- package/dist/types/codegen/typescript.d.ts +3 -6
- package/dist/types/codegen/typescript.d.ts.map +1 -1
- package/dist/types/executor.d.ts +27 -0
- package/dist/types/executor.d.ts.map +1 -1
- package/dist/types/init-data.d.ts +25 -0
- package/dist/types/init-data.d.ts.map +1 -0
- package/dist/types/schema.d.ts +68 -0
- package/dist/types/schema.d.ts.map +1 -1
- package/dist/types/session.d.ts +5 -0
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types/test-session.d.ts +4 -0
- package/dist/types/test-session.d.ts.map +1 -1
- package/dist/types/vite/codegen-runner.d.ts +2 -1
- package/dist/types/vite/codegen-runner.d.ts.map +1 -1
- package/dist/types/vite/module-builder.d.ts +2 -1
- package/dist/types/vite/module-builder.d.ts.map +1 -1
- package/dist/types/vite/plugin.d.ts.map +1 -1
- package/dist/vite/codegen-runner.d.ts +2 -1
- package/dist/vite/codegen-runner.d.ts.map +1 -1
- package/dist/vite/index.js +1403 -692
- package/dist/vite/module-builder.d.ts +2 -1
- package/dist/vite/module-builder.d.ts.map +1 -1
- package/dist/vite/plugin.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/diagnostics.js
CHANGED
|
@@ -2155,6 +2155,11 @@ function quickEncodeToken(token) {
|
|
|
2155
2155
|
}
|
|
2156
2156
|
|
|
2157
2157
|
// ../../node_modules/.pnpm/cborg@4.3.2/node_modules/cborg/lib/encode.js
|
|
2158
|
+
var defaultEncodeOptions = {
|
|
2159
|
+
float64: false,
|
|
2160
|
+
mapSorter,
|
|
2161
|
+
quickEncodeToken
|
|
2162
|
+
};
|
|
2158
2163
|
var rfc8949EncodeOptions = Object.freeze({
|
|
2159
2164
|
float64: true,
|
|
2160
2165
|
mapSorter: rfc8949MapSorter,
|
|
@@ -2401,6 +2406,19 @@ function sortMapEntries(entries, options) {
|
|
|
2401
2406
|
entries.sort(options.mapSorter);
|
|
2402
2407
|
}
|
|
2403
2408
|
}
|
|
2409
|
+
function mapSorter(e1, e2) {
|
|
2410
|
+
const keyToken1 = Array.isArray(e1[0]) ? e1[0][0] : e1[0];
|
|
2411
|
+
const keyToken2 = Array.isArray(e2[0]) ? e2[0][0] : e2[0];
|
|
2412
|
+
if (keyToken1.type !== keyToken2.type) {
|
|
2413
|
+
return keyToken1.type.compare(keyToken2.type);
|
|
2414
|
+
}
|
|
2415
|
+
const major = keyToken1.type.major;
|
|
2416
|
+
const tcmp = cborEncoders[major].compareTokens(keyToken1, keyToken2);
|
|
2417
|
+
if (tcmp === 0) {
|
|
2418
|
+
console.warn("WARNING: complex key types used, CBOR key sorting guarantees are gone");
|
|
2419
|
+
}
|
|
2420
|
+
return tcmp;
|
|
2421
|
+
}
|
|
2404
2422
|
function rfc8949MapSorter(e1, e2) {
|
|
2405
2423
|
if (e1[0] instanceof Token && e2[0] instanceof Token) {
|
|
2406
2424
|
const t1 = (
|
|
@@ -2455,6 +2473,10 @@ function encodeCustom(data, encoders, options) {
|
|
|
2455
2473
|
tokensToEncoded(buf, tokens, encoders, options);
|
|
2456
2474
|
return buf.toBytes(true);
|
|
2457
2475
|
}
|
|
2476
|
+
function encode(data, options) {
|
|
2477
|
+
options = Object.assign({}, defaultEncodeOptions, options);
|
|
2478
|
+
return encodeCustom(data, cborEncoders, options);
|
|
2479
|
+
}
|
|
2458
2480
|
|
|
2459
2481
|
// src/utils.ts
|
|
2460
2482
|
function uint8ArrayToBase64(data) {
|
|
@@ -2554,6 +2576,10 @@ function sessionCompatibilityHash(data) {
|
|
|
2554
2576
|
const fullHash = sha2562(data);
|
|
2555
2577
|
return fullHash.slice(0, 8);
|
|
2556
2578
|
}
|
|
2579
|
+
function hashContent(obj) {
|
|
2580
|
+
const cborBytes = encode(obj);
|
|
2581
|
+
return sessionCompatibilityHash(cborBytes);
|
|
2582
|
+
}
|
|
2557
2583
|
function hashInputMessage(genesisHash, targetTick, payload) {
|
|
2558
2584
|
const buf2 = new Uint8Array(16 + 4 + payload.length);
|
|
2559
2585
|
buf2.set(genesisHash, 0);
|
|
@@ -4943,6 +4969,16 @@ function compileStateSchema(schema) {
|
|
|
4943
4969
|
bitmaskSize
|
|
4944
4970
|
};
|
|
4945
4971
|
}
|
|
4972
|
+
function parseVec3ArrayType(type) {
|
|
4973
|
+
const match = type.match(/^vec3\[(\d+)\]$/);
|
|
4974
|
+
if (!match?.[1]) return null;
|
|
4975
|
+
return { elementType: "vec3", length: parseInt(match[1], 10) };
|
|
4976
|
+
}
|
|
4977
|
+
function parseVec2ArrayType(type) {
|
|
4978
|
+
const match = type.match(/^vec2\[(\d+)\]$/);
|
|
4979
|
+
if (!match?.[1]) return null;
|
|
4980
|
+
return { elementType: "vec2", length: parseInt(match[1], 10) };
|
|
4981
|
+
}
|
|
4946
4982
|
|
|
4947
4983
|
// src/input-codec.ts
|
|
4948
4984
|
function parseArrayType2(type) {
|
|
@@ -6018,8 +6054,351 @@ function createStoreApi(schemaDef) {
|
|
|
6018
6054
|
return storeApi;
|
|
6019
6055
|
}
|
|
6020
6056
|
|
|
6057
|
+
// src/init-data.ts
|
|
6058
|
+
var InitDataValidationError = class extends Error {
|
|
6059
|
+
constructor(message, path) {
|
|
6060
|
+
super(`${path}: ${message}`);
|
|
6061
|
+
this.path = path;
|
|
6062
|
+
this.name = "InitDataValidationError";
|
|
6063
|
+
}
|
|
6064
|
+
};
|
|
6065
|
+
function validateInitData(schema, data) {
|
|
6066
|
+
const allowedItems = new Set(schema.items.map((i) => i.name));
|
|
6067
|
+
for (const key of Object.keys(data)) {
|
|
6068
|
+
if (!allowedItems.has(key)) {
|
|
6069
|
+
throw new InitDataValidationError(`Unexpected init data item`, key);
|
|
6070
|
+
}
|
|
6071
|
+
}
|
|
6072
|
+
for (const item of schema.items) {
|
|
6073
|
+
const itemData = data[item.name];
|
|
6074
|
+
if (itemData === void 0) {
|
|
6075
|
+
throw new InitDataValidationError(`Missing required init data item`, item.name);
|
|
6076
|
+
}
|
|
6077
|
+
if (item.isBlob) {
|
|
6078
|
+
validateBlob(item, itemData);
|
|
6079
|
+
} else {
|
|
6080
|
+
validateCompound(item, itemData);
|
|
6081
|
+
}
|
|
6082
|
+
}
|
|
6083
|
+
}
|
|
6084
|
+
function validateBlob(item, data) {
|
|
6085
|
+
if (typeof data === "string") {
|
|
6086
|
+
try {
|
|
6087
|
+
const binary = atob(data);
|
|
6088
|
+
if (binary.length > item.blobMaxSize) {
|
|
6089
|
+
throw new InitDataValidationError(
|
|
6090
|
+
`Blob data exceeds maxSize: ${binary.length} > ${item.blobMaxSize}`,
|
|
6091
|
+
item.name
|
|
6092
|
+
);
|
|
6093
|
+
}
|
|
6094
|
+
} catch (e) {
|
|
6095
|
+
if (e instanceof InitDataValidationError) throw e;
|
|
6096
|
+
throw new InitDataValidationError(
|
|
6097
|
+
`Invalid base64 string: ${e instanceof Error ? e.message : String(e)}`,
|
|
6098
|
+
item.name
|
|
6099
|
+
);
|
|
6100
|
+
}
|
|
6101
|
+
} else if (data instanceof Uint8Array) {
|
|
6102
|
+
if (data.length > item.blobMaxSize) {
|
|
6103
|
+
throw new InitDataValidationError(
|
|
6104
|
+
`Blob data exceeds maxSize: ${data.length} > ${item.blobMaxSize}`,
|
|
6105
|
+
item.name
|
|
6106
|
+
);
|
|
6107
|
+
}
|
|
6108
|
+
} else {
|
|
6109
|
+
throw new InitDataValidationError(
|
|
6110
|
+
`Expected base64 string or Uint8Array, got ${typeof data}`,
|
|
6111
|
+
item.name
|
|
6112
|
+
);
|
|
6113
|
+
}
|
|
6114
|
+
}
|
|
6115
|
+
function validateCompound(item, data) {
|
|
6116
|
+
if (typeof data !== "object" || data === null || Array.isArray(data)) {
|
|
6117
|
+
throw new InitDataValidationError(
|
|
6118
|
+
`Expected object, got ${Array.isArray(data) ? "array" : typeof data}`,
|
|
6119
|
+
item.name
|
|
6120
|
+
);
|
|
6121
|
+
}
|
|
6122
|
+
const obj = data;
|
|
6123
|
+
const allowedFields = new Set(item.fields.map((f) => f.name));
|
|
6124
|
+
for (const key of Object.keys(obj)) {
|
|
6125
|
+
if (!allowedFields.has(key)) {
|
|
6126
|
+
throw new InitDataValidationError(
|
|
6127
|
+
`Unexpected field '${key}'`,
|
|
6128
|
+
`${item.name}.${key}`
|
|
6129
|
+
);
|
|
6130
|
+
}
|
|
6131
|
+
}
|
|
6132
|
+
for (const field of item.fields) {
|
|
6133
|
+
const value = obj[field.name];
|
|
6134
|
+
if (value === void 0) {
|
|
6135
|
+
throw new InitDataValidationError(
|
|
6136
|
+
`Missing required field`,
|
|
6137
|
+
`${item.name}.${field.name}`
|
|
6138
|
+
);
|
|
6139
|
+
}
|
|
6140
|
+
validateField(field, value, `${item.name}.${field.name}`);
|
|
6141
|
+
}
|
|
6142
|
+
}
|
|
6143
|
+
function validateField(field, value, path) {
|
|
6144
|
+
const vec3Array = parseVec3ArrayType(field.type);
|
|
6145
|
+
if (vec3Array) {
|
|
6146
|
+
validateVec3Array(value, vec3Array.length, path);
|
|
6147
|
+
return;
|
|
6148
|
+
}
|
|
6149
|
+
const vec2Array = parseVec2ArrayType(field.type);
|
|
6150
|
+
if (vec2Array) {
|
|
6151
|
+
validateVec2Array(value, vec2Array.length, path);
|
|
6152
|
+
return;
|
|
6153
|
+
}
|
|
6154
|
+
if (field.type === "vec3") {
|
|
6155
|
+
validateVec3(value, path);
|
|
6156
|
+
return;
|
|
6157
|
+
}
|
|
6158
|
+
if (field.type === "vec2") {
|
|
6159
|
+
validateVec2(value, path);
|
|
6160
|
+
return;
|
|
6161
|
+
}
|
|
6162
|
+
if (field.type === "quat") {
|
|
6163
|
+
validateQuat(value, path);
|
|
6164
|
+
return;
|
|
6165
|
+
}
|
|
6166
|
+
const primArray = parseArrayType(field.type);
|
|
6167
|
+
if (primArray) {
|
|
6168
|
+
validatePrimitiveArray(value, primArray.elementType, primArray.length, path);
|
|
6169
|
+
return;
|
|
6170
|
+
}
|
|
6171
|
+
validateScalar(value, field.type, path);
|
|
6172
|
+
}
|
|
6173
|
+
function validateVec3Array(value, expectedLength, path) {
|
|
6174
|
+
if (!Array.isArray(value)) {
|
|
6175
|
+
throw new InitDataValidationError(`Expected array, got ${typeof value}`, path);
|
|
6176
|
+
}
|
|
6177
|
+
if (value.length !== expectedLength) {
|
|
6178
|
+
throw new InitDataValidationError(
|
|
6179
|
+
`Array length ${value.length} does not match expected ${expectedLength}`,
|
|
6180
|
+
path
|
|
6181
|
+
);
|
|
6182
|
+
}
|
|
6183
|
+
for (let i = 0; i < value.length; i++) {
|
|
6184
|
+
validateVec3(value[i], `${path}[${i}]`);
|
|
6185
|
+
}
|
|
6186
|
+
}
|
|
6187
|
+
function validateVec2Array(value, expectedLength, path) {
|
|
6188
|
+
if (!Array.isArray(value)) {
|
|
6189
|
+
throw new InitDataValidationError(`Expected array, got ${typeof value}`, path);
|
|
6190
|
+
}
|
|
6191
|
+
if (value.length !== expectedLength) {
|
|
6192
|
+
throw new InitDataValidationError(
|
|
6193
|
+
`Array length ${value.length} does not match expected ${expectedLength}`,
|
|
6194
|
+
path
|
|
6195
|
+
);
|
|
6196
|
+
}
|
|
6197
|
+
for (let i = 0; i < value.length; i++) {
|
|
6198
|
+
validateVec2(value[i], `${path}[${i}]`);
|
|
6199
|
+
}
|
|
6200
|
+
}
|
|
6201
|
+
function validateVec3(value, path) {
|
|
6202
|
+
if (Array.isArray(value)) {
|
|
6203
|
+
if (value.length !== 3) {
|
|
6204
|
+
throw new InitDataValidationError(
|
|
6205
|
+
`Expected array of 3 numbers, got ${value.length}`,
|
|
6206
|
+
path
|
|
6207
|
+
);
|
|
6208
|
+
}
|
|
6209
|
+
for (let i = 0; i < 3; i++) {
|
|
6210
|
+
if (typeof value[i] !== "number" || !Number.isFinite(value[i])) {
|
|
6211
|
+
throw new InitDataValidationError(
|
|
6212
|
+
`Expected finite number at index ${i}, got ${value[i]}`,
|
|
6213
|
+
path
|
|
6214
|
+
);
|
|
6215
|
+
}
|
|
6216
|
+
}
|
|
6217
|
+
} else if (typeof value === "object" && value !== null) {
|
|
6218
|
+
const obj = value;
|
|
6219
|
+
const keys = Object.keys(obj);
|
|
6220
|
+
const allowedKeys = /* @__PURE__ */ new Set(["x", "y", "z"]);
|
|
6221
|
+
for (const key of keys) {
|
|
6222
|
+
if (!allowedKeys.has(key)) {
|
|
6223
|
+
throw new InitDataValidationError(
|
|
6224
|
+
`Unexpected property '${key}' in vec3 object (allowed: x, y, z)`,
|
|
6225
|
+
path
|
|
6226
|
+
);
|
|
6227
|
+
}
|
|
6228
|
+
}
|
|
6229
|
+
if (typeof obj.x !== "number" || !Number.isFinite(obj.x) || typeof obj.y !== "number" || !Number.isFinite(obj.y) || typeof obj.z !== "number" || !Number.isFinite(obj.z)) {
|
|
6230
|
+
throw new InitDataValidationError(
|
|
6231
|
+
`Expected object with finite numeric x, y, z properties`,
|
|
6232
|
+
path
|
|
6233
|
+
);
|
|
6234
|
+
}
|
|
6235
|
+
} else {
|
|
6236
|
+
throw new InitDataValidationError(
|
|
6237
|
+
`Expected array [x, y, z] or object {x, y, z}, got ${typeof value}`,
|
|
6238
|
+
path
|
|
6239
|
+
);
|
|
6240
|
+
}
|
|
6241
|
+
}
|
|
6242
|
+
function validateVec2(value, path) {
|
|
6243
|
+
if (Array.isArray(value)) {
|
|
6244
|
+
if (value.length !== 2) {
|
|
6245
|
+
throw new InitDataValidationError(
|
|
6246
|
+
`Expected array of 2 numbers, got ${value.length}`,
|
|
6247
|
+
path
|
|
6248
|
+
);
|
|
6249
|
+
}
|
|
6250
|
+
for (let i = 0; i < 2; i++) {
|
|
6251
|
+
if (typeof value[i] !== "number" || !Number.isFinite(value[i])) {
|
|
6252
|
+
throw new InitDataValidationError(
|
|
6253
|
+
`Expected finite number at index ${i}, got ${value[i]}`,
|
|
6254
|
+
path
|
|
6255
|
+
);
|
|
6256
|
+
}
|
|
6257
|
+
}
|
|
6258
|
+
} else if (typeof value === "object" && value !== null) {
|
|
6259
|
+
const obj = value;
|
|
6260
|
+
const keys = Object.keys(obj);
|
|
6261
|
+
const allowedKeys = /* @__PURE__ */ new Set(["x", "y"]);
|
|
6262
|
+
for (const key of keys) {
|
|
6263
|
+
if (!allowedKeys.has(key)) {
|
|
6264
|
+
throw new InitDataValidationError(
|
|
6265
|
+
`Unexpected property '${key}' in vec2 object (allowed: x, y)`,
|
|
6266
|
+
path
|
|
6267
|
+
);
|
|
6268
|
+
}
|
|
6269
|
+
}
|
|
6270
|
+
if (typeof obj.x !== "number" || !Number.isFinite(obj.x) || typeof obj.y !== "number" || !Number.isFinite(obj.y)) {
|
|
6271
|
+
throw new InitDataValidationError(
|
|
6272
|
+
`Expected object with finite numeric x, y properties`,
|
|
6273
|
+
path
|
|
6274
|
+
);
|
|
6275
|
+
}
|
|
6276
|
+
} else {
|
|
6277
|
+
throw new InitDataValidationError(
|
|
6278
|
+
`Expected array [x, y] or object {x, y}, got ${typeof value}`,
|
|
6279
|
+
path
|
|
6280
|
+
);
|
|
6281
|
+
}
|
|
6282
|
+
}
|
|
6283
|
+
function validateQuat(value, path) {
|
|
6284
|
+
if (Array.isArray(value)) {
|
|
6285
|
+
if (value.length !== 4) {
|
|
6286
|
+
throw new InitDataValidationError(
|
|
6287
|
+
`Expected array of 4 numbers, got ${value.length}`,
|
|
6288
|
+
path
|
|
6289
|
+
);
|
|
6290
|
+
}
|
|
6291
|
+
for (let i = 0; i < 4; i++) {
|
|
6292
|
+
if (typeof value[i] !== "number" || !Number.isFinite(value[i])) {
|
|
6293
|
+
throw new InitDataValidationError(
|
|
6294
|
+
`Expected finite number at index ${i}, got ${value[i]}`,
|
|
6295
|
+
path
|
|
6296
|
+
);
|
|
6297
|
+
}
|
|
6298
|
+
}
|
|
6299
|
+
} else if (typeof value === "object" && value !== null) {
|
|
6300
|
+
const obj = value;
|
|
6301
|
+
const keys = Object.keys(obj);
|
|
6302
|
+
const allowedKeys = /* @__PURE__ */ new Set(["x", "y", "z", "w"]);
|
|
6303
|
+
for (const key of keys) {
|
|
6304
|
+
if (!allowedKeys.has(key)) {
|
|
6305
|
+
throw new InitDataValidationError(
|
|
6306
|
+
`Unexpected property '${key}' in quat object (allowed: x, y, z, w)`,
|
|
6307
|
+
path
|
|
6308
|
+
);
|
|
6309
|
+
}
|
|
6310
|
+
}
|
|
6311
|
+
if (typeof obj.x !== "number" || !Number.isFinite(obj.x) || typeof obj.y !== "number" || !Number.isFinite(obj.y) || typeof obj.z !== "number" || !Number.isFinite(obj.z) || typeof obj.w !== "number" || !Number.isFinite(obj.w)) {
|
|
6312
|
+
throw new InitDataValidationError(
|
|
6313
|
+
`Expected object with finite numeric x, y, z, w properties`,
|
|
6314
|
+
path
|
|
6315
|
+
);
|
|
6316
|
+
}
|
|
6317
|
+
} else {
|
|
6318
|
+
throw new InitDataValidationError(
|
|
6319
|
+
`Expected array [x, y, z, w] or object {x, y, z, w}, got ${typeof value}`,
|
|
6320
|
+
path
|
|
6321
|
+
);
|
|
6322
|
+
}
|
|
6323
|
+
}
|
|
6324
|
+
function validatePrimitiveArray(value, elementType, expectedLength, path) {
|
|
6325
|
+
if (!Array.isArray(value)) {
|
|
6326
|
+
throw new InitDataValidationError(`Expected array, got ${typeof value}`, path);
|
|
6327
|
+
}
|
|
6328
|
+
if (value.length !== expectedLength) {
|
|
6329
|
+
throw new InitDataValidationError(
|
|
6330
|
+
`Array length ${value.length} does not match expected ${expectedLength}`,
|
|
6331
|
+
path
|
|
6332
|
+
);
|
|
6333
|
+
}
|
|
6334
|
+
for (let i = 0; i < value.length; i++) {
|
|
6335
|
+
validateScalar(value[i], elementType, `${path}[${i}]`);
|
|
6336
|
+
}
|
|
6337
|
+
}
|
|
6338
|
+
function validateInteger(value, min, max, type, path) {
|
|
6339
|
+
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
6340
|
+
throw new InitDataValidationError(
|
|
6341
|
+
`Expected finite number, got ${String(value)}`,
|
|
6342
|
+
path
|
|
6343
|
+
);
|
|
6344
|
+
}
|
|
6345
|
+
if (!Number.isInteger(value)) {
|
|
6346
|
+
throw new InitDataValidationError(
|
|
6347
|
+
`Expected integer for ${type}, got ${value}`,
|
|
6348
|
+
path
|
|
6349
|
+
);
|
|
6350
|
+
}
|
|
6351
|
+
if (value < min || value > max) {
|
|
6352
|
+
throw new InitDataValidationError(
|
|
6353
|
+
`Value ${value} out of range for ${type} (${min} to ${max})`,
|
|
6354
|
+
path
|
|
6355
|
+
);
|
|
6356
|
+
}
|
|
6357
|
+
}
|
|
6358
|
+
function validateScalar(value, type, path) {
|
|
6359
|
+
switch (type) {
|
|
6360
|
+
case "bool":
|
|
6361
|
+
if (typeof value !== "boolean") {
|
|
6362
|
+
throw new InitDataValidationError(
|
|
6363
|
+
`Expected boolean, got ${typeof value}`,
|
|
6364
|
+
path
|
|
6365
|
+
);
|
|
6366
|
+
}
|
|
6367
|
+
break;
|
|
6368
|
+
case "uint8":
|
|
6369
|
+
validateInteger(value, 0, 255, type, path);
|
|
6370
|
+
break;
|
|
6371
|
+
case "int8":
|
|
6372
|
+
validateInteger(value, -128, 127, type, path);
|
|
6373
|
+
break;
|
|
6374
|
+
case "uint16":
|
|
6375
|
+
validateInteger(value, 0, 65535, type, path);
|
|
6376
|
+
break;
|
|
6377
|
+
case "int16":
|
|
6378
|
+
validateInteger(value, -32768, 32767, type, path);
|
|
6379
|
+
break;
|
|
6380
|
+
case "uint32":
|
|
6381
|
+
validateInteger(value, 0, 4294967295, type, path);
|
|
6382
|
+
break;
|
|
6383
|
+
case "int32":
|
|
6384
|
+
validateInteger(value, -2147483648, 2147483647, type, path);
|
|
6385
|
+
break;
|
|
6386
|
+
case "f32":
|
|
6387
|
+
case "entityRef":
|
|
6388
|
+
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
6389
|
+
throw new InitDataValidationError(
|
|
6390
|
+
`Expected finite number, got ${String(value)}`,
|
|
6391
|
+
path
|
|
6392
|
+
);
|
|
6393
|
+
}
|
|
6394
|
+
break;
|
|
6395
|
+
default:
|
|
6396
|
+
throw new InitDataValidationError(`Unknown type: ${type}`, path);
|
|
6397
|
+
}
|
|
6398
|
+
}
|
|
6399
|
+
|
|
6021
6400
|
// src/rollback.worker.ts
|
|
6022
|
-
var workerCode = 'var Or=Object.defineProperty;var Fr=(t,e,n)=>e in t?Or(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var y=(t,e,n)=>Fr(t,typeof e!="symbol"?e+"":e,n);var Rt=Symbol("Comlink.proxy"),Nr=Symbol("Comlink.endpoint"),Mr=Symbol("Comlink.releaseProxy"),ut=Symbol("Comlink.finalizer"),ve=Symbol("Comlink.thrown"),Ht=t=>typeof t=="object"&&t!==null||typeof t=="function",Rr={canHandle:t=>Ht(t)&&t[Rt],serialize(t){let{port1:e,port2:n}=new MessageChannel;return Be(t,e),[n,[n]]},deserialize(t){return t.start(),lt(t)}},Hr={canHandle:t=>Ht(t)&&ve in t,serialize({value:t}){let e;return t instanceof Error?e={isError:!0,value:{message:t.message,name:t.name,stack:t.stack}}:e={isError:!1,value:t},[e,[]]},deserialize(t){throw t.isError?Object.assign(new Error(t.value.message),t.value):t.value}},Dt=new Map([["proxy",Rr],["throw",Hr]]);function Dr(t,e){for(let n of t)if(e===n||n==="*"||n instanceof RegExp&&n.test(e))return!0;return!1}function Be(t,e=globalThis,n=["*"]){e.addEventListener("message",function r(i){if(!i||!i.data)return;if(!Dr(n,i.origin)){console.warn(`Invalid origin \'${i.origin}\' for comlink proxy`);return}let{id:o,type:s,path:a}=Object.assign({path:[]},i.data),c=(i.data.argumentList||[]).map(Y),u;try{let f=a.slice(0,-1).reduce((g,S)=>g[S],t),d=a.reduce((g,S)=>g[S],t);switch(s){case"GET":u=d;break;case"SET":f[a.slice(-1)[0]]=Y(i.data.value),u=!0;break;case"APPLY":u=d.apply(f,c);break;case"CONSTRUCT":{let g=new d(...c);u=qr(g)}break;case"ENDPOINT":{let{port1:g,port2:S}=new MessageChannel;Be(t,S),u=Zr(g,[g])}break;case"RELEASE":u=void 0;break;default:return}}catch(f){u={value:f,[ve]:0}}Promise.resolve(u).catch(f=>({value:f,[ve]:0})).then(f=>{let[d,g]=Ie(f);e.postMessage(Object.assign(Object.assign({},d),{id:o}),g),s==="RELEASE"&&(e.removeEventListener("message",r),Lt(e),ut in t&&typeof t[ut]=="function"&&t[ut]())}).catch(f=>{let[d,g]=Ie({value:new TypeError("Unserializable return value"),[ve]:0});e.postMessage(Object.assign(Object.assign({},d),{id:o}),g)})}),e.start&&e.start()}function Lr(t){return t.constructor.name==="MessagePort"}function Lt(t){Lr(t)&&t.close()}function lt(t,e){let n=new Map;return t.addEventListener("message",function(i){let{data:o}=i;if(!o||!o.id)return;let s=n.get(o.id);if(s)try{s(o)}finally{n.delete(o.id)}}),ft(t,n,[],e)}function Ae(t){if(t)throw new Error("Proxy has been released and is not useable")}function zt(t){return ne(t,new Map,{type:"RELEASE"}).then(()=>{Lt(t)})}var Ue=new WeakMap,Ce="FinalizationRegistry"in globalThis&&new FinalizationRegistry(t=>{let e=(Ue.get(t)||0)-1;Ue.set(t,e),e===0&&zt(t)});function zr(t,e){let n=(Ue.get(e)||0)+1;Ue.set(e,n),Ce&&Ce.register(t,e,t)}function Vr(t){Ce&&Ce.unregister(t)}function ft(t,e,n=[],r=function(){}){let i=!1,o=new Proxy(r,{get(s,a){if(Ae(i),a===Mr)return()=>{Vr(o),zt(t),e.clear(),i=!0};if(a==="then"){if(n.length===0)return{then:()=>o};let c=ne(t,e,{type:"GET",path:n.map(u=>u.toString())}).then(Y);return c.then.bind(c)}return ft(t,e,[...n,a])},set(s,a,c){Ae(i);let[u,f]=Ie(c);return ne(t,e,{type:"SET",path:[...n,a].map(d=>d.toString()),value:u},f).then(Y)},apply(s,a,c){Ae(i);let u=n[n.length-1];if(u===Nr)return ne(t,e,{type:"ENDPOINT"}).then(Y);if(u==="bind")return ft(t,e,n.slice(0,-1));let[f,d]=Mt(c);return ne(t,e,{type:"APPLY",path:n.map(g=>g.toString()),argumentList:f},d).then(Y)},construct(s,a){Ae(i);let[c,u]=Mt(a);return ne(t,e,{type:"CONSTRUCT",path:n.map(f=>f.toString()),argumentList:c},u).then(Y)}});return zr(o,t),o}function Gr(t){return Array.prototype.concat.apply([],t)}function Mt(t){let e=t.map(Ie);return[e.map(n=>n[0]),Gr(e.map(n=>n[1]))]}var Vt=new WeakMap;function Zr(t,e){return Vt.set(t,e),t}function qr(t){return Object.assign(t,{[Rt]:!0})}function Ie(t){for(let[e,n]of Dt)if(n.canHandle(t)){let[r,i]=n.serialize(t);return[{type:"HANDLER",name:e,value:r},i]}return[{type:"RAW",value:t},Vt.get(t)||[]]}function Y(t){switch(t.type){case"HANDLER":return Dt.get(t.name).deserialize(t.value);case"RAW":return t.value}}function ne(t,e,n,r){return new Promise(i=>{let o=Kr();e.set(o,i),t.start&&t.start(),t.postMessage(Object.assign({id:o},n),r)})}function Kr(){return new Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}var Wr={p:0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2fn,n:0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141n,h:1n,a:0n,b:7n,Gx:0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798n,Gy:0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8n},{p:X,n:ht,Gx:Yr,Gy:jr,b:jt}=Wr,re=32,dt=64,U=(t="")=>{throw new Error(t)},Xt=t=>typeof t=="bigint",Jt=t=>typeof t=="string",Xr=t=>t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array",me=(t,e)=>!Xr(t)||typeof e=="number"&&e>0&&t.length!==e?U("Uint8Array expected"):t,Ne=t=>new Uint8Array(t),Jr=t=>Uint8Array.from(t),Qt=(t,e)=>t.toString(16).padStart(e,"0"),yt=t=>Array.from(me(t)).map(e=>Qt(e,2)).join(""),z={_0:48,_9:57,A:65,F:70,a:97,f:102},Gt=t=>{if(t>=z._0&&t<=z._9)return t-z._0;if(t>=z.A&&t<=z.F)return t-(z.A-10);if(t>=z.a&&t<=z.f)return t-(z.a-10)},gt=t=>{let e="hex invalid";if(!Jt(t))return U(e);let n=t.length,r=n/2;if(n%2)return U(e);let i=Ne(r);for(let o=0,s=0;o<r;o++,s+=2){let a=Gt(t.charCodeAt(s)),c=Gt(t.charCodeAt(s+1));if(a===void 0||c===void 0)return U(e);i[o]=a*16+c}return i},bt=(t,e)=>me(Jt(t)?gt(t):Jr(me(t)),e),en=()=>globalThis?.crypto,Qr=()=>en()?.subtle??U("crypto.subtle must be defined"),_e=(...t)=>{let e=Ne(t.reduce((r,i)=>r+me(i).length,0)),n=0;return t.forEach(r=>{e.set(r,n),n+=r.length}),e},ei=(t=re)=>en().getRandomValues(Ne(t)),$e=BigInt,he=(t,e,n,r="bad number: out of range")=>Xt(t)&&e<=t&&t<n?t:U(r),h=(t,e=X)=>{let n=t%e;return n>=0n?n:e+n};var tn=(t,e)=>{(t===0n||e<=0n)&&U("no inverse n="+t+" mod="+e);let n=h(t,e),r=e,i=0n,o=1n,s=1n,a=0n;for(;n!==0n;){let c=r/n,u=r%n,f=i-s*c,d=o-a*c;r=n,n=u,i=s,o=a,s=f,a=d}return r===1n?h(i,e):U("no inverse")};var Zt=t=>t instanceof J?t:U("Point expected"),nn=t=>h(h(t*t)*t+jt),qt=t=>he(t,0n,X),Pe=t=>he(t,1n,X),ti=t=>he(t,1n,ht),pt=t=>(t&1n)===0n,rn=t=>Uint8Array.of(t),ni=t=>rn(pt(t)?2:3),ri=t=>{let e=nn(Pe(t)),n=1n;for(let r=e,i=(X+1n)/4n;i>0n;i>>=1n)i&1n&&(n=n*r%X),r=r*r%X;return h(n*n)===e?n:U("sqrt invalid")},R=class R{constructor(e,n,r){y(this,"px");y(this,"py");y(this,"pz");this.px=qt(e),this.py=Pe(n),this.pz=qt(r),Object.freeze(this)}static fromBytes(e){me(e);let n,r=e[0],i=e.subarray(1),o=Kt(i,0,re),s=e.length;if(s===re+1&&[2,3].includes(r)){let a=ri(o),c=pt(a);pt($e(r))!==c&&(a=h(-a)),n=new R(o,a,1n)}return s===dt+1&&r===4&&(n=new R(o,Kt(i,re,dt),1n)),n?n.assertValidity():U("bad point: not on curve")}equals(e){let{px:n,py:r,pz:i}=this,{px:o,py:s,pz:a}=Zt(e),c=h(n*a),u=h(o*i),f=h(r*a),d=h(s*i);return c===u&&f===d}is0(){return this.equals(j)}negate(){return new R(this.px,h(-this.py),this.pz)}double(){return this.add(this)}add(e){let{px:n,py:r,pz:i}=this,{px:o,py:s,pz:a}=Zt(e),c=0n,u=jt,f=0n,d=0n,g=0n,S=h(u*3n),k=h(n*o),A=h(r*s),O=h(i*a),te=h(n+r),v=h(o+s);te=h(te*v),v=h(k+A),te=h(te-v),v=h(n+i);let M=h(o+a);return v=h(v*M),M=h(k+O),v=h(v-M),M=h(r+i),f=h(s+a),M=h(M*f),f=h(A+O),M=h(M-f),g=h(c*v),f=h(S*O),g=h(f+g),f=h(A-g),g=h(A+g),d=h(f*g),A=h(k+k),A=h(A+k),O=h(c*O),v=h(S*v),A=h(A+O),O=h(k-O),O=h(c*O),v=h(v+O),k=h(A*v),d=h(d+k),k=h(M*v),f=h(te*f),f=h(f-k),k=h(te*A),g=h(M*g),g=h(g+k),new R(f,d,g)}multiply(e,n=!0){if(!n&&e===0n)return j;if(ti(e),e===1n)return this;if(this.equals(ie))return fi(e).p;let r=j,i=ie;for(let o=this;e>0n;o=o.double(),e>>=1n)e&1n?r=r.add(o):n&&(i=i.add(o));return r}toAffine(){let{px:e,py:n,pz:r}=this;if(this.equals(j))return{x:0n,y:0n};if(r===1n)return{x:e,y:n};let i=tn(r,X);return h(r*i)!==1n&&U("inverse invalid"),{x:h(e*i),y:h(n*i)}}assertValidity(){let{x:e,y:n}=this.toAffine();return Pe(e),Pe(n),h(n*n)===nn(e)?this:U("bad point: not on curve")}toBytes(e=!0){let{x:n,y:r}=this.assertValidity().toAffine(),i=Oe(n);return e?_e(ni(r),i):_e(rn(4),i,Oe(r))}static fromAffine(e){let{x:n,y:r}=e;return n===0n&&r===0n?j:new R(n,r,1n)}toHex(e){return yt(this.toBytes(e))}static fromPrivateKey(e){return ie.multiply(oi(e))}static fromHex(e){return R.fromBytes(bt(e))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}toRawBytes(e){return this.toBytes(e)}};y(R,"BASE"),y(R,"ZERO");var J=R,ie=new J(Yr,jr,1n),j=new J(0n,1n,0n);J.BASE=ie;J.ZERO=j;var Me=t=>$e("0x"+(yt(t)||"0")),Kt=(t,e,n)=>Me(t.subarray(e,n)),ii=2n**256n,Oe=t=>gt(Qt(he(t,0n,ii),dt)),oi=t=>{let e=Xt(t)?t:Me(bt(t,re));return he(e,1n,ht,"private key invalid 3")};var si=t=>{t=bt(t),(t.length<re+8||t.length>1024)&&U("expected 40-1024b");let e=h(Me(t),ht-1n);return Oe(e+1n)};var ai="SHA-256",xt={hexToBytes:gt,bytesToHex:yt,concatBytes:_e,bytesToNumberBE:Me,numberToBytesBE:Oe,mod:h,invert:tn,hmacSha256Async:async(t,...e)=>{let n=Qr(),r="HMAC",i=await n.importKey("raw",t,{name:r,hash:{name:ai}},!1,["sign"]);return Ne(await n.sign(r,i,_e(...e)))},hmacSha256Sync:void 0,hashToPrivateKey:si,randomBytes:ei};var Fe=8,ci=256,on=Math.ceil(ci/Fe)+1,mt=2**(Fe-1),ui=()=>{let t=[],e=ie,n=e;for(let r=0;r<on;r++){n=e,t.push(n);for(let i=1;i<mt;i++)n=n.add(e),t.push(n);e=n.double()}return t},Wt,Yt=(t,e)=>{let n=e.negate();return t?n:e},fi=t=>{let e=Wt||(Wt=ui()),n=j,r=ie,i=2**Fe,o=i,s=$e(i-1),a=$e(Fe);for(let c=0;c<on;c++){let u=Number(t&s);t>>=a,u>mt&&(u-=o,t+=1n);let f=c*mt,d=f,g=f+Math.abs(u)-1,S=c%2!==0,k=u<0;u===0?r=r.add(Yt(S,e[d])):n=n.add(Yt(k,e[g]))}return{p:n,f:r}};function di(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function sn(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("positive integer expected, got "+t)}function se(t,...e){if(!di(t))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(t.length))throw new Error("Uint8Array expected of length "+e+", got length="+t.length)}function an(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");sn(t.outputLen),sn(t.blockLen)}function ae(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function cn(t,e){se(t);let n=e.outputLen;if(t.length<n)throw new Error("digestInto() expects output buffer of length at least "+n)}function Q(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function Re(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function F(t,e){return t<<32-e|t>>>e}function pi(t){if(typeof t!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(t))}function ye(t){return typeof t=="string"&&(t=pi(t)),se(t),t}var oe=class{};function un(t){let e=r=>t().update(ye(r)).digest(),n=t();return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=()=>t(),e}function mi(t,e,n,r){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,n,r);let i=BigInt(32),o=BigInt(4294967295),s=Number(n>>i&o),a=Number(n&o),c=r?4:0,u=r?0:4;t.setUint32(e+c,s,r),t.setUint32(e+u,a,r)}function fn(t,e,n){return t&e^~t&n}function ln(t,e,n){return t&e^t&n^e&n}var He=class extends oe{constructor(e,n,r,i){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=i,this.buffer=new Uint8Array(e),this.view=Re(this.buffer)}update(e){ae(this),e=ye(e),se(e);let{view:n,buffer:r,blockLen:i}=this,o=e.length;for(let s=0;s<o;){let a=Math.min(i-this.pos,o-s);if(a===i){let c=Re(e);for(;i<=o-s;s+=i)this.process(c,s);continue}r.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===i&&(this.process(n,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){ae(this),cn(e,this),this.finished=!0;let{buffer:n,view:r,blockLen:i,isLE:o}=this,{pos:s}=this;n[s++]=128,Q(this.buffer.subarray(s)),this.padOffset>i-s&&(this.process(r,0),s=0);for(let d=s;d<i;d++)n[d]=0;mi(r,i-8,BigInt(this.length*8),o),this.process(r,0);let a=Re(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=c/4,f=this.get();if(u>f.length)throw new Error("_sha2: outputLen bigger than state");for(let d=0;d<u;d++)a.setUint32(4*d,f[d],o)}digest(){let{buffer:e,outputLen:n}=this;this.digestInto(e);let r=e.slice(0,n);return this.destroy(),r}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:n,buffer:r,length:i,finished:o,destroyed:s,pos:a}=this;return e.destroyed=s,e.finished=o,e.length=i,e.pos=a,i%n&&e.buffer.set(r),e}clone(){return this._cloneInto()}},V=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var hi=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Z=new Uint32Array(64),De=class extends He{constructor(e=32){super(64,e,8,!1),this.A=V[0]|0,this.B=V[1]|0,this.C=V[2]|0,this.D=V[3]|0,this.E=V[4]|0,this.F=V[5]|0,this.G=V[6]|0,this.H=V[7]|0}get(){let{A:e,B:n,C:r,D:i,E:o,F:s,G:a,H:c}=this;return[e,n,r,i,o,s,a,c]}set(e,n,r,i,o,s,a,c){this.A=e|0,this.B=n|0,this.C=r|0,this.D=i|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=c|0}process(e,n){for(let d=0;d<16;d++,n+=4)Z[d]=e.getUint32(n,!1);for(let d=16;d<64;d++){let g=Z[d-15],S=Z[d-2],k=F(g,7)^F(g,18)^g>>>3,A=F(S,17)^F(S,19)^S>>>10;Z[d]=A+Z[d-7]+k+Z[d-16]|0}let{A:r,B:i,C:o,D:s,E:a,F:c,G:u,H:f}=this;for(let d=0;d<64;d++){let g=F(a,6)^F(a,11)^F(a,25),S=f+g+fn(a,c,u)+hi[d]+Z[d]|0,A=(F(r,2)^F(r,13)^F(r,22))+ln(r,i,o)|0;f=u,u=c,c=a,a=s+S|0,s=o,o=i,i=r,r=S+A|0}r=r+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,c=c+this.F|0,u=u+this.G|0,f=f+this.H|0,this.set(r,i,o,s,a,c,u,f)}roundClean(){Q(Z)}destroy(){this.set(0,0,0,0,0,0,0,0),Q(this.buffer)}};var ge=un(()=>new De);var wt=ge;var Le=class extends oe{constructor(e,n){super(),this.finished=!1,this.destroyed=!1,an(e);let r=ye(n);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let i=this.blockLen,o=new Uint8Array(i);o.set(r.length>i?e.create().update(r).digest():r);for(let s=0;s<o.length;s++)o[s]^=54;this.iHash.update(o),this.oHash=e.create();for(let s=0;s<o.length;s++)o[s]^=106;this.oHash.update(o),Q(o)}update(e){return ae(this),this.iHash.update(e),this}digestInto(e){ae(this),se(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));let{oHash:n,iHash:r,finished:i,destroyed:o,blockLen:s,outputLen:a}=this;return e=e,e.finished=i,e.destroyed=o,e.blockLen=s,e.outputLen=a,e.oHash=n._cloneInto(e.oHash),e.iHash=r._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},St=(t,e,n)=>new Le(t,e).update(n).digest();St.create=(t,e)=>new Le(t,e);var yi=["string","number","bigint","symbol"],gi=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","HTMLElement","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function dn(t){if(t===null)return"null";if(t===void 0)return"undefined";if(t===!0||t===!1)return"boolean";let e=typeof t;if(yi.includes(e))return e;if(e==="function")return"Function";if(Array.isArray(t))return"Array";if(bi(t))return"Buffer";let n=xi(t);return n||"Object"}function bi(t){return t&&t.constructor&&t.constructor.isBuffer&&t.constructor.isBuffer.call(null,t)}function xi(t){let e=Object.prototype.toString.call(t).slice(8,-1);if(gi.includes(e))return e}var l=class{constructor(e,n,r){this.major=e,this.majorEncoded=e<<5,this.name=n,this.terminal=r}toString(){return`Type[${this.major}].${this.name}`}compare(e){return this.major<e.major?-1:this.major>e.major?1:0}};l.uint=new l(0,"uint",!0);l.negint=new l(1,"negint",!0);l.bytes=new l(2,"bytes",!0);l.string=new l(3,"string",!0);l.array=new l(4,"array",!1);l.map=new l(5,"map",!1);l.tag=new l(6,"tag",!1);l.float=new l(7,"float",!0);l.false=new l(7,"false",!0);l.true=new l(7,"true",!0);l.null=new l(7,"null",!0);l.undefined=new l(7,"undefined",!0);l.break=new l(7,"break",!0);var m=class{constructor(e,n,r){this.type=e,this.value=n,this.encodedLength=r,this.encodedBytes=void 0,this.byteValue=void 0}toString(){return`Token[${this.type}].${this.value}`}};var ce=globalThis.process&&!globalThis.process.browser&&globalThis.Buffer&&typeof globalThis.Buffer.isBuffer=="function",wi=new TextDecoder,Si=new TextEncoder;function ze(t){return ce&&globalThis.Buffer.isBuffer(t)}function Et(t){return t instanceof Uint8Array?ze(t)?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t:Uint8Array.from(t)}var yn=ce?(t,e,n)=>n-e>64?globalThis.Buffer.from(t.subarray(e,n)).toString("utf8"):mn(t,e,n):(t,e,n)=>n-e>64?wi.decode(t.subarray(e,n)):mn(t,e,n),gn=ce?t=>t.length>64?globalThis.Buffer.from(t):pn(t):t=>t.length>64?Si.encode(t):pn(t),H=t=>Uint8Array.from(t),ue=ce?(t,e,n)=>ze(t)?new Uint8Array(t.subarray(e,n)):t.slice(e,n):(t,e,n)=>t.slice(e,n),bn=ce?(t,e)=>(t=t.map(n=>n instanceof Uint8Array?n:globalThis.Buffer.from(n)),Et(globalThis.Buffer.concat(t,e))):(t,e)=>{let n=new Uint8Array(e),r=0;for(let i of t)r+i.length>n.length&&(i=i.subarray(0,n.length-r)),n.set(i,r),r+=i.length;return n},xn=ce?t=>globalThis.Buffer.allocUnsafe(t):t=>new Uint8Array(t);function Ve(t,e){if(ze(t)&&ze(e))return t.compare(e);for(let n=0;n<t.length;n++)if(t[n]!==e[n])return t[n]<e[n]?-1:1;return 0}function pn(t){let e=[],n=0;for(let r=0;r<t.length;r++){let i=t.charCodeAt(r);i<128?e[n++]=i:i<2048?(e[n++]=i>>6|192,e[n++]=i&63|128):(i&64512)===55296&&r+1<t.length&&(t.charCodeAt(r+1)&64512)===56320?(i=65536+((i&1023)<<10)+(t.charCodeAt(++r)&1023),e[n++]=i>>18|240,e[n++]=i>>12&63|128,e[n++]=i>>6&63|128,e[n++]=i&63|128):(e[n++]=i>>12|224,e[n++]=i>>6&63|128,e[n++]=i&63|128)}return e}function mn(t,e,n){let r=[];for(;e<n;){let i=t[e],o=null,s=i>239?4:i>223?3:i>191?2:1;if(e+s<=n){let a,c,u,f;switch(s){case 1:i<128&&(o=i);break;case 2:a=t[e+1],(a&192)===128&&(f=(i&31)<<6|a&63,f>127&&(o=f));break;case 3:a=t[e+1],c=t[e+2],(a&192)===128&&(c&192)===128&&(f=(i&15)<<12|(a&63)<<6|c&63,f>2047&&(f<55296||f>57343)&&(o=f));break;case 4:a=t[e+1],c=t[e+2],u=t[e+3],(a&192)===128&&(c&192)===128&&(u&192)===128&&(f=(i&15)<<18|(a&63)<<12|(c&63)<<6|u&63,f>65535&&f<1114112&&(o=f))}}o===null?(o=65533,s=1):o>65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|o&1023),r.push(o),e+=s}return Ei(r)}var hn=4096;function Ei(t){let e=t.length;if(e<=hn)return String.fromCharCode.apply(String,t);let n="",r=0;for(;r<e;)n+=String.fromCharCode.apply(String,t.slice(r,r+=hn));return n}var ki=256,be=class{constructor(e=ki){this.chunkSize=e,this.cursor=0,this.maxCursor=-1,this.chunks=[],this._initReuseChunk=null}reset(){this.cursor=0,this.maxCursor=-1,this.chunks.length&&(this.chunks=[]),this._initReuseChunk!==null&&(this.chunks.push(this._initReuseChunk),this.maxCursor=this._initReuseChunk.length-1)}push(e){let n=this.chunks[this.chunks.length-1];if(this.cursor+e.length<=this.maxCursor+1){let i=n.length-(this.maxCursor-this.cursor)-1;n.set(e,i)}else{if(n){let i=n.length-(this.maxCursor-this.cursor)-1;i<n.length&&(this.chunks[this.chunks.length-1]=n.subarray(0,i),this.maxCursor=this.cursor-1)}e.length<64&&e.length<this.chunkSize?(n=xn(this.chunkSize),this.chunks.push(n),this.maxCursor+=n.length,this._initReuseChunk===null&&(this._initReuseChunk=n),n.set(e,0)):(this.chunks.push(e),this.maxCursor+=e.length)}this.cursor+=e.length}toBytes(e=!1){let n;if(this.chunks.length===1){let r=this.chunks[0];e&&this.cursor>r.length/2?(n=this.cursor===r.length?r:r.subarray(0,this.cursor),this._initReuseChunk=null,this.chunks=[]):n=ue(r,0,this.cursor)}else n=bn(this.chunks,this.cursor);return e&&this.reset(),n}};var b="CBOR decode error:",kt="CBOR encode error:",xe=[];xe[23]=1;xe[24]=2;xe[25]=3;xe[26]=5;xe[27]=9;function G(t,e,n){if(t.length-e<n)throw new Error(`${b} not enough data for type`)}var E=[24,256,65536,4294967296,BigInt("18446744073709551616")];function C(t,e,n){G(t,e,1);let r=t[e];if(n.strict===!0&&r<E[0])throw new Error(`${b} integer encoded in more bytes than necessary (strict decode)`);return r}function I(t,e,n){G(t,e,2);let r=t[e]<<8|t[e+1];if(n.strict===!0&&r<E[1])throw new Error(`${b} integer encoded in more bytes than necessary (strict decode)`);return r}function B(t,e,n){G(t,e,4);let r=t[e]*16777216+(t[e+1]<<16)+(t[e+2]<<8)+t[e+3];if(n.strict===!0&&r<E[2])throw new Error(`${b} integer encoded in more bytes than necessary (strict decode)`);return r}function P(t,e,n){G(t,e,8);let r=t[e]*16777216+(t[e+1]<<16)+(t[e+2]<<8)+t[e+3],i=t[e+4]*16777216+(t[e+5]<<16)+(t[e+6]<<8)+t[e+7],o=(BigInt(r)<<BigInt(32))+BigInt(i);if(n.strict===!0&&o<E[3])throw new Error(`${b} integer encoded in more bytes than necessary (strict decode)`);if(o<=Number.MAX_SAFE_INTEGER)return Number(o);if(n.allowBigInt===!0)return o;throw new Error(`${b} integers outside of the safe integer range are not supported`)}function wn(t,e,n,r){return new m(l.uint,C(t,e+1,r),2)}function Sn(t,e,n,r){return new m(l.uint,I(t,e+1,r),3)}function En(t,e,n,r){return new m(l.uint,B(t,e+1,r),5)}function kn(t,e,n,r){return new m(l.uint,P(t,e+1,r),9)}function _(t,e){return T(t,0,e.value)}function T(t,e,n){if(n<E[0]){let r=Number(n);t.push([e|r])}else if(n<E[1]){let r=Number(n);t.push([e|24,r])}else if(n<E[2]){let r=Number(n);t.push([e|25,r>>>8,r&255])}else if(n<E[3]){let r=Number(n);t.push([e|26,r>>>24&255,r>>>16&255,r>>>8&255,r&255])}else{let r=BigInt(n);if(r<E[4]){let i=[e|27,0,0,0,0,0,0,0],o=Number(r&BigInt(4294967295)),s=Number(r>>BigInt(32)&BigInt(4294967295));i[8]=o&255,o=o>>8,i[7]=o&255,o=o>>8,i[6]=o&255,o=o>>8,i[5]=o&255,i[4]=s&255,s=s>>8,i[3]=s&255,s=s>>8,i[2]=s&255,s=s>>8,i[1]=s&255,t.push(i)}else throw new Error(`${b} encountered BigInt larger than allowable range`)}}_.encodedSize=function(e){return T.encodedSize(e.value)};T.encodedSize=function(e){return e<E[0]?1:e<E[1]?2:e<E[2]?3:e<E[3]?5:9};_.compareTokens=function(e,n){return e.value<n.value?-1:e.value>n.value?1:0};function Tn(t,e,n,r){return new m(l.negint,-1-C(t,e+1,r),2)}function An(t,e,n,r){return new m(l.negint,-1-I(t,e+1,r),3)}function vn(t,e,n,r){return new m(l.negint,-1-B(t,e+1,r),5)}var Tt=BigInt(-1),Un=BigInt(1);function Cn(t,e,n,r){let i=P(t,e+1,r);if(typeof i!="bigint"){let o=-1-i;if(o>=Number.MIN_SAFE_INTEGER)return new m(l.negint,o,9)}if(r.allowBigInt!==!0)throw new Error(`${b} integers outside of the safe integer range are not supported`);return new m(l.negint,Tt-BigInt(i),9)}function Ge(t,e){let n=e.value,r=typeof n=="bigint"?n*Tt-Un:n*-1-1;T(t,e.type.majorEncoded,r)}Ge.encodedSize=function(e){let n=e.value,r=typeof n=="bigint"?n*Tt-Un:n*-1-1;return r<E[0]?1:r<E[1]?2:r<E[2]?3:r<E[3]?5:9};Ge.compareTokens=function(e,n){return e.value<n.value?1:e.value>n.value?-1:0};function we(t,e,n,r){G(t,e,n+r);let i=ue(t,e+n,e+n+r);return new m(l.bytes,i,n+r)}function In(t,e,n,r){return we(t,e,1,n)}function Bn(t,e,n,r){return we(t,e,2,C(t,e+1,r))}function Pn(t,e,n,r){return we(t,e,3,I(t,e+1,r))}function _n(t,e,n,r){return we(t,e,5,B(t,e+1,r))}function $n(t,e,n,r){let i=P(t,e+1,r);if(typeof i=="bigint")throw new Error(`${b} 64-bit integer bytes lengths not supported`);return we(t,e,9,i)}function Ze(t){return t.encodedBytes===void 0&&(t.encodedBytes=t.type===l.string?gn(t.value):t.value),t.encodedBytes}function fe(t,e){let n=Ze(e);T(t,e.type.majorEncoded,n.length),t.push(n)}fe.encodedSize=function(e){let n=Ze(e);return T.encodedSize(n.length)+n.length};fe.compareTokens=function(e,n){return Ai(Ze(e),Ze(n))};function Ai(t,e){return t.length<e.length?-1:t.length>e.length?1:Ve(t,e)}function Se(t,e,n,r,i){let o=n+r;G(t,e,o);let s=new m(l.string,yn(t,e+n,e+o),o);return i.retainStringBytes===!0&&(s.byteValue=ue(t,e+n,e+o)),s}function On(t,e,n,r){return Se(t,e,1,n,r)}function Fn(t,e,n,r){return Se(t,e,2,C(t,e+1,r),r)}function Nn(t,e,n,r){return Se(t,e,3,I(t,e+1,r),r)}function Mn(t,e,n,r){return Se(t,e,5,B(t,e+1,r),r)}function Rn(t,e,n,r){let i=P(t,e+1,r);if(typeof i=="bigint")throw new Error(`${b} 64-bit integer string lengths not supported`);return Se(t,e,9,i,r)}var Hn=fe;function le(t,e,n,r){return new m(l.array,r,n)}function Dn(t,e,n,r){return le(t,e,1,n)}function Ln(t,e,n,r){return le(t,e,2,C(t,e+1,r))}function zn(t,e,n,r){return le(t,e,3,I(t,e+1,r))}function Vn(t,e,n,r){return le(t,e,5,B(t,e+1,r))}function Gn(t,e,n,r){let i=P(t,e+1,r);if(typeof i=="bigint")throw new Error(`${b} 64-bit integer array lengths not supported`);return le(t,e,9,i)}function Zn(t,e,n,r){if(r.allowIndefinite===!1)throw new Error(`${b} indefinite length items not allowed`);return le(t,e,1,1/0)}function qe(t,e){T(t,l.array.majorEncoded,e.value)}qe.compareTokens=_.compareTokens;qe.encodedSize=function(e){return T.encodedSize(e.value)};function de(t,e,n,r){return new m(l.map,r,n)}function qn(t,e,n,r){return de(t,e,1,n)}function Kn(t,e,n,r){return de(t,e,2,C(t,e+1,r))}function Wn(t,e,n,r){return de(t,e,3,I(t,e+1,r))}function Yn(t,e,n,r){return de(t,e,5,B(t,e+1,r))}function jn(t,e,n,r){let i=P(t,e+1,r);if(typeof i=="bigint")throw new Error(`${b} 64-bit integer map lengths not supported`);return de(t,e,9,i)}function Xn(t,e,n,r){if(r.allowIndefinite===!1)throw new Error(`${b} indefinite length items not allowed`);return de(t,e,1,1/0)}function Ke(t,e){T(t,l.map.majorEncoded,e.value)}Ke.compareTokens=_.compareTokens;Ke.encodedSize=function(e){return T.encodedSize(e.value)};function Jn(t,e,n,r){return new m(l.tag,n,1)}function Qn(t,e,n,r){return new m(l.tag,C(t,e+1,r),2)}function er(t,e,n,r){return new m(l.tag,I(t,e+1,r),3)}function tr(t,e,n,r){return new m(l.tag,B(t,e+1,r),5)}function nr(t,e,n,r){return new m(l.tag,P(t,e+1,r),9)}function We(t,e){T(t,l.tag.majorEncoded,e.value)}We.compareTokens=_.compareTokens;We.encodedSize=function(e){return T.encodedSize(e.value)};var Pi=20,_i=21,$i=22,Oi=23;function rr(t,e,n,r){if(r.allowUndefined===!1)throw new Error(`${b} undefined values are not supported`);return r.coerceUndefinedToNull===!0?new m(l.null,null,1):new m(l.undefined,void 0,1)}function ir(t,e,n,r){if(r.allowIndefinite===!1)throw new Error(`${b} indefinite length items not allowed`);return new m(l.break,void 0,1)}function At(t,e,n){if(n){if(n.allowNaN===!1&&Number.isNaN(t))throw new Error(`${b} NaN values are not supported`);if(n.allowInfinity===!1&&(t===1/0||t===-1/0))throw new Error(`${b} Infinity values are not supported`)}return new m(l.float,t,e)}function or(t,e,n,r){return At(vt(t,e+1),3,r)}function sr(t,e,n,r){return At(Ut(t,e+1),5,r)}function ar(t,e,n,r){return At(lr(t,e+1),9,r)}function Ye(t,e,n){let r=e.value;if(r===!1)t.push([l.float.majorEncoded|Pi]);else if(r===!0)t.push([l.float.majorEncoded|_i]);else if(r===null)t.push([l.float.majorEncoded|$i]);else if(r===void 0)t.push([l.float.majorEncoded|Oi]);else{let i,o=!1;(!n||n.float64!==!0)&&(ur(r),i=vt(N,1),r===i||Number.isNaN(r)?(N[0]=249,t.push(N.slice(0,3)),o=!0):(fr(r),i=Ut(N,1),r===i&&(N[0]=250,t.push(N.slice(0,5)),o=!0))),o||(Fi(r),i=lr(N,1),N[0]=251,t.push(N.slice(0,9)))}}Ye.encodedSize=function(e,n){let r=e.value;if(r===!1||r===!0||r===null||r===void 0)return 1;if(!n||n.float64!==!0){ur(r);let i=vt(N,1);if(r===i||Number.isNaN(r))return 3;if(fr(r),i=Ut(N,1),r===i)return 5}return 9};var cr=new ArrayBuffer(9),$=new DataView(cr,1),N=new Uint8Array(cr,0);function ur(t){if(t===1/0)$.setUint16(0,31744,!1);else if(t===-1/0)$.setUint16(0,64512,!1);else if(Number.isNaN(t))$.setUint16(0,32256,!1);else{$.setFloat32(0,t);let e=$.getUint32(0),n=(e&2139095040)>>23,r=e&8388607;if(n===255)$.setUint16(0,31744,!1);else if(n===0)$.setUint16(0,(t&2147483648)>>16|r>>13,!1);else{let i=n-127;i<-24?$.setUint16(0,0):i<-14?$.setUint16(0,(e&2147483648)>>16|1<<24+i,!1):$.setUint16(0,(e&2147483648)>>16|i+15<<10|r>>13,!1)}}}function vt(t,e){if(t.length-e<2)throw new Error(`${b} not enough data for float16`);let n=(t[e]<<8)+t[e+1];if(n===31744)return 1/0;if(n===64512)return-1/0;if(n===32256)return NaN;let r=n>>10&31,i=n&1023,o;return r===0?o=i*2**-24:r!==31?o=(i+1024)*2**(r-25):o=i===0?1/0:NaN,n&32768?-o:o}function fr(t){$.setFloat32(0,t,!1)}function Ut(t,e){if(t.length-e<4)throw new Error(`${b} not enough data for float32`);let n=(t.byteOffset||0)+e;return new DataView(t.buffer,n,4).getFloat32(0,!1)}function Fi(t){$.setFloat64(0,t,!1)}function lr(t,e){if(t.length-e<8)throw new Error(`${b} not enough data for float64`);let n=(t.byteOffset||0)+e;return new DataView(t.buffer,n,8).getFloat64(0,!1)}Ye.compareTokens=_.compareTokens;function x(t,e,n){throw new Error(`${b} encountered invalid minor (${n}) for major ${t[e]>>>5}`)}function je(t){return()=>{throw new Error(`${b} ${t}`)}}var p=[];for(let t=0;t<=23;t++)p[t]=x;p[24]=wn;p[25]=Sn;p[26]=En;p[27]=kn;p[28]=x;p[29]=x;p[30]=x;p[31]=x;for(let t=32;t<=55;t++)p[t]=x;p[56]=Tn;p[57]=An;p[58]=vn;p[59]=Cn;p[60]=x;p[61]=x;p[62]=x;p[63]=x;for(let t=64;t<=87;t++)p[t]=In;p[88]=Bn;p[89]=Pn;p[90]=_n;p[91]=$n;p[92]=x;p[93]=x;p[94]=x;p[95]=je("indefinite length bytes/strings are not supported");for(let t=96;t<=119;t++)p[t]=On;p[120]=Fn;p[121]=Nn;p[122]=Mn;p[123]=Rn;p[124]=x;p[125]=x;p[126]=x;p[127]=je("indefinite length bytes/strings are not supported");for(let t=128;t<=151;t++)p[t]=Dn;p[152]=Ln;p[153]=zn;p[154]=Vn;p[155]=Gn;p[156]=x;p[157]=x;p[158]=x;p[159]=Zn;for(let t=160;t<=183;t++)p[t]=qn;p[184]=Kn;p[185]=Wn;p[186]=Yn;p[187]=jn;p[188]=x;p[189]=x;p[190]=x;p[191]=Xn;for(let t=192;t<=215;t++)p[t]=Jn;p[216]=Qn;p[217]=er;p[218]=tr;p[219]=nr;p[220]=x;p[221]=x;p[222]=x;p[223]=x;for(let t=224;t<=243;t++)p[t]=je("simple values are not supported");p[244]=x;p[245]=x;p[246]=x;p[247]=rr;p[248]=je("simple values are not supported");p[249]=or;p[250]=sr;p[251]=ar;p[252]=x;p[253]=x;p[254]=x;p[255]=ir;var D=[];for(let t=0;t<24;t++)D[t]=new m(l.uint,t,1);for(let t=-1;t>=-24;t--)D[31-t]=new m(l.negint,t,1);D[64]=new m(l.bytes,new Uint8Array(0),1);D[96]=new m(l.string,"",1);D[128]=new m(l.array,0,1);D[160]=new m(l.map,0,1);D[244]=new m(l.false,!1,1);D[245]=new m(l.true,!0,1);D[246]=new m(l.null,null,1);function dr(t){switch(t.type){case l.false:return H([244]);case l.true:return H([245]);case l.null:return H([246]);case l.bytes:return t.value.length?void 0:H([64]);case l.string:return t.value===""?H([96]):void 0;case l.array:return t.value===0?H([128]):void 0;case l.map:return t.value===0?H([160]):void 0;case l.uint:return t.value<24?H([Number(t.value)]):void 0;case l.negint:if(t.value>=-24)return H([31-Number(t.value)])}}var mr=Object.freeze({float64:!0,mapSorter:Di,quickEncodeToken:dr});function Mi(){let t=[];return t[l.uint.major]=_,t[l.negint.major]=Ge,t[l.bytes.major]=fe,t[l.string.major]=Hn,t[l.array.major]=qe,t[l.map.major]=Ke,t[l.tag.major]=We,t[l.float.major]=Ye,t}var Ri=Mi(),Ct=new be,Je=class t{constructor(e,n){this.obj=e,this.parent=n}includes(e){let n=this;do if(n.obj===e)return!0;while(n=n.parent);return!1}static createCheck(e,n){if(e&&e.includes(n))throw new Error(`${kt} object contains circular references`);return new t(n,e)}},q={null:new m(l.null,null),undefined:new m(l.undefined,void 0),true:new m(l.true,!0),false:new m(l.false,!1),emptyArray:new m(l.array,0),emptyMap:new m(l.map,0)},K={number(t,e,n,r){return!Number.isInteger(t)||!Number.isSafeInteger(t)?new m(l.float,t):t>=0?new m(l.uint,t):new m(l.negint,t)},bigint(t,e,n,r){return t>=BigInt(0)?new m(l.uint,t):new m(l.negint,t)},Uint8Array(t,e,n,r){return new m(l.bytes,t)},string(t,e,n,r){return new m(l.string,t)},boolean(t,e,n,r){return t?q.true:q.false},null(t,e,n,r){return q.null},undefined(t,e,n,r){return q.undefined},ArrayBuffer(t,e,n,r){return new m(l.bytes,new Uint8Array(t))},DataView(t,e,n,r){return new m(l.bytes,new Uint8Array(t.buffer,t.byteOffset,t.byteLength))},Array(t,e,n,r){if(!t.length)return n.addBreakTokens===!0?[q.emptyArray,new m(l.break)]:q.emptyArray;r=Je.createCheck(r,t);let i=[],o=0;for(let s of t)i[o++]=Xe(s,n,r);return n.addBreakTokens?[new m(l.array,t.length),i,new m(l.break)]:[new m(l.array,t.length),i]},Object(t,e,n,r){let i=e!=="Object",o=i?t.keys():Object.keys(t),s=i?t.size:o.length;if(!s)return n.addBreakTokens===!0?[q.emptyMap,new m(l.break)]:q.emptyMap;r=Je.createCheck(r,t);let a=[],c=0;for(let u of o)a[c++]=[Xe(u,n,r),Xe(i?t.get(u):t[u],n,r)];return Hi(a,n),n.addBreakTokens?[new m(l.map,s),a,new m(l.break)]:[new m(l.map,s),a]}};K.Map=K.Object;K.Buffer=K.Uint8Array;for(let t of"Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64".split(" "))K[`${t}Array`]=K.DataView;function Xe(t,e={},n){let r=dn(t),i=e&&e.typeEncoders&&e.typeEncoders[r]||K[r];if(typeof i=="function"){let s=i(t,r,e,n);if(s!=null)return s}let o=K[r];if(!o)throw new Error(`${kt} unsupported type: ${r}`);return o(t,r,e,n)}function Hi(t,e){e.mapSorter&&t.sort(e.mapSorter)}function Di(t,e){if(t[0]instanceof m&&e[0]instanceof m){let n=t[0],r=e[0];return n._keyBytes||(n._keyBytes=pr(n.value)),r._keyBytes||(r._keyBytes=pr(r.value)),Ve(n._keyBytes,r._keyBytes)}throw new Error("rfc8949MapSorter: complex key types are not supported yet")}function pr(t){return Li(t,Ri,mr)}function hr(t,e,n,r){if(Array.isArray(e))for(let i of e)hr(t,i,n,r);else n[e.type.major](t,e,r)}function Li(t,e,n){let r=Xe(t,n);if(!Array.isArray(r)&&n.quickEncodeToken){let i=n.quickEncodeToken(r);if(i)return i;let o=e[r.type.major];if(o.encodedSize){let s=o.encodedSize(r,n),a=new be(s);if(o(a,r,n),a.chunks.length!==1)throw new Error(`Unexpected error: pre-calculated length for ${r} was wrong`);return Et(a.chunks[0])}}return Ct.reset(),hr(Ct,r,e,n),Ct.toBytes(!0)}xt.hmacSha256Sync=(t,...e)=>St(wt,t,xt.concatBytes(...e));var Gi=32;function Qe(t){if(t.length===0)return new Uint8Array(Gi);let e=t.length,n=e*4,r=t.reduce((c,u)=>c+u.length,0),i=4+n+r,o=new Uint8Array(i),s=new DataView(o.buffer,o.byteOffset,o.byteLength);s.setUint32(0,e,!0);let a=4;for(let c of t)s.setUint32(a,c.length,!0),a+=4;for(let c of t)o.set(c,a),a+=c.length;return wt(o)}var It={bool:1,uint8:1,int8:1,uint16:2,int16:2,uint32:4,int32:4,entityRef:4,f32:4,vec2:8,vec3:12,quat:16,enum:1},Ee={bool:1,uint8:1,int8:1,uint16:2,int16:2,uint32:4,int32:4,f32:4,flags8:1,flags16:2,flags32:4,vec2:8,vec3:12,quat:16};var yr=new Set(["bool","uint8","int8","uint16","int16","uint32","int32","f32"]);function _t(t){let e=t.match(/^(\\w+)\\[(\\d+)\\]$/);if(!e||!e[1]||!e[2])return null;let n=e[1],r=parseInt(e[2],10);if(!yr.has(n))throw new Error(`Invalid array element type \'${n}\': arrays only support primitive scalar types (bool, uint8, int8, uint16, int16, uint32, int32, f32)`);return{elementType:n,length:r}}function gr(t){let e=_t(t);if(e){let r=Ee[e.elementType];if(r===void 0)throw new Error(`Unknown element type: ${e.elementType}`);return r*e.length}let n=Ee[t];if(n===void 0)throw new Error(`Unknown type: ${t}`);return n}function Zi(t){let e=[],n=[],r=new Map,i=new Map,o=0;for(let s of t.controls){let a=gr(s.type),c=_t(s.type),u={name:s.name,type:s.type,size:a,offset:0,options:s.options};c&&(u.arrayLength=c.length,u.arrayElementType=c.elementType);let f={name:s.name,index:o++,field:u,hint:s.hint,retain:s.retain==="always"?"always":"tick"};e.push(f),r.set(s.name,f)}for(let s of t.commands){let a=[],c=0;for(let f of s.args){let d=gr(f.type),g=_t(f.type),S={name:f.name,type:f.type,size:d,offset:c};g&&(S.arrayLength=g.length,S.arrayElementType=g.elementType),a.push(S),c+=d}let u={name:s.name,index:o++,args:a,totalSize:c};n.push(u),i.set(s.name,u)}return{controls:e,commands:n,controlByName:r,commandByName:i}}function Bt(t,e,n,r){switch(n){case"bool":t.setUint8(e,r?1:0);break;case"uint8":case"flags8":t.setUint8(e,r);break;case"int8":t.setInt8(e,r);break;case"uint16":case"flags16":t.setUint16(e,r,!0);break;case"int16":t.setInt16(e,r,!0);break;case"uint32":case"flags32":t.setUint32(e,r,!0);break;case"int32":t.setInt32(e,r,!0);break;case"f32":t.setFloat32(e,r,!0);break;default:throw new Error(`Cannot write primitive type: ${n}`)}}function Pt(t,e,n){switch(n){case"bool":return t.getUint8(e)!==0;case"uint8":case"flags8":return t.getUint8(e);case"int8":return t.getInt8(e);case"uint16":case"flags16":return t.getUint16(e,!0);case"int16":return t.getInt16(e,!0);case"uint32":case"flags32":return t.getUint32(e,!0);case"int32":return t.getInt32(e,!0);case"f32":return t.getFloat32(e,!0);default:throw new Error(`Cannot read primitive type: ${n}`)}}var et=class t{constructor(e){y(this,"schema");y(this,"fields",new Map);y(this,"commandList",[]);this.schema=e}setControl(e,n){let r=this.schema.controlByName.get(e);if(!r)throw new Error(`Unknown control: ${e}`);let i=new Uint8Array(r.field.size),o=new DataView(i.buffer);this.encodeValue(o,0,r.field,n),this.fields.set(r.index,i)}setFlags(e,n){let r=this.schema.controlByName.get(e);if(!r)throw new Error(`Unknown control: ${e}`);if(!r.field.options)throw new Error(`Control ${e} is not a flags type`);let i=0;for(let a=0;a<r.field.options.length;a++){let c=r.field.options[a];n[c]&&(i|=1<<a)}let o=new Uint8Array(r.field.size),s=new DataView(o.buffer);Bt(s,0,r.field.type,i),this.fields.set(r.index,o)}setVec2(e,n){let r=this.schema.controlByName.get(e);if(!r)throw new Error(`Unknown control: ${e}`);if(r.field.type!=="vec2")throw new Error(`Control ${e} is not a vec2`);let i=new Uint8Array(8),o=new DataView(i.buffer);o.setFloat32(0,n[0],!0),o.setFloat32(4,n[1],!0),this.fields.set(r.index,i)}setVec3(e,n){let r=this.schema.controlByName.get(e);if(!r)throw new Error(`Unknown control: ${e}`);if(r.field.type!=="vec3")throw new Error(`Control ${e} is not a vec3`);let i=new Uint8Array(12),o=new DataView(i.buffer);o.setFloat32(0,n[0],!0),o.setFloat32(4,n[1],!0),o.setFloat32(8,n[2],!0),this.fields.set(r.index,i)}setQuat(e,n){let r=this.schema.controlByName.get(e);if(!r)throw new Error(`Unknown control: ${e}`);if(r.field.type!=="quat")throw new Error(`Control ${e} is not a quat`);let i=new Uint8Array(16),o=new DataView(i.buffer);o.setFloat32(0,n[0],!0),o.setFloat32(4,n[1],!0),o.setFloat32(8,n[2],!0),o.setFloat32(12,n[3],!0),this.fields.set(r.index,i)}getControl(e){let n=this.schema.controlByName.get(e);if(!n)throw new Error(`Unknown control: ${e}`);let r=this.fields.get(n.index);if(!r)return this.getDefaultValue(n.field);let i=new DataView(r.buffer,r.byteOffset,r.byteLength);return this.decodeValue(i,0,n.field)}getFlags(e){let n=this.schema.controlByName.get(e);if(!n)throw new Error(`Unknown control: ${e}`);if(!n.field.options)throw new Error(`Control ${e} is not a flags type`);let r=this.fields.get(n.index),i=0;if(r){let s=new DataView(r.buffer,r.byteOffset,r.byteLength);i=Pt(s,0,n.field.type)}let o={};for(let s=0;s<n.field.options.length;s++)o[n.field.options[s]]=(i&1<<s)!==0;return o}getVec2(e){let n=this.schema.controlByName.get(e);if(!n)throw new Error(`Unknown control: ${e}`);if(n.field.type!=="vec2")throw new Error(`Control ${e} is not a vec2`);let r=this.fields.get(n.index);if(!r)return[0,0];let i=new DataView(r.buffer,r.byteOffset,r.byteLength);return[i.getFloat32(0,!0),i.getFloat32(4,!0)]}getVec3(e){let n=this.schema.controlByName.get(e);if(!n)throw new Error(`Unknown control: ${e}`);if(n.field.type!=="vec3")throw new Error(`Control ${e} is not a vec3`);let r=this.fields.get(n.index);if(!r)return[0,0,0];let i=new DataView(r.buffer,r.byteOffset,r.byteLength);return[i.getFloat32(0,!0),i.getFloat32(4,!0),i.getFloat32(8,!0)]}getQuat(e){let n=this.schema.controlByName.get(e);if(!n)throw new Error(`Unknown control: ${e}`);if(n.field.type!=="quat")throw new Error(`Control ${e} is not a quat`);let r=this.fields.get(n.index);if(!r)return[0,0,0,1];let i=new DataView(r.buffer,r.byteOffset,r.byteLength);return[i.getFloat32(0,!0),i.getFloat32(4,!0),i.getFloat32(8,!0),i.getFloat32(12,!0)]}hasControl(e){let n=this.schema.controlByName.get(e);if(!n)throw new Error(`Unknown control: ${e}`);return this.fields.has(n.index)}addCommand(e,n){let r=this.schema.commandByName.get(e);if(!r)throw new Error(`Unknown command: ${e}`);let i=new Uint8Array(r.totalSize),o=new DataView(i.buffer);for(let s of r.args){let a=n[s.name];if(a===void 0)throw new Error(`Missing required argument: ${s.name}`);this.encodeValue(o,s.offset,s,a)}this.commandList.push({index:r.index,data:i})}getCommands(){let e=[];for(let{index:n,data:r}of this.commandList){let i=this.schema.commands.find(a=>a.index===n);if(!i)continue;let o=new DataView(r.buffer,r.byteOffset,r.byteLength),s={name:i.name};for(let a of i.args)s[a.name]=this.decodeValue(o,a.offset,a);e.push(s)}return e}encode(){let e=[];for(let[o,s]of this.fields){let a=new Uint8Array(2+s.length);a[0]=o,a[1]=s.length,a.set(s,2),e.push(a)}for(let o of this.commandList){let s=new Uint8Array(2+o.data.length);s[0]=o.index,s[1]=o.data.length,s.set(o.data,2),e.push(s)}let n=e.reduce((o,s)=>o+s.length,0),r=new Uint8Array(n),i=0;for(let o of e)r.set(o,i),i+=o.length;return r}static decode(e,n){let r=new t(e),i=0;for(;i<n.length;){if(i+2>n.length)throw new Error("Truncated TLV field header");let o=n[i],s=n[i+1];if(i+2+s>n.length)throw new Error(`Truncated TLV field data at index ${o}`);let a=n.subarray(i+2,i+2+s);e.controls.find(u=>u.index===o)?r.fields.set(o,new Uint8Array(a)):e.commands.find(f=>f.index===o)&&r.commandList.push({index:o,data:new Uint8Array(a)}),i+=2+s}return r}clear(){this.fields.clear(),this.commandList.length=0}encodeValue(e,n,r,i){if(r.type==="vec2"){let o=i;e.setFloat32(n,o[0],!0),e.setFloat32(n+4,o[1],!0)}else if(r.type==="vec3"){let o=i;e.setFloat32(n,o[0],!0),e.setFloat32(n+4,o[1],!0),e.setFloat32(n+8,o[2],!0)}else if(r.type==="quat"){let o=i;e.setFloat32(n,o[0],!0),e.setFloat32(n+4,o[1],!0),e.setFloat32(n+8,o[2],!0),e.setFloat32(n+12,o[3],!0)}else if(r.arrayLength!==void 0&&r.arrayElementType!==void 0){let o=i,s=Ee[r.arrayElementType];for(let a=0;a<Math.min(o.length,r.arrayLength);a++)Bt(e,n+a*s,r.arrayElementType,o[a])}else Bt(e,n,r.type,i)}decodeValue(e,n,r){if(r.type==="vec2")return[e.getFloat32(n,!0),e.getFloat32(n+4,!0)];if(r.type==="vec3")return[e.getFloat32(n,!0),e.getFloat32(n+4,!0),e.getFloat32(n+8,!0)];if(r.type==="quat")return[e.getFloat32(n,!0),e.getFloat32(n+4,!0),e.getFloat32(n+8,!0),e.getFloat32(n+12,!0)];if(r.arrayLength!==void 0&&r.arrayElementType!==void 0){let i=[],o=Ee[r.arrayElementType];for(let s=0;s<r.arrayLength;s++)i.push(Pt(e,n+s*o,r.arrayElementType));return i}else return Pt(e,n,r.type)}getDefaultValue(e){return e.type==="vec2"?[0,0]:e.type==="vec3"?[0,0,0]:e.type==="quat"?[0,0,0,1]:e.arrayLength!==void 0?new Array(e.arrayLength).fill(0):e.type==="bool"?!1:0}};function br(t){let e=Zi(t);return{create(){return new et(e)},decode(n){return et.decode(e,n)},get schema(){return e}}}function xr(t,e){return((e&65535)<<16|t&65535)>>>0}function ke(t){return t&65535}function ji(t){return t>>>16&65535}function pe(t){return t.subarray(8,40)}function $t(t,e){if(e.length!==32)throw new Error(`stateId must be ${32} bytes, got ${e.length}`);t.set(e,8)}function wr(t,e){new DataView(t.buffer,t.byteOffset,t.byteLength).setUint32(40,e,!0)}function rt(t,e,n){let r=new Uint8Array(68);return r.set(t,0),new DataView(r.buffer).setUint32(32,e,!0),r.set(n,36),ge(r)}function Sr(t,e,n){return rt(t,e,Qe(n))}function Ot(t){return ge(t)}function Er(t,e,n){let r=new ArrayBuffer(t.totalSize),i=new Uint8Array(r),o=new DataView(r);if(o.setUint32(0,1297367376,!0),o.setUint16(4,0,!0),i[6]=n??0,i[7]=0,e){let a=Ot(e);i.set(a,8)}let s=t.freeStackOffset;o.setUint16(s,t.maxEntities,!0);for(let a=0;a<t.maxEntities;a++){let c=t.freeStackOffset+2+a*2;o.setUint16(c,a,!0)}return i}function kr(t,e){return t.entityTableOffset+e*t.entityRecordSize}function Ft(t,e,n){let r=kr(t,n);return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(r,!0)}function Xi(t){return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint16(4,!0)}function Ji(t,e){new DataView(t.buffer,t.byteOffset,t.byteLength).setUint16(4,e,!0)}function Qi(t,e){return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(t.freeStackOffset,!0)}function eo(t,e,n){new DataView(e.buffer,e.byteOffset,e.byteLength).setUint16(t.freeStackOffset,n,!0)}function to(t,e){let n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=Qi(t,e);if(r===0)throw new Error(`No free entity slots available (max: ${t.maxEntities})`);let i=t.freeStackOffset+2+(r-1)*2,o=n.getUint16(i,!0);return eo(t,e,r-1),o}function Tr(t,e){let n=to(t,e),r=Ft(t,e,n);return Ji(e,Xi(e)+1),xr(n,r)}function it(t,e,n){if(n===4294967295)return!1;let r=ke(n);if(r>=t.maxEntities)return!1;let i=ji(n);return Ft(t,e,r)===i}function Nt(t,e,n){if(n<0)throw new Error("Singleton components do not have component bitmask entries");let r=kr(t,e)+2,i=Math.floor(n/8),o=n%8;return{byteOffset:r+i,bitIndex:o}}function Ar(t,e,n,r){if(!it(t,e,n))return!1;let i=t.componentByName.get(r);if(!i)throw new Error(`Unknown component: \'${r}\'`);if(i.isSingleton)throw new Error(`Component \'${r}\' is a singleton and is always present`);let o=ke(n),{byteOffset:s,bitIndex:a}=Nt(t,o,i.index);return(e[s]&1<<a)!==0}function vr(t,e,n,r){if(!it(t,e,n)){let c=n.toString(16).padStart(8,"0").toUpperCase();throw new Error(`Entity 0x${c} is not alive`)}let i=t.componentByName.get(r);if(!i)throw new Error(`Unknown component: \'${r}\'`);if(i.isSingleton)throw new Error(`Component \'${r}\' is a singleton and cannot be added to entities`);let o=ke(n),{byteOffset:s,bitIndex:a}=Nt(t,o,i.index);e[s]=(e[s]??0)|1<<a}function Ur(t,e,n,r){let i=ke(e);return n.storageOffset+i*n.size+r.offset}function no(t,e,n){let r=new DataView(t.buffer,t.byteOffset,t.byteLength);switch(n){case"bool":return(t[e]??0)!==0;case"uint8":return t[e]??0;case"int8":return r.getInt8(e);case"uint16":return r.getUint16(e,!0);case"int16":return r.getInt16(e,!0);case"uint32":return r.getUint32(e,!0);case"int32":return r.getInt32(e,!0);case"entityRef":return r.getUint32(e,!0);case"f32":return r.getFloat32(e,!0);default:throw new Error(`Cannot read primitive type: ${n}`)}}function Cr(t,e,n,r){let i=new DataView(t.buffer,t.byteOffset,t.byteLength);switch(n){case"bool":t[e]=r?1:0;break;case"uint8":t[e]=r&255;break;case"int8":i.setInt8(e,r);break;case"uint16":i.setUint16(e,r,!0);break;case"int16":i.setInt16(e,r,!0);break;case"uint32":i.setUint32(e,r,!0);break;case"int32":i.setInt32(e,r,!0);break;case"entityRef":i.setUint32(e,r,!0);break;case"f32":i.setFloat32(e,r,!0);break;default:throw new Error(`Cannot write primitive type: ${n}`)}}function ro(t,e,n){let r=new DataView(t.buffer,t.byteOffset,t.byteLength);r.setFloat32(e,n[0],!0),r.setFloat32(e+4,n[1],!0)}function io(t,e,n){let r=new DataView(t.buffer,t.byteOffset,t.byteLength);r.setFloat32(e,n[0],!0),r.setFloat32(e+4,n[1],!0),r.setFloat32(e+8,n[2],!0)}function oo(t,e,n){let r=new DataView(t.buffer,t.byteOffset,t.byteLength);r.setFloat32(e,n[0],!0),r.setFloat32(e+4,n[1],!0),r.setFloat32(e+8,n[2],!0),r.setFloat32(e+12,n[3],!0)}function Ir(t,e,n,r,i,o){if(!it(t,e,n))return;let s=t.componentByName.get(r);if(!s)throw new Error(`Unknown component: \'${r}\'`);if(s.isSingleton)throw new Error(`Component \'${r}\' is a singleton; use singleton accessors instead`);if(!nt(t,e,n,s))return;let a=s.fields.find(f=>f.name===i);if(!a)throw new Error(`Unknown field \'${i}\' in component \'${r}\'`);let c=Ur(t,n,s,a),u=a.type;if(a.arrayLength!==void 0&&a.arrayElementType!==void 0){if(o===void 0)throw new Error(`Field \'${r}.${i}\' is an array, index required`);if(o<0||o>=a.arrayLength)throw new Error(`Array index ${o} out of bounds for ${r}.${i} (length: ${a.arrayLength})`);let f=It[a.arrayElementType];if(f===void 0)throw new Error(`Unknown array element type: ${a.arrayElementType}`);c+=o*f,u=a.arrayElementType}return no(e,c,u)}function w(t,e,n,r,i,o,s){if(!it(t,e,n)){let d=n.toString(16).padStart(8,"0").toUpperCase();throw new Error(`Entity 0x${d} is not alive`)}let a=t.componentByName.get(r);if(!a)throw new Error(`Unknown component: \'${r}\'`);if(!nt(t,e,n,a)){let d=n.toString(16).padStart(8,"0").toUpperCase();throw new Error(`Entity 0x${d} does not have component \'${r}\'`)}let c=a.fields.find(d=>d.name===i);if(!c)throw new Error(`Unknown field \'${i}\' in component \'${r}\'`);let u=Ur(t,n,a,c),f=c.type;if(c.arrayLength!==void 0&&c.arrayElementType!==void 0){if(s===void 0)throw new Error(`Field \'${r}.${i}\' is an array, index required`);if(s<0||s>=c.arrayLength)throw new Error(`Array index ${s} out of bounds for ${r}.${i} (length: ${c.arrayLength})`);let d=It[c.arrayElementType];if(d===void 0)throw new Error(`Unknown array element type: ${c.arrayElementType}`);u+=s*d,f=c.arrayElementType}Cr(e,u,f,o)}function nt(t,e,n,r){if(r.isSingleton)throw new Error(`Component \'${r.name}\' is a singleton and cannot be queried per entity`);let i=ke(n),{byteOffset:o,bitIndex:s}=Nt(t,i,r.index);return(e[o]&1<<s)!==0}function Br(t,e,n,r){if(n.length===0)throw new Error("Query must include at least one component");let i=[];for(let a of n){let c=t.componentByName.get(a);if(!c)throw new Error(`Unknown component: \'${a}\'`);if(c.isSingleton)throw new Error(`Singleton component \'${a}\' cannot be used in queries`);i.push(c)}let o=[];if(r)for(let a of r){let c=t.componentByName.get(a);if(!c)throw new Error(`Unknown component: \'${a}\'`);if(c.isSingleton)throw new Error(`Singleton component \'${a}\' cannot be used in queries`);o.push(c)}function*s(){for(let a=0;a<t.maxEntities;a++){let c=Ft(t,e,a),u=xr(a,c),f=!0;for(let d of i)if(!nt(t,e,u,d)){f=!1;break}if(f){for(let d of o)if(nt(t,e,u,d)){f=!1;break}f&&(yield u)}}}return s()}function Pr(t,e){if(!t.events||!t.eventByName)throw new Error("Schema has no events");let n=t.eventByName.get(e);if(!n)throw new Error(`Unknown event: \'${e}\'`);return n}function _r(t,e,n){let r=Pr(t,n);new DataView(e.buffer,e.byteOffset,e.byteLength).setUint16(r.storageOffset,0,!0)}function $r(t,e,n,r){let i=Pr(t,n),o=new DataView(e.buffer,e.byteOffset,e.byteLength),s=o.getUint16(i.storageOffset,!0);if(s>=i.maxEvents)return!1;let a=i.storageOffset+2+s*i.recordSize;for(let c of i.fields){let u=r[c.name];if(u===void 0)throw new Error(`Missing required field \'${c.name}\' for event \'${n}\'`);let f=a+c.offset;c.type==="vec2"?ro(e,f,u):c.type==="vec3"?io(e,f,u):c.type==="quat"?oo(e,f,u):Cr(e,f,c.type,u)}return o.setUint16(i.storageOffset,s+1,!0),!0}function ot(t){if(t.length!==32)throw new Error(`stateId must be ${32} bytes, got ${t.length}`);return Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}var st=class{constructor(e={}){y(this,"cache");y(this,"maxSize");this.cache=new Map,this.maxSize=e.maxSize??100}store(e){let n=pe(e),r=ot(n);if(this.cache.size>=this.maxSize&&!this.cache.has(r)){let i=this.cache.keys().next().value;i!==void 0&&this.cache.delete(i)}this.cache.set(r,e.slice())}getByStateId(e){let n=ot(e),r=this.cache.get(n);return r?r.slice():void 0}getCached(e,n,r){let i=pe(e),o=rt(i,n,r);return this.getByStateId(o)}has(e){let n=ot(e);return this.cache.has(n)}hasCached(e,n,r){let i=pe(e),o=rt(i,n,r);return this.has(o)}delete(e){let n=ot(e);return this.cache.delete(n)}clear(){this.cache.clear()}get size(){return this.cache.size}keys(){return this.cache.keys()}};var Te=65536,at=class{constructor(e){y(this,"memory",null);y(this,"plugins",[]);y(this,"options");y(this,"stateSize",null);y(this,"statePtr",null);y(this,"heapPos",0);y(this,"arenaResetMark",0);y(this,"inputCodec",null);y(this,"playerEntities",new Map);y(this,"hostAlloc",(e,n)=>{let r=this.memory;if(!r)throw new Error("Memory not initialized for host_alloc");let i=this.heapPos+n-1&~(n-1),o=i+e,s=r.buffer.byteLength;if(o>s){let c=Math.ceil((o-s)/Te);if(this.options.debug){let u=(s+c*Te)/1048576;console.warn(`[mt] WASM memory grew to ${u.toFixed(1)}MB`)}r.grow(c)}return new Uint8Array(r.buffer).fill(0,i,o),this.heapPos=o,i});this.options=e}markArenaReset(){this.arenaResetMark=this.heapPos}resetArena(){this.heapPos=this.arenaResetMark}async init(){if(this.stateSize=this.options.stateSchema.totalSize,!this.stateSize)throw new Error("State schema total size is required");this.options.inputSchema&&(this.inputCodec=br(this.options.inputSchema));let e=4*1024*1024,n=this.options.plugins??(this.options.moduleBytes?[{name:"main",wasmBytes:this.options.moduleBytes,reservedBytes:e}]:[]);for(let c of n)if(typeof c.reservedBytes!="number"||c.reservedBytes<=0)throw new Error(`Plugin "${c.name}" requires reservedBytes > 0`);let r=n.reduce((c,u)=>{let f=Math.ceil(u.reservedBytes/Te)*Te;return c+f},0),i=1024*1024*5,o=this.stateSize+i+r,s=Math.ceil(o/Te);this.memory=new WebAssembly.Memory({initial:s}),this.heapPos=r;let a={env:{memory:this.memory,host_alloc:this.hostAlloc,abort:()=>{throw new Error("WASM abort called")}}};for(let c of n){let u=c.wasmBytes.slice().buffer,f=await WebAssembly.compile(u),d=await WebAssembly.instantiate(f,a);if(typeof d.exports.apply!="function")throw new Error(`Plugin "${c.name}" missing required apply() export`);this.plugins.push({name:c.name,instance:d,exports:d.exports})}return this.statePtr=this.hostAlloc(this.stateSize,8),this.markArenaReset(),this}findPlayerEntity(e,n){let r=this.options.stateSchema,i=this.playerEntities.get(n);if(i!==void 0){if(Ar(r,e,i,"Player"))return i;this.playerEntities.delete(n)}for(let o of Br(r,e,["Player"]))if(Ir(r,e,o,"Player","index")===n)return this.playerEntities.set(n,o),o}spawnPlayerEntity(e,n){let r=this.options.stateSchema,i=Tr(r,e);return vr(r,e,i,"Player"),w(r,e,i,"Player","index",n),this.playerEntities.set(n,i),i}findOrSpawnPlayerEntity(e,n){let r=this.findPlayerEntity(e,n);return r!==void 0?r:this.spawnPlayerEntity(e,n)}resetPlayerControls(e,n){let r=this.options.stateSchema;if(this.inputCodec)for(let i of this.inputCodec.schema.controls){if(i.retain==="always")continue;let o=i.field.type,s=i.name;if(o==="vec2")w(r,e,n,"Player",`${s}_x`,0),w(r,e,n,"Player",`${s}_y`,0);else if(o==="vec3")w(r,e,n,"Player",`${s}_x`,0),w(r,e,n,"Player",`${s}_y`,0),w(r,e,n,"Player",`${s}_z`,0);else if(o==="quat")w(r,e,n,"Player",`${s}_x`,0),w(r,e,n,"Player",`${s}_y`,0),w(r,e,n,"Player",`${s}_z`,0),w(r,e,n,"Player",`${s}_w`,1);else if(o.startsWith("flags"))w(r,e,n,"Player",s,0);else if(o.includes("[")){let a=o.match(/\\[(\\d+)\\]/);if(a?.[1]){let c=parseInt(a[1],10);for(let u=0;u<c;u++)w(r,e,n,"Player",s,0,u)}}else w(r,e,n,"Player",s,o==="bool"?!1:0)}}writeControlsToPlayer(e,n,r){let i=this.options.stateSchema,o=this.options.inputSchema;if(o)for(let s of o.controls){if(!r.hasControl(s.name))continue;let a=s.type,c=s.name;if(a==="vec2"){let[u,f]=r.getVec2(c);w(i,e,n,"Player",`${c}_x`,u),w(i,e,n,"Player",`${c}_y`,f)}else if(a==="vec3"){let[u,f,d]=r.getVec3(c);w(i,e,n,"Player",`${c}_x`,u),w(i,e,n,"Player",`${c}_y`,f),w(i,e,n,"Player",`${c}_z`,d)}else if(a==="quat"){let[u,f,d,g]=r.getQuat(c);w(i,e,n,"Player",`${c}_x`,u),w(i,e,n,"Player",`${c}_y`,f),w(i,e,n,"Player",`${c}_z`,d),w(i,e,n,"Player",`${c}_w`,g)}else if(a.startsWith("flags")){let u=r.getControl(c);w(i,e,n,"Player",c,u)}else if(a.includes("[")){let u=r.getControl(c);for(let f=0;f<u.length;f++)w(i,e,n,"Player",c,u[f],f)}else{let u=r.getControl(c);w(i,e,n,"Player",c,u)}}}pushCommands(e,n,r){let i=this.options.stateSchema,o=r.getCommands();for(let s of o){let a=s.name.charAt(0).toUpperCase()+s.name.slice(1)+"Command",c={player_index:n};for(let[u,f]of Object.entries(s))u!=="name"&&(Array.isArray(f)?f.length===2?(c[`${u}_x`]=f[0],c[`${u}_y`]=f[1]):f.length===3?(c[`${u}_x`]=f[0],c[`${u}_y`]=f[1],c[`${u}_z`]=f[2]):f.length===4&&(c[`${u}_x`]=f[0],c[`${u}_y`]=f[1],c[`${u}_z`]=f[2],c[`${u}_w`]=f[3]):c[u]=f);$r(i,e,a,c)}}clearCommandEvents(e){let n=this.options.stateSchema,r=this.options.inputSchema;if(!(!r||!n.events))for(let i of r.commands){let o=i.name.charAt(0).toUpperCase()+i.name.slice(1)+"Command";n.eventByName?.has(o)&&_r(n,e,o)}}decodePayloadsToState(e,n){if(this.inputCodec)for(let r=0;r<n.length;r++){let i=n[r];if(i===void 0)continue;let o=this.findOrSpawnPlayerEntity(e,r);if(this.resetPlayerControls(e,o),i.length===0)continue;let s=this.inputCodec.decode(i);this.writeControlsToPlayer(e,o,s),this.pushCommands(e,r,s)}}transition(e,n){let r=this.stateSize;if(r===null||e.length!==r)throw new Error(`State size mismatch: expected ${this.stateSize}, got ${e.length}`);if(this.plugins.length===0||n.length===0)return e.slice();let i=this.memory;if(!i)throw new Error("WASM memory not initialized");let o=this.statePtr;if(o===null||o<0)throw new Error("State pointer not initialized");let s=new Uint8Array(i.buffer);s.set(e,o);for(let a of n){let c=new Uint8Array(i.buffer,o,r);wr(c,a.tick),this.clearCommandEvents(c),this.decodePayloadsToState(c,a.payloads);for(let u of this.plugins)u.exports.apply(o),s=new Uint8Array(i.buffer)}return s.slice(o,o+r)}close(){}getStateSize(){let e=this.stateSize;if(e===null||e<0)throw new Error("State size not initialized");return e}};var W=class{constructor(e=1e3,n=1024){y(this,"buffer");y(this,"windowMs");y(this,"head",0);y(this,"tail",0);y(this,"size",0);this.windowMs=e,this.buffer=new Float64Array(n)}inc(){let e=performance.now();this.buffer[this.head]=e,this.head=(this.head+1)%this.buffer.length,this.size<this.buffer.length?this.size++:this.tail=(this.tail+1)%this.buffer.length}count(e=performance.now()){let n=e-this.windowMs;for(;this.size>0&&!(this.buffer[this.tail]>=n);)this.tail=(this.tail+1)%this.buffer.length,this.size--;return this.size}rate(e=performance.now()){return this.count(e)*(1e3/this.windowMs)}};function so(t){return("moduleBytes"in t||"plugins"in t)&&"stateSchema"in t}function ao(t,e){for(let n=t.length-1;n>=0;n--)if(e(t[n]))return n;return-1}var ct=class{constructor(e){y(this,"debug");y(this,"stateSchema");y(this,"inputs",null);y(this,"cache");y(this,"executor",null);y(this,"genesisStateId");y(this,"options");y(this,"ticking",!1);y(this,"tickGraceMs");y(this,"tickLag");y(this,"maxBatchSize");y(this,"currentState");y(this,"currentTick");y(this,"currentNodeId");y(this,"prevOnStateUpdateState",null);y(this,"onStateUpdate");y(this,"syncCheckpoint");y(this,"stateHistory",[]);y(this,"maxHistory",64);y(this,"stats");y(this,"loop",()=>{this._loop().catch(co)});y(this,"_loop",async()=>{if(this.ticking)try{let e=await this.tick();if(this.onStateUpdate&&this.currentState!==this.prevOnStateUpdateState&&(this.onStateUpdate(this.currentState),this.prevOnStateUpdateState=this.currentState,this.stats.updates.inc()),e.rolledBack&&this.stats.rollbacks.inc(),e.ticksComputed>0)for(let n=0;n<e.ticksComputed;n++)this.stats.executions.inc()}catch(e){console.error("Error in tick loop:",e)}finally{setTimeout(this.loop,this.tickGraceMs)}});e.log&&(this.inputs=e.log),this.debug=e.debug??!1,this.options=e,this.stateSchema=e.stateSchema,this.cache=e.cache??new st,this.genesisStateId=Ot(e.genesisHash),this.tickGraceMs=e.tickGraceMs??10,this.tickLag=e.tickLag??1,this.maxBatchSize=e.maxBatchSize??200,this.stats={rollbacks:new W,executions:new W,updates:new W,cacheHits:new W,cacheMisses:new W},this.currentState=Er(this.stateSchema,e.genesisHash,e.tickRate),this.currentNodeId=null,this.syncCheckpoint=null,this.currentTick=null,this.cache.store(this.currentState)}setLog(e){this.inputs=lt(e)}setOnStateUpdate(e){e===null&&(this.prevOnStateUpdateState=null),this.onStateUpdate=e}async init(){if(!this.inputs)throw new Error("Rollback.init() called before log was configured. Call setLog() first or pass log in options.");let e=this.options.executor;if(so(e)){let r=new at(e);await r.init(),this.executor=r}else this.executor=e;if((await this.tick(0)).ticksComputed===0||this.currentTick===null)throw new Error("Failed to record genesis snapshot");return this.options.disableTicking||(this.ticking=!0,this.loop()),this.getState()}async tick(e){if(!this.inputs)throw new Error("Rollback.tick() called before log was configured. Call setLog() and init() first.");let n=await this.inputs.getTicksAfter(this.currentNodeId,{limit:this.maxBatchSize,lag:this.tickLag});if(e&&(n=n.filter(a=>a.tick<=e)),n.length===0)return{state:this.currentState,tick:this.currentTick,nodeId:this.currentNodeId??"",rolledBack:!1,ticksComputed:0};let r=!1,i=null;this.currentTick!==null&&n[0].tick<this.currentTick&&(r=!0,i=this.currentTick,this.rollbackTo(n[0]));let o=n.filter(a=>this.currentTick===null||a.tick>this.currentTick);if(o.length===0)return this.currentNodeId=n[n.length-1].id,{state:this.currentState,tick:this.currentTick,nodeId:this.currentNodeId,rolledBack:r,ticksComputed:0};let s=this.processTicks(o,r,i);return{state:this.currentState,tick:this.currentTick,nodeId:this.currentNodeId??"",rolledBack:r,ticksComputed:s}}async getStats(){return{rollbacks:this.stats.rollbacks.rate(),executions:this.stats.executions.rate(),updates:this.stats.updates.rate(),cacheHits:this.stats.cacheHits.rate(),cacheMisses:this.stats.cacheMisses.rate()}}processTicks(e,n=!1,r=null){if(!this.executor)throw new Error("Executor not initialized");let i=0,o=0;for(let u=0;u<e.length;u++){let f=e[u],d=Qe(f.payloads),g=this.cache.getCached(this.currentState,f.tick,d);if(g)this.currentState=g,this.currentTick=f.tick,this.currentNodeId=f.id,o=u+1,f.sync&&this.updateSyncCheckpoint(f);else break}if(n&&r!==null&&o>0)for(let u=0;u<o;u++)e[u].tick<=r&&this.stats.cacheHits.inc();let s=e.slice(o);if(s.length===0)return 0;let a=ao(s,u=>u.sync);if(a>=0){let u=s.slice(0,a+1),f=this.executor.transition(this.currentState,u),d=this.computeBatchStateId(this.currentState,u);$t(f,d);let g=u[u.length-1];this.currentState=f,this.currentTick=g.tick,this.currentNodeId=g.id,i+=u.length,this.cache.store(f),this.recordStateSnapshot(this.currentTick,this.currentNodeId,d),this.updateSyncCheckpoint(g)}let c=a>=0?s.slice(a+1):s;if(c.length>0){let u=this.executor.transition(this.currentState,c),f=this.computeBatchStateId(this.currentState,c);$t(u,f);let d=c[c.length-1];this.currentState=u,this.currentTick=d.tick,this.currentNodeId=d.id,i+=c.length,this.cache.store(u),this.recordStateSnapshot(this.currentTick,this.currentNodeId,f)}if(n&&r!==null)for(let u of s)u.tick<=r&&this.stats.cacheMisses.inc();return i}computeBatchStateId(e,n){let r=pe(e);for(let i of n)r=Sr(r,i.tick,i.payloads);return r}getState(){return this.currentState.slice()}getTick(){return this.currentTick}reset(){this.currentTick=0,this.currentNodeId=null,this.syncCheckpoint=null}close(){this.ticking=!1,this.setOnStateUpdate(null),this.executor&&(this.executor.close(),this.executor=null)}rollbackTo(e){if(this.syncCheckpoint&&this.syncCheckpoint.tick>=e.tick){this.currentState=this.syncCheckpoint.state.slice(),this.currentTick=this.syncCheckpoint.tick,this.currentNodeId=this.syncCheckpoint.nodeId;return}if(this.syncCheckpoint&&this.syncCheckpoint.tick<e.tick){this.currentState=this.syncCheckpoint.state.slice(),this.currentTick=this.syncCheckpoint.tick,this.currentNodeId=this.syncCheckpoint.nodeId;return}let n=e.tick-1,r=this.findSnapshotAtOrBefore(n);if(r){let o=this.cache.getByStateId(r.stateId);if(o){this.currentState=o,this.currentTick=r.tick,this.currentNodeId=r.nodeId;return}}let i=this.cache.getByStateId(this.genesisStateId);if(i){this.currentState=i,this.currentTick=0,this.currentNodeId=null;return}}updateSyncCheckpoint(e){this.syncCheckpoint={state:this.currentState.slice(),tick:e.tick,nodeId:e.id}}recordStateSnapshot(e,n,r){this.stateHistory.push({tick:e,nodeId:n,stateId:r.slice()}),this.stateHistory.length>this.maxHistory&&this.stateHistory.shift()}findSnapshotAtOrBefore(e){for(let n=this.stateHistory.length-1;n>=0;n--){let r=this.stateHistory[n];if(r.tick<=e)return r}return null}};function co(t){console.warn("rollback unexpected:",t)}Be(ct);var Ga=null;globalThis.onerror=t=>(console.error("\\u{1F534} FATAL ROLLBACK WORKER ERROR (Uncaught Exception):",t),!0);export{Ga as default};\n/*! Bundled license information:\n\ncomlink/dist/esm/comlink.mjs:\n (**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n *)\n\n@noble/secp256k1/index.js:\n (*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) *)\n\n@noble/hashes/esm/utils.js:\n (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)\n*/\n';
|
|
6401
|
+
var workerCode = 'var Nr=Object.defineProperty;var zr=(t,e,n)=>e in t?Nr(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var y=(t,e,n)=>zr(t,typeof e!="symbol"?e+"":e,n);var Nt=Symbol("Comlink.proxy"),Rr=Symbol("Comlink.endpoint"),Hr=Symbol("Comlink.releaseProxy"),ft=Symbol("Comlink.finalizer"),Ue=Symbol("Comlink.thrown"),zt=t=>typeof t=="object"&&t!==null||typeof t=="function",Lr={canHandle:t=>zt(t)&&t[Nt],serialize(t){let{port1:e,port2:n}=new MessageChannel;return Pe(t,e),[n,[n]]},deserialize(t){return t.start(),dt(t)}},Vr={canHandle:t=>zt(t)&&Ue in t,serialize({value:t}){let e;return t instanceof Error?e={isError:!0,value:{message:t.message,name:t.name,stack:t.stack}}:e={isError:!1,value:t},[e,[]]},deserialize(t){throw t.isError?Object.assign(new Error(t.value.message),t.value):t.value}},Rt=new Map([["proxy",Lr],["throw",Vr]]);function Gr(t,e){for(let n of t)if(e===n||n==="*"||n instanceof RegExp&&n.test(e))return!0;return!1}function Pe(t,e=globalThis,n=["*"]){e.addEventListener("message",function r(i){if(!i||!i.data)return;if(!Gr(n,i.origin)){console.warn(`Invalid origin \'${i.origin}\' for comlink proxy`);return}let{id:o,type:s,path:a}=Object.assign({path:[]},i.data),u=(i.data.argumentList||[]).map(W),c;try{let f=a.slice(0,-1).reduce((g,S)=>g[S],t),d=a.reduce((g,S)=>g[S],t);switch(s){case"GET":c=d;break;case"SET":f[a.slice(-1)[0]]=W(i.data.value),c=!0;break;case"APPLY":c=d.apply(f,u);break;case"CONSTRUCT":{let g=new d(...u);c=jr(g)}break;case"ENDPOINT":{let{port1:g,port2:S}=new MessageChannel;Pe(t,S),c=Wr(g,[g])}break;case"RELEASE":c=void 0;break;default:return}}catch(f){c={value:f,[Ue]:0}}Promise.resolve(c).catch(f=>({value:f,[Ue]:0})).then(f=>{let[d,g]=Be(f);e.postMessage(Object.assign(Object.assign({},d),{id:o}),g),s==="RELEASE"&&(e.removeEventListener("message",r),Ht(e),ft in t&&typeof t[ft]=="function"&&t[ft]())}).catch(f=>{let[d,g]=Be({value:new TypeError("Unserializable return value"),[Ue]:0});e.postMessage(Object.assign(Object.assign({},d),{id:o}),g)})}),e.start&&e.start()}function Zr(t){return t.constructor.name==="MessagePort"}function Ht(t){Zr(t)&&t.close()}function dt(t,e){let n=new Map;return t.addEventListener("message",function(i){let{data:o}=i;if(!o||!o.id)return;let s=n.get(o.id);if(s)try{s(o)}finally{n.delete(o.id)}}),lt(t,n,[],e)}function ve(t){if(t)throw new Error("Proxy has been released and is not useable")}function Lt(t){return ne(t,new Map,{type:"RELEASE"}).then(()=>{Ht(t)})}var Ce=new WeakMap,Ie="FinalizationRegistry"in globalThis&&new FinalizationRegistry(t=>{let e=(Ce.get(t)||0)-1;Ce.set(t,e),e===0&&Lt(t)});function qr(t,e){let n=(Ce.get(e)||0)+1;Ce.set(e,n),Ie&&Ie.register(t,e,t)}function Kr(t){Ie&&Ie.unregister(t)}function lt(t,e,n=[],r=function(){}){let i=!1,o=new Proxy(r,{get(s,a){if(ve(i),a===Hr)return()=>{Kr(o),Lt(t),e.clear(),i=!0};if(a==="then"){if(n.length===0)return{then:()=>o};let u=ne(t,e,{type:"GET",path:n.map(c=>c.toString())}).then(W);return u.then.bind(u)}return lt(t,e,[...n,a])},set(s,a,u){ve(i);let[c,f]=Be(u);return ne(t,e,{type:"SET",path:[...n,a].map(d=>d.toString()),value:c},f).then(W)},apply(s,a,u){ve(i);let c=n[n.length-1];if(c===Rr)return ne(t,e,{type:"ENDPOINT"}).then(W);if(c==="bind")return lt(t,e,n.slice(0,-1));let[f,d]=Mt(u);return ne(t,e,{type:"APPLY",path:n.map(g=>g.toString()),argumentList:f},d).then(W)},construct(s,a){ve(i);let[u,c]=Mt(a);return ne(t,e,{type:"CONSTRUCT",path:n.map(f=>f.toString()),argumentList:u},c).then(W)}});return qr(o,t),o}function Yr(t){return Array.prototype.concat.apply([],t)}function Mt(t){let e=t.map(Be);return[e.map(n=>n[0]),Yr(e.map(n=>n[1]))]}var Vt=new WeakMap;function Wr(t,e){return Vt.set(t,e),t}function jr(t){return Object.assign(t,{[Nt]:!0})}function Be(t){for(let[e,n]of Rt)if(n.canHandle(t)){let[r,i]=n.serialize(t);return[{type:"HANDLER",name:e,value:r},i]}return[{type:"RAW",value:t},Vt.get(t)||[]]}function W(t){switch(t.type){case"HANDLER":return Rt.get(t.name).deserialize(t.value);case"RAW":return t.value}}function ne(t,e,n,r){return new Promise(i=>{let o=Xr();e.set(o,i),t.start&&t.start(),t.postMessage(Object.assign({id:o},n),r)})}function Xr(){return new Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}var Jr={p:0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2fn,n:0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141n,h:1n,a:0n,b:7n,Gx:0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798n,Gy:0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8n},{p:X,n:yt,Gx:Qr,Gy:ei,b:jt}=Jr,re=32,pt=64,U=(t="")=>{throw new Error(t)},Xt=t=>typeof t=="bigint",Jt=t=>typeof t=="string",ti=t=>t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array",me=(t,e)=>!ti(t)||typeof e=="number"&&e>0&&t.length!==e?U("Uint8Array expected"):t,Me=t=>new Uint8Array(t),ni=t=>Uint8Array.from(t),Qt=(t,e)=>t.toString(16).padStart(e,"0"),gt=t=>Array.from(me(t)).map(e=>Qt(e,2)).join(""),L={_0:48,_9:57,A:65,F:70,a:97,f:102},Gt=t=>{if(t>=L._0&&t<=L._9)return t-L._0;if(t>=L.A&&t<=L.F)return t-(L.A-10);if(t>=L.a&&t<=L.f)return t-(L.a-10)},bt=t=>{let e="hex invalid";if(!Jt(t))return U(e);let n=t.length,r=n/2;if(n%2)return U(e);let i=Me(r);for(let o=0,s=0;o<r;o++,s+=2){let a=Gt(t.charCodeAt(s)),u=Gt(t.charCodeAt(s+1));if(a===void 0||u===void 0)return U(e);i[o]=a*16+u}return i},xt=(t,e)=>me(Jt(t)?bt(t):ni(me(t)),e),en=()=>globalThis?.crypto,ri=()=>en()?.subtle??U("crypto.subtle must be defined"),$e=(...t)=>{let e=Me(t.reduce((r,i)=>r+me(i).length,0)),n=0;return t.forEach(r=>{e.set(r,n),n+=r.length}),e},ii=(t=re)=>en().getRandomValues(Me(t)),De=BigInt,he=(t,e,n,r="bad number: out of range")=>Xt(t)&&e<=t&&t<n?t:U(r),h=(t,e=X)=>{let n=t%e;return n>=0n?n:e+n};var tn=(t,e)=>{(t===0n||e<=0n)&&U("no inverse n="+t+" mod="+e);let n=h(t,e),r=e,i=0n,o=1n,s=1n,a=0n;for(;n!==0n;){let u=r/n,c=r%n,f=i-s*u,d=o-a*u;r=n,n=c,i=s,o=a,s=f,a=d}return r===1n?h(i,e):U("no inverse")};var Zt=t=>t instanceof J?t:U("Point expected"),nn=t=>h(h(t*t)*t+jt),qt=t=>he(t,0n,X),_e=t=>he(t,1n,X),oi=t=>he(t,1n,yt),mt=t=>(t&1n)===0n,rn=t=>Uint8Array.of(t),si=t=>rn(mt(t)?2:3),ai=t=>{let e=nn(_e(t)),n=1n;for(let r=e,i=(X+1n)/4n;i>0n;i>>=1n)i&1n&&(n=n*r%X),r=r*r%X;return h(n*n)===e?n:U("sqrt invalid")},N=class N{constructor(e,n,r){y(this,"px");y(this,"py");y(this,"pz");this.px=qt(e),this.py=_e(n),this.pz=qt(r),Object.freeze(this)}static fromBytes(e){me(e);let n,r=e[0],i=e.subarray(1),o=Kt(i,0,re),s=e.length;if(s===re+1&&[2,3].includes(r)){let a=ai(o),u=mt(a);mt(De(r))!==u&&(a=h(-a)),n=new N(o,a,1n)}return s===pt+1&&r===4&&(n=new N(o,Kt(i,re,pt),1n)),n?n.assertValidity():U("bad point: not on curve")}equals(e){let{px:n,py:r,pz:i}=this,{px:o,py:s,pz:a}=Zt(e),u=h(n*a),c=h(o*i),f=h(r*a),d=h(s*i);return u===c&&f===d}is0(){return this.equals(j)}negate(){return new N(this.px,h(-this.py),this.pz)}double(){return this.add(this)}add(e){let{px:n,py:r,pz:i}=this,{px:o,py:s,pz:a}=Zt(e),u=0n,c=jt,f=0n,d=0n,g=0n,S=h(c*3n),T=h(n*o),A=h(r*s),D=h(i*a),te=h(n+r),v=h(o+s);te=h(te*v),v=h(T+A),te=h(te-v),v=h(n+i);let M=h(o+a);return v=h(v*M),M=h(T+D),v=h(v-M),M=h(r+i),f=h(s+a),M=h(M*f),f=h(A+D),M=h(M-f),g=h(u*v),f=h(S*D),g=h(f+g),f=h(A-g),g=h(A+g),d=h(f*g),A=h(T+T),A=h(A+T),D=h(u*D),v=h(S*v),A=h(A+D),D=h(T-D),D=h(u*D),v=h(v+D),T=h(A*v),d=h(d+T),T=h(M*v),f=h(te*f),f=h(f-T),T=h(te*A),g=h(M*g),g=h(g+T),new N(f,d,g)}multiply(e,n=!0){if(!n&&e===0n)return j;if(oi(e),e===1n)return this;if(this.equals(ie))return mi(e).p;let r=j,i=ie;for(let o=this;e>0n;o=o.double(),e>>=1n)e&1n?r=r.add(o):n&&(i=i.add(o));return r}toAffine(){let{px:e,py:n,pz:r}=this;if(this.equals(j))return{x:0n,y:0n};if(r===1n)return{x:e,y:n};let i=tn(r,X);return h(r*i)!==1n&&U("inverse invalid"),{x:h(e*i),y:h(n*i)}}assertValidity(){let{x:e,y:n}=this.toAffine();return _e(e),_e(n),h(n*n)===nn(e)?this:U("bad point: not on curve")}toBytes(e=!0){let{x:n,y:r}=this.assertValidity().toAffine(),i=Fe(n);return e?$e(si(r),i):$e(rn(4),i,Fe(r))}static fromAffine(e){let{x:n,y:r}=e;return n===0n&&r===0n?j:new N(n,r,1n)}toHex(e){return gt(this.toBytes(e))}static fromPrivateKey(e){return ie.multiply(ui(e))}static fromHex(e){return N.fromBytes(xt(e))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}toRawBytes(e){return this.toBytes(e)}};y(N,"BASE"),y(N,"ZERO");var J=N,ie=new J(Qr,ei,1n),j=new J(0n,1n,0n);J.BASE=ie;J.ZERO=j;var Ne=t=>De("0x"+(gt(t)||"0")),Kt=(t,e,n)=>Ne(t.subarray(e,n)),ci=2n**256n,Fe=t=>bt(Qt(he(t,0n,ci),pt)),ui=t=>{let e=Xt(t)?t:Ne(xt(t,re));return he(e,1n,yt,"private key invalid 3")};var fi=t=>{t=xt(t),(t.length<re+8||t.length>1024)&&U("expected 40-1024b");let e=h(Ne(t),yt-1n);return Fe(e+1n)};var li="SHA-256",wt={hexToBytes:bt,bytesToHex:gt,concatBytes:$e,bytesToNumberBE:Ne,numberToBytesBE:Fe,mod:h,invert:tn,hmacSha256Async:async(t,...e)=>{let n=ri(),r="HMAC",i=await n.importKey("raw",t,{name:r,hash:{name:li}},!1,["sign"]);return Me(await n.sign(r,i,$e(...e)))},hmacSha256Sync:void 0,hashToPrivateKey:fi,randomBytes:ii};var Oe=8,di=256,on=Math.ceil(di/Oe)+1,ht=2**(Oe-1),pi=()=>{let t=[],e=ie,n=e;for(let r=0;r<on;r++){n=e,t.push(n);for(let i=1;i<ht;i++)n=n.add(e),t.push(n);e=n.double()}return t},Yt,Wt=(t,e)=>{let n=e.negate();return t?n:e},mi=t=>{let e=Yt||(Yt=pi()),n=j,r=ie,i=2**Oe,o=i,s=De(i-1),a=De(Oe);for(let u=0;u<on;u++){let c=Number(t&s);t>>=a,c>ht&&(c-=o,t+=1n);let f=u*ht,d=f,g=f+Math.abs(c)-1,S=u%2!==0,T=c<0;c===0?r=r.add(Wt(S,e[d])):n=n.add(Wt(T,e[g]))}return{p:n,f:r}};function yi(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function sn(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("positive integer expected, got "+t)}function se(t,...e){if(!yi(t))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(t.length))throw new Error("Uint8Array expected of length "+e+", got length="+t.length)}function an(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");sn(t.outputLen),sn(t.blockLen)}function ae(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function cn(t,e){se(t);let n=e.outputLen;if(t.length<n)throw new Error("digestInto() expects output buffer of length at least "+n)}function Q(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function ze(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function F(t,e){return t<<32-e|t>>>e}function gi(t){if(typeof t!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(t))}function ye(t){return typeof t=="string"&&(t=gi(t)),se(t),t}var oe=class{};function un(t){let e=r=>t().update(ye(r)).digest(),n=t();return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=()=>t(),e}function bi(t,e,n,r){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,n,r);let i=BigInt(32),o=BigInt(4294967295),s=Number(n>>i&o),a=Number(n&o),u=r?4:0,c=r?0:4;t.setUint32(e+u,s,r),t.setUint32(e+c,a,r)}function fn(t,e,n){return t&e^~t&n}function ln(t,e,n){return t&e^t&n^e&n}var Re=class extends oe{constructor(e,n,r,i){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=i,this.buffer=new Uint8Array(e),this.view=ze(this.buffer)}update(e){ae(this),e=ye(e),se(e);let{view:n,buffer:r,blockLen:i}=this,o=e.length;for(let s=0;s<o;){let a=Math.min(i-this.pos,o-s);if(a===i){let u=ze(e);for(;i<=o-s;s+=i)this.process(u,s);continue}r.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===i&&(this.process(n,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){ae(this),cn(e,this),this.finished=!0;let{buffer:n,view:r,blockLen:i,isLE:o}=this,{pos:s}=this;n[s++]=128,Q(this.buffer.subarray(s)),this.padOffset>i-s&&(this.process(r,0),s=0);for(let d=s;d<i;d++)n[d]=0;bi(r,i-8,BigInt(this.length*8),o),this.process(r,0);let a=ze(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,f=this.get();if(c>f.length)throw new Error("_sha2: outputLen bigger than state");for(let d=0;d<c;d++)a.setUint32(4*d,f[d],o)}digest(){let{buffer:e,outputLen:n}=this;this.digestInto(e);let r=e.slice(0,n);return this.destroy(),r}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:n,buffer:r,length:i,finished:o,destroyed:s,pos:a}=this;return e.destroyed=s,e.finished=o,e.length=i,e.pos=a,i%n&&e.buffer.set(r),e}clone(){return this._cloneInto()}},V=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var xi=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Z=new Uint32Array(64),He=class extends Re{constructor(e=32){super(64,e,8,!1),this.A=V[0]|0,this.B=V[1]|0,this.C=V[2]|0,this.D=V[3]|0,this.E=V[4]|0,this.F=V[5]|0,this.G=V[6]|0,this.H=V[7]|0}get(){let{A:e,B:n,C:r,D:i,E:o,F:s,G:a,H:u}=this;return[e,n,r,i,o,s,a,u]}set(e,n,r,i,o,s,a,u){this.A=e|0,this.B=n|0,this.C=r|0,this.D=i|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,n){for(let d=0;d<16;d++,n+=4)Z[d]=e.getUint32(n,!1);for(let d=16;d<64;d++){let g=Z[d-15],S=Z[d-2],T=F(g,7)^F(g,18)^g>>>3,A=F(S,17)^F(S,19)^S>>>10;Z[d]=A+Z[d-7]+T+Z[d-16]|0}let{A:r,B:i,C:o,D:s,E:a,F:u,G:c,H:f}=this;for(let d=0;d<64;d++){let g=F(a,6)^F(a,11)^F(a,25),S=f+g+fn(a,u,c)+xi[d]+Z[d]|0,A=(F(r,2)^F(r,13)^F(r,22))+ln(r,i,o)|0;f=c,c=u,u=a,a=s+S|0,s=o,o=i,i=r,r=S+A|0}r=r+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,f=f+this.H|0,this.set(r,i,o,s,a,u,c,f)}roundClean(){Q(Z)}destroy(){this.set(0,0,0,0,0,0,0,0),Q(this.buffer)}};var ge=un(()=>new He);var St=ge;var Le=class extends oe{constructor(e,n){super(),this.finished=!1,this.destroyed=!1,an(e);let r=ye(n);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let i=this.blockLen,o=new Uint8Array(i);o.set(r.length>i?e.create().update(r).digest():r);for(let s=0;s<o.length;s++)o[s]^=54;this.iHash.update(o),this.oHash=e.create();for(let s=0;s<o.length;s++)o[s]^=106;this.oHash.update(o),Q(o)}update(e){return ae(this),this.iHash.update(e),this}digestInto(e){ae(this),se(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));let{oHash:n,iHash:r,finished:i,destroyed:o,blockLen:s,outputLen:a}=this;return e=e,e.finished=i,e.destroyed=o,e.blockLen=s,e.outputLen=a,e.oHash=n._cloneInto(e.oHash),e.iHash=r._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},Et=(t,e,n)=>new Le(t,e).update(n).digest();Et.create=(t,e)=>new Le(t,e);var wi=["string","number","bigint","symbol"],Si=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","HTMLElement","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function dn(t){if(t===null)return"null";if(t===void 0)return"undefined";if(t===!0||t===!1)return"boolean";let e=typeof t;if(wi.includes(e))return e;if(e==="function")return"Function";if(Array.isArray(t))return"Array";if(Ei(t))return"Buffer";let n=Ti(t);return n||"Object"}function Ei(t){return t&&t.constructor&&t.constructor.isBuffer&&t.constructor.isBuffer.call(null,t)}function Ti(t){let e=Object.prototype.toString.call(t).slice(8,-1);if(Si.includes(e))return e}var l=class{constructor(e,n,r){this.major=e,this.majorEncoded=e<<5,this.name=n,this.terminal=r}toString(){return`Type[${this.major}].${this.name}`}compare(e){return this.major<e.major?-1:this.major>e.major?1:0}};l.uint=new l(0,"uint",!0);l.negint=new l(1,"negint",!0);l.bytes=new l(2,"bytes",!0);l.string=new l(3,"string",!0);l.array=new l(4,"array",!1);l.map=new l(5,"map",!1);l.tag=new l(6,"tag",!1);l.float=new l(7,"float",!0);l.false=new l(7,"false",!0);l.true=new l(7,"true",!0);l.null=new l(7,"null",!0);l.undefined=new l(7,"undefined",!0);l.break=new l(7,"break",!0);var m=class{constructor(e,n,r){this.type=e,this.value=n,this.encodedLength=r,this.encodedBytes=void 0,this.byteValue=void 0}toString(){return`Token[${this.type}].${this.value}`}};var ce=globalThis.process&&!globalThis.process.browser&&globalThis.Buffer&&typeof globalThis.Buffer.isBuffer=="function",ki=new TextDecoder,Ai=new TextEncoder;function Ve(t){return ce&&globalThis.Buffer.isBuffer(t)}function Tt(t){return t instanceof Uint8Array?Ve(t)?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t:Uint8Array.from(t)}var yn=ce?(t,e,n)=>n-e>64?globalThis.Buffer.from(t.subarray(e,n)).toString("utf8"):mn(t,e,n):(t,e,n)=>n-e>64?ki.decode(t.subarray(e,n)):mn(t,e,n),gn=ce?t=>t.length>64?globalThis.Buffer.from(t):pn(t):t=>t.length>64?Ai.encode(t):pn(t),z=t=>Uint8Array.from(t),ue=ce?(t,e,n)=>Ve(t)?new Uint8Array(t.subarray(e,n)):t.slice(e,n):(t,e,n)=>t.slice(e,n),bn=ce?(t,e)=>(t=t.map(n=>n instanceof Uint8Array?n:globalThis.Buffer.from(n)),Tt(globalThis.Buffer.concat(t,e))):(t,e)=>{let n=new Uint8Array(e),r=0;for(let i of t)r+i.length>n.length&&(i=i.subarray(0,n.length-r)),n.set(i,r),r+=i.length;return n},xn=ce?t=>globalThis.Buffer.allocUnsafe(t):t=>new Uint8Array(t);function Ge(t,e){if(Ve(t)&&Ve(e))return t.compare(e);for(let n=0;n<t.length;n++)if(t[n]!==e[n])return t[n]<e[n]?-1:1;return 0}function pn(t){let e=[],n=0;for(let r=0;r<t.length;r++){let i=t.charCodeAt(r);i<128?e[n++]=i:i<2048?(e[n++]=i>>6|192,e[n++]=i&63|128):(i&64512)===55296&&r+1<t.length&&(t.charCodeAt(r+1)&64512)===56320?(i=65536+((i&1023)<<10)+(t.charCodeAt(++r)&1023),e[n++]=i>>18|240,e[n++]=i>>12&63|128,e[n++]=i>>6&63|128,e[n++]=i&63|128):(e[n++]=i>>12|224,e[n++]=i>>6&63|128,e[n++]=i&63|128)}return e}function mn(t,e,n){let r=[];for(;e<n;){let i=t[e],o=null,s=i>239?4:i>223?3:i>191?2:1;if(e+s<=n){let a,u,c,f;switch(s){case 1:i<128&&(o=i);break;case 2:a=t[e+1],(a&192)===128&&(f=(i&31)<<6|a&63,f>127&&(o=f));break;case 3:a=t[e+1],u=t[e+2],(a&192)===128&&(u&192)===128&&(f=(i&15)<<12|(a&63)<<6|u&63,f>2047&&(f<55296||f>57343)&&(o=f));break;case 4:a=t[e+1],u=t[e+2],c=t[e+3],(a&192)===128&&(u&192)===128&&(c&192)===128&&(f=(i&15)<<18|(a&63)<<12|(u&63)<<6|c&63,f>65535&&f<1114112&&(o=f))}}o===null?(o=65533,s=1):o>65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|o&1023),r.push(o),e+=s}return vi(r)}var hn=4096;function vi(t){let e=t.length;if(e<=hn)return String.fromCharCode.apply(String,t);let n="",r=0;for(;r<e;)n+=String.fromCharCode.apply(String,t.slice(r,r+=hn));return n}var Ui=256,be=class{constructor(e=Ui){this.chunkSize=e,this.cursor=0,this.maxCursor=-1,this.chunks=[],this._initReuseChunk=null}reset(){this.cursor=0,this.maxCursor=-1,this.chunks.length&&(this.chunks=[]),this._initReuseChunk!==null&&(this.chunks.push(this._initReuseChunk),this.maxCursor=this._initReuseChunk.length-1)}push(e){let n=this.chunks[this.chunks.length-1];if(this.cursor+e.length<=this.maxCursor+1){let i=n.length-(this.maxCursor-this.cursor)-1;n.set(e,i)}else{if(n){let i=n.length-(this.maxCursor-this.cursor)-1;i<n.length&&(this.chunks[this.chunks.length-1]=n.subarray(0,i),this.maxCursor=this.cursor-1)}e.length<64&&e.length<this.chunkSize?(n=xn(this.chunkSize),this.chunks.push(n),this.maxCursor+=n.length,this._initReuseChunk===null&&(this._initReuseChunk=n),n.set(e,0)):(this.chunks.push(e),this.maxCursor+=e.length)}this.cursor+=e.length}toBytes(e=!1){let n;if(this.chunks.length===1){let r=this.chunks[0];e&&this.cursor>r.length/2?(n=this.cursor===r.length?r:r.subarray(0,this.cursor),this._initReuseChunk=null,this.chunks=[]):n=ue(r,0,this.cursor)}else n=bn(this.chunks,this.cursor);return e&&this.reset(),n}};var b="CBOR decode error:",kt="CBOR encode error:",xe=[];xe[23]=1;xe[24]=2;xe[25]=3;xe[26]=5;xe[27]=9;function G(t,e,n){if(t.length-e<n)throw new Error(`${b} not enough data for type`)}var E=[24,256,65536,4294967296,BigInt("18446744073709551616")];function C(t,e,n){G(t,e,1);let r=t[e];if(n.strict===!0&&r<E[0])throw new Error(`${b} integer encoded in more bytes than necessary (strict decode)`);return r}function I(t,e,n){G(t,e,2);let r=t[e]<<8|t[e+1];if(n.strict===!0&&r<E[1])throw new Error(`${b} integer encoded in more bytes than necessary (strict decode)`);return r}function B(t,e,n){G(t,e,4);let r=t[e]*16777216+(t[e+1]<<16)+(t[e+2]<<8)+t[e+3];if(n.strict===!0&&r<E[2])throw new Error(`${b} integer encoded in more bytes than necessary (strict decode)`);return r}function P(t,e,n){G(t,e,8);let r=t[e]*16777216+(t[e+1]<<16)+(t[e+2]<<8)+t[e+3],i=t[e+4]*16777216+(t[e+5]<<16)+(t[e+6]<<8)+t[e+7],o=(BigInt(r)<<BigInt(32))+BigInt(i);if(n.strict===!0&&o<E[3])throw new Error(`${b} integer encoded in more bytes than necessary (strict decode)`);if(o<=Number.MAX_SAFE_INTEGER)return Number(o);if(n.allowBigInt===!0)return o;throw new Error(`${b} integers outside of the safe integer range are not supported`)}function wn(t,e,n,r){return new m(l.uint,C(t,e+1,r),2)}function Sn(t,e,n,r){return new m(l.uint,I(t,e+1,r),3)}function En(t,e,n,r){return new m(l.uint,B(t,e+1,r),5)}function Tn(t,e,n,r){return new m(l.uint,P(t,e+1,r),9)}function _(t,e){return k(t,0,e.value)}function k(t,e,n){if(n<E[0]){let r=Number(n);t.push([e|r])}else if(n<E[1]){let r=Number(n);t.push([e|24,r])}else if(n<E[2]){let r=Number(n);t.push([e|25,r>>>8,r&255])}else if(n<E[3]){let r=Number(n);t.push([e|26,r>>>24&255,r>>>16&255,r>>>8&255,r&255])}else{let r=BigInt(n);if(r<E[4]){let i=[e|27,0,0,0,0,0,0,0],o=Number(r&BigInt(4294967295)),s=Number(r>>BigInt(32)&BigInt(4294967295));i[8]=o&255,o=o>>8,i[7]=o&255,o=o>>8,i[6]=o&255,o=o>>8,i[5]=o&255,i[4]=s&255,s=s>>8,i[3]=s&255,s=s>>8,i[2]=s&255,s=s>>8,i[1]=s&255,t.push(i)}else throw new Error(`${b} encountered BigInt larger than allowable range`)}}_.encodedSize=function(e){return k.encodedSize(e.value)};k.encodedSize=function(e){return e<E[0]?1:e<E[1]?2:e<E[2]?3:e<E[3]?5:9};_.compareTokens=function(e,n){return e.value<n.value?-1:e.value>n.value?1:0};function kn(t,e,n,r){return new m(l.negint,-1-C(t,e+1,r),2)}function An(t,e,n,r){return new m(l.negint,-1-I(t,e+1,r),3)}function vn(t,e,n,r){return new m(l.negint,-1-B(t,e+1,r),5)}var At=BigInt(-1),Un=BigInt(1);function Cn(t,e,n,r){let i=P(t,e+1,r);if(typeof i!="bigint"){let o=-1-i;if(o>=Number.MIN_SAFE_INTEGER)return new m(l.negint,o,9)}if(r.allowBigInt!==!0)throw new Error(`${b} integers outside of the safe integer range are not supported`);return new m(l.negint,At-BigInt(i),9)}function Ze(t,e){let n=e.value,r=typeof n=="bigint"?n*At-Un:n*-1-1;k(t,e.type.majorEncoded,r)}Ze.encodedSize=function(e){let n=e.value,r=typeof n=="bigint"?n*At-Un:n*-1-1;return r<E[0]?1:r<E[1]?2:r<E[2]?3:r<E[3]?5:9};Ze.compareTokens=function(e,n){return e.value<n.value?1:e.value>n.value?-1:0};function we(t,e,n,r){G(t,e,n+r);let i=ue(t,e+n,e+n+r);return new m(l.bytes,i,n+r)}function In(t,e,n,r){return we(t,e,1,n)}function Bn(t,e,n,r){return we(t,e,2,C(t,e+1,r))}function Pn(t,e,n,r){return we(t,e,3,I(t,e+1,r))}function _n(t,e,n,r){return we(t,e,5,B(t,e+1,r))}function $n(t,e,n,r){let i=P(t,e+1,r);if(typeof i=="bigint")throw new Error(`${b} 64-bit integer bytes lengths not supported`);return we(t,e,9,i)}function qe(t){return t.encodedBytes===void 0&&(t.encodedBytes=t.type===l.string?gn(t.value):t.value),t.encodedBytes}function fe(t,e){let n=qe(e);k(t,e.type.majorEncoded,n.length),t.push(n)}fe.encodedSize=function(e){let n=qe(e);return k.encodedSize(n.length)+n.length};fe.compareTokens=function(e,n){return Ii(qe(e),qe(n))};function Ii(t,e){return t.length<e.length?-1:t.length>e.length?1:Ge(t,e)}function Se(t,e,n,r,i){let o=n+r;G(t,e,o);let s=new m(l.string,yn(t,e+n,e+o),o);return i.retainStringBytes===!0&&(s.byteValue=ue(t,e+n,e+o)),s}function Dn(t,e,n,r){return Se(t,e,1,n,r)}function Fn(t,e,n,r){return Se(t,e,2,C(t,e+1,r),r)}function On(t,e,n,r){return Se(t,e,3,I(t,e+1,r),r)}function Mn(t,e,n,r){return Se(t,e,5,B(t,e+1,r),r)}function Nn(t,e,n,r){let i=P(t,e+1,r);if(typeof i=="bigint")throw new Error(`${b} 64-bit integer string lengths not supported`);return Se(t,e,9,i,r)}var zn=fe;function le(t,e,n,r){return new m(l.array,r,n)}function Rn(t,e,n,r){return le(t,e,1,n)}function Hn(t,e,n,r){return le(t,e,2,C(t,e+1,r))}function Ln(t,e,n,r){return le(t,e,3,I(t,e+1,r))}function Vn(t,e,n,r){return le(t,e,5,B(t,e+1,r))}function Gn(t,e,n,r){let i=P(t,e+1,r);if(typeof i=="bigint")throw new Error(`${b} 64-bit integer array lengths not supported`);return le(t,e,9,i)}function Zn(t,e,n,r){if(r.allowIndefinite===!1)throw new Error(`${b} indefinite length items not allowed`);return le(t,e,1,1/0)}function Ke(t,e){k(t,l.array.majorEncoded,e.value)}Ke.compareTokens=_.compareTokens;Ke.encodedSize=function(e){return k.encodedSize(e.value)};function de(t,e,n,r){return new m(l.map,r,n)}function qn(t,e,n,r){return de(t,e,1,n)}function Kn(t,e,n,r){return de(t,e,2,C(t,e+1,r))}function Yn(t,e,n,r){return de(t,e,3,I(t,e+1,r))}function Wn(t,e,n,r){return de(t,e,5,B(t,e+1,r))}function jn(t,e,n,r){let i=P(t,e+1,r);if(typeof i=="bigint")throw new Error(`${b} 64-bit integer map lengths not supported`);return de(t,e,9,i)}function Xn(t,e,n,r){if(r.allowIndefinite===!1)throw new Error(`${b} indefinite length items not allowed`);return de(t,e,1,1/0)}function Ye(t,e){k(t,l.map.majorEncoded,e.value)}Ye.compareTokens=_.compareTokens;Ye.encodedSize=function(e){return k.encodedSize(e.value)};function Jn(t,e,n,r){return new m(l.tag,n,1)}function Qn(t,e,n,r){return new m(l.tag,C(t,e+1,r),2)}function er(t,e,n,r){return new m(l.tag,I(t,e+1,r),3)}function tr(t,e,n,r){return new m(l.tag,B(t,e+1,r),5)}function nr(t,e,n,r){return new m(l.tag,P(t,e+1,r),9)}function We(t,e){k(t,l.tag.majorEncoded,e.value)}We.compareTokens=_.compareTokens;We.encodedSize=function(e){return k.encodedSize(e.value)};var Fi=20,Oi=21,Mi=22,Ni=23;function rr(t,e,n,r){if(r.allowUndefined===!1)throw new Error(`${b} undefined values are not supported`);return r.coerceUndefinedToNull===!0?new m(l.null,null,1):new m(l.undefined,void 0,1)}function ir(t,e,n,r){if(r.allowIndefinite===!1)throw new Error(`${b} indefinite length items not allowed`);return new m(l.break,void 0,1)}function vt(t,e,n){if(n){if(n.allowNaN===!1&&Number.isNaN(t))throw new Error(`${b} NaN values are not supported`);if(n.allowInfinity===!1&&(t===1/0||t===-1/0))throw new Error(`${b} Infinity values are not supported`)}return new m(l.float,t,e)}function or(t,e,n,r){return vt(Ut(t,e+1),3,r)}function sr(t,e,n,r){return vt(Ct(t,e+1),5,r)}function ar(t,e,n,r){return vt(lr(t,e+1),9,r)}function je(t,e,n){let r=e.value;if(r===!1)t.push([l.float.majorEncoded|Fi]);else if(r===!0)t.push([l.float.majorEncoded|Oi]);else if(r===null)t.push([l.float.majorEncoded|Mi]);else if(r===void 0)t.push([l.float.majorEncoded|Ni]);else{let i,o=!1;(!n||n.float64!==!0)&&(ur(r),i=Ut(O,1),r===i||Number.isNaN(r)?(O[0]=249,t.push(O.slice(0,3)),o=!0):(fr(r),i=Ct(O,1),r===i&&(O[0]=250,t.push(O.slice(0,5)),o=!0))),o||(zi(r),i=lr(O,1),O[0]=251,t.push(O.slice(0,9)))}}je.encodedSize=function(e,n){let r=e.value;if(r===!1||r===!0||r===null||r===void 0)return 1;if(!n||n.float64!==!0){ur(r);let i=Ut(O,1);if(r===i||Number.isNaN(r))return 3;if(fr(r),i=Ct(O,1),r===i)return 5}return 9};var cr=new ArrayBuffer(9),$=new DataView(cr,1),O=new Uint8Array(cr,0);function ur(t){if(t===1/0)$.setUint16(0,31744,!1);else if(t===-1/0)$.setUint16(0,64512,!1);else if(Number.isNaN(t))$.setUint16(0,32256,!1);else{$.setFloat32(0,t);let e=$.getUint32(0),n=(e&2139095040)>>23,r=e&8388607;if(n===255)$.setUint16(0,31744,!1);else if(n===0)$.setUint16(0,(t&2147483648)>>16|r>>13,!1);else{let i=n-127;i<-24?$.setUint16(0,0):i<-14?$.setUint16(0,(e&2147483648)>>16|1<<24+i,!1):$.setUint16(0,(e&2147483648)>>16|i+15<<10|r>>13,!1)}}}function Ut(t,e){if(t.length-e<2)throw new Error(`${b} not enough data for float16`);let n=(t[e]<<8)+t[e+1];if(n===31744)return 1/0;if(n===64512)return-1/0;if(n===32256)return NaN;let r=n>>10&31,i=n&1023,o;return r===0?o=i*2**-24:r!==31?o=(i+1024)*2**(r-25):o=i===0?1/0:NaN,n&32768?-o:o}function fr(t){$.setFloat32(0,t,!1)}function Ct(t,e){if(t.length-e<4)throw new Error(`${b} not enough data for float32`);let n=(t.byteOffset||0)+e;return new DataView(t.buffer,n,4).getFloat32(0,!1)}function zi(t){$.setFloat64(0,t,!1)}function lr(t,e){if(t.length-e<8)throw new Error(`${b} not enough data for float64`);let n=(t.byteOffset||0)+e;return new DataView(t.buffer,n,8).getFloat64(0,!1)}je.compareTokens=_.compareTokens;function x(t,e,n){throw new Error(`${b} encountered invalid minor (${n}) for major ${t[e]>>>5}`)}function Xe(t){return()=>{throw new Error(`${b} ${t}`)}}var p=[];for(let t=0;t<=23;t++)p[t]=x;p[24]=wn;p[25]=Sn;p[26]=En;p[27]=Tn;p[28]=x;p[29]=x;p[30]=x;p[31]=x;for(let t=32;t<=55;t++)p[t]=x;p[56]=kn;p[57]=An;p[58]=vn;p[59]=Cn;p[60]=x;p[61]=x;p[62]=x;p[63]=x;for(let t=64;t<=87;t++)p[t]=In;p[88]=Bn;p[89]=Pn;p[90]=_n;p[91]=$n;p[92]=x;p[93]=x;p[94]=x;p[95]=Xe("indefinite length bytes/strings are not supported");for(let t=96;t<=119;t++)p[t]=Dn;p[120]=Fn;p[121]=On;p[122]=Mn;p[123]=Nn;p[124]=x;p[125]=x;p[126]=x;p[127]=Xe("indefinite length bytes/strings are not supported");for(let t=128;t<=151;t++)p[t]=Rn;p[152]=Hn;p[153]=Ln;p[154]=Vn;p[155]=Gn;p[156]=x;p[157]=x;p[158]=x;p[159]=Zn;for(let t=160;t<=183;t++)p[t]=qn;p[184]=Kn;p[185]=Yn;p[186]=Wn;p[187]=jn;p[188]=x;p[189]=x;p[190]=x;p[191]=Xn;for(let t=192;t<=215;t++)p[t]=Jn;p[216]=Qn;p[217]=er;p[218]=tr;p[219]=nr;p[220]=x;p[221]=x;p[222]=x;p[223]=x;for(let t=224;t<=243;t++)p[t]=Xe("simple values are not supported");p[244]=x;p[245]=x;p[246]=x;p[247]=rr;p[248]=Xe("simple values are not supported");p[249]=or;p[250]=sr;p[251]=ar;p[252]=x;p[253]=x;p[254]=x;p[255]=ir;var R=[];for(let t=0;t<24;t++)R[t]=new m(l.uint,t,1);for(let t=-1;t>=-24;t--)R[31-t]=new m(l.negint,t,1);R[64]=new m(l.bytes,new Uint8Array(0),1);R[96]=new m(l.string,"",1);R[128]=new m(l.array,0,1);R[160]=new m(l.map,0,1);R[244]=new m(l.false,!1,1);R[245]=new m(l.true,!0,1);R[246]=new m(l.null,null,1);function dr(t){switch(t.type){case l.false:return z([244]);case l.true:return z([245]);case l.null:return z([246]);case l.bytes:return t.value.length?void 0:z([64]);case l.string:return t.value===""?z([96]):void 0;case l.array:return t.value===0?z([128]):void 0;case l.map:return t.value===0?z([160]):void 0;case l.uint:return t.value<24?z([Number(t.value)]):void 0;case l.negint:if(t.value>=-24)return z([31-Number(t.value)])}}var mr=Object.freeze({float64:!0,mapSorter:Gi,quickEncodeToken:dr});function Hi(){let t=[];return t[l.uint.major]=_,t[l.negint.major]=Ze,t[l.bytes.major]=fe,t[l.string.major]=zn,t[l.array.major]=Ke,t[l.map.major]=Ye,t[l.tag.major]=We,t[l.float.major]=je,t}var Li=Hi(),It=new be,Qe=class t{constructor(e,n){this.obj=e,this.parent=n}includes(e){let n=this;do if(n.obj===e)return!0;while(n=n.parent);return!1}static createCheck(e,n){if(e&&e.includes(n))throw new Error(`${kt} object contains circular references`);return new t(n,e)}},q={null:new m(l.null,null),undefined:new m(l.undefined,void 0),true:new m(l.true,!0),false:new m(l.false,!1),emptyArray:new m(l.array,0),emptyMap:new m(l.map,0)},K={number(t,e,n,r){return!Number.isInteger(t)||!Number.isSafeInteger(t)?new m(l.float,t):t>=0?new m(l.uint,t):new m(l.negint,t)},bigint(t,e,n,r){return t>=BigInt(0)?new m(l.uint,t):new m(l.negint,t)},Uint8Array(t,e,n,r){return new m(l.bytes,t)},string(t,e,n,r){return new m(l.string,t)},boolean(t,e,n,r){return t?q.true:q.false},null(t,e,n,r){return q.null},undefined(t,e,n,r){return q.undefined},ArrayBuffer(t,e,n,r){return new m(l.bytes,new Uint8Array(t))},DataView(t,e,n,r){return new m(l.bytes,new Uint8Array(t.buffer,t.byteOffset,t.byteLength))},Array(t,e,n,r){if(!t.length)return n.addBreakTokens===!0?[q.emptyArray,new m(l.break)]:q.emptyArray;r=Qe.createCheck(r,t);let i=[],o=0;for(let s of t)i[o++]=Je(s,n,r);return n.addBreakTokens?[new m(l.array,t.length),i,new m(l.break)]:[new m(l.array,t.length),i]},Object(t,e,n,r){let i=e!=="Object",o=i?t.keys():Object.keys(t),s=i?t.size:o.length;if(!s)return n.addBreakTokens===!0?[q.emptyMap,new m(l.break)]:q.emptyMap;r=Qe.createCheck(r,t);let a=[],u=0;for(let c of o)a[u++]=[Je(c,n,r),Je(i?t.get(c):t[c],n,r)];return Vi(a,n),n.addBreakTokens?[new m(l.map,s),a,new m(l.break)]:[new m(l.map,s),a]}};K.Map=K.Object;K.Buffer=K.Uint8Array;for(let t of"Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64".split(" "))K[`${t}Array`]=K.DataView;function Je(t,e={},n){let r=dn(t),i=e&&e.typeEncoders&&e.typeEncoders[r]||K[r];if(typeof i=="function"){let s=i(t,r,e,n);if(s!=null)return s}let o=K[r];if(!o)throw new Error(`${kt} unsupported type: ${r}`);return o(t,r,e,n)}function Vi(t,e){e.mapSorter&&t.sort(e.mapSorter)}function Gi(t,e){if(t[0]instanceof m&&e[0]instanceof m){let n=t[0],r=e[0];return n._keyBytes||(n._keyBytes=pr(n.value)),r._keyBytes||(r._keyBytes=pr(r.value)),Ge(n._keyBytes,r._keyBytes)}throw new Error("rfc8949MapSorter: complex key types are not supported yet")}function pr(t){return Zi(t,Li,mr)}function hr(t,e,n,r){if(Array.isArray(e))for(let i of e)hr(t,i,n,r);else n[e.type.major](t,e,r)}function Zi(t,e,n){let r=Je(t,n);if(!Array.isArray(r)&&n.quickEncodeToken){let i=n.quickEncodeToken(r);if(i)return i;let o=e[r.type.major];if(o.encodedSize){let s=o.encodedSize(r,n),a=new be(s);if(o(a,r,n),a.chunks.length!==1)throw new Error(`Unexpected error: pre-calculated length for ${r} was wrong`);return Tt(a.chunks[0])}}return It.reset(),hr(It,r,e,n),It.toBytes(!0)}wt.hmacSha256Sync=(t,...e)=>Et(St,t,wt.concatBytes(...e));var Yi=32;function et(t){if(t.length===0)return new Uint8Array(Yi);let e=t.length,n=e*4,r=t.reduce((u,c)=>u+c.length,0),i=4+n+r,o=new Uint8Array(i),s=new DataView(o.buffer,o.byteOffset,o.byteLength);s.setUint32(0,e,!0);let a=4;for(let u of t)s.setUint32(a,u.length,!0),a+=4;for(let u of t)o.set(u,a),a+=u.length;return St(o)}var Ee={bool:1,uint8:1,int8:1,uint16:2,int16:2,uint32:4,int32:4,entityRef:4,f32:4,vec2:8,vec3:12,quat:16,enum:1},Te={bool:1,uint8:1,int8:1,uint16:2,int16:2,uint32:4,int32:4,f32:4,flags8:1,flags16:2,flags32:4,vec2:8,vec3:12,quat:16},Wi=new Set(["bool","uint8","int8","uint16","int16","uint32","int32","entityRef","f32"]),yr=new Set(["bool","uint8","int8","uint16","int16","uint32","int32","f32"]);function gr(t){let e=t.match(/^(\\w+)\\[(\\d+)\\]$/);if(!e||!e[1]||!e[2])return null;let n=e[1],r=parseInt(e[2],10);return Wi.has(n)?{elementType:n,length:r}:null}var br=1297369412;function xr(t){let e=t.match(/^vec3\\[(\\d+)\\]$/);return e?.[1]?{elementType:"vec3",length:parseInt(e[1],10)}:null}function wr(t){let e=t.match(/^vec2\\[(\\d+)\\]$/);return e?.[1]?{elementType:"vec2",length:parseInt(e[1],10)}:null}function _t(t){let e=t.match(/^(\\w+)\\[(\\d+)\\]$/);if(!e||!e[1]||!e[2])return null;let n=e[1],r=parseInt(e[2],10);if(!yr.has(n))throw new Error(`Invalid array element type \'${n}\': arrays only support primitive scalar types (bool, uint8, int8, uint16, int16, uint32, int32, f32)`);return{elementType:n,length:r}}function Sr(t){let e=_t(t);if(e){let r=Te[e.elementType];if(r===void 0)throw new Error(`Unknown element type: ${e.elementType}`);return r*e.length}let n=Te[t];if(n===void 0)throw new Error(`Unknown type: ${t}`);return n}function ji(t){let e=[],n=[],r=new Map,i=new Map,o=0;for(let s of t.controls){let a=Sr(s.type),u=_t(s.type),c={name:s.name,type:s.type,size:a,offset:0,options:s.options};u&&(c.arrayLength=u.length,c.arrayElementType=u.elementType);let f={name:s.name,index:o++,field:c,hint:s.hint,retain:s.retain==="always"?"always":"tick"};e.push(f),r.set(s.name,f)}for(let s of t.commands){let a=[],u=0;for(let f of s.args){let d=Sr(f.type),g=_t(f.type),S={name:f.name,type:f.type,size:d,offset:u};g&&(S.arrayLength=g.length,S.arrayElementType=g.elementType),a.push(S),u+=d}let c={name:s.name,index:o++,args:a,totalSize:u};n.push(c),i.set(s.name,c)}return{controls:e,commands:n,controlByName:r,commandByName:i}}function Bt(t,e,n,r){switch(n){case"bool":t.setUint8(e,r?1:0);break;case"uint8":case"flags8":t.setUint8(e,r);break;case"int8":t.setInt8(e,r);break;case"uint16":case"flags16":t.setUint16(e,r,!0);break;case"int16":t.setInt16(e,r,!0);break;case"uint32":case"flags32":t.setUint32(e,r,!0);break;case"int32":t.setInt32(e,r,!0);break;case"f32":t.setFloat32(e,r,!0);break;default:throw new Error(`Cannot write primitive type: ${n}`)}}function Pt(t,e,n){switch(n){case"bool":return t.getUint8(e)!==0;case"uint8":case"flags8":return t.getUint8(e);case"int8":return t.getInt8(e);case"uint16":case"flags16":return t.getUint16(e,!0);case"int16":return t.getInt16(e,!0);case"uint32":case"flags32":return t.getUint32(e,!0);case"int32":return t.getInt32(e,!0);case"f32":return t.getFloat32(e,!0);default:throw new Error(`Cannot read primitive type: ${n}`)}}var tt=class t{constructor(e){y(this,"schema");y(this,"fields",new Map);y(this,"commandList",[]);this.schema=e}setControl(e,n){let r=this.schema.controlByName.get(e);if(!r)throw new Error(`Unknown control: ${e}`);let i=new Uint8Array(r.field.size),o=new DataView(i.buffer);this.encodeValue(o,0,r.field,n),this.fields.set(r.index,i)}setFlags(e,n){let r=this.schema.controlByName.get(e);if(!r)throw new Error(`Unknown control: ${e}`);if(!r.field.options)throw new Error(`Control ${e} is not a flags type`);let i=0;for(let a=0;a<r.field.options.length;a++){let u=r.field.options[a];n[u]&&(i|=1<<a)}let o=new Uint8Array(r.field.size),s=new DataView(o.buffer);Bt(s,0,r.field.type,i),this.fields.set(r.index,o)}setVec2(e,n){let r=this.schema.controlByName.get(e);if(!r)throw new Error(`Unknown control: ${e}`);if(r.field.type!=="vec2")throw new Error(`Control ${e} is not a vec2`);let i=new Uint8Array(8),o=new DataView(i.buffer);o.setFloat32(0,n[0],!0),o.setFloat32(4,n[1],!0),this.fields.set(r.index,i)}setVec3(e,n){let r=this.schema.controlByName.get(e);if(!r)throw new Error(`Unknown control: ${e}`);if(r.field.type!=="vec3")throw new Error(`Control ${e} is not a vec3`);let i=new Uint8Array(12),o=new DataView(i.buffer);o.setFloat32(0,n[0],!0),o.setFloat32(4,n[1],!0),o.setFloat32(8,n[2],!0),this.fields.set(r.index,i)}setQuat(e,n){let r=this.schema.controlByName.get(e);if(!r)throw new Error(`Unknown control: ${e}`);if(r.field.type!=="quat")throw new Error(`Control ${e} is not a quat`);let i=new Uint8Array(16),o=new DataView(i.buffer);o.setFloat32(0,n[0],!0),o.setFloat32(4,n[1],!0),o.setFloat32(8,n[2],!0),o.setFloat32(12,n[3],!0),this.fields.set(r.index,i)}getControl(e){let n=this.schema.controlByName.get(e);if(!n)throw new Error(`Unknown control: ${e}`);let r=this.fields.get(n.index);if(!r)return this.getDefaultValue(n.field);let i=new DataView(r.buffer,r.byteOffset,r.byteLength);return this.decodeValue(i,0,n.field)}getFlags(e){let n=this.schema.controlByName.get(e);if(!n)throw new Error(`Unknown control: ${e}`);if(!n.field.options)throw new Error(`Control ${e} is not a flags type`);let r=this.fields.get(n.index),i=0;if(r){let s=new DataView(r.buffer,r.byteOffset,r.byteLength);i=Pt(s,0,n.field.type)}let o={};for(let s=0;s<n.field.options.length;s++)o[n.field.options[s]]=(i&1<<s)!==0;return o}getVec2(e){let n=this.schema.controlByName.get(e);if(!n)throw new Error(`Unknown control: ${e}`);if(n.field.type!=="vec2")throw new Error(`Control ${e} is not a vec2`);let r=this.fields.get(n.index);if(!r)return[0,0];let i=new DataView(r.buffer,r.byteOffset,r.byteLength);return[i.getFloat32(0,!0),i.getFloat32(4,!0)]}getVec3(e){let n=this.schema.controlByName.get(e);if(!n)throw new Error(`Unknown control: ${e}`);if(n.field.type!=="vec3")throw new Error(`Control ${e} is not a vec3`);let r=this.fields.get(n.index);if(!r)return[0,0,0];let i=new DataView(r.buffer,r.byteOffset,r.byteLength);return[i.getFloat32(0,!0),i.getFloat32(4,!0),i.getFloat32(8,!0)]}getQuat(e){let n=this.schema.controlByName.get(e);if(!n)throw new Error(`Unknown control: ${e}`);if(n.field.type!=="quat")throw new Error(`Control ${e} is not a quat`);let r=this.fields.get(n.index);if(!r)return[0,0,0,1];let i=new DataView(r.buffer,r.byteOffset,r.byteLength);return[i.getFloat32(0,!0),i.getFloat32(4,!0),i.getFloat32(8,!0),i.getFloat32(12,!0)]}hasControl(e){let n=this.schema.controlByName.get(e);if(!n)throw new Error(`Unknown control: ${e}`);return this.fields.has(n.index)}addCommand(e,n){let r=this.schema.commandByName.get(e);if(!r)throw new Error(`Unknown command: ${e}`);let i=new Uint8Array(r.totalSize),o=new DataView(i.buffer);for(let s of r.args){let a=n[s.name];if(a===void 0)throw new Error(`Missing required argument: ${s.name}`);this.encodeValue(o,s.offset,s,a)}this.commandList.push({index:r.index,data:i})}getCommands(){let e=[];for(let{index:n,data:r}of this.commandList){let i=this.schema.commands.find(a=>a.index===n);if(!i)continue;let o=new DataView(r.buffer,r.byteOffset,r.byteLength),s={name:i.name};for(let a of i.args)s[a.name]=this.decodeValue(o,a.offset,a);e.push(s)}return e}encode(){let e=[];for(let[o,s]of this.fields){let a=new Uint8Array(2+s.length);a[0]=o,a[1]=s.length,a.set(s,2),e.push(a)}for(let o of this.commandList){let s=new Uint8Array(2+o.data.length);s[0]=o.index,s[1]=o.data.length,s.set(o.data,2),e.push(s)}let n=e.reduce((o,s)=>o+s.length,0),r=new Uint8Array(n),i=0;for(let o of e)r.set(o,i),i+=o.length;return r}static decode(e,n){let r=new t(e),i=0;for(;i<n.length;){if(i+2>n.length)throw new Error("Truncated TLV field header");let o=n[i],s=n[i+1];if(i+2+s>n.length)throw new Error(`Truncated TLV field data at index ${o}`);let a=n.subarray(i+2,i+2+s);e.controls.find(c=>c.index===o)?r.fields.set(o,new Uint8Array(a)):e.commands.find(f=>f.index===o)&&r.commandList.push({index:o,data:new Uint8Array(a)}),i+=2+s}return r}clear(){this.fields.clear(),this.commandList.length=0}encodeValue(e,n,r,i){if(r.type==="vec2"){let o=i;e.setFloat32(n,o[0],!0),e.setFloat32(n+4,o[1],!0)}else if(r.type==="vec3"){let o=i;e.setFloat32(n,o[0],!0),e.setFloat32(n+4,o[1],!0),e.setFloat32(n+8,o[2],!0)}else if(r.type==="quat"){let o=i;e.setFloat32(n,o[0],!0),e.setFloat32(n+4,o[1],!0),e.setFloat32(n+8,o[2],!0),e.setFloat32(n+12,o[3],!0)}else if(r.arrayLength!==void 0&&r.arrayElementType!==void 0){let o=i,s=Te[r.arrayElementType];for(let a=0;a<Math.min(o.length,r.arrayLength);a++)Bt(e,n+a*s,r.arrayElementType,o[a])}else Bt(e,n,r.type,i)}decodeValue(e,n,r){if(r.type==="vec2")return[e.getFloat32(n,!0),e.getFloat32(n+4,!0)];if(r.type==="vec3")return[e.getFloat32(n,!0),e.getFloat32(n+4,!0),e.getFloat32(n+8,!0)];if(r.type==="quat")return[e.getFloat32(n,!0),e.getFloat32(n+4,!0),e.getFloat32(n+8,!0),e.getFloat32(n+12,!0)];if(r.arrayLength!==void 0&&r.arrayElementType!==void 0){let i=[],o=Te[r.arrayElementType];for(let s=0;s<r.arrayLength;s++)i.push(Pt(e,n+s*o,r.arrayElementType));return i}else return Pt(e,n,r.type)}getDefaultValue(e){return e.type==="vec2"?[0,0]:e.type==="vec3"?[0,0,0]:e.type==="quat"?[0,0,0,1]:e.arrayLength!==void 0?new Array(e.arrayLength).fill(0):e.type==="bool"?!1:0}};function Er(t){let e=ji(t);return{create(){return new tt(e)},decode(n){return tt.decode(e,n)},get schema(){return e}}}function Tr(t,e){return((e&65535)<<16|t&65535)>>>0}function ke(t){return t&65535}function to(t){return t>>>16&65535}function pe(t){return t.subarray(8,40)}function $t(t,e){if(e.length!==32)throw new Error(`stateId must be ${32} bytes, got ${e.length}`);t.set(e,8)}function kr(t,e){new DataView(t.buffer,t.byteOffset,t.byteLength).setUint32(40,e,!0)}function it(t,e,n){let r=new Uint8Array(68);return r.set(t,0),new DataView(r.buffer).setUint32(32,e,!0),r.set(n,36),ge(r)}function Ar(t,e,n){return it(t,e,et(n))}function Dt(t){return ge(t)}function vr(t,e,n){let r=new ArrayBuffer(t.totalSize),i=new Uint8Array(r),o=new DataView(r);if(o.setUint32(0,1297367376,!0),o.setUint16(4,0,!0),i[6]=n??0,i[7]=0,e){let a=Dt(e);i.set(a,8)}let s=t.freeStackOffset;o.setUint16(s,t.maxEntities,!0);for(let a=0;a<t.maxEntities;a++){let u=t.freeStackOffset+2+a*2;o.setUint16(u,a,!0)}return i}function Ur(t,e){return t.entityTableOffset+e*t.entityRecordSize}function Ft(t,e,n){let r=Ur(t,n);return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(r,!0)}function no(t){return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint16(4,!0)}function ro(t,e){new DataView(t.buffer,t.byteOffset,t.byteLength).setUint16(4,e,!0)}function io(t,e){return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(t.freeStackOffset,!0)}function oo(t,e,n){new DataView(e.buffer,e.byteOffset,e.byteLength).setUint16(t.freeStackOffset,n,!0)}function so(t,e){let n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=io(t,e);if(r===0)throw new Error(`No free entity slots available (max: ${t.maxEntities})`);let i=t.freeStackOffset+2+(r-1)*2,o=n.getUint16(i,!0);return oo(t,e,r-1),o}function Cr(t,e){let n=so(t,e),r=Ft(t,e,n);return ro(e,no(e)+1),Tr(n,r)}function ot(t,e,n){if(n===4294967295)return!1;let r=ke(n);if(r>=t.maxEntities)return!1;let i=to(n);return Ft(t,e,r)===i}function Ot(t,e,n){if(n<0)throw new Error("Singleton components do not have component bitmask entries");let r=Ur(t,e)+2,i=Math.floor(n/8),o=n%8;return{byteOffset:r+i,bitIndex:o}}function Ir(t,e,n,r){if(!ot(t,e,n))return!1;let i=t.componentByName.get(r);if(!i)throw new Error(`Unknown component: \'${r}\'`);if(i.isSingleton)throw new Error(`Component \'${r}\' is a singleton and is always present`);let o=ke(n),{byteOffset:s,bitIndex:a}=Ot(t,o,i.index);return(e[s]&1<<a)!==0}function Br(t,e,n,r){if(!ot(t,e,n)){let u=n.toString(16).padStart(8,"0").toUpperCase();throw new Error(`Entity 0x${u} is not alive`)}let i=t.componentByName.get(r);if(!i)throw new Error(`Unknown component: \'${r}\'`);if(i.isSingleton)throw new Error(`Component \'${r}\' is a singleton and cannot be added to entities`);let o=ke(n),{byteOffset:s,bitIndex:a}=Ot(t,o,i.index);e[s]=(e[s]??0)|1<<a}function Pr(t,e,n,r){let i=ke(e);return n.storageOffset+i*n.size+r.offset}function ao(t,e,n){let r=new DataView(t.buffer,t.byteOffset,t.byteLength);switch(n){case"bool":return(t[e]??0)!==0;case"uint8":return t[e]??0;case"int8":return r.getInt8(e);case"uint16":return r.getUint16(e,!0);case"int16":return r.getInt16(e,!0);case"uint32":return r.getUint32(e,!0);case"int32":return r.getInt32(e,!0);case"entityRef":return r.getUint32(e,!0);case"f32":return r.getFloat32(e,!0);default:throw new Error(`Cannot read primitive type: ${n}`)}}function _r(t,e,n,r){let i=new DataView(t.buffer,t.byteOffset,t.byteLength);switch(n){case"bool":t[e]=r?1:0;break;case"uint8":t[e]=r&255;break;case"int8":i.setInt8(e,r);break;case"uint16":i.setUint16(e,r,!0);break;case"int16":i.setInt16(e,r,!0);break;case"uint32":i.setUint32(e,r,!0);break;case"int32":i.setInt32(e,r,!0);break;case"entityRef":i.setUint32(e,r,!0);break;case"f32":i.setFloat32(e,r,!0);break;default:throw new Error(`Cannot write primitive type: ${n}`)}}function co(t,e,n){let r=new DataView(t.buffer,t.byteOffset,t.byteLength);r.setFloat32(e,n[0],!0),r.setFloat32(e+4,n[1],!0)}function uo(t,e,n){let r=new DataView(t.buffer,t.byteOffset,t.byteLength);r.setFloat32(e,n[0],!0),r.setFloat32(e+4,n[1],!0),r.setFloat32(e+8,n[2],!0)}function fo(t,e,n){let r=new DataView(t.buffer,t.byteOffset,t.byteLength);r.setFloat32(e,n[0],!0),r.setFloat32(e+4,n[1],!0),r.setFloat32(e+8,n[2],!0),r.setFloat32(e+12,n[3],!0)}function $r(t,e,n,r,i,o){if(!ot(t,e,n))return;let s=t.componentByName.get(r);if(!s)throw new Error(`Unknown component: \'${r}\'`);if(s.isSingleton)throw new Error(`Component \'${r}\' is a singleton; use singleton accessors instead`);if(!rt(t,e,n,s))return;let a=s.fields.find(f=>f.name===i);if(!a)throw new Error(`Unknown field \'${i}\' in component \'${r}\'`);let u=Pr(t,n,s,a),c=a.type;if(a.arrayLength!==void 0&&a.arrayElementType!==void 0){if(o===void 0)throw new Error(`Field \'${r}.${i}\' is an array, index required`);if(o<0||o>=a.arrayLength)throw new Error(`Array index ${o} out of bounds for ${r}.${i} (length: ${a.arrayLength})`);let f=Ee[a.arrayElementType];if(f===void 0)throw new Error(`Unknown array element type: ${a.arrayElementType}`);u+=o*f,c=a.arrayElementType}return ao(e,u,c)}function w(t,e,n,r,i,o,s){if(!ot(t,e,n)){let d=n.toString(16).padStart(8,"0").toUpperCase();throw new Error(`Entity 0x${d} is not alive`)}let a=t.componentByName.get(r);if(!a)throw new Error(`Unknown component: \'${r}\'`);if(!rt(t,e,n,a)){let d=n.toString(16).padStart(8,"0").toUpperCase();throw new Error(`Entity 0x${d} does not have component \'${r}\'`)}let u=a.fields.find(d=>d.name===i);if(!u)throw new Error(`Unknown field \'${i}\' in component \'${r}\'`);let c=Pr(t,n,a,u),f=u.type;if(u.arrayLength!==void 0&&u.arrayElementType!==void 0){if(s===void 0)throw new Error(`Field \'${r}.${i}\' is an array, index required`);if(s<0||s>=u.arrayLength)throw new Error(`Array index ${s} out of bounds for ${r}.${i} (length: ${u.arrayLength})`);let d=Ee[u.arrayElementType];if(d===void 0)throw new Error(`Unknown array element type: ${u.arrayElementType}`);c+=s*d,f=u.arrayElementType}_r(e,c,f,o)}function rt(t,e,n,r){if(r.isSingleton)throw new Error(`Component \'${r.name}\' is a singleton and cannot be queried per entity`);let i=ke(n),{byteOffset:o,bitIndex:s}=Ot(t,i,r.index);return(e[o]&1<<s)!==0}function Dr(t,e,n,r){if(n.length===0)throw new Error("Query must include at least one component");let i=[];for(let a of n){let u=t.componentByName.get(a);if(!u)throw new Error(`Unknown component: \'${a}\'`);if(u.isSingleton)throw new Error(`Singleton component \'${a}\' cannot be used in queries`);i.push(u)}let o=[];if(r)for(let a of r){let u=t.componentByName.get(a);if(!u)throw new Error(`Unknown component: \'${a}\'`);if(u.isSingleton)throw new Error(`Singleton component \'${a}\' cannot be used in queries`);o.push(u)}function*s(){for(let a=0;a<t.maxEntities;a++){let u=Ft(t,e,a),c=Tr(a,u),f=!0;for(let d of i)if(!rt(t,e,c,d)){f=!1;break}if(f){for(let d of o)if(rt(t,e,c,d)){f=!1;break}f&&(yield c)}}}return s()}function Fr(t,e){if(!t.events||!t.eventByName)throw new Error("Schema has no events");let n=t.eventByName.get(e);if(!n)throw new Error(`Unknown event: \'${e}\'`);return n}function Or(t,e,n){let r=Fr(t,n);new DataView(e.buffer,e.byteOffset,e.byteLength).setUint16(r.storageOffset,0,!0)}function Mr(t,e,n,r){let i=Fr(t,n),o=new DataView(e.buffer,e.byteOffset,e.byteLength),s=o.getUint16(i.storageOffset,!0);if(s>=i.maxEvents)return!1;let a=i.storageOffset+2+s*i.recordSize;for(let u of i.fields){let c=r[u.name];if(c===void 0)throw new Error(`Missing required field \'${u.name}\' for event \'${n}\'`);let f=a+u.offset;u.type==="vec2"?co(e,f,c):u.type==="vec3"?uo(e,f,c):u.type==="quat"?fo(e,f,c):_r(e,f,u.type,c)}return o.setUint16(i.storageOffset,s+1,!0),!0}function st(t){if(t.length!==32)throw new Error(`stateId must be ${32} bytes, got ${t.length}`);return Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}var at=class{constructor(e={}){y(this,"cache");y(this,"maxSize");this.cache=new Map,this.maxSize=e.maxSize??100}store(e){let n=pe(e),r=st(n);if(this.cache.size>=this.maxSize&&!this.cache.has(r)){let i=this.cache.keys().next().value;i!==void 0&&this.cache.delete(i)}this.cache.set(r,e.slice())}getByStateId(e){let n=st(e),r=this.cache.get(n);return r?r.slice():void 0}getCached(e,n,r){let i=pe(e),o=it(i,n,r);return this.getByStateId(o)}has(e){let n=st(e);return this.cache.has(n)}hasCached(e,n,r){let i=pe(e),o=it(i,n,r);return this.has(o)}delete(e){let n=st(e);return this.cache.delete(n)}clear(){this.cache.clear()}get size(){return this.cache.size}keys(){return this.cache.keys()}};var Ae=65536,ct=class{constructor(e){y(this,"memory",null);y(this,"plugins",[]);y(this,"options");y(this,"stateSize",null);y(this,"statePtr",null);y(this,"initDataPtr",null);y(this,"initDataSize",null);y(this,"heapPos",0);y(this,"arenaResetMark",0);y(this,"inputCodec",null);y(this,"playerEntities",new Map);y(this,"hostAlloc",(e,n)=>{let r=this.memory;if(!r)throw new Error("Memory not initialized for host_alloc");let i=this.heapPos+n-1&~(n-1),o=i+e,s=r.buffer.byteLength;if(o>s){let u=Math.ceil((o-s)/Ae);if(this.options.debug){let c=(s+u*Ae)/1048576;console.warn(`[mt] WASM memory grew to ${c.toFixed(1)}MB`)}r.grow(u)}return new Uint8Array(r.buffer).fill(0,i,o),this.heapPos=o,i});this.options=e}markArenaReset(){this.arenaResetMark=this.heapPos}resetArena(){this.heapPos=this.arenaResetMark}async init(){if(this.stateSize=this.options.stateSchema.totalSize,!this.stateSize)throw new Error("State schema total size is required");this.options.inputSchema&&(this.inputCodec=Er(this.options.inputSchema));let e=4*1024*1024,n=this.options.plugins??(this.options.moduleBytes?[{name:"main",wasmBytes:this.options.moduleBytes,reservedBytes:e}]:[]);for(let u of n)if(typeof u.reservedBytes!="number"||u.reservedBytes<=0)throw new Error(`Plugin "${u.name}" requires reservedBytes > 0`);let r=n.reduce((u,c)=>{let f=Math.ceil(c.reservedBytes/Ae)*Ae;return u+f},0),i=1024*1024*5,o=this.stateSize+i+r,s=Math.ceil(o/Ae);this.memory=new WebAssembly.Memory({initial:s}),this.heapPos=r;let a={env:{memory:this.memory,host_alloc:this.hostAlloc,abort:()=>{throw new Error("WASM abort called")}}};for(let u of n){let c=u.wasmBytes.slice().buffer,f=await WebAssembly.compile(c),d=await WebAssembly.instantiate(f,a);if(typeof d.exports.apply!="function")throw new Error(`Plugin "${u.name}" missing required apply() export`);this.plugins.push({name:u.name,instance:d,exports:d.exports})}if(this.statePtr=this.hostAlloc(this.stateSize,8),this.options.initDataSchema&&this.options.initDataSchema.items.length>0){let u=this.options.initDataSchema,c=this.options.initData;if(!c)throw new Error("initData is required when initDataSchema is provided");this.initDataSize=u.totalSize,this.initDataPtr=this.hostAlloc(this.initDataSize,8),this.writeInitData(u,c);for(let f of this.plugins){let d=f.instance.exports.set_init_data_ptr;typeof d=="function"&&d(this.initDataPtr)}this.options.debug&&console.log(`[mt] Init data allocated at ${this.initDataPtr}, size ${this.initDataSize} bytes`)}return this.markArenaReset(),this}writeInitData(e,n){let r=this.memory;if(!r||this.initDataPtr===null)throw new Error("Memory or init data pointer not initialized");let i=new DataView(r.buffer,this.initDataPtr,e.totalSize);i.setUint32(0,br,!0),i.setUint32(4,e.totalSize,!0);for(let o of e.items){let s=n[o.name];if(s===void 0)throw new Error(`Missing required init data item: ${o.name}`);o.isBlob?this.writeInitDataBlob(i,o,s):this.writeInitDataCompound(i,o,s)}}writeInitDataBlob(e,n,r){let i;if(typeof r=="string"){let s=atob(r);i=new Uint8Array(s.length);for(let a=0;a<s.length;a++)i[a]=s.charCodeAt(a)}else if(r instanceof Uint8Array)i=r;else throw new Error(`Init data blob "${n.name}" must be a base64 string or Uint8Array`);if(i.length>n.blobMaxSize)throw new Error(`Init data blob "${n.name}" exceeds maxSize: ${i.length} > ${n.blobMaxSize}`);let o=n.storageOffset;e.setUint32(o,i.length,!0);for(let s=0;s<i.length;s++)e.setUint8(o+4+s,i[s])}writeInitDataCompound(e,n,r){for(let i of n.fields){let o=r[i.name];if(o===void 0)throw new Error(`Missing required init data field: ${n.name}.${i.name}`);this.writeInitDataField(e,n.storageOffset,i,o)}}writeInitDataField(e,n,r,i){let o=n+r.offset,s=xr(r.type);if(s){let c=i;if(!Array.isArray(c))throw new Error(`Expected array for vec3[] field, got ${typeof i}`);for(let f=0;f<c.length&&f<s.length;f++){let d=c[f];Array.isArray(d)?(e.setFloat32(o+f*12,d[0]??0,!0),e.setFloat32(o+f*12+4,d[1]??0,!0),e.setFloat32(o+f*12+8,d[2]??0,!0)):(e.setFloat32(o+f*12,d.x??0,!0),e.setFloat32(o+f*12+4,d.y??0,!0),e.setFloat32(o+f*12+8,d.z??0,!0))}return}let a=wr(r.type);if(a){let c=i;if(!Array.isArray(c))throw new Error(`Expected array for vec2[] field, got ${typeof i}`);for(let f=0;f<c.length&&f<a.length;f++){let d=c[f];Array.isArray(d)?(e.setFloat32(o+f*8,d[0]??0,!0),e.setFloat32(o+f*8+4,d[1]??0,!0)):(e.setFloat32(o+f*8,d.x??0,!0),e.setFloat32(o+f*8+4,d.y??0,!0))}return}if(r.type==="vec3"){let c=i;Array.isArray(c)?(e.setFloat32(o,c[0]??0,!0),e.setFloat32(o+4,c[1]??0,!0),e.setFloat32(o+8,c[2]??0,!0)):(e.setFloat32(o,c.x??0,!0),e.setFloat32(o+4,c.y??0,!0),e.setFloat32(o+8,c.z??0,!0));return}if(r.type==="vec2"){let c=i;Array.isArray(c)?(e.setFloat32(o,c[0]??0,!0),e.setFloat32(o+4,c[1]??0,!0)):(e.setFloat32(o,c.x??0,!0),e.setFloat32(o+4,c.y??0,!0));return}if(r.type==="quat"){let c=i;Array.isArray(c)?(e.setFloat32(o,c[0]??0,!0),e.setFloat32(o+4,c[1]??0,!0),e.setFloat32(o+8,c[2]??0,!0),e.setFloat32(o+12,c[3]??1,!0)):(e.setFloat32(o,c.x??0,!0),e.setFloat32(o+4,c.y??0,!0),e.setFloat32(o+8,c.z??0,!0),e.setFloat32(o+12,c.w??1,!0));return}let u=gr(r.type);if(u&&r.arrayElementType){let c=i;if(!Array.isArray(c))throw new Error(`Expected array for ${r.type} field, got ${typeof i}`);let f=Ee[r.arrayElementType]??1;for(let d=0;d<c.length&&d<u.length;d++)this.writeScalar(e,o+d*f,r.arrayElementType,c[d]??0);return}this.writeScalar(e,o,r.type,i)}writeScalar(e,n,r,i){switch(r){case"bool":e.setUint8(n,i?1:0);break;case"uint8":e.setUint8(n,i);break;case"int8":e.setInt8(n,i);break;case"uint16":e.setUint16(n,i,!0);break;case"int16":e.setInt16(n,i,!0);break;case"uint32":case"entityRef":e.setUint32(n,i,!0);break;case"int32":e.setInt32(n,i,!0);break;case"f32":e.setFloat32(n,i,!0);break;default:throw new Error(`Unknown scalar type: ${r}`)}}findPlayerEntity(e,n){let r=this.options.stateSchema,i=this.playerEntities.get(n);if(i!==void 0){if(Ir(r,e,i,"Player"))return i;this.playerEntities.delete(n)}for(let o of Dr(r,e,["Player"]))if($r(r,e,o,"Player","index")===n)return this.playerEntities.set(n,o),o}spawnPlayerEntity(e,n){let r=this.options.stateSchema,i=Cr(r,e);return Br(r,e,i,"Player"),w(r,e,i,"Player","index",n),this.playerEntities.set(n,i),i}findOrSpawnPlayerEntity(e,n){let r=this.findPlayerEntity(e,n);return r!==void 0?r:this.spawnPlayerEntity(e,n)}resetPlayerControls(e,n){let r=this.options.stateSchema;if(this.inputCodec)for(let i of this.inputCodec.schema.controls){if(i.retain==="always")continue;let o=i.field.type,s=i.name;if(o==="vec2")w(r,e,n,"Player",`${s}_x`,0),w(r,e,n,"Player",`${s}_y`,0);else if(o==="vec3")w(r,e,n,"Player",`${s}_x`,0),w(r,e,n,"Player",`${s}_y`,0),w(r,e,n,"Player",`${s}_z`,0);else if(o==="quat")w(r,e,n,"Player",`${s}_x`,0),w(r,e,n,"Player",`${s}_y`,0),w(r,e,n,"Player",`${s}_z`,0),w(r,e,n,"Player",`${s}_w`,1);else if(o.startsWith("flags"))w(r,e,n,"Player",s,0);else if(o.includes("[")){let a=o.match(/\\[(\\d+)\\]/);if(a?.[1]){let u=parseInt(a[1],10);for(let c=0;c<u;c++)w(r,e,n,"Player",s,0,c)}}else w(r,e,n,"Player",s,o==="bool"?!1:0)}}writeControlsToPlayer(e,n,r){let i=this.options.stateSchema,o=this.options.inputSchema;if(o)for(let s of o.controls){if(!r.hasControl(s.name))continue;let a=s.type,u=s.name;if(a==="vec2"){let[c,f]=r.getVec2(u);w(i,e,n,"Player",`${u}_x`,c),w(i,e,n,"Player",`${u}_y`,f)}else if(a==="vec3"){let[c,f,d]=r.getVec3(u);w(i,e,n,"Player",`${u}_x`,c),w(i,e,n,"Player",`${u}_y`,f),w(i,e,n,"Player",`${u}_z`,d)}else if(a==="quat"){let[c,f,d,g]=r.getQuat(u);w(i,e,n,"Player",`${u}_x`,c),w(i,e,n,"Player",`${u}_y`,f),w(i,e,n,"Player",`${u}_z`,d),w(i,e,n,"Player",`${u}_w`,g)}else if(a.startsWith("flags")){let c=r.getControl(u);w(i,e,n,"Player",u,c)}else if(a.includes("[")){let c=r.getControl(u);for(let f=0;f<c.length;f++)w(i,e,n,"Player",u,c[f],f)}else{let c=r.getControl(u);w(i,e,n,"Player",u,c)}}}pushCommands(e,n,r){let i=this.options.stateSchema,o=r.getCommands();for(let s of o){let a=s.name.charAt(0).toUpperCase()+s.name.slice(1)+"Command",u={player_index:n};for(let[c,f]of Object.entries(s))c!=="name"&&(Array.isArray(f)?f.length===2?(u[`${c}_x`]=f[0],u[`${c}_y`]=f[1]):f.length===3?(u[`${c}_x`]=f[0],u[`${c}_y`]=f[1],u[`${c}_z`]=f[2]):f.length===4&&(u[`${c}_x`]=f[0],u[`${c}_y`]=f[1],u[`${c}_z`]=f[2],u[`${c}_w`]=f[3]):u[c]=f);Mr(i,e,a,u)}}clearCommandEvents(e){let n=this.options.stateSchema,r=this.options.inputSchema;if(!(!r||!n.events))for(let i of r.commands){let o=i.name.charAt(0).toUpperCase()+i.name.slice(1)+"Command";n.eventByName?.has(o)&&Or(n,e,o)}}decodePayloadsToState(e,n){if(this.inputCodec)for(let r=0;r<n.length;r++){let i=n[r];if(i===void 0)continue;let o=this.findOrSpawnPlayerEntity(e,r);if(this.resetPlayerControls(e,o),i.length===0)continue;let s=this.inputCodec.decode(i);this.writeControlsToPlayer(e,o,s),this.pushCommands(e,r,s)}}transition(e,n){let r=this.stateSize;if(r===null||e.length!==r)throw new Error(`State size mismatch: expected ${this.stateSize}, got ${e.length}`);if(this.plugins.length===0||n.length===0)return e.slice();let i=this.memory;if(!i)throw new Error("WASM memory not initialized");let o=this.statePtr;if(o===null||o<0)throw new Error("State pointer not initialized");let s=new Uint8Array(i.buffer);s.set(e,o);for(let a of n){let u=new Uint8Array(i.buffer,o,r);kr(u,a.tick),this.clearCommandEvents(u),this.decodePayloadsToState(u,a.payloads);for(let c of this.plugins)c.exports.apply(o),s=new Uint8Array(i.buffer)}return s.slice(o,o+r)}close(){}getStateSize(){let e=this.stateSize;if(e===null||e<0)throw new Error("State size not initialized");return e}};var Y=class{constructor(e=1e3,n=1024){y(this,"buffer");y(this,"windowMs");y(this,"head",0);y(this,"tail",0);y(this,"size",0);this.windowMs=e,this.buffer=new Float64Array(n)}inc(){let e=performance.now();this.buffer[this.head]=e,this.head=(this.head+1)%this.buffer.length,this.size<this.buffer.length?this.size++:this.tail=(this.tail+1)%this.buffer.length}count(e=performance.now()){let n=e-this.windowMs;for(;this.size>0&&!(this.buffer[this.tail]>=n);)this.tail=(this.tail+1)%this.buffer.length,this.size--;return this.size}rate(e=performance.now()){return this.count(e)*(1e3/this.windowMs)}};function lo(t){return("moduleBytes"in t||"plugins"in t)&&"stateSchema"in t}function po(t,e){for(let n=t.length-1;n>=0;n--)if(e(t[n]))return n;return-1}var ut=class{constructor(e){y(this,"debug");y(this,"stateSchema");y(this,"inputs",null);y(this,"cache");y(this,"executor",null);y(this,"genesisStateId");y(this,"options");y(this,"ticking",!1);y(this,"tickGraceMs");y(this,"tickLag");y(this,"maxBatchSize");y(this,"currentState");y(this,"currentTick");y(this,"currentNodeId");y(this,"prevOnStateUpdateState",null);y(this,"onStateUpdate");y(this,"syncCheckpoint");y(this,"stateHistory",[]);y(this,"maxHistory",64);y(this,"stats");y(this,"loop",()=>{this._loop().catch(mo)});y(this,"_loop",async()=>{if(this.ticking)try{let e=await this.tick();if(this.onStateUpdate&&this.currentState!==this.prevOnStateUpdateState&&(this.onStateUpdate(this.currentState),this.prevOnStateUpdateState=this.currentState,this.stats.updates.inc()),e.rolledBack&&this.stats.rollbacks.inc(),e.ticksComputed>0)for(let n=0;n<e.ticksComputed;n++)this.stats.executions.inc()}catch(e){console.error("Error in tick loop:",e)}finally{setTimeout(this.loop,this.tickGraceMs)}});e.log&&(this.inputs=e.log),this.debug=e.debug??!1,this.options=e,this.stateSchema=e.stateSchema,this.cache=e.cache??new at,this.genesisStateId=Dt(e.genesisHash),this.tickGraceMs=e.tickGraceMs??10,this.tickLag=e.tickLag??1,this.maxBatchSize=e.maxBatchSize??200,this.stats={rollbacks:new Y,executions:new Y,updates:new Y,cacheHits:new Y,cacheMisses:new Y},this.currentState=vr(this.stateSchema,e.genesisHash,e.tickRate),this.currentNodeId=null,this.syncCheckpoint=null,this.currentTick=null,this.cache.store(this.currentState)}setLog(e){this.inputs=dt(e)}setOnStateUpdate(e){e===null&&(this.prevOnStateUpdateState=null),this.onStateUpdate=e}async init(){if(!this.inputs)throw new Error("Rollback.init() called before log was configured. Call setLog() first or pass log in options.");let e=this.options.executor;if(lo(e)){let r=new ct(e);await r.init(),this.executor=r}else this.executor=e;if((await this.tick(0)).ticksComputed===0||this.currentTick===null)throw new Error("Failed to record genesis snapshot");return this.options.disableTicking||(this.ticking=!0,this.loop()),this.getState()}async tick(e){if(!this.inputs)throw new Error("Rollback.tick() called before log was configured. Call setLog() and init() first.");let n=await this.inputs.getTicksAfter(this.currentNodeId,{limit:this.maxBatchSize,lag:this.tickLag});if(e&&(n=n.filter(a=>a.tick<=e)),n.length===0)return{state:this.currentState,tick:this.currentTick,nodeId:this.currentNodeId??"",rolledBack:!1,ticksComputed:0};let r=!1,i=null;this.currentTick!==null&&n[0].tick<this.currentTick&&(r=!0,i=this.currentTick,this.rollbackTo(n[0]));let o=n.filter(a=>this.currentTick===null||a.tick>this.currentTick);if(o.length===0)return this.currentNodeId=n[n.length-1].id,{state:this.currentState,tick:this.currentTick,nodeId:this.currentNodeId,rolledBack:r,ticksComputed:0};let s=this.processTicks(o,r,i);return{state:this.currentState,tick:this.currentTick,nodeId:this.currentNodeId??"",rolledBack:r,ticksComputed:s}}async getStats(){return{rollbacks:this.stats.rollbacks.rate(),executions:this.stats.executions.rate(),updates:this.stats.updates.rate(),cacheHits:this.stats.cacheHits.rate(),cacheMisses:this.stats.cacheMisses.rate()}}processTicks(e,n=!1,r=null){if(!this.executor)throw new Error("Executor not initialized");let i=0,o=0;for(let c=0;c<e.length;c++){let f=e[c],d=et(f.payloads),g=this.cache.getCached(this.currentState,f.tick,d);if(g)this.currentState=g,this.currentTick=f.tick,this.currentNodeId=f.id,o=c+1,f.sync&&this.updateSyncCheckpoint(f);else break}if(n&&r!==null&&o>0)for(let c=0;c<o;c++)e[c].tick<=r&&this.stats.cacheHits.inc();let s=e.slice(o);if(s.length===0)return 0;let a=po(s,c=>c.sync);if(a>=0){let c=s.slice(0,a+1),f=this.executor.transition(this.currentState,c),d=this.computeBatchStateId(this.currentState,c);$t(f,d);let g=c[c.length-1];this.currentState=f,this.currentTick=g.tick,this.currentNodeId=g.id,i+=c.length,this.cache.store(f),this.recordStateSnapshot(this.currentTick,this.currentNodeId,d),this.updateSyncCheckpoint(g)}let u=a>=0?s.slice(a+1):s;if(u.length>0){let c=this.executor.transition(this.currentState,u),f=this.computeBatchStateId(this.currentState,u);$t(c,f);let d=u[u.length-1];this.currentState=c,this.currentTick=d.tick,this.currentNodeId=d.id,i+=u.length,this.cache.store(c),this.recordStateSnapshot(this.currentTick,this.currentNodeId,f)}if(n&&r!==null)for(let c of s)c.tick<=r&&this.stats.cacheMisses.inc();return i}computeBatchStateId(e,n){let r=pe(e);for(let i of n)r=Ar(r,i.tick,i.payloads);return r}getState(){return this.currentState.slice()}getTick(){return this.currentTick}reset(){this.currentTick=0,this.currentNodeId=null,this.syncCheckpoint=null}close(){this.ticking=!1,this.setOnStateUpdate(null),this.executor&&(this.executor.close(),this.executor=null)}rollbackTo(e){if(this.syncCheckpoint&&this.syncCheckpoint.tick>=e.tick){this.currentState=this.syncCheckpoint.state.slice(),this.currentTick=this.syncCheckpoint.tick,this.currentNodeId=this.syncCheckpoint.nodeId;return}if(this.syncCheckpoint&&this.syncCheckpoint.tick<e.tick){this.currentState=this.syncCheckpoint.state.slice(),this.currentTick=this.syncCheckpoint.tick,this.currentNodeId=this.syncCheckpoint.nodeId;return}let n=e.tick-1,r=this.findSnapshotAtOrBefore(n);if(r){let o=this.cache.getByStateId(r.stateId);if(o){this.currentState=o,this.currentTick=r.tick,this.currentNodeId=r.nodeId;return}}let i=this.cache.getByStateId(this.genesisStateId);if(i){this.currentState=i,this.currentTick=0,this.currentNodeId=null;return}}updateSyncCheckpoint(e){this.syncCheckpoint={state:this.currentState.slice(),tick:e.tick,nodeId:e.id}}recordStateSnapshot(e,n,r){this.stateHistory.push({tick:e,nodeId:n,stateId:r.slice()}),this.stateHistory.length>this.maxHistory&&this.stateHistory.shift()}findSnapshotAtOrBefore(e){for(let n=this.stateHistory.length-1;n>=0;n--){let r=this.stateHistory[n];if(r.tick<=e)return r}return null}};function mo(t){console.warn("rollback unexpected:",t)}Pe(ut);var ja=null;globalThis.onerror=t=>(console.error("\\u{1F534} FATAL ROLLBACK WORKER ERROR (Uncaught Exception):",t),!0);export{ja as default};\n/*! Bundled license information:\n\ncomlink/dist/esm/comlink.mjs:\n (**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n *)\n\n@noble/secp256k1/index.js:\n (*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) *)\n\n@noble/hashes/esm/utils.js:\n (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)\n*/\n';
|
|
6023
6402
|
function Worker() {
|
|
6024
6403
|
const blob = new Blob([workerCode], { type: "text/javascript" });
|
|
6025
6404
|
const url = URL.createObjectURL(blob);
|
|
@@ -6429,6 +6808,7 @@ var Session = class {
|
|
|
6429
6808
|
tickLag;
|
|
6430
6809
|
logSyncTicks;
|
|
6431
6810
|
schema;
|
|
6811
|
+
initData;
|
|
6432
6812
|
closed = false;
|
|
6433
6813
|
latestState = null;
|
|
6434
6814
|
loopTimer = null;
|
|
@@ -6459,10 +6839,19 @@ var Session = class {
|
|
|
6459
6839
|
this.connectionTimeoutMs = options.connectionTimeoutMs;
|
|
6460
6840
|
this.plugins = options.plugins;
|
|
6461
6841
|
this.schema = options.schema;
|
|
6842
|
+
this.initData = options.initData;
|
|
6843
|
+
if (this.schema.initData && this.schema.initData.items.length > 0 && !this.initData) {
|
|
6844
|
+
throw new Error(
|
|
6845
|
+
`initData is required when schema.initData is defined. Expected init data for: ${this.schema.initData.items.map((i) => i.name).join(", ")}`
|
|
6846
|
+
);
|
|
6847
|
+
}
|
|
6848
|
+
if (this.schema.initData && this.initData) {
|
|
6849
|
+
validateInitData(this.schema.initData, this.initData);
|
|
6850
|
+
}
|
|
6462
6851
|
this.tickLag = options.tickLag;
|
|
6463
6852
|
this.logSyncTicks = options.logSyncTicks;
|
|
6464
6853
|
const path = typeof options.path === "string" ? options.path.split("/") : options.path;
|
|
6465
|
-
const finalPath = options.dangerouslyDisableSessionCompatibilityHashCheck ? [...path] : [...path, bytesToHex2(
|
|
6854
|
+
const finalPath = options.dangerouslyDisableSessionCompatibilityHashCheck ? [...path] : [...path, bytesToHex2(computeCompatibilityHash(options.plugins, options.initData))];
|
|
6466
6855
|
this.config = new SessionConfig({
|
|
6467
6856
|
version: "v1",
|
|
6468
6857
|
authority: options.authority ?? "relay.multitap.io",
|
|
@@ -6515,7 +6904,9 @@ var Session = class {
|
|
|
6515
6904
|
plugins: this.plugins,
|
|
6516
6905
|
stateSchema: this.compiledStateSchema,
|
|
6517
6906
|
inputSchema: this.schema.input,
|
|
6518
|
-
maxTicksPerBatch: this.maxTicksPerBatch + 1
|
|
6907
|
+
maxTicksPerBatch: this.maxTicksPerBatch + 1,
|
|
6908
|
+
initDataSchema: this.schema.initData,
|
|
6909
|
+
initData: this.initData
|
|
6519
6910
|
},
|
|
6520
6911
|
debug: this.debug,
|
|
6521
6912
|
tickLag: this.tickLag
|
|
@@ -6673,15 +7064,20 @@ async function createSession(options) {
|
|
|
6673
7064
|
await session.init();
|
|
6674
7065
|
return session;
|
|
6675
7066
|
}
|
|
6676
|
-
function
|
|
6677
|
-
const
|
|
6678
|
-
const
|
|
7067
|
+
function computeCompatibilityHash(plugins, initData) {
|
|
7068
|
+
const wasmSize = plugins.reduce((sum, p) => sum + p.wasmBytes.length, 0);
|
|
7069
|
+
const initDataHash = initData ? hashContent(initData) : null;
|
|
7070
|
+
const totalSize = wasmSize + (initDataHash ? initDataHash.length : 0);
|
|
7071
|
+
const combined = new Uint8Array(totalSize);
|
|
6679
7072
|
let offset = 0;
|
|
6680
7073
|
for (const plugin of plugins) {
|
|
6681
|
-
|
|
7074
|
+
combined.set(plugin.wasmBytes, offset);
|
|
6682
7075
|
offset += plugin.wasmBytes.length;
|
|
6683
7076
|
}
|
|
6684
|
-
|
|
7077
|
+
if (initDataHash) {
|
|
7078
|
+
combined.set(initDataHash, offset);
|
|
7079
|
+
}
|
|
7080
|
+
return sessionCompatibilityHash(combined);
|
|
6685
7081
|
}
|
|
6686
7082
|
function warnUnexpected3(err2) {
|
|
6687
7083
|
console.warn("unexpected:", err2);
|