@bloopjs/web 0.0.85 → 0.0.87

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/mod.js CHANGED
@@ -1346,7 +1346,7 @@ function readTapeHeader(tape) {
1346
1346
  eventCount: view.getUint16(14, true)
1347
1347
  };
1348
1348
  }
1349
- var DEFAULT_WASM_URL = new URL("https://unpkg.com/@bloopjs/engine@0.0.85/wasm/bloop.wasm");
1349
+ var DEFAULT_WASM_URL = new URL("https://unpkg.com/@bloopjs/engine@0.0.87/wasm/bloop.wasm");
1350
1350
  var MAX_ROLLBACK_FRAMES = 500;
1351
1351
  var TIME_CTX_OFFSET = 0;
1352
1352
  var INPUT_CTX_OFFSET = TIME_CTX_OFFSET + 4;
@@ -3081,7 +3081,7 @@ function readTapeHeader2(tape) {
3081
3081
  eventCount: view.getUint16(14, true)
3082
3082
  };
3083
3083
  }
3084
- var DEFAULT_WASM_URL2 = new URL("https://unpkg.com/@bloopjs/engine@0.0.85/wasm/bloop.wasm");
3084
+ var DEFAULT_WASM_URL2 = new URL("https://unpkg.com/@bloopjs/engine@0.0.87/wasm/bloop.wasm");
3085
3085
  var TIME_CTX_OFFSET2 = 0;
3086
3086
  var INPUT_CTX_OFFSET2 = TIME_CTX_OFFSET2 + 4;
3087
3087
  var EVENTS_OFFSET2 = INPUT_CTX_OFFSET2 + 4;
@@ -6704,5 +6704,5 @@ export {
6704
6704
  App
6705
6705
  };
6706
6706
 
6707
- //# debugId=84BFA067C8C329F964756E2164756E21
6707
+ //# debugId=B9819EC38DD29BBA64756E2164756E21
6708
6708
  //# sourceMappingURL=mod.js.map
package/dist/mod.js.map CHANGED
@@ -2,8 +2,8 @@
2
2
  "version": 3,
3
3
  "sources": ["../../bloop/dist/mod.js", "../../engine/dist/engine.js", "../../../node_modules/preact/dist/preact.module.js", "../../../node_modules/preact/hooks/dist/hooks.module.js", "../../../node_modules/@preact/signals-core/dist/signals-core.module.js", "../../../node_modules/@preact/signals/dist/signals.module.js", "../src/debugui/state.ts", "../../../node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js", "../src/debugui/components/Stats.tsx", "../src/debugui/hooks/useAutoScroll.ts", "../src/debugui/components/Logs.tsx", "../src/debugui/components/DebugToggle.tsx", "../src/debugui/components/TopBar.tsx", "../src/debugui/components/VerticalBar.tsx", "../src/debugui/components/BottomBar.tsx", "../src/debugui/components/Root.tsx", "../src/debugui/styles.ts", "../src/debugui/DebugUi.ts", "../../../node_modules/partysocket/dist/chunk-V6LO7DXK.mjs", "../src/netcode/logs.ts", "../src/netcode/transport.ts", "../src/netcode/broker.ts", "../src/App.ts", "../src/netcode/protocol.ts", "../src/netcode/scaffold.ts"],
4
4
  "sourcesContent": [
5
- "var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, {\n get: all[name],\n enumerable: true,\n configurable: true,\n set: (newValue) => all[name] = () => newValue\n });\n};\n\n// src/util.ts\nvar exports_util = {};\n__export(exports_util, {\n unwrap: () => unwrap,\n toHexString: () => toHexString,\n logPerSecond: () => logPerSecond,\n logOnce: () => logOnce,\n logEvery: () => logEvery,\n assert: () => assert\n});\nfunction toHexString(dataView, length) {\n length ??= dataView.byteLength;\n let hexString = \"\";\n for (let i = 0;i < length; i++) {\n const byte = dataView.getUint8(i);\n hexString += `${byte.toString(16).padStart(2, \"0\")} `;\n }\n return hexString.trim();\n}\nfunction assert(condition, message) {\n if (condition == null || condition === false) {\n throw new Error(message ?? \"Assertion failed\");\n }\n}\nvar backpressureLogs = new Map;\nfunction logOnce(...args) {\n const key = args.map((a) => String(a)).join(\" \");\n if (!backpressureLogs.has(key)) {\n console.log(...args);\n backpressureLogs.set(key, 1);\n }\n}\nfunction logPerSecond(now, ...args) {\n logEvery(now, 1000, ...args);\n}\nfunction logEvery(now, interval = 10, ...args) {\n const key = args.map((a) => String(a)).join(\" \");\n const lastLogged = backpressureLogs.get(key) ?? -Infinity;\n if (now - lastLogged >= interval) {\n console.log(...args);\n backpressureLogs.set(key, now);\n }\n}\nfunction unwrap(value, message) {\n assert(value != null, message ?? `Unwrap failed: value is ${value}`);\n return value;\n}\n// ../engine/dist/engine.js\nvar exports_engine = {};\n__export(exports_engine, {\n readTapeHeader: () => readTapeHeader,\n mouseButtonToMouseButtonCode: () => mouseButtonToMouseButtonCode,\n mouseButtonCodeToMouseButton: () => mouseButtonCodeToMouseButton,\n keyToKeyCode: () => keyToKeyCode,\n keyCodeToKey: () => keyCodeToKey,\n inputSourceToInputSourceCode: () => inputSourceToInputSourceCode,\n inputSourceCodeToInputSource: () => inputSourceCodeToInputSource,\n TimeContext: () => TimeContext,\n TIME_CTX_OFFSET: () => TIME_CTX_OFFSET,\n SNAPSHOT_HEADER_USER_LEN_OFFSET: () => SNAPSHOT_HEADER_USER_LEN_OFFSET,\n SNAPSHOT_HEADER_LEN: () => SNAPSHOT_HEADER_LEN,\n SNAPSHOT_HEADER_ENGINE_LEN_OFFSET: () => SNAPSHOT_HEADER_ENGINE_LEN_OFFSET,\n PlayerInputContext: () => PlayerInputContext,\n PLAYER_INPUTS_SIZE: () => PLAYER_INPUTS_SIZE,\n NetContext: () => NetContext,\n NET_CTX_OFFSET: () => NET_CTX_OFFSET,\n MouseContext: () => MouseContext,\n MOUSE_OFFSET: () => MOUSE_OFFSET,\n MOUSE_BUTTONS_OFFSET: () => MOUSE_BUTTONS_OFFSET,\n MAX_ROLLBACK_FRAMES: () => MAX_ROLLBACK_FRAMES,\n MAX_PLAYERS: () => MAX_PLAYERS,\n KeyboardContext: () => KeyboardContext,\n KEYBOARD_SIZE: () => KEYBOARD_SIZE,\n KEYBOARD_OFFSET: () => KEYBOARD_OFFSET,\n InputContext: () => InputContext,\n INPUT_CTX_SIZE: () => INPUT_CTX_SIZE,\n INPUT_CTX_OFFSET: () => INPUT_CTX_OFFSET,\n Enums: () => exports_enums,\n EVENT_PAYLOAD_SIZE: () => EVENT_PAYLOAD_SIZE,\n EVENT_PAYLOAD_ALIGN: () => EVENT_PAYLOAD_ALIGN,\n EVENTS_OFFSET: () => EVENTS_OFFSET,\n DEFAULT_WASM_URL: () => DEFAULT_WASM_URL\n});\nvar __defProp2 = Object.defineProperty;\nvar __export2 = (target, all) => {\n for (var name in all)\n __defProp2(target, name, {\n get: all[name],\n enumerable: true,\n configurable: true,\n set: (newValue) => all[name] = () => newValue\n });\n};\nvar exports_enums = {};\n__export2(exports_enums, {\n NetJoinFailReason: () => NetJoinFailReason,\n MouseButton: () => MouseButton,\n Key: () => Key,\n InputSource: () => InputSource,\n EventType: () => EventType\n});\nvar EventType;\n((EventType2) => {\n EventType2[EventType2[\"None\"] = 0] = \"None\";\n EventType2[EventType2[\"KeyDown\"] = 1] = \"KeyDown\";\n EventType2[EventType2[\"KeyUp\"] = 2] = \"KeyUp\";\n EventType2[EventType2[\"MouseMove\"] = 3] = \"MouseMove\";\n EventType2[EventType2[\"MouseDown\"] = 4] = \"MouseDown\";\n EventType2[EventType2[\"MouseUp\"] = 5] = \"MouseUp\";\n EventType2[EventType2[\"MouseWheel\"] = 6] = \"MouseWheel\";\n EventType2[EventType2[\"FrameStart\"] = 7] = \"FrameStart\";\n EventType2[EventType2[\"NetJoinOk\"] = 8] = \"NetJoinOk\";\n EventType2[EventType2[\"NetJoinFail\"] = 9] = \"NetJoinFail\";\n EventType2[EventType2[\"NetPeerJoin\"] = 10] = \"NetPeerJoin\";\n EventType2[EventType2[\"NetPeerLeave\"] = 11] = \"NetPeerLeave\";\n EventType2[EventType2[\"NetPeerAssignLocalId\"] = 12] = \"NetPeerAssignLocalId\";\n EventType2[EventType2[\"NetPacketReceived\"] = 13] = \"NetPacketReceived\";\n EventType2[EventType2[\"NetSessionInit\"] = 14] = \"NetSessionInit\";\n})(EventType ||= {});\nvar MouseButton;\n((MouseButton2) => {\n MouseButton2[MouseButton2[\"None\"] = 0] = \"None\";\n MouseButton2[MouseButton2[\"Left\"] = 1] = \"Left\";\n MouseButton2[MouseButton2[\"Middle\"] = 2] = \"Middle\";\n MouseButton2[MouseButton2[\"Right\"] = 3] = \"Right\";\n MouseButton2[MouseButton2[\"X1\"] = 4] = \"X1\";\n MouseButton2[MouseButton2[\"X2\"] = 5] = \"X2\";\n MouseButton2[MouseButton2[\"X3\"] = 6] = \"X3\";\n MouseButton2[MouseButton2[\"X4\"] = 7] = \"X4\";\n MouseButton2[MouseButton2[\"X5\"] = 8] = \"X5\";\n})(MouseButton ||= {});\nvar Key;\n((Key2) => {\n Key2[Key2[\"None\"] = 0] = \"None\";\n Key2[Key2[\"Backquote\"] = 1] = \"Backquote\";\n Key2[Key2[\"Backslash\"] = 2] = \"Backslash\";\n Key2[Key2[\"BracketLeft\"] = 3] = \"BracketLeft\";\n Key2[Key2[\"BracketRight\"] = 4] = \"BracketRight\";\n Key2[Key2[\"Comma\"] = 5] = \"Comma\";\n Key2[Key2[\"Digit0\"] = 6] = \"Digit0\";\n Key2[Key2[\"Digit1\"] = 7] = \"Digit1\";\n Key2[Key2[\"Digit2\"] = 8] = \"Digit2\";\n Key2[Key2[\"Digit3\"] = 9] = \"Digit3\";\n Key2[Key2[\"Digit4\"] = 10] = \"Digit4\";\n Key2[Key2[\"Digit5\"] = 11] = \"Digit5\";\n Key2[Key2[\"Digit6\"] = 12] = \"Digit6\";\n Key2[Key2[\"Digit7\"] = 13] = \"Digit7\";\n Key2[Key2[\"Digit8\"] = 14] = \"Digit8\";\n Key2[Key2[\"Digit9\"] = 15] = \"Digit9\";\n Key2[Key2[\"Equal\"] = 16] = \"Equal\";\n Key2[Key2[\"IntlBackslash\"] = 17] = \"IntlBackslash\";\n Key2[Key2[\"IntlRo\"] = 18] = \"IntlRo\";\n Key2[Key2[\"IntlYen\"] = 19] = \"IntlYen\";\n Key2[Key2[\"KeyA\"] = 20] = \"KeyA\";\n Key2[Key2[\"KeyB\"] = 21] = \"KeyB\";\n Key2[Key2[\"KeyC\"] = 22] = \"KeyC\";\n Key2[Key2[\"KeyD\"] = 23] = \"KeyD\";\n Key2[Key2[\"KeyE\"] = 24] = \"KeyE\";\n Key2[Key2[\"KeyF\"] = 25] = \"KeyF\";\n Key2[Key2[\"KeyG\"] = 26] = \"KeyG\";\n Key2[Key2[\"KeyH\"] = 27] = \"KeyH\";\n Key2[Key2[\"KeyI\"] = 28] = \"KeyI\";\n Key2[Key2[\"KeyJ\"] = 29] = \"KeyJ\";\n Key2[Key2[\"KeyK\"] = 30] = \"KeyK\";\n Key2[Key2[\"KeyL\"] = 31] = \"KeyL\";\n Key2[Key2[\"KeyM\"] = 32] = \"KeyM\";\n Key2[Key2[\"KeyN\"] = 33] = \"KeyN\";\n Key2[Key2[\"KeyO\"] = 34] = \"KeyO\";\n Key2[Key2[\"KeyP\"] = 35] = \"KeyP\";\n Key2[Key2[\"KeyQ\"] = 36] = \"KeyQ\";\n Key2[Key2[\"KeyR\"] = 37] = \"KeyR\";\n Key2[Key2[\"KeyS\"] = 38] = \"KeyS\";\n Key2[Key2[\"KeyT\"] = 39] = \"KeyT\";\n Key2[Key2[\"KeyU\"] = 40] = \"KeyU\";\n Key2[Key2[\"KeyV\"] = 41] = \"KeyV\";\n Key2[Key2[\"KeyW\"] = 42] = \"KeyW\";\n Key2[Key2[\"KeyX\"] = 43] = \"KeyX\";\n Key2[Key2[\"KeyY\"] = 44] = \"KeyY\";\n Key2[Key2[\"KeyZ\"] = 45] = \"KeyZ\";\n Key2[Key2[\"Minus\"] = 46] = \"Minus\";\n Key2[Key2[\"Period\"] = 47] = \"Period\";\n Key2[Key2[\"Quote\"] = 48] = \"Quote\";\n Key2[Key2[\"Semicolon\"] = 49] = \"Semicolon\";\n Key2[Key2[\"Slash\"] = 50] = \"Slash\";\n Key2[Key2[\"AltLeft\"] = 51] = \"AltLeft\";\n Key2[Key2[\"AltRight\"] = 52] = \"AltRight\";\n Key2[Key2[\"Backspace\"] = 53] = \"Backspace\";\n Key2[Key2[\"CapsLock\"] = 54] = \"CapsLock\";\n Key2[Key2[\"ContextMenu\"] = 55] = \"ContextMenu\";\n Key2[Key2[\"ControlLeft\"] = 56] = \"ControlLeft\";\n Key2[Key2[\"ControlRight\"] = 57] = \"ControlRight\";\n Key2[Key2[\"Enter\"] = 58] = \"Enter\";\n Key2[Key2[\"MetaLeft\"] = 59] = \"MetaLeft\";\n Key2[Key2[\"MetaRight\"] = 60] = \"MetaRight\";\n Key2[Key2[\"ShiftLeft\"] = 61] = \"ShiftLeft\";\n Key2[Key2[\"ShiftRight\"] = 62] = \"ShiftRight\";\n Key2[Key2[\"Space\"] = 63] = \"Space\";\n Key2[Key2[\"Tab\"] = 64] = \"Tab\";\n Key2[Key2[\"Convert\"] = 65] = \"Convert\";\n Key2[Key2[\"KanaMode\"] = 66] = \"KanaMode\";\n Key2[Key2[\"Lang1\"] = 67] = \"Lang1\";\n Key2[Key2[\"Lang2\"] = 68] = \"Lang2\";\n Key2[Key2[\"Lang3\"] = 69] = \"Lang3\";\n Key2[Key2[\"Lang4\"] = 70] = \"Lang4\";\n Key2[Key2[\"Lang5\"] = 71] = \"Lang5\";\n Key2[Key2[\"NonConvert\"] = 72] = \"NonConvert\";\n Key2[Key2[\"Delete\"] = 73] = \"Delete\";\n Key2[Key2[\"End\"] = 74] = \"End\";\n Key2[Key2[\"Help\"] = 75] = \"Help\";\n Key2[Key2[\"Home\"] = 76] = \"Home\";\n Key2[Key2[\"Insert\"] = 77] = \"Insert\";\n Key2[Key2[\"PageDown\"] = 78] = \"PageDown\";\n Key2[Key2[\"PageUp\"] = 79] = \"PageUp\";\n Key2[Key2[\"ArrowDown\"] = 80] = \"ArrowDown\";\n Key2[Key2[\"ArrowLeft\"] = 81] = \"ArrowLeft\";\n Key2[Key2[\"ArrowRight\"] = 82] = \"ArrowRight\";\n Key2[Key2[\"ArrowUp\"] = 83] = \"ArrowUp\";\n Key2[Key2[\"NumLock\"] = 84] = \"NumLock\";\n Key2[Key2[\"Numpad0\"] = 85] = \"Numpad0\";\n Key2[Key2[\"Numpad1\"] = 86] = \"Numpad1\";\n Key2[Key2[\"Numpad2\"] = 87] = \"Numpad2\";\n Key2[Key2[\"Numpad3\"] = 88] = \"Numpad3\";\n Key2[Key2[\"Numpad4\"] = 89] = \"Numpad4\";\n Key2[Key2[\"Numpad5\"] = 90] = \"Numpad5\";\n Key2[Key2[\"Numpad6\"] = 91] = \"Numpad6\";\n Key2[Key2[\"Numpad7\"] = 92] = \"Numpad7\";\n Key2[Key2[\"Numpad8\"] = 93] = \"Numpad8\";\n Key2[Key2[\"Numpad9\"] = 94] = \"Numpad9\";\n Key2[Key2[\"NumpadAdd\"] = 95] = \"NumpadAdd\";\n Key2[Key2[\"NumpadBackspace\"] = 96] = \"NumpadBackspace\";\n Key2[Key2[\"NumpadClear\"] = 97] = \"NumpadClear\";\n Key2[Key2[\"NumpadClearEntry\"] = 98] = \"NumpadClearEntry\";\n Key2[Key2[\"NumpadComma\"] = 99] = \"NumpadComma\";\n Key2[Key2[\"NumpadDecimal\"] = 100] = \"NumpadDecimal\";\n Key2[Key2[\"NumpadDivide\"] = 101] = \"NumpadDivide\";\n Key2[Key2[\"NumpadEnter\"] = 102] = \"NumpadEnter\";\n Key2[Key2[\"NumpadEqual\"] = 103] = \"NumpadEqual\";\n Key2[Key2[\"NumpadHash\"] = 104] = \"NumpadHash\";\n Key2[Key2[\"NumpadMemoryAdd\"] = 105] = \"NumpadMemoryAdd\";\n Key2[Key2[\"NumpadMemoryClear\"] = 106] = \"NumpadMemoryClear\";\n Key2[Key2[\"NumpadMemoryRecall\"] = 107] = \"NumpadMemoryRecall\";\n Key2[Key2[\"NumpadMemoryStore\"] = 108] = \"NumpadMemoryStore\";\n Key2[Key2[\"NumpadMemorySubtract\"] = 109] = \"NumpadMemorySubtract\";\n Key2[Key2[\"NumpadMultiply\"] = 110] = \"NumpadMultiply\";\n Key2[Key2[\"NumpadParenLeft\"] = 111] = \"NumpadParenLeft\";\n Key2[Key2[\"NumpadParenRight\"] = 112] = \"NumpadParenRight\";\n Key2[Key2[\"NumpadStar\"] = 113] = \"NumpadStar\";\n Key2[Key2[\"NumpadSubtract\"] = 114] = \"NumpadSubtract\";\n Key2[Key2[\"Escape\"] = 115] = \"Escape\";\n Key2[Key2[\"Fn\"] = 116] = \"Fn\";\n Key2[Key2[\"FnLock\"] = 117] = \"FnLock\";\n Key2[Key2[\"PrintScreen\"] = 118] = \"PrintScreen\";\n Key2[Key2[\"ScrollLock\"] = 119] = \"ScrollLock\";\n Key2[Key2[\"Pause\"] = 120] = \"Pause\";\n Key2[Key2[\"BrowserBack\"] = 121] = \"BrowserBack\";\n Key2[Key2[\"BrowserFavorites\"] = 122] = \"BrowserFavorites\";\n Key2[Key2[\"BrowserForward\"] = 123] = \"BrowserForward\";\n Key2[Key2[\"BrowserHome\"] = 124] = \"BrowserHome\";\n Key2[Key2[\"BrowserRefresh\"] = 125] = \"BrowserRefresh\";\n Key2[Key2[\"BrowserSearch\"] = 126] = \"BrowserSearch\";\n Key2[Key2[\"BrowserStop\"] = 127] = \"BrowserStop\";\n Key2[Key2[\"Eject\"] = 128] = \"Eject\";\n Key2[Key2[\"LaunchApp1\"] = 129] = \"LaunchApp1\";\n Key2[Key2[\"LaunchApp2\"] = 130] = \"LaunchApp2\";\n Key2[Key2[\"LaunchMail\"] = 131] = \"LaunchMail\";\n Key2[Key2[\"MediaPlayPause\"] = 132] = \"MediaPlayPause\";\n Key2[Key2[\"MediaSelect\"] = 133] = \"MediaSelect\";\n Key2[Key2[\"MediaStop\"] = 134] = \"MediaStop\";\n Key2[Key2[\"MediaTrackNext\"] = 135] = \"MediaTrackNext\";\n Key2[Key2[\"MediaTrackPrevious\"] = 136] = \"MediaTrackPrevious\";\n Key2[Key2[\"Power\"] = 137] = \"Power\";\n Key2[Key2[\"Sleep\"] = 138] = \"Sleep\";\n Key2[Key2[\"AudioVolumeDown\"] = 139] = \"AudioVolumeDown\";\n Key2[Key2[\"AudioVolumeMute\"] = 140] = \"AudioVolumeMute\";\n Key2[Key2[\"AudioVolumeUp\"] = 141] = \"AudioVolumeUp\";\n Key2[Key2[\"WakeUp\"] = 142] = \"WakeUp\";\n Key2[Key2[\"Hyper\"] = 143] = \"Hyper\";\n Key2[Key2[\"Super\"] = 144] = \"Super\";\n Key2[Key2[\"Turbo\"] = 145] = \"Turbo\";\n Key2[Key2[\"Abort\"] = 146] = \"Abort\";\n Key2[Key2[\"Resume\"] = 147] = \"Resume\";\n Key2[Key2[\"Suspend\"] = 148] = \"Suspend\";\n Key2[Key2[\"Again\"] = 149] = \"Again\";\n Key2[Key2[\"Copy\"] = 150] = \"Copy\";\n Key2[Key2[\"Cut\"] = 151] = \"Cut\";\n Key2[Key2[\"Find\"] = 152] = \"Find\";\n Key2[Key2[\"Open\"] = 153] = \"Open\";\n Key2[Key2[\"Paste\"] = 154] = \"Paste\";\n Key2[Key2[\"Props\"] = 155] = \"Props\";\n Key2[Key2[\"Select\"] = 156] = \"Select\";\n Key2[Key2[\"Undo\"] = 157] = \"Undo\";\n Key2[Key2[\"Hiragana\"] = 158] = \"Hiragana\";\n Key2[Key2[\"Katakana\"] = 159] = \"Katakana\";\n Key2[Key2[\"F1\"] = 160] = \"F1\";\n Key2[Key2[\"F2\"] = 161] = \"F2\";\n Key2[Key2[\"F3\"] = 162] = \"F3\";\n Key2[Key2[\"F4\"] = 163] = \"F4\";\n Key2[Key2[\"F5\"] = 164] = \"F5\";\n Key2[Key2[\"F6\"] = 165] = \"F6\";\n Key2[Key2[\"F7\"] = 166] = \"F7\";\n Key2[Key2[\"F8\"] = 167] = \"F8\";\n Key2[Key2[\"F9\"] = 168] = \"F9\";\n Key2[Key2[\"F10\"] = 169] = \"F10\";\n Key2[Key2[\"F11\"] = 170] = \"F11\";\n Key2[Key2[\"F12\"] = 171] = \"F12\";\n Key2[Key2[\"F13\"] = 172] = \"F13\";\n Key2[Key2[\"F14\"] = 173] = \"F14\";\n Key2[Key2[\"F15\"] = 174] = \"F15\";\n Key2[Key2[\"F16\"] = 175] = \"F16\";\n Key2[Key2[\"F17\"] = 176] = \"F17\";\n Key2[Key2[\"F18\"] = 177] = \"F18\";\n Key2[Key2[\"F19\"] = 178] = \"F19\";\n Key2[Key2[\"F20\"] = 179] = \"F20\";\n Key2[Key2[\"F21\"] = 180] = \"F21\";\n Key2[Key2[\"F22\"] = 181] = \"F22\";\n Key2[Key2[\"F23\"] = 182] = \"F23\";\n Key2[Key2[\"F24\"] = 183] = \"F24\";\n Key2[Key2[\"F25\"] = 184] = \"F25\";\n Key2[Key2[\"F26\"] = 185] = \"F26\";\n Key2[Key2[\"F27\"] = 186] = \"F27\";\n Key2[Key2[\"F28\"] = 187] = \"F28\";\n Key2[Key2[\"F29\"] = 188] = \"F29\";\n Key2[Key2[\"F30\"] = 189] = \"F30\";\n Key2[Key2[\"F31\"] = 190] = \"F31\";\n Key2[Key2[\"F32\"] = 191] = \"F32\";\n Key2[Key2[\"F33\"] = 192] = \"F33\";\n Key2[Key2[\"F34\"] = 193] = \"F34\";\n Key2[Key2[\"F35\"] = 194] = \"F35\";\n})(Key ||= {});\nvar InputSource;\n((InputSource2) => {\n InputSource2[InputSource2[\"None\"] = 0] = \"None\";\n InputSource2[InputSource2[\"LocalKeyboard\"] = 1] = \"LocalKeyboard\";\n InputSource2[InputSource2[\"LocalMouse\"] = 2] = \"LocalMouse\";\n InputSource2[InputSource2[\"LocalTouch\"] = 3] = \"LocalTouch\";\n InputSource2[InputSource2[\"LocalGamepad0\"] = 4] = \"LocalGamepad0\";\n InputSource2[InputSource2[\"LocalGamepad1\"] = 5] = \"LocalGamepad1\";\n InputSource2[InputSource2[\"LocalGamepad2\"] = 6] = \"LocalGamepad2\";\n InputSource2[InputSource2[\"LocalGamepad3\"] = 7] = \"LocalGamepad3\";\n InputSource2[InputSource2[\"LocalGamepad4\"] = 8] = \"LocalGamepad4\";\n InputSource2[InputSource2[\"LocalGamepad5\"] = 9] = \"LocalGamepad5\";\n InputSource2[InputSource2[\"LocalGamepad6\"] = 10] = \"LocalGamepad6\";\n InputSource2[InputSource2[\"LocalGamepad7\"] = 11] = \"LocalGamepad7\";\n InputSource2[InputSource2[\"LocalGamepad8\"] = 12] = \"LocalGamepad8\";\n InputSource2[InputSource2[\"LocalGamepad9\"] = 13] = \"LocalGamepad9\";\n InputSource2[InputSource2[\"LocalGamepad10\"] = 14] = \"LocalGamepad10\";\n InputSource2[InputSource2[\"LocalGamepad11\"] = 15] = \"LocalGamepad11\";\n InputSource2[InputSource2[\"RemotePeer0\"] = 128] = \"RemotePeer0\";\n InputSource2[InputSource2[\"RemotePeer1\"] = 129] = \"RemotePeer1\";\n InputSource2[InputSource2[\"RemotePeer2\"] = 130] = \"RemotePeer2\";\n InputSource2[InputSource2[\"RemotePeer3\"] = 131] = \"RemotePeer3\";\n InputSource2[InputSource2[\"RemotePeer4\"] = 132] = \"RemotePeer4\";\n InputSource2[InputSource2[\"RemotePeer5\"] = 133] = \"RemotePeer5\";\n InputSource2[InputSource2[\"RemotePeer6\"] = 134] = \"RemotePeer6\";\n InputSource2[InputSource2[\"RemotePeer7\"] = 135] = \"RemotePeer7\";\n InputSource2[InputSource2[\"RemotePeer8\"] = 136] = \"RemotePeer8\";\n InputSource2[InputSource2[\"RemotePeer9\"] = 137] = \"RemotePeer9\";\n InputSource2[InputSource2[\"RemotePeer10\"] = 138] = \"RemotePeer10\";\n InputSource2[InputSource2[\"RemotePeer11\"] = 139] = \"RemotePeer11\";\n InputSource2[InputSource2[\"Unmapped\"] = 255] = \"Unmapped\";\n})(InputSource ||= {});\nvar NetJoinFailReason;\n((NetJoinFailReason2) => {\n NetJoinFailReason2[NetJoinFailReason2[\"unknown\"] = 0] = \"unknown\";\n NetJoinFailReason2[NetJoinFailReason2[\"timeout\"] = 1] = \"timeout\";\n NetJoinFailReason2[NetJoinFailReason2[\"room_full\"] = 2] = \"room_full\";\n NetJoinFailReason2[NetJoinFailReason2[\"room_not_found\"] = 3] = \"room_not_found\";\n NetJoinFailReason2[NetJoinFailReason2[\"already_in_room\"] = 4] = \"already_in_room\";\n})(NetJoinFailReason ||= {});\nvar MAX_PLAYERS = 12;\nvar KEYBOARD_OFFSET = 0;\nvar KEYBOARD_SIZE = 256;\nvar MOUSE_OFFSET = 256;\nvar MOUSE_BUTTONS_OFFSET = 16;\nvar PLAYER_INPUTS_SIZE = 280;\nvar INPUT_CTX_SIZE = MAX_PLAYERS * PLAYER_INPUTS_SIZE;\nvar EVENT_PAYLOAD_SIZE = 8;\nvar EVENT_PAYLOAD_ALIGN = 4;\nfunction keyToKeyCode(key) {\n return Key[key];\n}\nfunction keyCodeToKey(code) {\n return Key[code];\n}\nfunction mouseButtonToMouseButtonCode(button) {\n return MouseButton[button];\n}\nfunction mouseButtonCodeToMouseButton(code) {\n return MouseButton[code];\n}\nfunction inputSourceToInputSourceCode(source) {\n return InputSource[source];\n}\nfunction inputSourceCodeToInputSource(code) {\n return InputSource[code];\n}\n\nclass PlayerInputContext {\n #dataView;\n #keys;\n #mouse;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get keys() {\n if (!this.#keys) {\n this.#keys = new KeyboardContext(new DataView(this.#dataView.buffer, this.#dataView.byteOffset + KEYBOARD_OFFSET));\n }\n return this.#keys;\n }\n get mouse() {\n if (!this.#mouse) {\n this.#mouse = new MouseContext(new DataView(this.#dataView.buffer, this.#dataView.byteOffset + MOUSE_OFFSET));\n }\n return this.#mouse;\n }\n}\n\nclass InputContext {\n #dataView;\n #players = [];\n constructor(dataView) {\n if (dataView) {\n this.#dataView = dataView;\n this.#buildPlayers();\n }\n }\n get dataView() {\n if (!this.#dataView) {\n throw new Error(\"DataView is not initialized on InputContext\");\n }\n return this.#dataView;\n }\n set dataView(dataView) {\n this.#dataView = dataView;\n this.#buildPlayers();\n }\n #buildPlayers() {\n this.#players = [];\n for (let i = 0;i < MAX_PLAYERS; i++) {\n const playerOffset = i * PLAYER_INPUTS_SIZE;\n const playerDataView = new DataView(this.dataView.buffer, this.dataView.byteOffset + playerOffset, PLAYER_INPUTS_SIZE);\n this.#players.push(new PlayerInputContext(playerDataView));\n }\n }\n get players() {\n return this.#players;\n }\n get keys() {\n if (!this.#players[0]) {\n throw new Error(\"No player inputs available in InputContext\");\n }\n return this.#players[0].keys;\n }\n get mouse() {\n if (!this.#players[0]) {\n throw new Error(\"No player inputs available in InputContext\");\n }\n return this.#players[0].mouse;\n }\n}\n\nclass MouseContext {\n #dataView;\n #buttonStates = new Map;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get x() {\n return this.#dataView.getFloat32(0, true);\n }\n get y() {\n return this.#dataView.getFloat32(4, true);\n }\n get wheel() {\n return { x: this.wheelX, y: this.wheelY };\n }\n get wheelX() {\n return this.#dataView.getFloat32(8, true);\n }\n get wheelY() {\n return this.#dataView.getFloat32(12, true);\n }\n get left() {\n return this.#buttonState(1);\n }\n get right() {\n return this.#buttonState(3);\n }\n get middle() {\n return this.#buttonState(2);\n }\n #buttonState(code) {\n let state;\n if (this.#buttonStates.has(code)) {\n state = this.#buttonStates.get(code);\n } else {\n state = { down: false, held: false, up: false };\n this.#buttonStates.set(code, state);\n }\n const offset = MOUSE_BUTTONS_OFFSET;\n state.held = !!(this.#dataView.getUint8(offset + code) & 1);\n state.down = state.held && !(this.#dataView.getUint8(offset + code) & 2);\n state.up = !state.held && !!(this.#dataView.getUint8(offset + code) & 2);\n return state;\n }\n}\n\nclass KeyboardContext {\n #dataView;\n #keystates = new Map;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get shift() {\n return this.shiftLeft || this.shiftRight;\n }\n get alt() {\n return this.altLeft || this.altRight;\n }\n get control() {\n return this.controlLeft || this.controlRight;\n }\n get meta() {\n return this.metaLeft || this.metaRight;\n }\n get backquote() {\n return this.#keystate(1);\n }\n get backslash() {\n return this.#keystate(2);\n }\n get bracketLeft() {\n return this.#keystate(3);\n }\n get bracketRight() {\n return this.#keystate(4);\n }\n get comma() {\n return this.#keystate(5);\n }\n get digit0() {\n return this.#keystate(6);\n }\n get digit1() {\n return this.#keystate(7);\n }\n get digit2() {\n return this.#keystate(8);\n }\n get digit3() {\n return this.#keystate(9);\n }\n get digit4() {\n return this.#keystate(10);\n }\n get digit5() {\n return this.#keystate(11);\n }\n get digit6() {\n return this.#keystate(12);\n }\n get digit7() {\n return this.#keystate(13);\n }\n get digit8() {\n return this.#keystate(14);\n }\n get digit9() {\n return this.#keystate(15);\n }\n get equal() {\n return this.#keystate(16);\n }\n get intlBackslash() {\n return this.#keystate(17);\n }\n get intlRo() {\n return this.#keystate(18);\n }\n get intlYen() {\n return this.#keystate(19);\n }\n get a() {\n return this.#keystate(20);\n }\n get b() {\n return this.#keystate(21);\n }\n get c() {\n return this.#keystate(22);\n }\n get d() {\n return this.#keystate(23);\n }\n get e() {\n return this.#keystate(24);\n }\n get f() {\n return this.#keystate(25);\n }\n get g() {\n return this.#keystate(26);\n }\n get h() {\n return this.#keystate(27);\n }\n get i() {\n return this.#keystate(28);\n }\n get j() {\n return this.#keystate(29);\n }\n get k() {\n return this.#keystate(30);\n }\n get l() {\n return this.#keystate(31);\n }\n get m() {\n return this.#keystate(32);\n }\n get n() {\n return this.#keystate(33);\n }\n get o() {\n return this.#keystate(34);\n }\n get p() {\n return this.#keystate(35);\n }\n get q() {\n return this.#keystate(36);\n }\n get r() {\n return this.#keystate(37);\n }\n get s() {\n return this.#keystate(38);\n }\n get t() {\n return this.#keystate(39);\n }\n get u() {\n return this.#keystate(40);\n }\n get v() {\n return this.#keystate(41);\n }\n get w() {\n return this.#keystate(42);\n }\n get x() {\n return this.#keystate(43);\n }\n get y() {\n return this.#keystate(44);\n }\n get z() {\n return this.#keystate(45);\n }\n get minus() {\n return this.#keystate(46);\n }\n get period() {\n return this.#keystate(47);\n }\n get quote() {\n return this.#keystate(48);\n }\n get semicolon() {\n return this.#keystate(49);\n }\n get slash() {\n return this.#keystate(50);\n }\n get altLeft() {\n return this.#keystate(51);\n }\n get altRight() {\n return this.#keystate(52);\n }\n get backspace() {\n return this.#keystate(53);\n }\n get capsLock() {\n return this.#keystate(54);\n }\n get contextMenu() {\n return this.#keystate(55);\n }\n get controlLeft() {\n return this.#keystate(56);\n }\n get controlRight() {\n return this.#keystate(57);\n }\n get enter() {\n return this.#keystate(58);\n }\n get metaLeft() {\n return this.#keystate(59);\n }\n get metaRight() {\n return this.#keystate(60);\n }\n get shiftLeft() {\n return this.#keystate(61);\n }\n get shiftRight() {\n return this.#keystate(62);\n }\n get space() {\n return this.#keystate(63);\n }\n get tab() {\n return this.#keystate(64);\n }\n get convert() {\n return this.#keystate(65);\n }\n get kanaMode() {\n return this.#keystate(66);\n }\n get lang1() {\n return this.#keystate(67);\n }\n get lang2() {\n return this.#keystate(68);\n }\n get lang3() {\n return this.#keystate(69);\n }\n get lang4() {\n return this.#keystate(70);\n }\n get lang5() {\n return this.#keystate(71);\n }\n get nonConvert() {\n return this.#keystate(72);\n }\n get delete() {\n return this.#keystate(73);\n }\n get end() {\n return this.#keystate(74);\n }\n get help() {\n return this.#keystate(75);\n }\n get home() {\n return this.#keystate(76);\n }\n get insert() {\n return this.#keystate(77);\n }\n get pageDown() {\n return this.#keystate(78);\n }\n get pageUp() {\n return this.#keystate(79);\n }\n get arrowDown() {\n return this.#keystate(80);\n }\n get arrowLeft() {\n return this.#keystate(81);\n }\n get arrowRight() {\n return this.#keystate(82);\n }\n get arrowUp() {\n return this.#keystate(83);\n }\n get numLock() {\n return this.#keystate(84);\n }\n get numpad0() {\n return this.#keystate(85);\n }\n get numpad1() {\n return this.#keystate(86);\n }\n get numpad2() {\n return this.#keystate(87);\n }\n get numpad3() {\n return this.#keystate(88);\n }\n get numpad4() {\n return this.#keystate(89);\n }\n get numpad5() {\n return this.#keystate(90);\n }\n get numpad6() {\n return this.#keystate(91);\n }\n get numpad7() {\n return this.#keystate(92);\n }\n get numpad8() {\n return this.#keystate(93);\n }\n get numpad9() {\n return this.#keystate(94);\n }\n get numpadAdd() {\n return this.#keystate(95);\n }\n get numpadBackspace() {\n return this.#keystate(96);\n }\n get numpadClear() {\n return this.#keystate(97);\n }\n get numpadClearEntry() {\n return this.#keystate(98);\n }\n get numpadComma() {\n return this.#keystate(99);\n }\n get numpadDecimal() {\n return this.#keystate(100);\n }\n get numpadDivide() {\n return this.#keystate(101);\n }\n get numpadEnter() {\n return this.#keystate(102);\n }\n get numpadEqual() {\n return this.#keystate(103);\n }\n get numpadHash() {\n return this.#keystate(104);\n }\n get numpadMemoryAdd() {\n return this.#keystate(105);\n }\n get numpadMemoryClear() {\n return this.#keystate(106);\n }\n get numpadMemoryRecall() {\n return this.#keystate(107);\n }\n get numpadMemoryStore() {\n return this.#keystate(108);\n }\n get numpadMemorySubtract() {\n return this.#keystate(109);\n }\n get numpadMultiply() {\n return this.#keystate(110);\n }\n get numpadParenLeft() {\n return this.#keystate(111);\n }\n get numpadParenRight() {\n return this.#keystate(112);\n }\n get numpadStar() {\n return this.#keystate(113);\n }\n get numpadSubtract() {\n return this.#keystate(114);\n }\n get escape() {\n return this.#keystate(115);\n }\n get fn() {\n return this.#keystate(116);\n }\n get fnLock() {\n return this.#keystate(117);\n }\n get printScreen() {\n return this.#keystate(118);\n }\n get scrollLock() {\n return this.#keystate(119);\n }\n get pause() {\n return this.#keystate(120);\n }\n get browserBack() {\n return this.#keystate(121);\n }\n get browserFavorites() {\n return this.#keystate(122);\n }\n get browserForward() {\n return this.#keystate(123);\n }\n get browserHome() {\n return this.#keystate(124);\n }\n get browserRefresh() {\n return this.#keystate(125);\n }\n get browserSearch() {\n return this.#keystate(126);\n }\n get browserStop() {\n return this.#keystate(127);\n }\n get eject() {\n return this.#keystate(128);\n }\n get launchApp1() {\n return this.#keystate(129);\n }\n get launchApp2() {\n return this.#keystate(130);\n }\n get launchMail() {\n return this.#keystate(131);\n }\n get mediaPlayPause() {\n return this.#keystate(132);\n }\n get mediaSelect() {\n return this.#keystate(133);\n }\n get mediaStop() {\n return this.#keystate(134);\n }\n get mediaTrackNext() {\n return this.#keystate(135);\n }\n get mediaTrackPrevious() {\n return this.#keystate(136);\n }\n get power() {\n return this.#keystate(137);\n }\n get sleep() {\n return this.#keystate(138);\n }\n get audioVolumeDown() {\n return this.#keystate(139);\n }\n get audioVolumeMute() {\n return this.#keystate(140);\n }\n get audioVolumeUp() {\n return this.#keystate(141);\n }\n get wakeUp() {\n return this.#keystate(142);\n }\n get hyper() {\n return this.#keystate(143);\n }\n get super() {\n return this.#keystate(144);\n }\n get turbo() {\n return this.#keystate(145);\n }\n get abort() {\n return this.#keystate(146);\n }\n get resume() {\n return this.#keystate(147);\n }\n get suspend() {\n return this.#keystate(148);\n }\n get again() {\n return this.#keystate(149);\n }\n get copy() {\n return this.#keystate(150);\n }\n get cut() {\n return this.#keystate(151);\n }\n get find() {\n return this.#keystate(152);\n }\n get open() {\n return this.#keystate(153);\n }\n get paste() {\n return this.#keystate(154);\n }\n get props() {\n return this.#keystate(155);\n }\n get select() {\n return this.#keystate(156);\n }\n get undo() {\n return this.#keystate(157);\n }\n get hiragana() {\n return this.#keystate(158);\n }\n get katakana() {\n return this.#keystate(159);\n }\n get f1() {\n return this.#keystate(160);\n }\n get f2() {\n return this.#keystate(161);\n }\n get f3() {\n return this.#keystate(162);\n }\n get f4() {\n return this.#keystate(163);\n }\n get f5() {\n return this.#keystate(164);\n }\n get f6() {\n return this.#keystate(165);\n }\n get f7() {\n return this.#keystate(166);\n }\n get f8() {\n return this.#keystate(167);\n }\n get f9() {\n return this.#keystate(168);\n }\n get f10() {\n return this.#keystate(169);\n }\n get f11() {\n return this.#keystate(170);\n }\n get f12() {\n return this.#keystate(171);\n }\n get f13() {\n return this.#keystate(172);\n }\n get f14() {\n return this.#keystate(173);\n }\n get f15() {\n return this.#keystate(174);\n }\n get f16() {\n return this.#keystate(175);\n }\n get f17() {\n return this.#keystate(176);\n }\n get f18() {\n return this.#keystate(177);\n }\n get f19() {\n return this.#keystate(178);\n }\n get f20() {\n return this.#keystate(179);\n }\n get f21() {\n return this.#keystate(180);\n }\n get f22() {\n return this.#keystate(181);\n }\n get f23() {\n return this.#keystate(182);\n }\n get f24() {\n return this.#keystate(183);\n }\n get f25() {\n return this.#keystate(184);\n }\n get f26() {\n return this.#keystate(185);\n }\n get f27() {\n return this.#keystate(186);\n }\n get f28() {\n return this.#keystate(187);\n }\n get f29() {\n return this.#keystate(188);\n }\n get f30() {\n return this.#keystate(189);\n }\n get f31() {\n return this.#keystate(190);\n }\n get f32() {\n return this.#keystate(191);\n }\n get f33() {\n return this.#keystate(192);\n }\n get f34() {\n return this.#keystate(193);\n }\n get f35() {\n return this.#keystate(194);\n }\n #keystate(code) {\n let state;\n if (this.#keystates.has(code)) {\n state = this.#keystates.get(code);\n } else {\n state = { down: false, held: false, up: false };\n this.#keystates.set(code, state);\n }\n state.held = !!(this.#dataView.getUint8(code) & 1);\n state.down = state.held && !(this.#dataView.getUint8(code) & 2);\n state.up = !state.held && !!(this.#dataView.getUint8(code) & 2);\n return state;\n }\n}\nvar MAX_PEERS = 12;\nvar PEERS_ARRAY_OFFSET = 32;\nvar PEER_CTX_SIZE = 8;\nvar PEER_CONNECTED_OFFSET = 0;\nvar PEER_PACKET_COUNT_OFFSET = 1;\nvar PEER_SEQ_OFFSET = 2;\nvar PEER_ACK_OFFSET = 4;\nvar PEER_ACK_COUNT_OFFSET = 6;\nvar STATUS_MAP = {\n 0: \"offline\",\n 1: \"local\",\n 2: \"join:pending\",\n 3: \"connected\",\n 4: \"disconnected\"\n};\n\nclass NetContext {\n dataView;\n #peers = Array.from({ length: MAX_PEERS }, () => ({\n isLocal: false,\n seq: -1,\n ack: -1\n }));\n #peersResult = [];\n constructor(dataView) {\n this.dataView = dataView;\n }\n #hasValidBuffer() {\n if (!this.dataView)\n return false;\n return this.dataView.buffer.byteLength > 0;\n }\n get peerCount() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint8(0);\n }\n get localPeerId() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint8(1);\n }\n get isInSession() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint8(2) !== 0;\n }\n get status() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n const statusByte = this.dataView.getUint8(3);\n return STATUS_MAP[statusByte] ?? \"local\";\n }\n get matchFrame() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint32(4, true);\n }\n get sessionStartFrame() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint32(8, true);\n }\n get roomCode() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n const bytes = [];\n for (let i = 0;i < 8; i++) {\n const byte = this.dataView.getUint8(12 + i);\n if (byte === 0)\n break;\n bytes.push(byte);\n }\n return String.fromCharCode(...bytes);\n }\n get wantsRoomCode() {\n if (!this.#hasValidBuffer()) {\n return;\n }\n const bytes = [];\n for (let i = 0;i < 8; i++) {\n const byte = this.dataView.getUint8(20 + i);\n if (byte === 0)\n break;\n bytes.push(byte);\n }\n return bytes.length > 0 ? String.fromCharCode(...bytes) : undefined;\n }\n set wantsRoomCode(code) {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n for (let i = 0;i < 8; i++) {\n this.dataView.setUint8(20 + i, 0);\n }\n if (code) {\n for (let i = 0;i < Math.min(code.length, 7); i++) {\n this.dataView.setUint8(20 + i, code.charCodeAt(i));\n }\n }\n }\n get wantsDisconnect() {\n if (!this.#hasValidBuffer()) {\n return false;\n }\n return this.dataView.getUint8(28) !== 0;\n }\n set wantsDisconnect(value) {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n this.dataView.setUint8(28, value ? 1 : 0);\n }\n get peers() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n const dv = this.dataView;\n const localPeerId = this.localPeerId;\n const matchFrame = this.matchFrame;\n let minRemoteSeq = -1;\n for (let i = 0;i < MAX_PEERS; i++) {\n if (i === localPeerId)\n continue;\n const peerOffset = PEERS_ARRAY_OFFSET + i * PEER_CTX_SIZE;\n if (dv.getUint8(peerOffset + PEER_CONNECTED_OFFSET) !== 1)\n continue;\n if (dv.getUint8(peerOffset + PEER_PACKET_COUNT_OFFSET) === 0)\n continue;\n const seq = dv.getUint16(peerOffset + PEER_SEQ_OFFSET, true);\n if (minRemoteSeq === -1 || seq < minRemoteSeq) {\n minRemoteSeq = seq;\n }\n }\n this.#peersResult.length = 0;\n for (let i = 0;i < MAX_PEERS; i++) {\n const peerOffset = PEERS_ARRAY_OFFSET + i * PEER_CTX_SIZE;\n if (dv.getUint8(peerOffset + PEER_CONNECTED_OFFSET) !== 1)\n continue;\n const peer = this.#peers[i];\n if (!peer) {\n throw new Error(`Unexpected missing peer object at index ${i}`);\n }\n const isLocal = i === localPeerId;\n peer.isLocal = isLocal;\n if (isLocal) {\n peer.seq = matchFrame;\n peer.ack = minRemoteSeq;\n } else {\n const packetCount = dv.getUint8(peerOffset + PEER_PACKET_COUNT_OFFSET);\n const ackCount = dv.getUint8(peerOffset + PEER_ACK_COUNT_OFFSET);\n peer.seq = packetCount === 0 ? -1 : dv.getUint16(peerOffset + PEER_SEQ_OFFSET, true);\n peer.ack = ackCount === 0 ? -1 : dv.getUint16(peerOffset + PEER_ACK_OFFSET, true);\n }\n this.#peersResult.push(peer);\n }\n return this.#peersResult;\n }\n}\n\nclass TimeContext {\n dataView;\n constructor(dataView) {\n this.dataView = dataView;\n }\n get frame() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(0, true);\n }\n get dt() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(4, true) / 1000;\n }\n get time() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(8, true) / 1000;\n }\n}\nvar TAPE_MAGIC = 1413566533;\nfunction readTapeHeader(tape) {\n const view = new DataView(tape.buffer, tape.byteOffset, tape.byteLength);\n const magic = view.getUint32(0, true);\n if (magic !== TAPE_MAGIC) {\n throw new Error(`Invalid tape format: expected magic ${TAPE_MAGIC.toString(16)}, got ${magic.toString(16)}`);\n }\n return {\n magic,\n version: view.getUint16(4, true),\n startFrame: view.getUint32(8, true),\n frameCount: view.getUint16(12, true),\n eventCount: view.getUint16(14, true)\n };\n}\nvar DEFAULT_WASM_URL = new URL(\"https://unpkg.com/@bloopjs/engine@0.0.85/wasm/bloop.wasm\");\nvar MAX_ROLLBACK_FRAMES = 500;\nvar TIME_CTX_OFFSET = 0;\nvar INPUT_CTX_OFFSET = TIME_CTX_OFFSET + 4;\nvar EVENTS_OFFSET = INPUT_CTX_OFFSET + 4;\nvar NET_CTX_OFFSET = EVENTS_OFFSET + 4;\nvar SNAPSHOT_HEADER_LEN = 16;\nvar SNAPSHOT_HEADER_USER_LEN_OFFSET = 4;\nvar SNAPSHOT_HEADER_ENGINE_LEN_OFFSET = 8;\n// src/sim.ts\nvar originalConsole = globalThis.console;\nvar noop = () => {};\nvar stubConsole = Object.fromEntries(Object.keys(originalConsole).map((key) => [key, noop]));\nfunction muteConsole() {\n globalThis.console = stubConsole;\n}\nfunction unmuteConsole() {\n globalThis.console = originalConsole;\n}\n\nclass Sim {\n wasm;\n id;\n #memory;\n #time;\n #serialize;\n #isPaused = false;\n #net;\n onTapeFull;\n constructor(wasm, memory, opts) {\n this.wasm = wasm;\n this.#memory = memory;\n this.#time = new TimeContext(new DataView(this.#memory.buffer, this.wasm.get_time_ctx()));\n this.id = `${Math.floor(Math.random() * 1e6)}`;\n this.#serialize = opts?.serialize;\n this.#net = new NetContext;\n }\n step(ms) {\n if (this.#isPaused) {\n return 0;\n }\n return this.wasm.step(ms ?? 16);\n }\n tick(isResimulating) {\n this.wasm.tick(isResimulating ?? false);\n }\n cloneSession(source) {\n if (source.isRecording) {\n this.loadTape(source.saveTape());\n }\n this.restore(source.snapshot());\n }\n pause() {\n this.#isPaused = true;\n }\n unpause() {\n this.#isPaused = false;\n }\n get isPaused() {\n return this.#isPaused;\n }\n stepBack() {\n if (this.time.frame === 0) {\n return;\n }\n this.seek(this.time.frame - 1);\n }\n seek(frame, inclusive) {\n assert(this.hasHistory, \"Not recording or playing back, can't seek to frame\");\n const targetFrame = inclusive ? frame + 1 : frame;\n const shouldMute = frame < this.time.frame;\n if (shouldMute) {\n muteConsole();\n }\n this.wasm.seek(targetFrame);\n if (shouldMute) {\n unmuteConsole();\n }\n }\n snapshot() {\n const serializer = this.#serialize ? this.#serialize() : null;\n const size = serializer ? serializer.size : 0;\n const ptr = this.wasm.take_snapshot(size);\n const header = new Uint32Array(this.#memory.buffer, ptr, 4);\n const userLenIndex = SNAPSHOT_HEADER_USER_LEN_OFFSET / Uint32Array.BYTES_PER_ELEMENT;\n const engineLenIndex = SNAPSHOT_HEADER_ENGINE_LEN_OFFSET / Uint32Array.BYTES_PER_ELEMENT;\n assert(header[userLenIndex], `header user length missing`);\n assert(header[engineLenIndex], `header engine length missing`);\n const length = header[userLenIndex] + header[engineLenIndex];\n const memoryView = new Uint8Array(this.#memory.buffer, ptr, length);\n const copy = new Uint8Array(length);\n copy.set(memoryView);\n return copy;\n }\n static NETWORK_MAX_PACKET_BYTES = 2 * 1024 * 1024;\n record(maxEvents = 1e5, maxPacketBytes = Sim.NETWORK_MAX_PACKET_BYTES) {\n const serializer = this.#serialize ? this.#serialize() : null;\n const size = serializer ? serializer.size : 0;\n const result = this.wasm.start_recording(size, maxEvents, maxPacketBytes);\n if (result !== 0) {\n throw new Error(`failed to start recording, error code=${result}`);\n }\n }\n saveTape() {\n const tapeLen = this.wasm.get_tape_len();\n const tapePtr = this.wasm.get_tape_ptr();\n const memoryView = new Uint8Array(this.#memory.buffer, tapePtr, tapeLen);\n const copy = new Uint8Array(tapeLen);\n copy.set(memoryView);\n return copy;\n }\n loadTape(tape, options) {\n const tapePtr = this.wasm.alloc(tape.byteLength);\n assert(tapePtr > 0, `failed to allocate ${tape.byteLength} bytes for tape load, pointer=${tapePtr}`);\n const memoryView = new Uint8Array(this.#memory.buffer, tapePtr, tape.byteLength);\n memoryView.set(tape);\n if (this.isRecording) {\n this.wasm.stop_recording();\n }\n const checkpointInterval = options?.checkpointInterval ?? 0;\n const checkpointMaxSize = options?.checkpointMaxSize ?? 10 * 1024 * 1024;\n const result = this.wasm.load_tape(tapePtr, tape.byteLength, checkpointInterval, checkpointMaxSize);\n assert(result === 0, `failed to load tape, error code=${result}`);\n this.wasm.free(tapePtr, tape.byteLength);\n }\n restore(snapshot) {\n const dataPtr = this.wasm.alloc(snapshot.byteLength);\n assert(dataPtr > 0, `failed to allocate ${snapshot.byteLength} bytes for snapshot restore, pointer=${dataPtr}`);\n const memoryView = new Uint8Array(this.#memory.buffer, dataPtr, snapshot.byteLength);\n memoryView.set(snapshot);\n this.wasm.restore(dataPtr);\n this.wasm.free(dataPtr, snapshot.byteLength);\n }\n unmount() {\n this.wasm.deinit();\n }\n get time() {\n if (!this.#time.dataView || this.#time.dataView.buffer !== this.#memory.buffer) {\n this.#time.dataView = new DataView(this.#memory.buffer, this.wasm.get_time_ctx());\n }\n return this.#time;\n }\n get net() {\n if (!this.#net.dataView || this.#net.dataView.buffer !== this.#memory.buffer) {\n this.#net.dataView = new DataView(this.#memory.buffer, this.wasm.get_net_ctx());\n }\n return this.#net;\n }\n get buffer() {\n return this.#memory.buffer;\n }\n get isRecording() {\n return Boolean(this.wasm.is_recording());\n }\n get isReplaying() {\n return Boolean(this.wasm.is_replaying());\n }\n get hasHistory() {\n return this.isRecording || this.isReplaying;\n }\n emit = {\n keydown: (key, peerId = 0) => {\n this.wasm.emit_keydown(keyToKeyCode(key), peerId);\n },\n keyup: (key, peerId = 0) => {\n this.wasm.emit_keyup(keyToKeyCode(key), peerId);\n },\n mousemove: (x, y, peerId = 0) => {\n this.wasm.emit_mousemove(x, y, peerId);\n },\n mousedown: (button, peerId = 0) => {\n this.wasm.emit_mousedown(mouseButtonToMouseButtonCode(button), peerId);\n },\n mouseup: (button, peerId = 0) => {\n this.wasm.emit_mouseup(mouseButtonToMouseButtonCode(button), peerId);\n },\n mousewheel: (x, y, peerId = 0) => {\n this.wasm.emit_mousewheel(x, y, peerId);\n },\n network: (type, data) => {\n switch (type) {\n case \"join:ok\": {\n const roomCode = data.roomCode;\n const encoded = new TextEncoder().encode(roomCode);\n const ptr = this.wasm.alloc(encoded.length);\n new Uint8Array(this.#memory.buffer, ptr, encoded.length).set(encoded);\n this.wasm.emit_net_join_ok(ptr, encoded.length);\n this.wasm.free(ptr, encoded.length);\n break;\n }\n case \"join:fail\":\n this.wasm.emit_net_join_fail(0);\n break;\n case \"peer:join\": {\n const peerId = data.peerId;\n this.wasm.emit_net_peer_join(peerId);\n break;\n }\n case \"peer:leave\": {\n const peerId = data.peerId;\n this.wasm.emit_net_peer_leave(peerId);\n break;\n }\n case \"peer:assign_local_id\": {\n const peerId = data.peerId;\n this.wasm.emit_net_peer_assign_local_id(peerId);\n break;\n }\n case \"session:start\":\n this.wasm.emit_net_session_init();\n break;\n case \"session:end\":\n this.wasm.emit_net_session_end();\n break;\n }\n },\n packet: (data) => {\n if (data.length === 0) {\n return;\n }\n const ptr = this.wasm.alloc(data.byteLength);\n assert(ptr > 0, `Failed to allocate ${data.byteLength} bytes for received packet`);\n const memoryView = new Uint8Array(this.#memory.buffer, ptr, data.byteLength);\n memoryView.set(data);\n const result = this.wasm.emit_receive_packet(ptr, data.byteLength);\n this.wasm.free(ptr, data.byteLength);\n if (result !== 0) {\n const errorMessages = {\n 1: \"No active session\",\n 2: \"Buffer too small\",\n 3: \"Unsupported packet version\",\n 4: \"Invalid event count\"\n };\n throw new Error(errorMessages[result] ?? `Unknown packet error: ${result}`);\n }\n }\n };\n getOutboundPacket(targetPeer) {\n this.wasm.build_outbound_packet(targetPeer);\n const len = this.wasm.get_outbound_packet_len();\n if (len === 0) {\n throw new Error(`No outbound packet available for peer ${targetPeer}`);\n }\n const ptr = this.wasm.get_outbound_packet();\n assert(ptr > 0, `Invalid outbound packet pointer: ${ptr}`);\n const memoryView = new Uint8Array(this.#memory.buffer, ptr, len);\n const copy = new Uint8Array(len);\n copy.set(memoryView);\n return copy;\n }\n}\n\n// src/mount.ts\nasync function mount(mountable, options) {\n const wasmUrl = options?.wasmUrl ?? DEFAULT_WASM_URL;\n const startRecording = options?.startRecording ?? true;\n const { maxEvents, maxPacketBytes } = calculateTapeConfig(options?.tape);\n const bytes = await fetch(wasmUrl).then((res) => res.arrayBuffer()).catch((e) => {\n console.error(`Failed to fetch wasm at ${wasmUrl}`, e);\n throw e;\n });\n const memory = new WebAssembly.Memory({ initial: 310, maximum: 1000 });\n let sim;\n const wasmInstantiatedSource = await WebAssembly.instantiate(bytes, {\n env: {\n memory,\n __systems: function(system_handle, ptr) {\n mountable.hooks.setBuffer(memory.buffer);\n mountable.hooks.systemsCallback(system_handle, ptr);\n },\n __before_frame: function(ptr, frame) {\n try {\n mountable.hooks.setBuffer(memory.buffer);\n mountable.hooks.setContext(ptr);\n mountable.hooks.beforeFrame?.(frame);\n } catch (e) {\n console.error(\"Error in beforeFrame hook:\", e);\n }\n },\n __on_tape_full: function(_ctxPtr) {\n if (!sim) {\n throw new Error(\"Sim not initialized in on_tape_full\");\n }\n const tapeBytes = sim.saveTape();\n if (sim.onTapeFull) {\n sim.onTapeFull(tapeBytes);\n } else {\n const size = tapeBytes.length / 1024;\n const duration = sim.time.time;\n const kbPerSecond = size / duration;\n console.warn(\"Tape full. Recording stopped\", {\n size: `${(tapeBytes.length / 1024).toFixed(0)}kb`,\n duration: `${sim.time.time.toFixed(2)}s`,\n kbPerSecond: `${kbPerSecond.toFixed(2)} kb/s`\n });\n }\n },\n console_log: function(ptr, len) {\n const bytes2 = new Uint8Array(memory.buffer, ptr, len);\n const string = new TextDecoder(\"utf-8\").decode(bytes2);\n console.log(string);\n },\n __user_data_len: function() {\n const serializer = mountable.hooks.serialize();\n return serializer ? serializer.size : 0;\n },\n user_data_serialize: function(ptr, len) {\n const serializer = mountable.hooks.serialize();\n assert(len === serializer.size, `user_data_serialize length mismatch, expected=${serializer.size} got=${len}`);\n serializer.write(memory.buffer, ptr);\n },\n user_data_deserialize: function(ptr, len) {\n mountable.hooks.deserialize(memory.buffer, ptr, len);\n }\n }\n });\n const wasm = wasmInstantiatedSource.instance.exports;\n const enginePointer = wasm.initialize();\n sim = new Sim(wasm, memory, {\n serialize: mountable.hooks.serialize\n });\n if (startRecording) {\n sim.record(maxEvents, maxPacketBytes);\n }\n mountable.hooks.setBuffer(memory.buffer);\n mountable.hooks.setContext(enginePointer);\n return {\n sim\n };\n}\nfunction calculateTapeConfig(tape) {\n let maxEvents;\n if (!tape) {\n maxEvents = 1e5;\n } else if (\"maxEvents\" in tape) {\n maxEvents = tape.maxEvents;\n } else {\n const avgEvents = tape.averageEventsPerFrame ?? 2;\n maxEvents = Math.ceil(tape.duration * 60 * avgEvents);\n }\n const localOnly = tape?.localOnly ?? false;\n const maxPacketBytes = localOnly ? 0 : Sim.NETWORK_MAX_PACKET_BYTES;\n return { maxEvents, maxPacketBytes };\n}\n// src/bloop.ts\nclass Bloop {\n #systems = [];\n #context;\n #engineBuffer = new ArrayBuffer(0);\n static create(opts = {}) {\n return new Bloop(opts, \"dontCallMeDirectly\");\n }\n constructor(opts = {}, dontCallMeDirectly) {\n if (dontCallMeDirectly !== \"dontCallMeDirectly\") {\n throw new Error(\"Bloop constructor is private. Use Bloop.create() to create a new game instance.\");\n }\n const inputs = new InputContext;\n this.#context = {\n bag: opts.bag ?? {},\n time: new TimeContext,\n inputs,\n get players() {\n return inputs.players;\n },\n rawPointer: -1,\n net: new NetContext\n };\n }\n get bag() {\n return this.#context.bag;\n }\n get context() {\n return this.#context;\n }\n system(label, system) {\n system.label ??= label;\n this.#systems.push(system);\n return this.#systems.length;\n }\n hooks = {\n serialize: () => {\n const str = JSON.stringify(this.#context.bag);\n const encoder = new TextEncoder;\n const textBytes = encoder.encode(str);\n return {\n size: textBytes.byteLength,\n write: (buffer, ptr) => {\n const memoryView = new Uint8Array(buffer, ptr, textBytes.byteLength);\n memoryView.set(textBytes);\n }\n };\n },\n deserialize: (buffer, ptr, len) => {\n const bagBytes = new Uint8Array(buffer, ptr, len);\n const decoder = new TextDecoder;\n const str = decoder.decode(bagBytes);\n try {\n this.#context.bag = JSON.parse(str);\n } catch (e) {\n console.error(\"failed to deserialize bag\", { json: str, error: e });\n }\n },\n setBuffer: (buffer) => {\n this.#engineBuffer = buffer;\n },\n setContext: (ptr) => {\n if (!this.#engineBuffer) {\n throw new Error(\"Tried to set context before engine buffer\");\n }\n const dv = new DataView(this.#engineBuffer, ptr);\n const timeCtxPtr = dv.getUint32(TIME_CTX_OFFSET, true);\n const inputCtxPtr = dv.getUint32(INPUT_CTX_OFFSET, true);\n const netCtxPtr = dv.getUint32(NET_CTX_OFFSET, true);\n this.#context.rawPointer = ptr;\n this.#context.inputs.dataView = new DataView(this.#engineBuffer, inputCtxPtr);\n this.#context.time.dataView = new DataView(this.#engineBuffer, timeCtxPtr);\n this.#context.net.dataView = new DataView(this.#engineBuffer, netCtxPtr);\n },\n systemsCallback: (system_handle, ptr) => {\n this.hooks.setContext(ptr);\n const dv = new DataView(this.#engineBuffer, ptr);\n const eventsPtr = dv.getUint32(EVENTS_OFFSET, true);\n const eventsDataView = new DataView(this.#engineBuffer, eventsPtr);\n for (const system of this.#systems) {\n system.update?.(this.#context);\n const eventCount = eventsDataView.getUint16(0, true);\n let offset = 4;\n for (let i = 0;i < eventCount; i++) {\n const eventType = eventsDataView.getUint8(offset);\n const eventSource = eventsDataView.getUint8(offset + 1);\n const payloadOffset = offset + 4;\n const payloadByte = eventsDataView.getUint8(payloadOffset);\n const payloadVec2 = {\n x: eventsDataView.getFloat32(payloadOffset, true),\n y: eventsDataView.getFloat32(payloadOffset + Float32Array.BYTES_PER_ELEMENT, true)\n };\n switch (eventType) {\n case exports_enums.EventType.KeyDown: {\n system.keydown?.(attachEvent(this.#context, {\n key: keyCodeToKey(payloadByte)\n }));\n break;\n }\n case exports_enums.EventType.KeyUp:\n system.keyup?.(attachEvent(this.#context, {\n key: keyCodeToKey(payloadByte)\n }));\n break;\n case exports_enums.EventType.MouseDown:\n system.mousedown?.(attachEvent(this.#context, {\n button: mouseButtonCodeToMouseButton(payloadByte)\n }));\n break;\n case exports_enums.EventType.MouseUp:\n system.mouseup?.(attachEvent(this.#context, {\n button: mouseButtonCodeToMouseButton(payloadByte)\n }));\n break;\n case exports_enums.EventType.MouseMove:\n system.mousemove?.(attachEvent(this.#context, {\n x: payloadVec2.x,\n y: payloadVec2.y\n }));\n break;\n case exports_enums.EventType.MouseWheel:\n system.mousewheel?.(attachEvent(this.#context, {\n x: payloadVec2.x,\n y: payloadVec2.y\n }));\n break;\n case exports_enums.EventType.NetJoinOk: {\n const roomCodeBytes = [];\n for (let j = 0;j < 8; j++) {\n const byte = eventsDataView.getUint8(payloadOffset + j);\n if (byte === 0)\n break;\n roomCodeBytes.push(byte);\n }\n const roomCode = String.fromCharCode(...roomCodeBytes);\n this.#context.event = {\n type: \"join:ok\",\n data: { roomCode }\n };\n system.netcode?.(this.#context);\n break;\n }\n case exports_enums.EventType.NetJoinFail: {\n const reasonCode = eventsDataView.getUint8(payloadOffset);\n const reasons = [\n \"unknown\",\n \"timeout\",\n \"room_full\",\n \"room_not_found\",\n \"already_in_room\"\n ];\n const reason = reasons[reasonCode] ?? \"unknown\";\n this.#context.event = {\n type: \"join:fail\",\n data: { reason }\n };\n system.netcode?.(this.#context);\n break;\n }\n case exports_enums.EventType.NetPeerJoin: {\n const peerId = eventsDataView.getUint8(payloadOffset);\n this.#context.event = {\n type: \"peer:join\",\n data: { peerId }\n };\n system.netcode?.(this.#context);\n break;\n }\n case exports_enums.EventType.NetPeerLeave: {\n const peerId = eventsDataView.getUint8(payloadOffset);\n this.#context.event = {\n type: \"peer:leave\",\n data: { peerId }\n };\n system.netcode?.(this.#context);\n break;\n }\n default:\n break;\n }\n offset += 12;\n }\n this.#context.event = undefined;\n }\n }\n };\n}\nfunction attachEvent(context, event) {\n context.event = event;\n return context;\n}\nexport {\n unwrap,\n mount,\n assert,\n exports_util as Util,\n Sim,\n exports_engine as Engine,\n Bloop\n};\n\n//# debugId=E85C2C15D3DEFCAC64756E2164756E21\n//# sourceMappingURL=mod.js.map\n",
6
- "var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, {\n get: all[name],\n enumerable: true,\n configurable: true,\n set: (newValue) => all[name] = () => newValue\n });\n};\n\n// js/codegen/enums.ts\nvar exports_enums = {};\n__export(exports_enums, {\n NetJoinFailReason: () => NetJoinFailReason,\n MouseButton: () => MouseButton,\n Key: () => Key,\n InputSource: () => InputSource,\n EventType: () => EventType\n});\nvar EventType;\n((EventType2) => {\n EventType2[EventType2[\"None\"] = 0] = \"None\";\n EventType2[EventType2[\"KeyDown\"] = 1] = \"KeyDown\";\n EventType2[EventType2[\"KeyUp\"] = 2] = \"KeyUp\";\n EventType2[EventType2[\"MouseMove\"] = 3] = \"MouseMove\";\n EventType2[EventType2[\"MouseDown\"] = 4] = \"MouseDown\";\n EventType2[EventType2[\"MouseUp\"] = 5] = \"MouseUp\";\n EventType2[EventType2[\"MouseWheel\"] = 6] = \"MouseWheel\";\n EventType2[EventType2[\"FrameStart\"] = 7] = \"FrameStart\";\n EventType2[EventType2[\"NetJoinOk\"] = 8] = \"NetJoinOk\";\n EventType2[EventType2[\"NetJoinFail\"] = 9] = \"NetJoinFail\";\n EventType2[EventType2[\"NetPeerJoin\"] = 10] = \"NetPeerJoin\";\n EventType2[EventType2[\"NetPeerLeave\"] = 11] = \"NetPeerLeave\";\n EventType2[EventType2[\"NetPeerAssignLocalId\"] = 12] = \"NetPeerAssignLocalId\";\n EventType2[EventType2[\"NetPacketReceived\"] = 13] = \"NetPacketReceived\";\n EventType2[EventType2[\"NetSessionInit\"] = 14] = \"NetSessionInit\";\n})(EventType ||= {});\nvar MouseButton;\n((MouseButton2) => {\n MouseButton2[MouseButton2[\"None\"] = 0] = \"None\";\n MouseButton2[MouseButton2[\"Left\"] = 1] = \"Left\";\n MouseButton2[MouseButton2[\"Middle\"] = 2] = \"Middle\";\n MouseButton2[MouseButton2[\"Right\"] = 3] = \"Right\";\n MouseButton2[MouseButton2[\"X1\"] = 4] = \"X1\";\n MouseButton2[MouseButton2[\"X2\"] = 5] = \"X2\";\n MouseButton2[MouseButton2[\"X3\"] = 6] = \"X3\";\n MouseButton2[MouseButton2[\"X4\"] = 7] = \"X4\";\n MouseButton2[MouseButton2[\"X5\"] = 8] = \"X5\";\n})(MouseButton ||= {});\nvar Key;\n((Key2) => {\n Key2[Key2[\"None\"] = 0] = \"None\";\n Key2[Key2[\"Backquote\"] = 1] = \"Backquote\";\n Key2[Key2[\"Backslash\"] = 2] = \"Backslash\";\n Key2[Key2[\"BracketLeft\"] = 3] = \"BracketLeft\";\n Key2[Key2[\"BracketRight\"] = 4] = \"BracketRight\";\n Key2[Key2[\"Comma\"] = 5] = \"Comma\";\n Key2[Key2[\"Digit0\"] = 6] = \"Digit0\";\n Key2[Key2[\"Digit1\"] = 7] = \"Digit1\";\n Key2[Key2[\"Digit2\"] = 8] = \"Digit2\";\n Key2[Key2[\"Digit3\"] = 9] = \"Digit3\";\n Key2[Key2[\"Digit4\"] = 10] = \"Digit4\";\n Key2[Key2[\"Digit5\"] = 11] = \"Digit5\";\n Key2[Key2[\"Digit6\"] = 12] = \"Digit6\";\n Key2[Key2[\"Digit7\"] = 13] = \"Digit7\";\n Key2[Key2[\"Digit8\"] = 14] = \"Digit8\";\n Key2[Key2[\"Digit9\"] = 15] = \"Digit9\";\n Key2[Key2[\"Equal\"] = 16] = \"Equal\";\n Key2[Key2[\"IntlBackslash\"] = 17] = \"IntlBackslash\";\n Key2[Key2[\"IntlRo\"] = 18] = \"IntlRo\";\n Key2[Key2[\"IntlYen\"] = 19] = \"IntlYen\";\n Key2[Key2[\"KeyA\"] = 20] = \"KeyA\";\n Key2[Key2[\"KeyB\"] = 21] = \"KeyB\";\n Key2[Key2[\"KeyC\"] = 22] = \"KeyC\";\n Key2[Key2[\"KeyD\"] = 23] = \"KeyD\";\n Key2[Key2[\"KeyE\"] = 24] = \"KeyE\";\n Key2[Key2[\"KeyF\"] = 25] = \"KeyF\";\n Key2[Key2[\"KeyG\"] = 26] = \"KeyG\";\n Key2[Key2[\"KeyH\"] = 27] = \"KeyH\";\n Key2[Key2[\"KeyI\"] = 28] = \"KeyI\";\n Key2[Key2[\"KeyJ\"] = 29] = \"KeyJ\";\n Key2[Key2[\"KeyK\"] = 30] = \"KeyK\";\n Key2[Key2[\"KeyL\"] = 31] = \"KeyL\";\n Key2[Key2[\"KeyM\"] = 32] = \"KeyM\";\n Key2[Key2[\"KeyN\"] = 33] = \"KeyN\";\n Key2[Key2[\"KeyO\"] = 34] = \"KeyO\";\n Key2[Key2[\"KeyP\"] = 35] = \"KeyP\";\n Key2[Key2[\"KeyQ\"] = 36] = \"KeyQ\";\n Key2[Key2[\"KeyR\"] = 37] = \"KeyR\";\n Key2[Key2[\"KeyS\"] = 38] = \"KeyS\";\n Key2[Key2[\"KeyT\"] = 39] = \"KeyT\";\n Key2[Key2[\"KeyU\"] = 40] = \"KeyU\";\n Key2[Key2[\"KeyV\"] = 41] = \"KeyV\";\n Key2[Key2[\"KeyW\"] = 42] = \"KeyW\";\n Key2[Key2[\"KeyX\"] = 43] = \"KeyX\";\n Key2[Key2[\"KeyY\"] = 44] = \"KeyY\";\n Key2[Key2[\"KeyZ\"] = 45] = \"KeyZ\";\n Key2[Key2[\"Minus\"] = 46] = \"Minus\";\n Key2[Key2[\"Period\"] = 47] = \"Period\";\n Key2[Key2[\"Quote\"] = 48] = \"Quote\";\n Key2[Key2[\"Semicolon\"] = 49] = \"Semicolon\";\n Key2[Key2[\"Slash\"] = 50] = \"Slash\";\n Key2[Key2[\"AltLeft\"] = 51] = \"AltLeft\";\n Key2[Key2[\"AltRight\"] = 52] = \"AltRight\";\n Key2[Key2[\"Backspace\"] = 53] = \"Backspace\";\n Key2[Key2[\"CapsLock\"] = 54] = \"CapsLock\";\n Key2[Key2[\"ContextMenu\"] = 55] = \"ContextMenu\";\n Key2[Key2[\"ControlLeft\"] = 56] = \"ControlLeft\";\n Key2[Key2[\"ControlRight\"] = 57] = \"ControlRight\";\n Key2[Key2[\"Enter\"] = 58] = \"Enter\";\n Key2[Key2[\"MetaLeft\"] = 59] = \"MetaLeft\";\n Key2[Key2[\"MetaRight\"] = 60] = \"MetaRight\";\n Key2[Key2[\"ShiftLeft\"] = 61] = \"ShiftLeft\";\n Key2[Key2[\"ShiftRight\"] = 62] = \"ShiftRight\";\n Key2[Key2[\"Space\"] = 63] = \"Space\";\n Key2[Key2[\"Tab\"] = 64] = \"Tab\";\n Key2[Key2[\"Convert\"] = 65] = \"Convert\";\n Key2[Key2[\"KanaMode\"] = 66] = \"KanaMode\";\n Key2[Key2[\"Lang1\"] = 67] = \"Lang1\";\n Key2[Key2[\"Lang2\"] = 68] = \"Lang2\";\n Key2[Key2[\"Lang3\"] = 69] = \"Lang3\";\n Key2[Key2[\"Lang4\"] = 70] = \"Lang4\";\n Key2[Key2[\"Lang5\"] = 71] = \"Lang5\";\n Key2[Key2[\"NonConvert\"] = 72] = \"NonConvert\";\n Key2[Key2[\"Delete\"] = 73] = \"Delete\";\n Key2[Key2[\"End\"] = 74] = \"End\";\n Key2[Key2[\"Help\"] = 75] = \"Help\";\n Key2[Key2[\"Home\"] = 76] = \"Home\";\n Key2[Key2[\"Insert\"] = 77] = \"Insert\";\n Key2[Key2[\"PageDown\"] = 78] = \"PageDown\";\n Key2[Key2[\"PageUp\"] = 79] = \"PageUp\";\n Key2[Key2[\"ArrowDown\"] = 80] = \"ArrowDown\";\n Key2[Key2[\"ArrowLeft\"] = 81] = \"ArrowLeft\";\n Key2[Key2[\"ArrowRight\"] = 82] = \"ArrowRight\";\n Key2[Key2[\"ArrowUp\"] = 83] = \"ArrowUp\";\n Key2[Key2[\"NumLock\"] = 84] = \"NumLock\";\n Key2[Key2[\"Numpad0\"] = 85] = \"Numpad0\";\n Key2[Key2[\"Numpad1\"] = 86] = \"Numpad1\";\n Key2[Key2[\"Numpad2\"] = 87] = \"Numpad2\";\n Key2[Key2[\"Numpad3\"] = 88] = \"Numpad3\";\n Key2[Key2[\"Numpad4\"] = 89] = \"Numpad4\";\n Key2[Key2[\"Numpad5\"] = 90] = \"Numpad5\";\n Key2[Key2[\"Numpad6\"] = 91] = \"Numpad6\";\n Key2[Key2[\"Numpad7\"] = 92] = \"Numpad7\";\n Key2[Key2[\"Numpad8\"] = 93] = \"Numpad8\";\n Key2[Key2[\"Numpad9\"] = 94] = \"Numpad9\";\n Key2[Key2[\"NumpadAdd\"] = 95] = \"NumpadAdd\";\n Key2[Key2[\"NumpadBackspace\"] = 96] = \"NumpadBackspace\";\n Key2[Key2[\"NumpadClear\"] = 97] = \"NumpadClear\";\n Key2[Key2[\"NumpadClearEntry\"] = 98] = \"NumpadClearEntry\";\n Key2[Key2[\"NumpadComma\"] = 99] = \"NumpadComma\";\n Key2[Key2[\"NumpadDecimal\"] = 100] = \"NumpadDecimal\";\n Key2[Key2[\"NumpadDivide\"] = 101] = \"NumpadDivide\";\n Key2[Key2[\"NumpadEnter\"] = 102] = \"NumpadEnter\";\n Key2[Key2[\"NumpadEqual\"] = 103] = \"NumpadEqual\";\n Key2[Key2[\"NumpadHash\"] = 104] = \"NumpadHash\";\n Key2[Key2[\"NumpadMemoryAdd\"] = 105] = \"NumpadMemoryAdd\";\n Key2[Key2[\"NumpadMemoryClear\"] = 106] = \"NumpadMemoryClear\";\n Key2[Key2[\"NumpadMemoryRecall\"] = 107] = \"NumpadMemoryRecall\";\n Key2[Key2[\"NumpadMemoryStore\"] = 108] = \"NumpadMemoryStore\";\n Key2[Key2[\"NumpadMemorySubtract\"] = 109] = \"NumpadMemorySubtract\";\n Key2[Key2[\"NumpadMultiply\"] = 110] = \"NumpadMultiply\";\n Key2[Key2[\"NumpadParenLeft\"] = 111] = \"NumpadParenLeft\";\n Key2[Key2[\"NumpadParenRight\"] = 112] = \"NumpadParenRight\";\n Key2[Key2[\"NumpadStar\"] = 113] = \"NumpadStar\";\n Key2[Key2[\"NumpadSubtract\"] = 114] = \"NumpadSubtract\";\n Key2[Key2[\"Escape\"] = 115] = \"Escape\";\n Key2[Key2[\"Fn\"] = 116] = \"Fn\";\n Key2[Key2[\"FnLock\"] = 117] = \"FnLock\";\n Key2[Key2[\"PrintScreen\"] = 118] = \"PrintScreen\";\n Key2[Key2[\"ScrollLock\"] = 119] = \"ScrollLock\";\n Key2[Key2[\"Pause\"] = 120] = \"Pause\";\n Key2[Key2[\"BrowserBack\"] = 121] = \"BrowserBack\";\n Key2[Key2[\"BrowserFavorites\"] = 122] = \"BrowserFavorites\";\n Key2[Key2[\"BrowserForward\"] = 123] = \"BrowserForward\";\n Key2[Key2[\"BrowserHome\"] = 124] = \"BrowserHome\";\n Key2[Key2[\"BrowserRefresh\"] = 125] = \"BrowserRefresh\";\n Key2[Key2[\"BrowserSearch\"] = 126] = \"BrowserSearch\";\n Key2[Key2[\"BrowserStop\"] = 127] = \"BrowserStop\";\n Key2[Key2[\"Eject\"] = 128] = \"Eject\";\n Key2[Key2[\"LaunchApp1\"] = 129] = \"LaunchApp1\";\n Key2[Key2[\"LaunchApp2\"] = 130] = \"LaunchApp2\";\n Key2[Key2[\"LaunchMail\"] = 131] = \"LaunchMail\";\n Key2[Key2[\"MediaPlayPause\"] = 132] = \"MediaPlayPause\";\n Key2[Key2[\"MediaSelect\"] = 133] = \"MediaSelect\";\n Key2[Key2[\"MediaStop\"] = 134] = \"MediaStop\";\n Key2[Key2[\"MediaTrackNext\"] = 135] = \"MediaTrackNext\";\n Key2[Key2[\"MediaTrackPrevious\"] = 136] = \"MediaTrackPrevious\";\n Key2[Key2[\"Power\"] = 137] = \"Power\";\n Key2[Key2[\"Sleep\"] = 138] = \"Sleep\";\n Key2[Key2[\"AudioVolumeDown\"] = 139] = \"AudioVolumeDown\";\n Key2[Key2[\"AudioVolumeMute\"] = 140] = \"AudioVolumeMute\";\n Key2[Key2[\"AudioVolumeUp\"] = 141] = \"AudioVolumeUp\";\n Key2[Key2[\"WakeUp\"] = 142] = \"WakeUp\";\n Key2[Key2[\"Hyper\"] = 143] = \"Hyper\";\n Key2[Key2[\"Super\"] = 144] = \"Super\";\n Key2[Key2[\"Turbo\"] = 145] = \"Turbo\";\n Key2[Key2[\"Abort\"] = 146] = \"Abort\";\n Key2[Key2[\"Resume\"] = 147] = \"Resume\";\n Key2[Key2[\"Suspend\"] = 148] = \"Suspend\";\n Key2[Key2[\"Again\"] = 149] = \"Again\";\n Key2[Key2[\"Copy\"] = 150] = \"Copy\";\n Key2[Key2[\"Cut\"] = 151] = \"Cut\";\n Key2[Key2[\"Find\"] = 152] = \"Find\";\n Key2[Key2[\"Open\"] = 153] = \"Open\";\n Key2[Key2[\"Paste\"] = 154] = \"Paste\";\n Key2[Key2[\"Props\"] = 155] = \"Props\";\n Key2[Key2[\"Select\"] = 156] = \"Select\";\n Key2[Key2[\"Undo\"] = 157] = \"Undo\";\n Key2[Key2[\"Hiragana\"] = 158] = \"Hiragana\";\n Key2[Key2[\"Katakana\"] = 159] = \"Katakana\";\n Key2[Key2[\"F1\"] = 160] = \"F1\";\n Key2[Key2[\"F2\"] = 161] = \"F2\";\n Key2[Key2[\"F3\"] = 162] = \"F3\";\n Key2[Key2[\"F4\"] = 163] = \"F4\";\n Key2[Key2[\"F5\"] = 164] = \"F5\";\n Key2[Key2[\"F6\"] = 165] = \"F6\";\n Key2[Key2[\"F7\"] = 166] = \"F7\";\n Key2[Key2[\"F8\"] = 167] = \"F8\";\n Key2[Key2[\"F9\"] = 168] = \"F9\";\n Key2[Key2[\"F10\"] = 169] = \"F10\";\n Key2[Key2[\"F11\"] = 170] = \"F11\";\n Key2[Key2[\"F12\"] = 171] = \"F12\";\n Key2[Key2[\"F13\"] = 172] = \"F13\";\n Key2[Key2[\"F14\"] = 173] = \"F14\";\n Key2[Key2[\"F15\"] = 174] = \"F15\";\n Key2[Key2[\"F16\"] = 175] = \"F16\";\n Key2[Key2[\"F17\"] = 176] = \"F17\";\n Key2[Key2[\"F18\"] = 177] = \"F18\";\n Key2[Key2[\"F19\"] = 178] = \"F19\";\n Key2[Key2[\"F20\"] = 179] = \"F20\";\n Key2[Key2[\"F21\"] = 180] = \"F21\";\n Key2[Key2[\"F22\"] = 181] = \"F22\";\n Key2[Key2[\"F23\"] = 182] = \"F23\";\n Key2[Key2[\"F24\"] = 183] = \"F24\";\n Key2[Key2[\"F25\"] = 184] = \"F25\";\n Key2[Key2[\"F26\"] = 185] = \"F26\";\n Key2[Key2[\"F27\"] = 186] = \"F27\";\n Key2[Key2[\"F28\"] = 187] = \"F28\";\n Key2[Key2[\"F29\"] = 188] = \"F29\";\n Key2[Key2[\"F30\"] = 189] = \"F30\";\n Key2[Key2[\"F31\"] = 190] = \"F31\";\n Key2[Key2[\"F32\"] = 191] = \"F32\";\n Key2[Key2[\"F33\"] = 192] = \"F33\";\n Key2[Key2[\"F34\"] = 193] = \"F34\";\n Key2[Key2[\"F35\"] = 194] = \"F35\";\n})(Key ||= {});\nvar InputSource;\n((InputSource2) => {\n InputSource2[InputSource2[\"None\"] = 0] = \"None\";\n InputSource2[InputSource2[\"LocalKeyboard\"] = 1] = \"LocalKeyboard\";\n InputSource2[InputSource2[\"LocalMouse\"] = 2] = \"LocalMouse\";\n InputSource2[InputSource2[\"LocalTouch\"] = 3] = \"LocalTouch\";\n InputSource2[InputSource2[\"LocalGamepad0\"] = 4] = \"LocalGamepad0\";\n InputSource2[InputSource2[\"LocalGamepad1\"] = 5] = \"LocalGamepad1\";\n InputSource2[InputSource2[\"LocalGamepad2\"] = 6] = \"LocalGamepad2\";\n InputSource2[InputSource2[\"LocalGamepad3\"] = 7] = \"LocalGamepad3\";\n InputSource2[InputSource2[\"LocalGamepad4\"] = 8] = \"LocalGamepad4\";\n InputSource2[InputSource2[\"LocalGamepad5\"] = 9] = \"LocalGamepad5\";\n InputSource2[InputSource2[\"LocalGamepad6\"] = 10] = \"LocalGamepad6\";\n InputSource2[InputSource2[\"LocalGamepad7\"] = 11] = \"LocalGamepad7\";\n InputSource2[InputSource2[\"LocalGamepad8\"] = 12] = \"LocalGamepad8\";\n InputSource2[InputSource2[\"LocalGamepad9\"] = 13] = \"LocalGamepad9\";\n InputSource2[InputSource2[\"LocalGamepad10\"] = 14] = \"LocalGamepad10\";\n InputSource2[InputSource2[\"LocalGamepad11\"] = 15] = \"LocalGamepad11\";\n InputSource2[InputSource2[\"RemotePeer0\"] = 128] = \"RemotePeer0\";\n InputSource2[InputSource2[\"RemotePeer1\"] = 129] = \"RemotePeer1\";\n InputSource2[InputSource2[\"RemotePeer2\"] = 130] = \"RemotePeer2\";\n InputSource2[InputSource2[\"RemotePeer3\"] = 131] = \"RemotePeer3\";\n InputSource2[InputSource2[\"RemotePeer4\"] = 132] = \"RemotePeer4\";\n InputSource2[InputSource2[\"RemotePeer5\"] = 133] = \"RemotePeer5\";\n InputSource2[InputSource2[\"RemotePeer6\"] = 134] = \"RemotePeer6\";\n InputSource2[InputSource2[\"RemotePeer7\"] = 135] = \"RemotePeer7\";\n InputSource2[InputSource2[\"RemotePeer8\"] = 136] = \"RemotePeer8\";\n InputSource2[InputSource2[\"RemotePeer9\"] = 137] = \"RemotePeer9\";\n InputSource2[InputSource2[\"RemotePeer10\"] = 138] = \"RemotePeer10\";\n InputSource2[InputSource2[\"RemotePeer11\"] = 139] = \"RemotePeer11\";\n InputSource2[InputSource2[\"Unmapped\"] = 255] = \"Unmapped\";\n})(InputSource ||= {});\nvar NetJoinFailReason;\n((NetJoinFailReason2) => {\n NetJoinFailReason2[NetJoinFailReason2[\"unknown\"] = 0] = \"unknown\";\n NetJoinFailReason2[NetJoinFailReason2[\"timeout\"] = 1] = \"timeout\";\n NetJoinFailReason2[NetJoinFailReason2[\"room_full\"] = 2] = \"room_full\";\n NetJoinFailReason2[NetJoinFailReason2[\"room_not_found\"] = 3] = \"room_not_found\";\n NetJoinFailReason2[NetJoinFailReason2[\"already_in_room\"] = 4] = \"already_in_room\";\n})(NetJoinFailReason ||= {});\n// js/inputs.ts\nvar MAX_PLAYERS = 12;\nvar KEYBOARD_OFFSET = 0;\nvar KEYBOARD_SIZE = 256;\nvar MOUSE_OFFSET = 256;\nvar MOUSE_BUTTONS_OFFSET = 16;\nvar PLAYER_INPUTS_SIZE = 280;\nvar INPUT_CTX_SIZE = MAX_PLAYERS * PLAYER_INPUTS_SIZE;\nvar EVENT_PAYLOAD_SIZE = 8;\nvar EVENT_PAYLOAD_ALIGN = 4;\nfunction keyToKeyCode(key) {\n return Key[key];\n}\nfunction keyCodeToKey(code) {\n return Key[code];\n}\nfunction mouseButtonToMouseButtonCode(button) {\n return MouseButton[button];\n}\nfunction mouseButtonCodeToMouseButton(code) {\n return MouseButton[code];\n}\nfunction inputSourceToInputSourceCode(source) {\n return InputSource[source];\n}\nfunction inputSourceCodeToInputSource(code) {\n return InputSource[code];\n}\n\n// js/contexts/inputContext.ts\nclass PlayerInputContext {\n #dataView;\n #keys;\n #mouse;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get keys() {\n if (!this.#keys) {\n this.#keys = new KeyboardContext(new DataView(this.#dataView.buffer, this.#dataView.byteOffset + KEYBOARD_OFFSET));\n }\n return this.#keys;\n }\n get mouse() {\n if (!this.#mouse) {\n this.#mouse = new MouseContext(new DataView(this.#dataView.buffer, this.#dataView.byteOffset + MOUSE_OFFSET));\n }\n return this.#mouse;\n }\n}\n\nclass InputContext {\n #dataView;\n #players = [];\n constructor(dataView) {\n if (dataView) {\n this.#dataView = dataView;\n this.#buildPlayers();\n }\n }\n get dataView() {\n if (!this.#dataView) {\n throw new Error(\"DataView is not initialized on InputContext\");\n }\n return this.#dataView;\n }\n set dataView(dataView) {\n this.#dataView = dataView;\n this.#buildPlayers();\n }\n #buildPlayers() {\n this.#players = [];\n for (let i = 0;i < MAX_PLAYERS; i++) {\n const playerOffset = i * PLAYER_INPUTS_SIZE;\n const playerDataView = new DataView(this.dataView.buffer, this.dataView.byteOffset + playerOffset, PLAYER_INPUTS_SIZE);\n this.#players.push(new PlayerInputContext(playerDataView));\n }\n }\n get players() {\n return this.#players;\n }\n get keys() {\n if (!this.#players[0]) {\n throw new Error(\"No player inputs available in InputContext\");\n }\n return this.#players[0].keys;\n }\n get mouse() {\n if (!this.#players[0]) {\n throw new Error(\"No player inputs available in InputContext\");\n }\n return this.#players[0].mouse;\n }\n}\n\nclass MouseContext {\n #dataView;\n #buttonStates = new Map;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get x() {\n return this.#dataView.getFloat32(0, true);\n }\n get y() {\n return this.#dataView.getFloat32(4, true);\n }\n get wheel() {\n return { x: this.wheelX, y: this.wheelY };\n }\n get wheelX() {\n return this.#dataView.getFloat32(8, true);\n }\n get wheelY() {\n return this.#dataView.getFloat32(12, true);\n }\n get left() {\n return this.#buttonState(1 /* Left */);\n }\n get right() {\n return this.#buttonState(3 /* Right */);\n }\n get middle() {\n return this.#buttonState(2 /* Middle */);\n }\n #buttonState(code) {\n let state;\n if (this.#buttonStates.has(code)) {\n state = this.#buttonStates.get(code);\n } else {\n state = { down: false, held: false, up: false };\n this.#buttonStates.set(code, state);\n }\n const offset = MOUSE_BUTTONS_OFFSET;\n state.held = !!(this.#dataView.getUint8(offset + code) & 1);\n state.down = state.held && !(this.#dataView.getUint8(offset + code) & 2);\n state.up = !state.held && !!(this.#dataView.getUint8(offset + code) & 2);\n return state;\n }\n}\n\nclass KeyboardContext {\n #dataView;\n #keystates = new Map;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get shift() {\n return this.shiftLeft || this.shiftRight;\n }\n get alt() {\n return this.altLeft || this.altRight;\n }\n get control() {\n return this.controlLeft || this.controlRight;\n }\n get meta() {\n return this.metaLeft || this.metaRight;\n }\n get backquote() {\n return this.#keystate(1 /* Backquote */);\n }\n get backslash() {\n return this.#keystate(2 /* Backslash */);\n }\n get bracketLeft() {\n return this.#keystate(3 /* BracketLeft */);\n }\n get bracketRight() {\n return this.#keystate(4 /* BracketRight */);\n }\n get comma() {\n return this.#keystate(5 /* Comma */);\n }\n get digit0() {\n return this.#keystate(6 /* Digit0 */);\n }\n get digit1() {\n return this.#keystate(7 /* Digit1 */);\n }\n get digit2() {\n return this.#keystate(8 /* Digit2 */);\n }\n get digit3() {\n return this.#keystate(9 /* Digit3 */);\n }\n get digit4() {\n return this.#keystate(10 /* Digit4 */);\n }\n get digit5() {\n return this.#keystate(11 /* Digit5 */);\n }\n get digit6() {\n return this.#keystate(12 /* Digit6 */);\n }\n get digit7() {\n return this.#keystate(13 /* Digit7 */);\n }\n get digit8() {\n return this.#keystate(14 /* Digit8 */);\n }\n get digit9() {\n return this.#keystate(15 /* Digit9 */);\n }\n get equal() {\n return this.#keystate(16 /* Equal */);\n }\n get intlBackslash() {\n return this.#keystate(17 /* IntlBackslash */);\n }\n get intlRo() {\n return this.#keystate(18 /* IntlRo */);\n }\n get intlYen() {\n return this.#keystate(19 /* IntlYen */);\n }\n get a() {\n return this.#keystate(20 /* KeyA */);\n }\n get b() {\n return this.#keystate(21 /* KeyB */);\n }\n get c() {\n return this.#keystate(22 /* KeyC */);\n }\n get d() {\n return this.#keystate(23 /* KeyD */);\n }\n get e() {\n return this.#keystate(24 /* KeyE */);\n }\n get f() {\n return this.#keystate(25 /* KeyF */);\n }\n get g() {\n return this.#keystate(26 /* KeyG */);\n }\n get h() {\n return this.#keystate(27 /* KeyH */);\n }\n get i() {\n return this.#keystate(28 /* KeyI */);\n }\n get j() {\n return this.#keystate(29 /* KeyJ */);\n }\n get k() {\n return this.#keystate(30 /* KeyK */);\n }\n get l() {\n return this.#keystate(31 /* KeyL */);\n }\n get m() {\n return this.#keystate(32 /* KeyM */);\n }\n get n() {\n return this.#keystate(33 /* KeyN */);\n }\n get o() {\n return this.#keystate(34 /* KeyO */);\n }\n get p() {\n return this.#keystate(35 /* KeyP */);\n }\n get q() {\n return this.#keystate(36 /* KeyQ */);\n }\n get r() {\n return this.#keystate(37 /* KeyR */);\n }\n get s() {\n return this.#keystate(38 /* KeyS */);\n }\n get t() {\n return this.#keystate(39 /* KeyT */);\n }\n get u() {\n return this.#keystate(40 /* KeyU */);\n }\n get v() {\n return this.#keystate(41 /* KeyV */);\n }\n get w() {\n return this.#keystate(42 /* KeyW */);\n }\n get x() {\n return this.#keystate(43 /* KeyX */);\n }\n get y() {\n return this.#keystate(44 /* KeyY */);\n }\n get z() {\n return this.#keystate(45 /* KeyZ */);\n }\n get minus() {\n return this.#keystate(46 /* Minus */);\n }\n get period() {\n return this.#keystate(47 /* Period */);\n }\n get quote() {\n return this.#keystate(48 /* Quote */);\n }\n get semicolon() {\n return this.#keystate(49 /* Semicolon */);\n }\n get slash() {\n return this.#keystate(50 /* Slash */);\n }\n get altLeft() {\n return this.#keystate(51 /* AltLeft */);\n }\n get altRight() {\n return this.#keystate(52 /* AltRight */);\n }\n get backspace() {\n return this.#keystate(53 /* Backspace */);\n }\n get capsLock() {\n return this.#keystate(54 /* CapsLock */);\n }\n get contextMenu() {\n return this.#keystate(55 /* ContextMenu */);\n }\n get controlLeft() {\n return this.#keystate(56 /* ControlLeft */);\n }\n get controlRight() {\n return this.#keystate(57 /* ControlRight */);\n }\n get enter() {\n return this.#keystate(58 /* Enter */);\n }\n get metaLeft() {\n return this.#keystate(59 /* MetaLeft */);\n }\n get metaRight() {\n return this.#keystate(60 /* MetaRight */);\n }\n get shiftLeft() {\n return this.#keystate(61 /* ShiftLeft */);\n }\n get shiftRight() {\n return this.#keystate(62 /* ShiftRight */);\n }\n get space() {\n return this.#keystate(63 /* Space */);\n }\n get tab() {\n return this.#keystate(64 /* Tab */);\n }\n get convert() {\n return this.#keystate(65 /* Convert */);\n }\n get kanaMode() {\n return this.#keystate(66 /* KanaMode */);\n }\n get lang1() {\n return this.#keystate(67 /* Lang1 */);\n }\n get lang2() {\n return this.#keystate(68 /* Lang2 */);\n }\n get lang3() {\n return this.#keystate(69 /* Lang3 */);\n }\n get lang4() {\n return this.#keystate(70 /* Lang4 */);\n }\n get lang5() {\n return this.#keystate(71 /* Lang5 */);\n }\n get nonConvert() {\n return this.#keystate(72 /* NonConvert */);\n }\n get delete() {\n return this.#keystate(73 /* Delete */);\n }\n get end() {\n return this.#keystate(74 /* End */);\n }\n get help() {\n return this.#keystate(75 /* Help */);\n }\n get home() {\n return this.#keystate(76 /* Home */);\n }\n get insert() {\n return this.#keystate(77 /* Insert */);\n }\n get pageDown() {\n return this.#keystate(78 /* PageDown */);\n }\n get pageUp() {\n return this.#keystate(79 /* PageUp */);\n }\n get arrowDown() {\n return this.#keystate(80 /* ArrowDown */);\n }\n get arrowLeft() {\n return this.#keystate(81 /* ArrowLeft */);\n }\n get arrowRight() {\n return this.#keystate(82 /* ArrowRight */);\n }\n get arrowUp() {\n return this.#keystate(83 /* ArrowUp */);\n }\n get numLock() {\n return this.#keystate(84 /* NumLock */);\n }\n get numpad0() {\n return this.#keystate(85 /* Numpad0 */);\n }\n get numpad1() {\n return this.#keystate(86 /* Numpad1 */);\n }\n get numpad2() {\n return this.#keystate(87 /* Numpad2 */);\n }\n get numpad3() {\n return this.#keystate(88 /* Numpad3 */);\n }\n get numpad4() {\n return this.#keystate(89 /* Numpad4 */);\n }\n get numpad5() {\n return this.#keystate(90 /* Numpad5 */);\n }\n get numpad6() {\n return this.#keystate(91 /* Numpad6 */);\n }\n get numpad7() {\n return this.#keystate(92 /* Numpad7 */);\n }\n get numpad8() {\n return this.#keystate(93 /* Numpad8 */);\n }\n get numpad9() {\n return this.#keystate(94 /* Numpad9 */);\n }\n get numpadAdd() {\n return this.#keystate(95 /* NumpadAdd */);\n }\n get numpadBackspace() {\n return this.#keystate(96 /* NumpadBackspace */);\n }\n get numpadClear() {\n return this.#keystate(97 /* NumpadClear */);\n }\n get numpadClearEntry() {\n return this.#keystate(98 /* NumpadClearEntry */);\n }\n get numpadComma() {\n return this.#keystate(99 /* NumpadComma */);\n }\n get numpadDecimal() {\n return this.#keystate(100 /* NumpadDecimal */);\n }\n get numpadDivide() {\n return this.#keystate(101 /* NumpadDivide */);\n }\n get numpadEnter() {\n return this.#keystate(102 /* NumpadEnter */);\n }\n get numpadEqual() {\n return this.#keystate(103 /* NumpadEqual */);\n }\n get numpadHash() {\n return this.#keystate(104 /* NumpadHash */);\n }\n get numpadMemoryAdd() {\n return this.#keystate(105 /* NumpadMemoryAdd */);\n }\n get numpadMemoryClear() {\n return this.#keystate(106 /* NumpadMemoryClear */);\n }\n get numpadMemoryRecall() {\n return this.#keystate(107 /* NumpadMemoryRecall */);\n }\n get numpadMemoryStore() {\n return this.#keystate(108 /* NumpadMemoryStore */);\n }\n get numpadMemorySubtract() {\n return this.#keystate(109 /* NumpadMemorySubtract */);\n }\n get numpadMultiply() {\n return this.#keystate(110 /* NumpadMultiply */);\n }\n get numpadParenLeft() {\n return this.#keystate(111 /* NumpadParenLeft */);\n }\n get numpadParenRight() {\n return this.#keystate(112 /* NumpadParenRight */);\n }\n get numpadStar() {\n return this.#keystate(113 /* NumpadStar */);\n }\n get numpadSubtract() {\n return this.#keystate(114 /* NumpadSubtract */);\n }\n get escape() {\n return this.#keystate(115 /* Escape */);\n }\n get fn() {\n return this.#keystate(116 /* Fn */);\n }\n get fnLock() {\n return this.#keystate(117 /* FnLock */);\n }\n get printScreen() {\n return this.#keystate(118 /* PrintScreen */);\n }\n get scrollLock() {\n return this.#keystate(119 /* ScrollLock */);\n }\n get pause() {\n return this.#keystate(120 /* Pause */);\n }\n get browserBack() {\n return this.#keystate(121 /* BrowserBack */);\n }\n get browserFavorites() {\n return this.#keystate(122 /* BrowserFavorites */);\n }\n get browserForward() {\n return this.#keystate(123 /* BrowserForward */);\n }\n get browserHome() {\n return this.#keystate(124 /* BrowserHome */);\n }\n get browserRefresh() {\n return this.#keystate(125 /* BrowserRefresh */);\n }\n get browserSearch() {\n return this.#keystate(126 /* BrowserSearch */);\n }\n get browserStop() {\n return this.#keystate(127 /* BrowserStop */);\n }\n get eject() {\n return this.#keystate(128 /* Eject */);\n }\n get launchApp1() {\n return this.#keystate(129 /* LaunchApp1 */);\n }\n get launchApp2() {\n return this.#keystate(130 /* LaunchApp2 */);\n }\n get launchMail() {\n return this.#keystate(131 /* LaunchMail */);\n }\n get mediaPlayPause() {\n return this.#keystate(132 /* MediaPlayPause */);\n }\n get mediaSelect() {\n return this.#keystate(133 /* MediaSelect */);\n }\n get mediaStop() {\n return this.#keystate(134 /* MediaStop */);\n }\n get mediaTrackNext() {\n return this.#keystate(135 /* MediaTrackNext */);\n }\n get mediaTrackPrevious() {\n return this.#keystate(136 /* MediaTrackPrevious */);\n }\n get power() {\n return this.#keystate(137 /* Power */);\n }\n get sleep() {\n return this.#keystate(138 /* Sleep */);\n }\n get audioVolumeDown() {\n return this.#keystate(139 /* AudioVolumeDown */);\n }\n get audioVolumeMute() {\n return this.#keystate(140 /* AudioVolumeMute */);\n }\n get audioVolumeUp() {\n return this.#keystate(141 /* AudioVolumeUp */);\n }\n get wakeUp() {\n return this.#keystate(142 /* WakeUp */);\n }\n get hyper() {\n return this.#keystate(143 /* Hyper */);\n }\n get super() {\n return this.#keystate(144 /* Super */);\n }\n get turbo() {\n return this.#keystate(145 /* Turbo */);\n }\n get abort() {\n return this.#keystate(146 /* Abort */);\n }\n get resume() {\n return this.#keystate(147 /* Resume */);\n }\n get suspend() {\n return this.#keystate(148 /* Suspend */);\n }\n get again() {\n return this.#keystate(149 /* Again */);\n }\n get copy() {\n return this.#keystate(150 /* Copy */);\n }\n get cut() {\n return this.#keystate(151 /* Cut */);\n }\n get find() {\n return this.#keystate(152 /* Find */);\n }\n get open() {\n return this.#keystate(153 /* Open */);\n }\n get paste() {\n return this.#keystate(154 /* Paste */);\n }\n get props() {\n return this.#keystate(155 /* Props */);\n }\n get select() {\n return this.#keystate(156 /* Select */);\n }\n get undo() {\n return this.#keystate(157 /* Undo */);\n }\n get hiragana() {\n return this.#keystate(158 /* Hiragana */);\n }\n get katakana() {\n return this.#keystate(159 /* Katakana */);\n }\n get f1() {\n return this.#keystate(160 /* F1 */);\n }\n get f2() {\n return this.#keystate(161 /* F2 */);\n }\n get f3() {\n return this.#keystate(162 /* F3 */);\n }\n get f4() {\n return this.#keystate(163 /* F4 */);\n }\n get f5() {\n return this.#keystate(164 /* F5 */);\n }\n get f6() {\n return this.#keystate(165 /* F6 */);\n }\n get f7() {\n return this.#keystate(166 /* F7 */);\n }\n get f8() {\n return this.#keystate(167 /* F8 */);\n }\n get f9() {\n return this.#keystate(168 /* F9 */);\n }\n get f10() {\n return this.#keystate(169 /* F10 */);\n }\n get f11() {\n return this.#keystate(170 /* F11 */);\n }\n get f12() {\n return this.#keystate(171 /* F12 */);\n }\n get f13() {\n return this.#keystate(172 /* F13 */);\n }\n get f14() {\n return this.#keystate(173 /* F14 */);\n }\n get f15() {\n return this.#keystate(174 /* F15 */);\n }\n get f16() {\n return this.#keystate(175 /* F16 */);\n }\n get f17() {\n return this.#keystate(176 /* F17 */);\n }\n get f18() {\n return this.#keystate(177 /* F18 */);\n }\n get f19() {\n return this.#keystate(178 /* F19 */);\n }\n get f20() {\n return this.#keystate(179 /* F20 */);\n }\n get f21() {\n return this.#keystate(180 /* F21 */);\n }\n get f22() {\n return this.#keystate(181 /* F22 */);\n }\n get f23() {\n return this.#keystate(182 /* F23 */);\n }\n get f24() {\n return this.#keystate(183 /* F24 */);\n }\n get f25() {\n return this.#keystate(184 /* F25 */);\n }\n get f26() {\n return this.#keystate(185 /* F26 */);\n }\n get f27() {\n return this.#keystate(186 /* F27 */);\n }\n get f28() {\n return this.#keystate(187 /* F28 */);\n }\n get f29() {\n return this.#keystate(188 /* F29 */);\n }\n get f30() {\n return this.#keystate(189 /* F30 */);\n }\n get f31() {\n return this.#keystate(190 /* F31 */);\n }\n get f32() {\n return this.#keystate(191 /* F32 */);\n }\n get f33() {\n return this.#keystate(192 /* F33 */);\n }\n get f34() {\n return this.#keystate(193 /* F34 */);\n }\n get f35() {\n return this.#keystate(194 /* F35 */);\n }\n #keystate(code) {\n let state;\n if (this.#keystates.has(code)) {\n state = this.#keystates.get(code);\n } else {\n state = { down: false, held: false, up: false };\n this.#keystates.set(code, state);\n }\n state.held = !!(this.#dataView.getUint8(code) & 1);\n state.down = state.held && !(this.#dataView.getUint8(code) & 2);\n state.up = !state.held && !!(this.#dataView.getUint8(code) & 2);\n return state;\n }\n}\n// js/contexts/netContext.ts\nvar MAX_PEERS = 12;\nvar PEERS_ARRAY_OFFSET = 32;\nvar PEER_CTX_SIZE = 8;\nvar PEER_CONNECTED_OFFSET = 0;\nvar PEER_PACKET_COUNT_OFFSET = 1;\nvar PEER_SEQ_OFFSET = 2;\nvar PEER_ACK_OFFSET = 4;\nvar PEER_ACK_COUNT_OFFSET = 6;\nvar STATUS_MAP = {\n 0: \"offline\",\n 1: \"local\",\n 2: \"join:pending\",\n 3: \"connected\",\n 4: \"disconnected\"\n};\n\nclass NetContext {\n dataView;\n #peers = Array.from({ length: MAX_PEERS }, () => ({\n isLocal: false,\n seq: -1,\n ack: -1\n }));\n #peersResult = [];\n constructor(dataView) {\n this.dataView = dataView;\n }\n #hasValidBuffer() {\n if (!this.dataView)\n return false;\n return this.dataView.buffer.byteLength > 0;\n }\n get peerCount() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint8(0);\n }\n get localPeerId() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint8(1);\n }\n get isInSession() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint8(2) !== 0;\n }\n get status() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n const statusByte = this.dataView.getUint8(3);\n return STATUS_MAP[statusByte] ?? \"local\";\n }\n get matchFrame() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint32(4, true);\n }\n get sessionStartFrame() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint32(8, true);\n }\n get roomCode() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n const bytes = [];\n for (let i = 0;i < 8; i++) {\n const byte = this.dataView.getUint8(12 + i);\n if (byte === 0)\n break;\n bytes.push(byte);\n }\n return String.fromCharCode(...bytes);\n }\n get wantsRoomCode() {\n if (!this.#hasValidBuffer()) {\n return;\n }\n const bytes = [];\n for (let i = 0;i < 8; i++) {\n const byte = this.dataView.getUint8(20 + i);\n if (byte === 0)\n break;\n bytes.push(byte);\n }\n return bytes.length > 0 ? String.fromCharCode(...bytes) : undefined;\n }\n set wantsRoomCode(code) {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n for (let i = 0;i < 8; i++) {\n this.dataView.setUint8(20 + i, 0);\n }\n if (code) {\n for (let i = 0;i < Math.min(code.length, 7); i++) {\n this.dataView.setUint8(20 + i, code.charCodeAt(i));\n }\n }\n }\n get wantsDisconnect() {\n if (!this.#hasValidBuffer()) {\n return false;\n }\n return this.dataView.getUint8(28) !== 0;\n }\n set wantsDisconnect(value) {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n this.dataView.setUint8(28, value ? 1 : 0);\n }\n get peers() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n const dv = this.dataView;\n const localPeerId = this.localPeerId;\n const matchFrame = this.matchFrame;\n let minRemoteSeq = -1;\n for (let i = 0;i < MAX_PEERS; i++) {\n if (i === localPeerId)\n continue;\n const peerOffset = PEERS_ARRAY_OFFSET + i * PEER_CTX_SIZE;\n if (dv.getUint8(peerOffset + PEER_CONNECTED_OFFSET) !== 1)\n continue;\n if (dv.getUint8(peerOffset + PEER_PACKET_COUNT_OFFSET) === 0)\n continue;\n const seq = dv.getUint16(peerOffset + PEER_SEQ_OFFSET, true);\n if (minRemoteSeq === -1 || seq < minRemoteSeq) {\n minRemoteSeq = seq;\n }\n }\n this.#peersResult.length = 0;\n for (let i = 0;i < MAX_PEERS; i++) {\n const peerOffset = PEERS_ARRAY_OFFSET + i * PEER_CTX_SIZE;\n if (dv.getUint8(peerOffset + PEER_CONNECTED_OFFSET) !== 1)\n continue;\n const peer = this.#peers[i];\n if (!peer) {\n throw new Error(`Unexpected missing peer object at index ${i}`);\n }\n const isLocal = i === localPeerId;\n peer.isLocal = isLocal;\n if (isLocal) {\n peer.seq = matchFrame;\n peer.ack = minRemoteSeq;\n } else {\n const packetCount = dv.getUint8(peerOffset + PEER_PACKET_COUNT_OFFSET);\n const ackCount = dv.getUint8(peerOffset + PEER_ACK_COUNT_OFFSET);\n peer.seq = packetCount === 0 ? -1 : dv.getUint16(peerOffset + PEER_SEQ_OFFSET, true);\n peer.ack = ackCount === 0 ? -1 : dv.getUint16(peerOffset + PEER_ACK_OFFSET, true);\n }\n this.#peersResult.push(peer);\n }\n return this.#peersResult;\n }\n}\n// js/contexts/timeContext.ts\nclass TimeContext {\n dataView;\n constructor(dataView) {\n this.dataView = dataView;\n }\n get frame() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(0, true);\n }\n get dt() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(4, true) / 1000;\n }\n get time() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(8, true) / 1000;\n }\n}\n// js/tape.ts\nvar TAPE_MAGIC = 1413566533;\nfunction readTapeHeader(tape) {\n const view = new DataView(tape.buffer, tape.byteOffset, tape.byteLength);\n const magic = view.getUint32(0, true);\n if (magic !== TAPE_MAGIC) {\n throw new Error(`Invalid tape format: expected magic ${TAPE_MAGIC.toString(16)}, got ${magic.toString(16)}`);\n }\n return {\n magic,\n version: view.getUint16(4, true),\n startFrame: view.getUint32(8, true),\n frameCount: view.getUint16(12, true),\n eventCount: view.getUint16(14, true)\n };\n}\n// js/defaultUrl.ts\nvar DEFAULT_WASM_URL = new URL(\"https://unpkg.com/@bloopjs/engine@0.0.85/wasm/bloop.wasm\");\n\n// js/engine.ts\nvar MAX_ROLLBACK_FRAMES = 500;\nvar TIME_CTX_OFFSET = 0;\nvar INPUT_CTX_OFFSET = TIME_CTX_OFFSET + 4;\nvar EVENTS_OFFSET = INPUT_CTX_OFFSET + 4;\nvar NET_CTX_OFFSET = EVENTS_OFFSET + 4;\nvar SNAPSHOT_HEADER_LEN = 16;\nvar SNAPSHOT_HEADER_USER_LEN_OFFSET = 4;\nvar SNAPSHOT_HEADER_ENGINE_LEN_OFFSET = 8;\nexport {\n readTapeHeader,\n mouseButtonToMouseButtonCode,\n mouseButtonCodeToMouseButton,\n keyToKeyCode,\n keyCodeToKey,\n inputSourceToInputSourceCode,\n inputSourceCodeToInputSource,\n TimeContext,\n TIME_CTX_OFFSET,\n SNAPSHOT_HEADER_USER_LEN_OFFSET,\n SNAPSHOT_HEADER_LEN,\n SNAPSHOT_HEADER_ENGINE_LEN_OFFSET,\n PlayerInputContext,\n PLAYER_INPUTS_SIZE,\n NetContext,\n NET_CTX_OFFSET,\n MouseContext,\n MOUSE_OFFSET,\n MOUSE_BUTTONS_OFFSET,\n MAX_ROLLBACK_FRAMES,\n MAX_PLAYERS,\n KeyboardContext,\n KEYBOARD_SIZE,\n KEYBOARD_OFFSET,\n InputContext,\n INPUT_CTX_SIZE,\n INPUT_CTX_OFFSET,\n exports_enums as Enums,\n EVENT_PAYLOAD_SIZE,\n EVENT_PAYLOAD_ALIGN,\n EVENTS_OFFSET,\n DEFAULT_WASM_URL\n};\n\n//# debugId=1042069BD0D99CE564756E2164756E21\n//# sourceMappingURL=engine.js.map\n",
5
+ "var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, {\n get: all[name],\n enumerable: true,\n configurable: true,\n set: (newValue) => all[name] = () => newValue\n });\n};\n\n// src/util.ts\nvar exports_util = {};\n__export(exports_util, {\n unwrap: () => unwrap,\n toHexString: () => toHexString,\n logPerSecond: () => logPerSecond,\n logOnce: () => logOnce,\n logEvery: () => logEvery,\n assert: () => assert\n});\nfunction toHexString(dataView, length) {\n length ??= dataView.byteLength;\n let hexString = \"\";\n for (let i = 0;i < length; i++) {\n const byte = dataView.getUint8(i);\n hexString += `${byte.toString(16).padStart(2, \"0\")} `;\n }\n return hexString.trim();\n}\nfunction assert(condition, message) {\n if (condition == null || condition === false) {\n throw new Error(message ?? \"Assertion failed\");\n }\n}\nvar backpressureLogs = new Map;\nfunction logOnce(...args) {\n const key = args.map((a) => String(a)).join(\" \");\n if (!backpressureLogs.has(key)) {\n console.log(...args);\n backpressureLogs.set(key, 1);\n }\n}\nfunction logPerSecond(now, ...args) {\n logEvery(now, 1000, ...args);\n}\nfunction logEvery(now, interval = 10, ...args) {\n const key = args.map((a) => String(a)).join(\" \");\n const lastLogged = backpressureLogs.get(key) ?? -Infinity;\n if (now - lastLogged >= interval) {\n console.log(...args);\n backpressureLogs.set(key, now);\n }\n}\nfunction unwrap(value, message) {\n assert(value != null, message ?? `Unwrap failed: value is ${value}`);\n return value;\n}\n// ../engine/dist/engine.js\nvar exports_engine = {};\n__export(exports_engine, {\n readTapeHeader: () => readTapeHeader,\n mouseButtonToMouseButtonCode: () => mouseButtonToMouseButtonCode,\n mouseButtonCodeToMouseButton: () => mouseButtonCodeToMouseButton,\n keyToKeyCode: () => keyToKeyCode,\n keyCodeToKey: () => keyCodeToKey,\n inputSourceToInputSourceCode: () => inputSourceToInputSourceCode,\n inputSourceCodeToInputSource: () => inputSourceCodeToInputSource,\n TimeContext: () => TimeContext,\n TIME_CTX_OFFSET: () => TIME_CTX_OFFSET,\n SNAPSHOT_HEADER_USER_LEN_OFFSET: () => SNAPSHOT_HEADER_USER_LEN_OFFSET,\n SNAPSHOT_HEADER_LEN: () => SNAPSHOT_HEADER_LEN,\n SNAPSHOT_HEADER_ENGINE_LEN_OFFSET: () => SNAPSHOT_HEADER_ENGINE_LEN_OFFSET,\n PlayerInputContext: () => PlayerInputContext,\n PLAYER_INPUTS_SIZE: () => PLAYER_INPUTS_SIZE,\n NetContext: () => NetContext,\n NET_CTX_OFFSET: () => NET_CTX_OFFSET,\n MouseContext: () => MouseContext,\n MOUSE_OFFSET: () => MOUSE_OFFSET,\n MOUSE_BUTTONS_OFFSET: () => MOUSE_BUTTONS_OFFSET,\n MAX_ROLLBACK_FRAMES: () => MAX_ROLLBACK_FRAMES,\n MAX_PLAYERS: () => MAX_PLAYERS,\n KeyboardContext: () => KeyboardContext,\n KEYBOARD_SIZE: () => KEYBOARD_SIZE,\n KEYBOARD_OFFSET: () => KEYBOARD_OFFSET,\n InputContext: () => InputContext,\n INPUT_CTX_SIZE: () => INPUT_CTX_SIZE,\n INPUT_CTX_OFFSET: () => INPUT_CTX_OFFSET,\n Enums: () => exports_enums,\n EVENT_PAYLOAD_SIZE: () => EVENT_PAYLOAD_SIZE,\n EVENT_PAYLOAD_ALIGN: () => EVENT_PAYLOAD_ALIGN,\n EVENTS_OFFSET: () => EVENTS_OFFSET,\n DEFAULT_WASM_URL: () => DEFAULT_WASM_URL\n});\nvar __defProp2 = Object.defineProperty;\nvar __export2 = (target, all) => {\n for (var name in all)\n __defProp2(target, name, {\n get: all[name],\n enumerable: true,\n configurable: true,\n set: (newValue) => all[name] = () => newValue\n });\n};\nvar exports_enums = {};\n__export2(exports_enums, {\n NetJoinFailReason: () => NetJoinFailReason,\n MouseButton: () => MouseButton,\n Key: () => Key,\n InputSource: () => InputSource,\n EventType: () => EventType\n});\nvar EventType;\n((EventType2) => {\n EventType2[EventType2[\"None\"] = 0] = \"None\";\n EventType2[EventType2[\"KeyDown\"] = 1] = \"KeyDown\";\n EventType2[EventType2[\"KeyUp\"] = 2] = \"KeyUp\";\n EventType2[EventType2[\"MouseMove\"] = 3] = \"MouseMove\";\n EventType2[EventType2[\"MouseDown\"] = 4] = \"MouseDown\";\n EventType2[EventType2[\"MouseUp\"] = 5] = \"MouseUp\";\n EventType2[EventType2[\"MouseWheel\"] = 6] = \"MouseWheel\";\n EventType2[EventType2[\"FrameStart\"] = 7] = \"FrameStart\";\n EventType2[EventType2[\"NetJoinOk\"] = 8] = \"NetJoinOk\";\n EventType2[EventType2[\"NetJoinFail\"] = 9] = \"NetJoinFail\";\n EventType2[EventType2[\"NetPeerJoin\"] = 10] = \"NetPeerJoin\";\n EventType2[EventType2[\"NetPeerLeave\"] = 11] = \"NetPeerLeave\";\n EventType2[EventType2[\"NetPeerAssignLocalId\"] = 12] = \"NetPeerAssignLocalId\";\n EventType2[EventType2[\"NetPacketReceived\"] = 13] = \"NetPacketReceived\";\n EventType2[EventType2[\"NetSessionInit\"] = 14] = \"NetSessionInit\";\n})(EventType ||= {});\nvar MouseButton;\n((MouseButton2) => {\n MouseButton2[MouseButton2[\"None\"] = 0] = \"None\";\n MouseButton2[MouseButton2[\"Left\"] = 1] = \"Left\";\n MouseButton2[MouseButton2[\"Middle\"] = 2] = \"Middle\";\n MouseButton2[MouseButton2[\"Right\"] = 3] = \"Right\";\n MouseButton2[MouseButton2[\"X1\"] = 4] = \"X1\";\n MouseButton2[MouseButton2[\"X2\"] = 5] = \"X2\";\n MouseButton2[MouseButton2[\"X3\"] = 6] = \"X3\";\n MouseButton2[MouseButton2[\"X4\"] = 7] = \"X4\";\n MouseButton2[MouseButton2[\"X5\"] = 8] = \"X5\";\n})(MouseButton ||= {});\nvar Key;\n((Key2) => {\n Key2[Key2[\"None\"] = 0] = \"None\";\n Key2[Key2[\"Backquote\"] = 1] = \"Backquote\";\n Key2[Key2[\"Backslash\"] = 2] = \"Backslash\";\n Key2[Key2[\"BracketLeft\"] = 3] = \"BracketLeft\";\n Key2[Key2[\"BracketRight\"] = 4] = \"BracketRight\";\n Key2[Key2[\"Comma\"] = 5] = \"Comma\";\n Key2[Key2[\"Digit0\"] = 6] = \"Digit0\";\n Key2[Key2[\"Digit1\"] = 7] = \"Digit1\";\n Key2[Key2[\"Digit2\"] = 8] = \"Digit2\";\n Key2[Key2[\"Digit3\"] = 9] = \"Digit3\";\n Key2[Key2[\"Digit4\"] = 10] = \"Digit4\";\n Key2[Key2[\"Digit5\"] = 11] = \"Digit5\";\n Key2[Key2[\"Digit6\"] = 12] = \"Digit6\";\n Key2[Key2[\"Digit7\"] = 13] = \"Digit7\";\n Key2[Key2[\"Digit8\"] = 14] = \"Digit8\";\n Key2[Key2[\"Digit9\"] = 15] = \"Digit9\";\n Key2[Key2[\"Equal\"] = 16] = \"Equal\";\n Key2[Key2[\"IntlBackslash\"] = 17] = \"IntlBackslash\";\n Key2[Key2[\"IntlRo\"] = 18] = \"IntlRo\";\n Key2[Key2[\"IntlYen\"] = 19] = \"IntlYen\";\n Key2[Key2[\"KeyA\"] = 20] = \"KeyA\";\n Key2[Key2[\"KeyB\"] = 21] = \"KeyB\";\n Key2[Key2[\"KeyC\"] = 22] = \"KeyC\";\n Key2[Key2[\"KeyD\"] = 23] = \"KeyD\";\n Key2[Key2[\"KeyE\"] = 24] = \"KeyE\";\n Key2[Key2[\"KeyF\"] = 25] = \"KeyF\";\n Key2[Key2[\"KeyG\"] = 26] = \"KeyG\";\n Key2[Key2[\"KeyH\"] = 27] = \"KeyH\";\n Key2[Key2[\"KeyI\"] = 28] = \"KeyI\";\n Key2[Key2[\"KeyJ\"] = 29] = \"KeyJ\";\n Key2[Key2[\"KeyK\"] = 30] = \"KeyK\";\n Key2[Key2[\"KeyL\"] = 31] = \"KeyL\";\n Key2[Key2[\"KeyM\"] = 32] = \"KeyM\";\n Key2[Key2[\"KeyN\"] = 33] = \"KeyN\";\n Key2[Key2[\"KeyO\"] = 34] = \"KeyO\";\n Key2[Key2[\"KeyP\"] = 35] = \"KeyP\";\n Key2[Key2[\"KeyQ\"] = 36] = \"KeyQ\";\n Key2[Key2[\"KeyR\"] = 37] = \"KeyR\";\n Key2[Key2[\"KeyS\"] = 38] = \"KeyS\";\n Key2[Key2[\"KeyT\"] = 39] = \"KeyT\";\n Key2[Key2[\"KeyU\"] = 40] = \"KeyU\";\n Key2[Key2[\"KeyV\"] = 41] = \"KeyV\";\n Key2[Key2[\"KeyW\"] = 42] = \"KeyW\";\n Key2[Key2[\"KeyX\"] = 43] = \"KeyX\";\n Key2[Key2[\"KeyY\"] = 44] = \"KeyY\";\n Key2[Key2[\"KeyZ\"] = 45] = \"KeyZ\";\n Key2[Key2[\"Minus\"] = 46] = \"Minus\";\n Key2[Key2[\"Period\"] = 47] = \"Period\";\n Key2[Key2[\"Quote\"] = 48] = \"Quote\";\n Key2[Key2[\"Semicolon\"] = 49] = \"Semicolon\";\n Key2[Key2[\"Slash\"] = 50] = \"Slash\";\n Key2[Key2[\"AltLeft\"] = 51] = \"AltLeft\";\n Key2[Key2[\"AltRight\"] = 52] = \"AltRight\";\n Key2[Key2[\"Backspace\"] = 53] = \"Backspace\";\n Key2[Key2[\"CapsLock\"] = 54] = \"CapsLock\";\n Key2[Key2[\"ContextMenu\"] = 55] = \"ContextMenu\";\n Key2[Key2[\"ControlLeft\"] = 56] = \"ControlLeft\";\n Key2[Key2[\"ControlRight\"] = 57] = \"ControlRight\";\n Key2[Key2[\"Enter\"] = 58] = \"Enter\";\n Key2[Key2[\"MetaLeft\"] = 59] = \"MetaLeft\";\n Key2[Key2[\"MetaRight\"] = 60] = \"MetaRight\";\n Key2[Key2[\"ShiftLeft\"] = 61] = \"ShiftLeft\";\n Key2[Key2[\"ShiftRight\"] = 62] = \"ShiftRight\";\n Key2[Key2[\"Space\"] = 63] = \"Space\";\n Key2[Key2[\"Tab\"] = 64] = \"Tab\";\n Key2[Key2[\"Convert\"] = 65] = \"Convert\";\n Key2[Key2[\"KanaMode\"] = 66] = \"KanaMode\";\n Key2[Key2[\"Lang1\"] = 67] = \"Lang1\";\n Key2[Key2[\"Lang2\"] = 68] = \"Lang2\";\n Key2[Key2[\"Lang3\"] = 69] = \"Lang3\";\n Key2[Key2[\"Lang4\"] = 70] = \"Lang4\";\n Key2[Key2[\"Lang5\"] = 71] = \"Lang5\";\n Key2[Key2[\"NonConvert\"] = 72] = \"NonConvert\";\n Key2[Key2[\"Delete\"] = 73] = \"Delete\";\n Key2[Key2[\"End\"] = 74] = \"End\";\n Key2[Key2[\"Help\"] = 75] = \"Help\";\n Key2[Key2[\"Home\"] = 76] = \"Home\";\n Key2[Key2[\"Insert\"] = 77] = \"Insert\";\n Key2[Key2[\"PageDown\"] = 78] = \"PageDown\";\n Key2[Key2[\"PageUp\"] = 79] = \"PageUp\";\n Key2[Key2[\"ArrowDown\"] = 80] = \"ArrowDown\";\n Key2[Key2[\"ArrowLeft\"] = 81] = \"ArrowLeft\";\n Key2[Key2[\"ArrowRight\"] = 82] = \"ArrowRight\";\n Key2[Key2[\"ArrowUp\"] = 83] = \"ArrowUp\";\n Key2[Key2[\"NumLock\"] = 84] = \"NumLock\";\n Key2[Key2[\"Numpad0\"] = 85] = \"Numpad0\";\n Key2[Key2[\"Numpad1\"] = 86] = \"Numpad1\";\n Key2[Key2[\"Numpad2\"] = 87] = \"Numpad2\";\n Key2[Key2[\"Numpad3\"] = 88] = \"Numpad3\";\n Key2[Key2[\"Numpad4\"] = 89] = \"Numpad4\";\n Key2[Key2[\"Numpad5\"] = 90] = \"Numpad5\";\n Key2[Key2[\"Numpad6\"] = 91] = \"Numpad6\";\n Key2[Key2[\"Numpad7\"] = 92] = \"Numpad7\";\n Key2[Key2[\"Numpad8\"] = 93] = \"Numpad8\";\n Key2[Key2[\"Numpad9\"] = 94] = \"Numpad9\";\n Key2[Key2[\"NumpadAdd\"] = 95] = \"NumpadAdd\";\n Key2[Key2[\"NumpadBackspace\"] = 96] = \"NumpadBackspace\";\n Key2[Key2[\"NumpadClear\"] = 97] = \"NumpadClear\";\n Key2[Key2[\"NumpadClearEntry\"] = 98] = \"NumpadClearEntry\";\n Key2[Key2[\"NumpadComma\"] = 99] = \"NumpadComma\";\n Key2[Key2[\"NumpadDecimal\"] = 100] = \"NumpadDecimal\";\n Key2[Key2[\"NumpadDivide\"] = 101] = \"NumpadDivide\";\n Key2[Key2[\"NumpadEnter\"] = 102] = \"NumpadEnter\";\n Key2[Key2[\"NumpadEqual\"] = 103] = \"NumpadEqual\";\n Key2[Key2[\"NumpadHash\"] = 104] = \"NumpadHash\";\n Key2[Key2[\"NumpadMemoryAdd\"] = 105] = \"NumpadMemoryAdd\";\n Key2[Key2[\"NumpadMemoryClear\"] = 106] = \"NumpadMemoryClear\";\n Key2[Key2[\"NumpadMemoryRecall\"] = 107] = \"NumpadMemoryRecall\";\n Key2[Key2[\"NumpadMemoryStore\"] = 108] = \"NumpadMemoryStore\";\n Key2[Key2[\"NumpadMemorySubtract\"] = 109] = \"NumpadMemorySubtract\";\n Key2[Key2[\"NumpadMultiply\"] = 110] = \"NumpadMultiply\";\n Key2[Key2[\"NumpadParenLeft\"] = 111] = \"NumpadParenLeft\";\n Key2[Key2[\"NumpadParenRight\"] = 112] = \"NumpadParenRight\";\n Key2[Key2[\"NumpadStar\"] = 113] = \"NumpadStar\";\n Key2[Key2[\"NumpadSubtract\"] = 114] = \"NumpadSubtract\";\n Key2[Key2[\"Escape\"] = 115] = \"Escape\";\n Key2[Key2[\"Fn\"] = 116] = \"Fn\";\n Key2[Key2[\"FnLock\"] = 117] = \"FnLock\";\n Key2[Key2[\"PrintScreen\"] = 118] = \"PrintScreen\";\n Key2[Key2[\"ScrollLock\"] = 119] = \"ScrollLock\";\n Key2[Key2[\"Pause\"] = 120] = \"Pause\";\n Key2[Key2[\"BrowserBack\"] = 121] = \"BrowserBack\";\n Key2[Key2[\"BrowserFavorites\"] = 122] = \"BrowserFavorites\";\n Key2[Key2[\"BrowserForward\"] = 123] = \"BrowserForward\";\n Key2[Key2[\"BrowserHome\"] = 124] = \"BrowserHome\";\n Key2[Key2[\"BrowserRefresh\"] = 125] = \"BrowserRefresh\";\n Key2[Key2[\"BrowserSearch\"] = 126] = \"BrowserSearch\";\n Key2[Key2[\"BrowserStop\"] = 127] = \"BrowserStop\";\n Key2[Key2[\"Eject\"] = 128] = \"Eject\";\n Key2[Key2[\"LaunchApp1\"] = 129] = \"LaunchApp1\";\n Key2[Key2[\"LaunchApp2\"] = 130] = \"LaunchApp2\";\n Key2[Key2[\"LaunchMail\"] = 131] = \"LaunchMail\";\n Key2[Key2[\"MediaPlayPause\"] = 132] = \"MediaPlayPause\";\n Key2[Key2[\"MediaSelect\"] = 133] = \"MediaSelect\";\n Key2[Key2[\"MediaStop\"] = 134] = \"MediaStop\";\n Key2[Key2[\"MediaTrackNext\"] = 135] = \"MediaTrackNext\";\n Key2[Key2[\"MediaTrackPrevious\"] = 136] = \"MediaTrackPrevious\";\n Key2[Key2[\"Power\"] = 137] = \"Power\";\n Key2[Key2[\"Sleep\"] = 138] = \"Sleep\";\n Key2[Key2[\"AudioVolumeDown\"] = 139] = \"AudioVolumeDown\";\n Key2[Key2[\"AudioVolumeMute\"] = 140] = \"AudioVolumeMute\";\n Key2[Key2[\"AudioVolumeUp\"] = 141] = \"AudioVolumeUp\";\n Key2[Key2[\"WakeUp\"] = 142] = \"WakeUp\";\n Key2[Key2[\"Hyper\"] = 143] = \"Hyper\";\n Key2[Key2[\"Super\"] = 144] = \"Super\";\n Key2[Key2[\"Turbo\"] = 145] = \"Turbo\";\n Key2[Key2[\"Abort\"] = 146] = \"Abort\";\n Key2[Key2[\"Resume\"] = 147] = \"Resume\";\n Key2[Key2[\"Suspend\"] = 148] = \"Suspend\";\n Key2[Key2[\"Again\"] = 149] = \"Again\";\n Key2[Key2[\"Copy\"] = 150] = \"Copy\";\n Key2[Key2[\"Cut\"] = 151] = \"Cut\";\n Key2[Key2[\"Find\"] = 152] = \"Find\";\n Key2[Key2[\"Open\"] = 153] = \"Open\";\n Key2[Key2[\"Paste\"] = 154] = \"Paste\";\n Key2[Key2[\"Props\"] = 155] = \"Props\";\n Key2[Key2[\"Select\"] = 156] = \"Select\";\n Key2[Key2[\"Undo\"] = 157] = \"Undo\";\n Key2[Key2[\"Hiragana\"] = 158] = \"Hiragana\";\n Key2[Key2[\"Katakana\"] = 159] = \"Katakana\";\n Key2[Key2[\"F1\"] = 160] = \"F1\";\n Key2[Key2[\"F2\"] = 161] = \"F2\";\n Key2[Key2[\"F3\"] = 162] = \"F3\";\n Key2[Key2[\"F4\"] = 163] = \"F4\";\n Key2[Key2[\"F5\"] = 164] = \"F5\";\n Key2[Key2[\"F6\"] = 165] = \"F6\";\n Key2[Key2[\"F7\"] = 166] = \"F7\";\n Key2[Key2[\"F8\"] = 167] = \"F8\";\n Key2[Key2[\"F9\"] = 168] = \"F9\";\n Key2[Key2[\"F10\"] = 169] = \"F10\";\n Key2[Key2[\"F11\"] = 170] = \"F11\";\n Key2[Key2[\"F12\"] = 171] = \"F12\";\n Key2[Key2[\"F13\"] = 172] = \"F13\";\n Key2[Key2[\"F14\"] = 173] = \"F14\";\n Key2[Key2[\"F15\"] = 174] = \"F15\";\n Key2[Key2[\"F16\"] = 175] = \"F16\";\n Key2[Key2[\"F17\"] = 176] = \"F17\";\n Key2[Key2[\"F18\"] = 177] = \"F18\";\n Key2[Key2[\"F19\"] = 178] = \"F19\";\n Key2[Key2[\"F20\"] = 179] = \"F20\";\n Key2[Key2[\"F21\"] = 180] = \"F21\";\n Key2[Key2[\"F22\"] = 181] = \"F22\";\n Key2[Key2[\"F23\"] = 182] = \"F23\";\n Key2[Key2[\"F24\"] = 183] = \"F24\";\n Key2[Key2[\"F25\"] = 184] = \"F25\";\n Key2[Key2[\"F26\"] = 185] = \"F26\";\n Key2[Key2[\"F27\"] = 186] = \"F27\";\n Key2[Key2[\"F28\"] = 187] = \"F28\";\n Key2[Key2[\"F29\"] = 188] = \"F29\";\n Key2[Key2[\"F30\"] = 189] = \"F30\";\n Key2[Key2[\"F31\"] = 190] = \"F31\";\n Key2[Key2[\"F32\"] = 191] = \"F32\";\n Key2[Key2[\"F33\"] = 192] = \"F33\";\n Key2[Key2[\"F34\"] = 193] = \"F34\";\n Key2[Key2[\"F35\"] = 194] = \"F35\";\n})(Key ||= {});\nvar InputSource;\n((InputSource2) => {\n InputSource2[InputSource2[\"None\"] = 0] = \"None\";\n InputSource2[InputSource2[\"LocalKeyboard\"] = 1] = \"LocalKeyboard\";\n InputSource2[InputSource2[\"LocalMouse\"] = 2] = \"LocalMouse\";\n InputSource2[InputSource2[\"LocalTouch\"] = 3] = \"LocalTouch\";\n InputSource2[InputSource2[\"LocalGamepad0\"] = 4] = \"LocalGamepad0\";\n InputSource2[InputSource2[\"LocalGamepad1\"] = 5] = \"LocalGamepad1\";\n InputSource2[InputSource2[\"LocalGamepad2\"] = 6] = \"LocalGamepad2\";\n InputSource2[InputSource2[\"LocalGamepad3\"] = 7] = \"LocalGamepad3\";\n InputSource2[InputSource2[\"LocalGamepad4\"] = 8] = \"LocalGamepad4\";\n InputSource2[InputSource2[\"LocalGamepad5\"] = 9] = \"LocalGamepad5\";\n InputSource2[InputSource2[\"LocalGamepad6\"] = 10] = \"LocalGamepad6\";\n InputSource2[InputSource2[\"LocalGamepad7\"] = 11] = \"LocalGamepad7\";\n InputSource2[InputSource2[\"LocalGamepad8\"] = 12] = \"LocalGamepad8\";\n InputSource2[InputSource2[\"LocalGamepad9\"] = 13] = \"LocalGamepad9\";\n InputSource2[InputSource2[\"LocalGamepad10\"] = 14] = \"LocalGamepad10\";\n InputSource2[InputSource2[\"LocalGamepad11\"] = 15] = \"LocalGamepad11\";\n InputSource2[InputSource2[\"RemotePeer0\"] = 128] = \"RemotePeer0\";\n InputSource2[InputSource2[\"RemotePeer1\"] = 129] = \"RemotePeer1\";\n InputSource2[InputSource2[\"RemotePeer2\"] = 130] = \"RemotePeer2\";\n InputSource2[InputSource2[\"RemotePeer3\"] = 131] = \"RemotePeer3\";\n InputSource2[InputSource2[\"RemotePeer4\"] = 132] = \"RemotePeer4\";\n InputSource2[InputSource2[\"RemotePeer5\"] = 133] = \"RemotePeer5\";\n InputSource2[InputSource2[\"RemotePeer6\"] = 134] = \"RemotePeer6\";\n InputSource2[InputSource2[\"RemotePeer7\"] = 135] = \"RemotePeer7\";\n InputSource2[InputSource2[\"RemotePeer8\"] = 136] = \"RemotePeer8\";\n InputSource2[InputSource2[\"RemotePeer9\"] = 137] = \"RemotePeer9\";\n InputSource2[InputSource2[\"RemotePeer10\"] = 138] = \"RemotePeer10\";\n InputSource2[InputSource2[\"RemotePeer11\"] = 139] = \"RemotePeer11\";\n InputSource2[InputSource2[\"Unmapped\"] = 255] = \"Unmapped\";\n})(InputSource ||= {});\nvar NetJoinFailReason;\n((NetJoinFailReason2) => {\n NetJoinFailReason2[NetJoinFailReason2[\"unknown\"] = 0] = \"unknown\";\n NetJoinFailReason2[NetJoinFailReason2[\"timeout\"] = 1] = \"timeout\";\n NetJoinFailReason2[NetJoinFailReason2[\"room_full\"] = 2] = \"room_full\";\n NetJoinFailReason2[NetJoinFailReason2[\"room_not_found\"] = 3] = \"room_not_found\";\n NetJoinFailReason2[NetJoinFailReason2[\"already_in_room\"] = 4] = \"already_in_room\";\n})(NetJoinFailReason ||= {});\nvar MAX_PLAYERS = 12;\nvar KEYBOARD_OFFSET = 0;\nvar KEYBOARD_SIZE = 256;\nvar MOUSE_OFFSET = 256;\nvar MOUSE_BUTTONS_OFFSET = 16;\nvar PLAYER_INPUTS_SIZE = 280;\nvar INPUT_CTX_SIZE = MAX_PLAYERS * PLAYER_INPUTS_SIZE;\nvar EVENT_PAYLOAD_SIZE = 8;\nvar EVENT_PAYLOAD_ALIGN = 4;\nfunction keyToKeyCode(key) {\n return Key[key];\n}\nfunction keyCodeToKey(code) {\n return Key[code];\n}\nfunction mouseButtonToMouseButtonCode(button) {\n return MouseButton[button];\n}\nfunction mouseButtonCodeToMouseButton(code) {\n return MouseButton[code];\n}\nfunction inputSourceToInputSourceCode(source) {\n return InputSource[source];\n}\nfunction inputSourceCodeToInputSource(code) {\n return InputSource[code];\n}\n\nclass PlayerInputContext {\n #dataView;\n #keys;\n #mouse;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get keys() {\n if (!this.#keys) {\n this.#keys = new KeyboardContext(new DataView(this.#dataView.buffer, this.#dataView.byteOffset + KEYBOARD_OFFSET));\n }\n return this.#keys;\n }\n get mouse() {\n if (!this.#mouse) {\n this.#mouse = new MouseContext(new DataView(this.#dataView.buffer, this.#dataView.byteOffset + MOUSE_OFFSET));\n }\n return this.#mouse;\n }\n}\n\nclass InputContext {\n #dataView;\n #players = [];\n constructor(dataView) {\n if (dataView) {\n this.#dataView = dataView;\n this.#buildPlayers();\n }\n }\n get dataView() {\n if (!this.#dataView) {\n throw new Error(\"DataView is not initialized on InputContext\");\n }\n return this.#dataView;\n }\n set dataView(dataView) {\n this.#dataView = dataView;\n this.#buildPlayers();\n }\n #buildPlayers() {\n this.#players = [];\n for (let i = 0;i < MAX_PLAYERS; i++) {\n const playerOffset = i * PLAYER_INPUTS_SIZE;\n const playerDataView = new DataView(this.dataView.buffer, this.dataView.byteOffset + playerOffset, PLAYER_INPUTS_SIZE);\n this.#players.push(new PlayerInputContext(playerDataView));\n }\n }\n get players() {\n return this.#players;\n }\n get keys() {\n if (!this.#players[0]) {\n throw new Error(\"No player inputs available in InputContext\");\n }\n return this.#players[0].keys;\n }\n get mouse() {\n if (!this.#players[0]) {\n throw new Error(\"No player inputs available in InputContext\");\n }\n return this.#players[0].mouse;\n }\n}\n\nclass MouseContext {\n #dataView;\n #buttonStates = new Map;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get x() {\n return this.#dataView.getFloat32(0, true);\n }\n get y() {\n return this.#dataView.getFloat32(4, true);\n }\n get wheel() {\n return { x: this.wheelX, y: this.wheelY };\n }\n get wheelX() {\n return this.#dataView.getFloat32(8, true);\n }\n get wheelY() {\n return this.#dataView.getFloat32(12, true);\n }\n get left() {\n return this.#buttonState(1);\n }\n get right() {\n return this.#buttonState(3);\n }\n get middle() {\n return this.#buttonState(2);\n }\n #buttonState(code) {\n let state;\n if (this.#buttonStates.has(code)) {\n state = this.#buttonStates.get(code);\n } else {\n state = { down: false, held: false, up: false };\n this.#buttonStates.set(code, state);\n }\n const offset = MOUSE_BUTTONS_OFFSET;\n state.held = !!(this.#dataView.getUint8(offset + code) & 1);\n state.down = state.held && !(this.#dataView.getUint8(offset + code) & 2);\n state.up = !state.held && !!(this.#dataView.getUint8(offset + code) & 2);\n return state;\n }\n}\n\nclass KeyboardContext {\n #dataView;\n #keystates = new Map;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get shift() {\n return this.shiftLeft || this.shiftRight;\n }\n get alt() {\n return this.altLeft || this.altRight;\n }\n get control() {\n return this.controlLeft || this.controlRight;\n }\n get meta() {\n return this.metaLeft || this.metaRight;\n }\n get backquote() {\n return this.#keystate(1);\n }\n get backslash() {\n return this.#keystate(2);\n }\n get bracketLeft() {\n return this.#keystate(3);\n }\n get bracketRight() {\n return this.#keystate(4);\n }\n get comma() {\n return this.#keystate(5);\n }\n get digit0() {\n return this.#keystate(6);\n }\n get digit1() {\n return this.#keystate(7);\n }\n get digit2() {\n return this.#keystate(8);\n }\n get digit3() {\n return this.#keystate(9);\n }\n get digit4() {\n return this.#keystate(10);\n }\n get digit5() {\n return this.#keystate(11);\n }\n get digit6() {\n return this.#keystate(12);\n }\n get digit7() {\n return this.#keystate(13);\n }\n get digit8() {\n return this.#keystate(14);\n }\n get digit9() {\n return this.#keystate(15);\n }\n get equal() {\n return this.#keystate(16);\n }\n get intlBackslash() {\n return this.#keystate(17);\n }\n get intlRo() {\n return this.#keystate(18);\n }\n get intlYen() {\n return this.#keystate(19);\n }\n get a() {\n return this.#keystate(20);\n }\n get b() {\n return this.#keystate(21);\n }\n get c() {\n return this.#keystate(22);\n }\n get d() {\n return this.#keystate(23);\n }\n get e() {\n return this.#keystate(24);\n }\n get f() {\n return this.#keystate(25);\n }\n get g() {\n return this.#keystate(26);\n }\n get h() {\n return this.#keystate(27);\n }\n get i() {\n return this.#keystate(28);\n }\n get j() {\n return this.#keystate(29);\n }\n get k() {\n return this.#keystate(30);\n }\n get l() {\n return this.#keystate(31);\n }\n get m() {\n return this.#keystate(32);\n }\n get n() {\n return this.#keystate(33);\n }\n get o() {\n return this.#keystate(34);\n }\n get p() {\n return this.#keystate(35);\n }\n get q() {\n return this.#keystate(36);\n }\n get r() {\n return this.#keystate(37);\n }\n get s() {\n return this.#keystate(38);\n }\n get t() {\n return this.#keystate(39);\n }\n get u() {\n return this.#keystate(40);\n }\n get v() {\n return this.#keystate(41);\n }\n get w() {\n return this.#keystate(42);\n }\n get x() {\n return this.#keystate(43);\n }\n get y() {\n return this.#keystate(44);\n }\n get z() {\n return this.#keystate(45);\n }\n get minus() {\n return this.#keystate(46);\n }\n get period() {\n return this.#keystate(47);\n }\n get quote() {\n return this.#keystate(48);\n }\n get semicolon() {\n return this.#keystate(49);\n }\n get slash() {\n return this.#keystate(50);\n }\n get altLeft() {\n return this.#keystate(51);\n }\n get altRight() {\n return this.#keystate(52);\n }\n get backspace() {\n return this.#keystate(53);\n }\n get capsLock() {\n return this.#keystate(54);\n }\n get contextMenu() {\n return this.#keystate(55);\n }\n get controlLeft() {\n return this.#keystate(56);\n }\n get controlRight() {\n return this.#keystate(57);\n }\n get enter() {\n return this.#keystate(58);\n }\n get metaLeft() {\n return this.#keystate(59);\n }\n get metaRight() {\n return this.#keystate(60);\n }\n get shiftLeft() {\n return this.#keystate(61);\n }\n get shiftRight() {\n return this.#keystate(62);\n }\n get space() {\n return this.#keystate(63);\n }\n get tab() {\n return this.#keystate(64);\n }\n get convert() {\n return this.#keystate(65);\n }\n get kanaMode() {\n return this.#keystate(66);\n }\n get lang1() {\n return this.#keystate(67);\n }\n get lang2() {\n return this.#keystate(68);\n }\n get lang3() {\n return this.#keystate(69);\n }\n get lang4() {\n return this.#keystate(70);\n }\n get lang5() {\n return this.#keystate(71);\n }\n get nonConvert() {\n return this.#keystate(72);\n }\n get delete() {\n return this.#keystate(73);\n }\n get end() {\n return this.#keystate(74);\n }\n get help() {\n return this.#keystate(75);\n }\n get home() {\n return this.#keystate(76);\n }\n get insert() {\n return this.#keystate(77);\n }\n get pageDown() {\n return this.#keystate(78);\n }\n get pageUp() {\n return this.#keystate(79);\n }\n get arrowDown() {\n return this.#keystate(80);\n }\n get arrowLeft() {\n return this.#keystate(81);\n }\n get arrowRight() {\n return this.#keystate(82);\n }\n get arrowUp() {\n return this.#keystate(83);\n }\n get numLock() {\n return this.#keystate(84);\n }\n get numpad0() {\n return this.#keystate(85);\n }\n get numpad1() {\n return this.#keystate(86);\n }\n get numpad2() {\n return this.#keystate(87);\n }\n get numpad3() {\n return this.#keystate(88);\n }\n get numpad4() {\n return this.#keystate(89);\n }\n get numpad5() {\n return this.#keystate(90);\n }\n get numpad6() {\n return this.#keystate(91);\n }\n get numpad7() {\n return this.#keystate(92);\n }\n get numpad8() {\n return this.#keystate(93);\n }\n get numpad9() {\n return this.#keystate(94);\n }\n get numpadAdd() {\n return this.#keystate(95);\n }\n get numpadBackspace() {\n return this.#keystate(96);\n }\n get numpadClear() {\n return this.#keystate(97);\n }\n get numpadClearEntry() {\n return this.#keystate(98);\n }\n get numpadComma() {\n return this.#keystate(99);\n }\n get numpadDecimal() {\n return this.#keystate(100);\n }\n get numpadDivide() {\n return this.#keystate(101);\n }\n get numpadEnter() {\n return this.#keystate(102);\n }\n get numpadEqual() {\n return this.#keystate(103);\n }\n get numpadHash() {\n return this.#keystate(104);\n }\n get numpadMemoryAdd() {\n return this.#keystate(105);\n }\n get numpadMemoryClear() {\n return this.#keystate(106);\n }\n get numpadMemoryRecall() {\n return this.#keystate(107);\n }\n get numpadMemoryStore() {\n return this.#keystate(108);\n }\n get numpadMemorySubtract() {\n return this.#keystate(109);\n }\n get numpadMultiply() {\n return this.#keystate(110);\n }\n get numpadParenLeft() {\n return this.#keystate(111);\n }\n get numpadParenRight() {\n return this.#keystate(112);\n }\n get numpadStar() {\n return this.#keystate(113);\n }\n get numpadSubtract() {\n return this.#keystate(114);\n }\n get escape() {\n return this.#keystate(115);\n }\n get fn() {\n return this.#keystate(116);\n }\n get fnLock() {\n return this.#keystate(117);\n }\n get printScreen() {\n return this.#keystate(118);\n }\n get scrollLock() {\n return this.#keystate(119);\n }\n get pause() {\n return this.#keystate(120);\n }\n get browserBack() {\n return this.#keystate(121);\n }\n get browserFavorites() {\n return this.#keystate(122);\n }\n get browserForward() {\n return this.#keystate(123);\n }\n get browserHome() {\n return this.#keystate(124);\n }\n get browserRefresh() {\n return this.#keystate(125);\n }\n get browserSearch() {\n return this.#keystate(126);\n }\n get browserStop() {\n return this.#keystate(127);\n }\n get eject() {\n return this.#keystate(128);\n }\n get launchApp1() {\n return this.#keystate(129);\n }\n get launchApp2() {\n return this.#keystate(130);\n }\n get launchMail() {\n return this.#keystate(131);\n }\n get mediaPlayPause() {\n return this.#keystate(132);\n }\n get mediaSelect() {\n return this.#keystate(133);\n }\n get mediaStop() {\n return this.#keystate(134);\n }\n get mediaTrackNext() {\n return this.#keystate(135);\n }\n get mediaTrackPrevious() {\n return this.#keystate(136);\n }\n get power() {\n return this.#keystate(137);\n }\n get sleep() {\n return this.#keystate(138);\n }\n get audioVolumeDown() {\n return this.#keystate(139);\n }\n get audioVolumeMute() {\n return this.#keystate(140);\n }\n get audioVolumeUp() {\n return this.#keystate(141);\n }\n get wakeUp() {\n return this.#keystate(142);\n }\n get hyper() {\n return this.#keystate(143);\n }\n get super() {\n return this.#keystate(144);\n }\n get turbo() {\n return this.#keystate(145);\n }\n get abort() {\n return this.#keystate(146);\n }\n get resume() {\n return this.#keystate(147);\n }\n get suspend() {\n return this.#keystate(148);\n }\n get again() {\n return this.#keystate(149);\n }\n get copy() {\n return this.#keystate(150);\n }\n get cut() {\n return this.#keystate(151);\n }\n get find() {\n return this.#keystate(152);\n }\n get open() {\n return this.#keystate(153);\n }\n get paste() {\n return this.#keystate(154);\n }\n get props() {\n return this.#keystate(155);\n }\n get select() {\n return this.#keystate(156);\n }\n get undo() {\n return this.#keystate(157);\n }\n get hiragana() {\n return this.#keystate(158);\n }\n get katakana() {\n return this.#keystate(159);\n }\n get f1() {\n return this.#keystate(160);\n }\n get f2() {\n return this.#keystate(161);\n }\n get f3() {\n return this.#keystate(162);\n }\n get f4() {\n return this.#keystate(163);\n }\n get f5() {\n return this.#keystate(164);\n }\n get f6() {\n return this.#keystate(165);\n }\n get f7() {\n return this.#keystate(166);\n }\n get f8() {\n return this.#keystate(167);\n }\n get f9() {\n return this.#keystate(168);\n }\n get f10() {\n return this.#keystate(169);\n }\n get f11() {\n return this.#keystate(170);\n }\n get f12() {\n return this.#keystate(171);\n }\n get f13() {\n return this.#keystate(172);\n }\n get f14() {\n return this.#keystate(173);\n }\n get f15() {\n return this.#keystate(174);\n }\n get f16() {\n return this.#keystate(175);\n }\n get f17() {\n return this.#keystate(176);\n }\n get f18() {\n return this.#keystate(177);\n }\n get f19() {\n return this.#keystate(178);\n }\n get f20() {\n return this.#keystate(179);\n }\n get f21() {\n return this.#keystate(180);\n }\n get f22() {\n return this.#keystate(181);\n }\n get f23() {\n return this.#keystate(182);\n }\n get f24() {\n return this.#keystate(183);\n }\n get f25() {\n return this.#keystate(184);\n }\n get f26() {\n return this.#keystate(185);\n }\n get f27() {\n return this.#keystate(186);\n }\n get f28() {\n return this.#keystate(187);\n }\n get f29() {\n return this.#keystate(188);\n }\n get f30() {\n return this.#keystate(189);\n }\n get f31() {\n return this.#keystate(190);\n }\n get f32() {\n return this.#keystate(191);\n }\n get f33() {\n return this.#keystate(192);\n }\n get f34() {\n return this.#keystate(193);\n }\n get f35() {\n return this.#keystate(194);\n }\n #keystate(code) {\n let state;\n if (this.#keystates.has(code)) {\n state = this.#keystates.get(code);\n } else {\n state = { down: false, held: false, up: false };\n this.#keystates.set(code, state);\n }\n state.held = !!(this.#dataView.getUint8(code) & 1);\n state.down = state.held && !(this.#dataView.getUint8(code) & 2);\n state.up = !state.held && !!(this.#dataView.getUint8(code) & 2);\n return state;\n }\n}\nvar MAX_PEERS = 12;\nvar PEERS_ARRAY_OFFSET = 32;\nvar PEER_CTX_SIZE = 8;\nvar PEER_CONNECTED_OFFSET = 0;\nvar PEER_PACKET_COUNT_OFFSET = 1;\nvar PEER_SEQ_OFFSET = 2;\nvar PEER_ACK_OFFSET = 4;\nvar PEER_ACK_COUNT_OFFSET = 6;\nvar STATUS_MAP = {\n 0: \"offline\",\n 1: \"local\",\n 2: \"join:pending\",\n 3: \"connected\",\n 4: \"disconnected\"\n};\n\nclass NetContext {\n dataView;\n #peers = Array.from({ length: MAX_PEERS }, () => ({\n isLocal: false,\n seq: -1,\n ack: -1\n }));\n #peersResult = [];\n constructor(dataView) {\n this.dataView = dataView;\n }\n #hasValidBuffer() {\n if (!this.dataView)\n return false;\n return this.dataView.buffer.byteLength > 0;\n }\n get peerCount() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint8(0);\n }\n get localPeerId() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint8(1);\n }\n get isInSession() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint8(2) !== 0;\n }\n get status() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n const statusByte = this.dataView.getUint8(3);\n return STATUS_MAP[statusByte] ?? \"local\";\n }\n get matchFrame() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint32(4, true);\n }\n get sessionStartFrame() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint32(8, true);\n }\n get roomCode() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n const bytes = [];\n for (let i = 0;i < 8; i++) {\n const byte = this.dataView.getUint8(12 + i);\n if (byte === 0)\n break;\n bytes.push(byte);\n }\n return String.fromCharCode(...bytes);\n }\n get wantsRoomCode() {\n if (!this.#hasValidBuffer()) {\n return;\n }\n const bytes = [];\n for (let i = 0;i < 8; i++) {\n const byte = this.dataView.getUint8(20 + i);\n if (byte === 0)\n break;\n bytes.push(byte);\n }\n return bytes.length > 0 ? String.fromCharCode(...bytes) : undefined;\n }\n set wantsRoomCode(code) {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n for (let i = 0;i < 8; i++) {\n this.dataView.setUint8(20 + i, 0);\n }\n if (code) {\n for (let i = 0;i < Math.min(code.length, 7); i++) {\n this.dataView.setUint8(20 + i, code.charCodeAt(i));\n }\n }\n }\n get wantsDisconnect() {\n if (!this.#hasValidBuffer()) {\n return false;\n }\n return this.dataView.getUint8(28) !== 0;\n }\n set wantsDisconnect(value) {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n this.dataView.setUint8(28, value ? 1 : 0);\n }\n get peers() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n const dv = this.dataView;\n const localPeerId = this.localPeerId;\n const matchFrame = this.matchFrame;\n let minRemoteSeq = -1;\n for (let i = 0;i < MAX_PEERS; i++) {\n if (i === localPeerId)\n continue;\n const peerOffset = PEERS_ARRAY_OFFSET + i * PEER_CTX_SIZE;\n if (dv.getUint8(peerOffset + PEER_CONNECTED_OFFSET) !== 1)\n continue;\n if (dv.getUint8(peerOffset + PEER_PACKET_COUNT_OFFSET) === 0)\n continue;\n const seq = dv.getUint16(peerOffset + PEER_SEQ_OFFSET, true);\n if (minRemoteSeq === -1 || seq < minRemoteSeq) {\n minRemoteSeq = seq;\n }\n }\n this.#peersResult.length = 0;\n for (let i = 0;i < MAX_PEERS; i++) {\n const peerOffset = PEERS_ARRAY_OFFSET + i * PEER_CTX_SIZE;\n if (dv.getUint8(peerOffset + PEER_CONNECTED_OFFSET) !== 1)\n continue;\n const peer = this.#peers[i];\n if (!peer) {\n throw new Error(`Unexpected missing peer object at index ${i}`);\n }\n const isLocal = i === localPeerId;\n peer.isLocal = isLocal;\n if (isLocal) {\n peer.seq = matchFrame;\n peer.ack = minRemoteSeq;\n } else {\n const packetCount = dv.getUint8(peerOffset + PEER_PACKET_COUNT_OFFSET);\n const ackCount = dv.getUint8(peerOffset + PEER_ACK_COUNT_OFFSET);\n peer.seq = packetCount === 0 ? -1 : dv.getUint16(peerOffset + PEER_SEQ_OFFSET, true);\n peer.ack = ackCount === 0 ? -1 : dv.getUint16(peerOffset + PEER_ACK_OFFSET, true);\n }\n this.#peersResult.push(peer);\n }\n return this.#peersResult;\n }\n}\n\nclass TimeContext {\n dataView;\n constructor(dataView) {\n this.dataView = dataView;\n }\n get frame() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(0, true);\n }\n get dt() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(4, true) / 1000;\n }\n get time() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(8, true) / 1000;\n }\n}\nvar TAPE_MAGIC = 1413566533;\nfunction readTapeHeader(tape) {\n const view = new DataView(tape.buffer, tape.byteOffset, tape.byteLength);\n const magic = view.getUint32(0, true);\n if (magic !== TAPE_MAGIC) {\n throw new Error(`Invalid tape format: expected magic ${TAPE_MAGIC.toString(16)}, got ${magic.toString(16)}`);\n }\n return {\n magic,\n version: view.getUint16(4, true),\n startFrame: view.getUint32(8, true),\n frameCount: view.getUint16(12, true),\n eventCount: view.getUint16(14, true)\n };\n}\nvar DEFAULT_WASM_URL = new URL(\"https://unpkg.com/@bloopjs/engine@0.0.87/wasm/bloop.wasm\");\nvar MAX_ROLLBACK_FRAMES = 500;\nvar TIME_CTX_OFFSET = 0;\nvar INPUT_CTX_OFFSET = TIME_CTX_OFFSET + 4;\nvar EVENTS_OFFSET = INPUT_CTX_OFFSET + 4;\nvar NET_CTX_OFFSET = EVENTS_OFFSET + 4;\nvar SNAPSHOT_HEADER_LEN = 16;\nvar SNAPSHOT_HEADER_USER_LEN_OFFSET = 4;\nvar SNAPSHOT_HEADER_ENGINE_LEN_OFFSET = 8;\n// src/sim.ts\nvar originalConsole = globalThis.console;\nvar noop = () => {};\nvar stubConsole = Object.fromEntries(Object.keys(originalConsole).map((key) => [key, noop]));\nfunction muteConsole() {\n globalThis.console = stubConsole;\n}\nfunction unmuteConsole() {\n globalThis.console = originalConsole;\n}\n\nclass Sim {\n wasm;\n id;\n #memory;\n #time;\n #serialize;\n #isPaused = false;\n #net;\n onTapeFull;\n constructor(wasm, memory, opts) {\n this.wasm = wasm;\n this.#memory = memory;\n this.#time = new TimeContext(new DataView(this.#memory.buffer, this.wasm.get_time_ctx()));\n this.id = `${Math.floor(Math.random() * 1e6)}`;\n this.#serialize = opts?.serialize;\n this.#net = new NetContext;\n }\n step(ms) {\n if (this.#isPaused) {\n return 0;\n }\n return this.wasm.step(ms ?? 16);\n }\n tick(isResimulating) {\n this.wasm.tick(isResimulating ?? false);\n }\n cloneSession(source) {\n if (source.isRecording) {\n this.loadTape(source.saveTape());\n }\n this.restore(source.snapshot());\n }\n pause() {\n this.#isPaused = true;\n }\n unpause() {\n this.#isPaused = false;\n }\n get isPaused() {\n return this.#isPaused;\n }\n stepBack() {\n if (this.time.frame === 0) {\n return;\n }\n this.seek(this.time.frame - 1);\n }\n seek(frame, inclusive) {\n assert(this.hasHistory, \"Not recording or playing back, can't seek to frame\");\n const targetFrame = inclusive ? frame + 1 : frame;\n const shouldMute = frame < this.time.frame;\n if (shouldMute) {\n muteConsole();\n }\n this.wasm.seek(targetFrame);\n if (shouldMute) {\n unmuteConsole();\n }\n }\n snapshot() {\n const serializer = this.#serialize ? this.#serialize() : null;\n const size = serializer ? serializer.size : 0;\n const ptr = this.wasm.take_snapshot(size);\n const header = new Uint32Array(this.#memory.buffer, ptr, 4);\n const userLenIndex = SNAPSHOT_HEADER_USER_LEN_OFFSET / Uint32Array.BYTES_PER_ELEMENT;\n const engineLenIndex = SNAPSHOT_HEADER_ENGINE_LEN_OFFSET / Uint32Array.BYTES_PER_ELEMENT;\n assert(header[userLenIndex], `header user length missing`);\n assert(header[engineLenIndex], `header engine length missing`);\n const length = header[userLenIndex] + header[engineLenIndex];\n const memoryView = new Uint8Array(this.#memory.buffer, ptr, length);\n const copy = new Uint8Array(length);\n copy.set(memoryView);\n return copy;\n }\n static NETWORK_MAX_PACKET_BYTES = 2 * 1024 * 1024;\n record(maxEvents = 1e5, maxPacketBytes = Sim.NETWORK_MAX_PACKET_BYTES) {\n const serializer = this.#serialize ? this.#serialize() : null;\n const size = serializer ? serializer.size : 0;\n const result = this.wasm.start_recording(size, maxEvents, maxPacketBytes);\n if (result !== 0) {\n throw new Error(`failed to start recording, error code=${result}`);\n }\n }\n saveTape() {\n const tapeLen = this.wasm.get_tape_len();\n const tapePtr = this.wasm.get_tape_ptr();\n const memoryView = new Uint8Array(this.#memory.buffer, tapePtr, tapeLen);\n const copy = new Uint8Array(tapeLen);\n copy.set(memoryView);\n return copy;\n }\n loadTape(tape, options) {\n const tapePtr = this.wasm.alloc(tape.byteLength);\n assert(tapePtr > 0, `failed to allocate ${tape.byteLength} bytes for tape load, pointer=${tapePtr}`);\n const memoryView = new Uint8Array(this.#memory.buffer, tapePtr, tape.byteLength);\n memoryView.set(tape);\n if (this.isRecording) {\n this.wasm.stop_recording();\n }\n const checkpointInterval = options?.checkpointInterval ?? 0;\n const checkpointMaxSize = options?.checkpointMaxSize ?? 10 * 1024 * 1024;\n const result = this.wasm.load_tape(tapePtr, tape.byteLength, checkpointInterval, checkpointMaxSize);\n assert(result === 0, `failed to load tape, error code=${result}`);\n this.wasm.free(tapePtr, tape.byteLength);\n }\n restore(snapshot) {\n const dataPtr = this.wasm.alloc(snapshot.byteLength);\n assert(dataPtr > 0, `failed to allocate ${snapshot.byteLength} bytes for snapshot restore, pointer=${dataPtr}`);\n const memoryView = new Uint8Array(this.#memory.buffer, dataPtr, snapshot.byteLength);\n memoryView.set(snapshot);\n this.wasm.restore(dataPtr);\n this.wasm.free(dataPtr, snapshot.byteLength);\n }\n unmount() {\n this.wasm.deinit();\n }\n get time() {\n if (!this.#time.dataView || this.#time.dataView.buffer !== this.#memory.buffer) {\n this.#time.dataView = new DataView(this.#memory.buffer, this.wasm.get_time_ctx());\n }\n return this.#time;\n }\n get net() {\n if (!this.#net.dataView || this.#net.dataView.buffer !== this.#memory.buffer) {\n this.#net.dataView = new DataView(this.#memory.buffer, this.wasm.get_net_ctx());\n }\n return this.#net;\n }\n get buffer() {\n return this.#memory.buffer;\n }\n get isRecording() {\n return Boolean(this.wasm.is_recording());\n }\n get isReplaying() {\n return Boolean(this.wasm.is_replaying());\n }\n get hasHistory() {\n return this.isRecording || this.isReplaying;\n }\n emit = {\n keydown: (key, peerId = 0) => {\n this.wasm.emit_keydown(keyToKeyCode(key), peerId);\n },\n keyup: (key, peerId = 0) => {\n this.wasm.emit_keyup(keyToKeyCode(key), peerId);\n },\n mousemove: (x, y, peerId = 0) => {\n this.wasm.emit_mousemove(x, y, peerId);\n },\n mousedown: (button, peerId = 0) => {\n this.wasm.emit_mousedown(mouseButtonToMouseButtonCode(button), peerId);\n },\n mouseup: (button, peerId = 0) => {\n this.wasm.emit_mouseup(mouseButtonToMouseButtonCode(button), peerId);\n },\n mousewheel: (x, y, peerId = 0) => {\n this.wasm.emit_mousewheel(x, y, peerId);\n },\n network: (type, data) => {\n switch (type) {\n case \"join:ok\": {\n const roomCode = data.roomCode;\n const encoded = new TextEncoder().encode(roomCode);\n const ptr = this.wasm.alloc(encoded.length);\n new Uint8Array(this.#memory.buffer, ptr, encoded.length).set(encoded);\n this.wasm.emit_net_join_ok(ptr, encoded.length);\n this.wasm.free(ptr, encoded.length);\n break;\n }\n case \"join:fail\":\n this.wasm.emit_net_join_fail(0);\n break;\n case \"peer:join\": {\n const peerId = data.peerId;\n this.wasm.emit_net_peer_join(peerId);\n break;\n }\n case \"peer:leave\": {\n const peerId = data.peerId;\n this.wasm.emit_net_peer_leave(peerId);\n break;\n }\n case \"peer:assign_local_id\": {\n const peerId = data.peerId;\n this.wasm.emit_net_peer_assign_local_id(peerId);\n break;\n }\n case \"session:start\":\n this.wasm.emit_net_session_init();\n break;\n case \"session:end\":\n this.wasm.emit_net_session_end();\n break;\n }\n },\n packet: (data) => {\n if (data.length === 0) {\n return;\n }\n const ptr = this.wasm.alloc(data.byteLength);\n assert(ptr > 0, `Failed to allocate ${data.byteLength} bytes for received packet`);\n const memoryView = new Uint8Array(this.#memory.buffer, ptr, data.byteLength);\n memoryView.set(data);\n const result = this.wasm.emit_receive_packet(ptr, data.byteLength);\n this.wasm.free(ptr, data.byteLength);\n if (result !== 0) {\n const errorMessages = {\n 1: \"No active session\",\n 2: \"Buffer too small\",\n 3: \"Unsupported packet version\",\n 4: \"Invalid event count\"\n };\n throw new Error(errorMessages[result] ?? `Unknown packet error: ${result}`);\n }\n }\n };\n getOutboundPacket(targetPeer) {\n this.wasm.build_outbound_packet(targetPeer);\n const len = this.wasm.get_outbound_packet_len();\n if (len === 0) {\n throw new Error(`No outbound packet available for peer ${targetPeer}`);\n }\n const ptr = this.wasm.get_outbound_packet();\n assert(ptr > 0, `Invalid outbound packet pointer: ${ptr}`);\n const memoryView = new Uint8Array(this.#memory.buffer, ptr, len);\n const copy = new Uint8Array(len);\n copy.set(memoryView);\n return copy;\n }\n}\n\n// src/mount.ts\nasync function mount(mountable, options) {\n const wasmUrl = options?.wasmUrl ?? DEFAULT_WASM_URL;\n const startRecording = options?.startRecording ?? true;\n const { maxEvents, maxPacketBytes } = calculateTapeConfig(options?.tape);\n const bytes = await fetch(wasmUrl).then((res) => res.arrayBuffer()).catch((e) => {\n console.error(`Failed to fetch wasm at ${wasmUrl}`, e);\n throw e;\n });\n const memory = new WebAssembly.Memory({ initial: 310, maximum: 1000 });\n let sim;\n const wasmInstantiatedSource = await WebAssembly.instantiate(bytes, {\n env: {\n memory,\n __systems: function(system_handle, ptr) {\n mountable.hooks.setBuffer(memory.buffer);\n mountable.hooks.systemsCallback(system_handle, ptr);\n },\n __before_frame: function(ptr, frame) {\n try {\n mountable.hooks.setBuffer(memory.buffer);\n mountable.hooks.setContext(ptr);\n mountable.hooks.beforeFrame?.(frame);\n } catch (e) {\n console.error(\"Error in beforeFrame hook:\", e);\n }\n },\n __on_tape_full: function(_ctxPtr) {\n if (!sim) {\n throw new Error(\"Sim not initialized in on_tape_full\");\n }\n const tapeBytes = sim.saveTape();\n if (sim.onTapeFull) {\n sim.onTapeFull(tapeBytes);\n } else {\n const size = tapeBytes.length / 1024;\n const duration = sim.time.time;\n const kbPerSecond = size / duration;\n console.warn(\"Tape full. Recording stopped\", {\n size: `${(tapeBytes.length / 1024).toFixed(0)}kb`,\n duration: `${sim.time.time.toFixed(2)}s`,\n kbPerSecond: `${kbPerSecond.toFixed(2)} kb/s`\n });\n }\n },\n console_log: function(ptr, len) {\n const bytes2 = new Uint8Array(memory.buffer, ptr, len);\n const string = new TextDecoder(\"utf-8\").decode(bytes2);\n console.log(string);\n },\n __user_data_len: function() {\n const serializer = mountable.hooks.serialize();\n return serializer ? serializer.size : 0;\n },\n user_data_serialize: function(ptr, len) {\n const serializer = mountable.hooks.serialize();\n assert(len === serializer.size, `user_data_serialize length mismatch, expected=${serializer.size} got=${len}`);\n serializer.write(memory.buffer, ptr);\n },\n user_data_deserialize: function(ptr, len) {\n mountable.hooks.deserialize(memory.buffer, ptr, len);\n }\n }\n });\n const wasm = wasmInstantiatedSource.instance.exports;\n const enginePointer = wasm.initialize();\n sim = new Sim(wasm, memory, {\n serialize: mountable.hooks.serialize\n });\n if (startRecording) {\n sim.record(maxEvents, maxPacketBytes);\n }\n mountable.hooks.setBuffer(memory.buffer);\n mountable.hooks.setContext(enginePointer);\n return {\n sim\n };\n}\nfunction calculateTapeConfig(tape) {\n let maxEvents;\n if (!tape) {\n maxEvents = 1e5;\n } else if (\"maxEvents\" in tape) {\n maxEvents = tape.maxEvents;\n } else {\n const avgEvents = tape.averageEventsPerFrame ?? 2;\n maxEvents = Math.ceil(tape.duration * 60 * avgEvents);\n }\n const localOnly = tape?.localOnly ?? false;\n const maxPacketBytes = localOnly ? 0 : Sim.NETWORK_MAX_PACKET_BYTES;\n return { maxEvents, maxPacketBytes };\n}\n// src/bloop.ts\nclass Bloop {\n #systems = [];\n #context;\n #engineBuffer = new ArrayBuffer(0);\n static create(opts = {}) {\n return new Bloop(opts, \"dontCallMeDirectly\");\n }\n constructor(opts = {}, dontCallMeDirectly) {\n if (dontCallMeDirectly !== \"dontCallMeDirectly\") {\n throw new Error(\"Bloop constructor is private. Use Bloop.create() to create a new game instance.\");\n }\n const inputs = new InputContext;\n this.#context = {\n bag: opts.bag ?? {},\n time: new TimeContext,\n inputs,\n get players() {\n return inputs.players;\n },\n rawPointer: -1,\n net: new NetContext\n };\n }\n get bag() {\n return this.#context.bag;\n }\n get context() {\n return this.#context;\n }\n system(label, system) {\n system.label ??= label;\n this.#systems.push(system);\n return this.#systems.length;\n }\n hooks = {\n serialize: () => {\n const str = JSON.stringify(this.#context.bag);\n const encoder = new TextEncoder;\n const textBytes = encoder.encode(str);\n return {\n size: textBytes.byteLength,\n write: (buffer, ptr) => {\n const memoryView = new Uint8Array(buffer, ptr, textBytes.byteLength);\n memoryView.set(textBytes);\n }\n };\n },\n deserialize: (buffer, ptr, len) => {\n const bagBytes = new Uint8Array(buffer, ptr, len);\n const decoder = new TextDecoder;\n const str = decoder.decode(bagBytes);\n try {\n this.#context.bag = JSON.parse(str);\n } catch (e) {\n console.error(\"failed to deserialize bag\", { json: str, error: e });\n }\n },\n setBuffer: (buffer) => {\n this.#engineBuffer = buffer;\n },\n setContext: (ptr) => {\n if (!this.#engineBuffer) {\n throw new Error(\"Tried to set context before engine buffer\");\n }\n const dv = new DataView(this.#engineBuffer, ptr);\n const timeCtxPtr = dv.getUint32(TIME_CTX_OFFSET, true);\n const inputCtxPtr = dv.getUint32(INPUT_CTX_OFFSET, true);\n const netCtxPtr = dv.getUint32(NET_CTX_OFFSET, true);\n this.#context.rawPointer = ptr;\n this.#context.inputs.dataView = new DataView(this.#engineBuffer, inputCtxPtr);\n this.#context.time.dataView = new DataView(this.#engineBuffer, timeCtxPtr);\n this.#context.net.dataView = new DataView(this.#engineBuffer, netCtxPtr);\n },\n systemsCallback: (system_handle, ptr) => {\n this.hooks.setContext(ptr);\n const dv = new DataView(this.#engineBuffer, ptr);\n const eventsPtr = dv.getUint32(EVENTS_OFFSET, true);\n const eventsDataView = new DataView(this.#engineBuffer, eventsPtr);\n for (const system of this.#systems) {\n system.update?.(this.#context);\n const eventCount = eventsDataView.getUint16(0, true);\n let offset = 4;\n for (let i = 0;i < eventCount; i++) {\n const eventType = eventsDataView.getUint8(offset);\n const eventSource = eventsDataView.getUint8(offset + 1);\n const payloadOffset = offset + 4;\n const payloadByte = eventsDataView.getUint8(payloadOffset);\n const payloadVec2 = {\n x: eventsDataView.getFloat32(payloadOffset, true),\n y: eventsDataView.getFloat32(payloadOffset + Float32Array.BYTES_PER_ELEMENT, true)\n };\n switch (eventType) {\n case exports_enums.EventType.KeyDown: {\n system.keydown?.(attachEvent(this.#context, {\n key: keyCodeToKey(payloadByte)\n }));\n break;\n }\n case exports_enums.EventType.KeyUp:\n system.keyup?.(attachEvent(this.#context, {\n key: keyCodeToKey(payloadByte)\n }));\n break;\n case exports_enums.EventType.MouseDown:\n system.mousedown?.(attachEvent(this.#context, {\n button: mouseButtonCodeToMouseButton(payloadByte)\n }));\n break;\n case exports_enums.EventType.MouseUp:\n system.mouseup?.(attachEvent(this.#context, {\n button: mouseButtonCodeToMouseButton(payloadByte)\n }));\n break;\n case exports_enums.EventType.MouseMove:\n system.mousemove?.(attachEvent(this.#context, {\n x: payloadVec2.x,\n y: payloadVec2.y\n }));\n break;\n case exports_enums.EventType.MouseWheel:\n system.mousewheel?.(attachEvent(this.#context, {\n x: payloadVec2.x,\n y: payloadVec2.y\n }));\n break;\n case exports_enums.EventType.NetJoinOk: {\n const roomCodeBytes = [];\n for (let j = 0;j < 8; j++) {\n const byte = eventsDataView.getUint8(payloadOffset + j);\n if (byte === 0)\n break;\n roomCodeBytes.push(byte);\n }\n const roomCode = String.fromCharCode(...roomCodeBytes);\n this.#context.event = {\n type: \"join:ok\",\n data: { roomCode }\n };\n system.netcode?.(this.#context);\n break;\n }\n case exports_enums.EventType.NetJoinFail: {\n const reasonCode = eventsDataView.getUint8(payloadOffset);\n const reasons = [\n \"unknown\",\n \"timeout\",\n \"room_full\",\n \"room_not_found\",\n \"already_in_room\"\n ];\n const reason = reasons[reasonCode] ?? \"unknown\";\n this.#context.event = {\n type: \"join:fail\",\n data: { reason }\n };\n system.netcode?.(this.#context);\n break;\n }\n case exports_enums.EventType.NetPeerJoin: {\n const peerId = eventsDataView.getUint8(payloadOffset);\n this.#context.event = {\n type: \"peer:join\",\n data: { peerId }\n };\n system.netcode?.(this.#context);\n break;\n }\n case exports_enums.EventType.NetPeerLeave: {\n const peerId = eventsDataView.getUint8(payloadOffset);\n this.#context.event = {\n type: \"peer:leave\",\n data: { peerId }\n };\n system.netcode?.(this.#context);\n break;\n }\n default:\n break;\n }\n offset += 12;\n }\n this.#context.event = undefined;\n }\n }\n };\n}\nfunction attachEvent(context, event) {\n context.event = event;\n return context;\n}\nexport {\n unwrap,\n mount,\n assert,\n exports_util as Util,\n Sim,\n exports_engine as Engine,\n Bloop\n};\n\n//# debugId=215B825FC3AB02E064756E2164756E21\n//# sourceMappingURL=mod.js.map\n",
6
+ "var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, {\n get: all[name],\n enumerable: true,\n configurable: true,\n set: (newValue) => all[name] = () => newValue\n });\n};\n\n// js/codegen/enums.ts\nvar exports_enums = {};\n__export(exports_enums, {\n NetJoinFailReason: () => NetJoinFailReason,\n MouseButton: () => MouseButton,\n Key: () => Key,\n InputSource: () => InputSource,\n EventType: () => EventType\n});\nvar EventType;\n((EventType2) => {\n EventType2[EventType2[\"None\"] = 0] = \"None\";\n EventType2[EventType2[\"KeyDown\"] = 1] = \"KeyDown\";\n EventType2[EventType2[\"KeyUp\"] = 2] = \"KeyUp\";\n EventType2[EventType2[\"MouseMove\"] = 3] = \"MouseMove\";\n EventType2[EventType2[\"MouseDown\"] = 4] = \"MouseDown\";\n EventType2[EventType2[\"MouseUp\"] = 5] = \"MouseUp\";\n EventType2[EventType2[\"MouseWheel\"] = 6] = \"MouseWheel\";\n EventType2[EventType2[\"FrameStart\"] = 7] = \"FrameStart\";\n EventType2[EventType2[\"NetJoinOk\"] = 8] = \"NetJoinOk\";\n EventType2[EventType2[\"NetJoinFail\"] = 9] = \"NetJoinFail\";\n EventType2[EventType2[\"NetPeerJoin\"] = 10] = \"NetPeerJoin\";\n EventType2[EventType2[\"NetPeerLeave\"] = 11] = \"NetPeerLeave\";\n EventType2[EventType2[\"NetPeerAssignLocalId\"] = 12] = \"NetPeerAssignLocalId\";\n EventType2[EventType2[\"NetPacketReceived\"] = 13] = \"NetPacketReceived\";\n EventType2[EventType2[\"NetSessionInit\"] = 14] = \"NetSessionInit\";\n})(EventType ||= {});\nvar MouseButton;\n((MouseButton2) => {\n MouseButton2[MouseButton2[\"None\"] = 0] = \"None\";\n MouseButton2[MouseButton2[\"Left\"] = 1] = \"Left\";\n MouseButton2[MouseButton2[\"Middle\"] = 2] = \"Middle\";\n MouseButton2[MouseButton2[\"Right\"] = 3] = \"Right\";\n MouseButton2[MouseButton2[\"X1\"] = 4] = \"X1\";\n MouseButton2[MouseButton2[\"X2\"] = 5] = \"X2\";\n MouseButton2[MouseButton2[\"X3\"] = 6] = \"X3\";\n MouseButton2[MouseButton2[\"X4\"] = 7] = \"X4\";\n MouseButton2[MouseButton2[\"X5\"] = 8] = \"X5\";\n})(MouseButton ||= {});\nvar Key;\n((Key2) => {\n Key2[Key2[\"None\"] = 0] = \"None\";\n Key2[Key2[\"Backquote\"] = 1] = \"Backquote\";\n Key2[Key2[\"Backslash\"] = 2] = \"Backslash\";\n Key2[Key2[\"BracketLeft\"] = 3] = \"BracketLeft\";\n Key2[Key2[\"BracketRight\"] = 4] = \"BracketRight\";\n Key2[Key2[\"Comma\"] = 5] = \"Comma\";\n Key2[Key2[\"Digit0\"] = 6] = \"Digit0\";\n Key2[Key2[\"Digit1\"] = 7] = \"Digit1\";\n Key2[Key2[\"Digit2\"] = 8] = \"Digit2\";\n Key2[Key2[\"Digit3\"] = 9] = \"Digit3\";\n Key2[Key2[\"Digit4\"] = 10] = \"Digit4\";\n Key2[Key2[\"Digit5\"] = 11] = \"Digit5\";\n Key2[Key2[\"Digit6\"] = 12] = \"Digit6\";\n Key2[Key2[\"Digit7\"] = 13] = \"Digit7\";\n Key2[Key2[\"Digit8\"] = 14] = \"Digit8\";\n Key2[Key2[\"Digit9\"] = 15] = \"Digit9\";\n Key2[Key2[\"Equal\"] = 16] = \"Equal\";\n Key2[Key2[\"IntlBackslash\"] = 17] = \"IntlBackslash\";\n Key2[Key2[\"IntlRo\"] = 18] = \"IntlRo\";\n Key2[Key2[\"IntlYen\"] = 19] = \"IntlYen\";\n Key2[Key2[\"KeyA\"] = 20] = \"KeyA\";\n Key2[Key2[\"KeyB\"] = 21] = \"KeyB\";\n Key2[Key2[\"KeyC\"] = 22] = \"KeyC\";\n Key2[Key2[\"KeyD\"] = 23] = \"KeyD\";\n Key2[Key2[\"KeyE\"] = 24] = \"KeyE\";\n Key2[Key2[\"KeyF\"] = 25] = \"KeyF\";\n Key2[Key2[\"KeyG\"] = 26] = \"KeyG\";\n Key2[Key2[\"KeyH\"] = 27] = \"KeyH\";\n Key2[Key2[\"KeyI\"] = 28] = \"KeyI\";\n Key2[Key2[\"KeyJ\"] = 29] = \"KeyJ\";\n Key2[Key2[\"KeyK\"] = 30] = \"KeyK\";\n Key2[Key2[\"KeyL\"] = 31] = \"KeyL\";\n Key2[Key2[\"KeyM\"] = 32] = \"KeyM\";\n Key2[Key2[\"KeyN\"] = 33] = \"KeyN\";\n Key2[Key2[\"KeyO\"] = 34] = \"KeyO\";\n Key2[Key2[\"KeyP\"] = 35] = \"KeyP\";\n Key2[Key2[\"KeyQ\"] = 36] = \"KeyQ\";\n Key2[Key2[\"KeyR\"] = 37] = \"KeyR\";\n Key2[Key2[\"KeyS\"] = 38] = \"KeyS\";\n Key2[Key2[\"KeyT\"] = 39] = \"KeyT\";\n Key2[Key2[\"KeyU\"] = 40] = \"KeyU\";\n Key2[Key2[\"KeyV\"] = 41] = \"KeyV\";\n Key2[Key2[\"KeyW\"] = 42] = \"KeyW\";\n Key2[Key2[\"KeyX\"] = 43] = \"KeyX\";\n Key2[Key2[\"KeyY\"] = 44] = \"KeyY\";\n Key2[Key2[\"KeyZ\"] = 45] = \"KeyZ\";\n Key2[Key2[\"Minus\"] = 46] = \"Minus\";\n Key2[Key2[\"Period\"] = 47] = \"Period\";\n Key2[Key2[\"Quote\"] = 48] = \"Quote\";\n Key2[Key2[\"Semicolon\"] = 49] = \"Semicolon\";\n Key2[Key2[\"Slash\"] = 50] = \"Slash\";\n Key2[Key2[\"AltLeft\"] = 51] = \"AltLeft\";\n Key2[Key2[\"AltRight\"] = 52] = \"AltRight\";\n Key2[Key2[\"Backspace\"] = 53] = \"Backspace\";\n Key2[Key2[\"CapsLock\"] = 54] = \"CapsLock\";\n Key2[Key2[\"ContextMenu\"] = 55] = \"ContextMenu\";\n Key2[Key2[\"ControlLeft\"] = 56] = \"ControlLeft\";\n Key2[Key2[\"ControlRight\"] = 57] = \"ControlRight\";\n Key2[Key2[\"Enter\"] = 58] = \"Enter\";\n Key2[Key2[\"MetaLeft\"] = 59] = \"MetaLeft\";\n Key2[Key2[\"MetaRight\"] = 60] = \"MetaRight\";\n Key2[Key2[\"ShiftLeft\"] = 61] = \"ShiftLeft\";\n Key2[Key2[\"ShiftRight\"] = 62] = \"ShiftRight\";\n Key2[Key2[\"Space\"] = 63] = \"Space\";\n Key2[Key2[\"Tab\"] = 64] = \"Tab\";\n Key2[Key2[\"Convert\"] = 65] = \"Convert\";\n Key2[Key2[\"KanaMode\"] = 66] = \"KanaMode\";\n Key2[Key2[\"Lang1\"] = 67] = \"Lang1\";\n Key2[Key2[\"Lang2\"] = 68] = \"Lang2\";\n Key2[Key2[\"Lang3\"] = 69] = \"Lang3\";\n Key2[Key2[\"Lang4\"] = 70] = \"Lang4\";\n Key2[Key2[\"Lang5\"] = 71] = \"Lang5\";\n Key2[Key2[\"NonConvert\"] = 72] = \"NonConvert\";\n Key2[Key2[\"Delete\"] = 73] = \"Delete\";\n Key2[Key2[\"End\"] = 74] = \"End\";\n Key2[Key2[\"Help\"] = 75] = \"Help\";\n Key2[Key2[\"Home\"] = 76] = \"Home\";\n Key2[Key2[\"Insert\"] = 77] = \"Insert\";\n Key2[Key2[\"PageDown\"] = 78] = \"PageDown\";\n Key2[Key2[\"PageUp\"] = 79] = \"PageUp\";\n Key2[Key2[\"ArrowDown\"] = 80] = \"ArrowDown\";\n Key2[Key2[\"ArrowLeft\"] = 81] = \"ArrowLeft\";\n Key2[Key2[\"ArrowRight\"] = 82] = \"ArrowRight\";\n Key2[Key2[\"ArrowUp\"] = 83] = \"ArrowUp\";\n Key2[Key2[\"NumLock\"] = 84] = \"NumLock\";\n Key2[Key2[\"Numpad0\"] = 85] = \"Numpad0\";\n Key2[Key2[\"Numpad1\"] = 86] = \"Numpad1\";\n Key2[Key2[\"Numpad2\"] = 87] = \"Numpad2\";\n Key2[Key2[\"Numpad3\"] = 88] = \"Numpad3\";\n Key2[Key2[\"Numpad4\"] = 89] = \"Numpad4\";\n Key2[Key2[\"Numpad5\"] = 90] = \"Numpad5\";\n Key2[Key2[\"Numpad6\"] = 91] = \"Numpad6\";\n Key2[Key2[\"Numpad7\"] = 92] = \"Numpad7\";\n Key2[Key2[\"Numpad8\"] = 93] = \"Numpad8\";\n Key2[Key2[\"Numpad9\"] = 94] = \"Numpad9\";\n Key2[Key2[\"NumpadAdd\"] = 95] = \"NumpadAdd\";\n Key2[Key2[\"NumpadBackspace\"] = 96] = \"NumpadBackspace\";\n Key2[Key2[\"NumpadClear\"] = 97] = \"NumpadClear\";\n Key2[Key2[\"NumpadClearEntry\"] = 98] = \"NumpadClearEntry\";\n Key2[Key2[\"NumpadComma\"] = 99] = \"NumpadComma\";\n Key2[Key2[\"NumpadDecimal\"] = 100] = \"NumpadDecimal\";\n Key2[Key2[\"NumpadDivide\"] = 101] = \"NumpadDivide\";\n Key2[Key2[\"NumpadEnter\"] = 102] = \"NumpadEnter\";\n Key2[Key2[\"NumpadEqual\"] = 103] = \"NumpadEqual\";\n Key2[Key2[\"NumpadHash\"] = 104] = \"NumpadHash\";\n Key2[Key2[\"NumpadMemoryAdd\"] = 105] = \"NumpadMemoryAdd\";\n Key2[Key2[\"NumpadMemoryClear\"] = 106] = \"NumpadMemoryClear\";\n Key2[Key2[\"NumpadMemoryRecall\"] = 107] = \"NumpadMemoryRecall\";\n Key2[Key2[\"NumpadMemoryStore\"] = 108] = \"NumpadMemoryStore\";\n Key2[Key2[\"NumpadMemorySubtract\"] = 109] = \"NumpadMemorySubtract\";\n Key2[Key2[\"NumpadMultiply\"] = 110] = \"NumpadMultiply\";\n Key2[Key2[\"NumpadParenLeft\"] = 111] = \"NumpadParenLeft\";\n Key2[Key2[\"NumpadParenRight\"] = 112] = \"NumpadParenRight\";\n Key2[Key2[\"NumpadStar\"] = 113] = \"NumpadStar\";\n Key2[Key2[\"NumpadSubtract\"] = 114] = \"NumpadSubtract\";\n Key2[Key2[\"Escape\"] = 115] = \"Escape\";\n Key2[Key2[\"Fn\"] = 116] = \"Fn\";\n Key2[Key2[\"FnLock\"] = 117] = \"FnLock\";\n Key2[Key2[\"PrintScreen\"] = 118] = \"PrintScreen\";\n Key2[Key2[\"ScrollLock\"] = 119] = \"ScrollLock\";\n Key2[Key2[\"Pause\"] = 120] = \"Pause\";\n Key2[Key2[\"BrowserBack\"] = 121] = \"BrowserBack\";\n Key2[Key2[\"BrowserFavorites\"] = 122] = \"BrowserFavorites\";\n Key2[Key2[\"BrowserForward\"] = 123] = \"BrowserForward\";\n Key2[Key2[\"BrowserHome\"] = 124] = \"BrowserHome\";\n Key2[Key2[\"BrowserRefresh\"] = 125] = \"BrowserRefresh\";\n Key2[Key2[\"BrowserSearch\"] = 126] = \"BrowserSearch\";\n Key2[Key2[\"BrowserStop\"] = 127] = \"BrowserStop\";\n Key2[Key2[\"Eject\"] = 128] = \"Eject\";\n Key2[Key2[\"LaunchApp1\"] = 129] = \"LaunchApp1\";\n Key2[Key2[\"LaunchApp2\"] = 130] = \"LaunchApp2\";\n Key2[Key2[\"LaunchMail\"] = 131] = \"LaunchMail\";\n Key2[Key2[\"MediaPlayPause\"] = 132] = \"MediaPlayPause\";\n Key2[Key2[\"MediaSelect\"] = 133] = \"MediaSelect\";\n Key2[Key2[\"MediaStop\"] = 134] = \"MediaStop\";\n Key2[Key2[\"MediaTrackNext\"] = 135] = \"MediaTrackNext\";\n Key2[Key2[\"MediaTrackPrevious\"] = 136] = \"MediaTrackPrevious\";\n Key2[Key2[\"Power\"] = 137] = \"Power\";\n Key2[Key2[\"Sleep\"] = 138] = \"Sleep\";\n Key2[Key2[\"AudioVolumeDown\"] = 139] = \"AudioVolumeDown\";\n Key2[Key2[\"AudioVolumeMute\"] = 140] = \"AudioVolumeMute\";\n Key2[Key2[\"AudioVolumeUp\"] = 141] = \"AudioVolumeUp\";\n Key2[Key2[\"WakeUp\"] = 142] = \"WakeUp\";\n Key2[Key2[\"Hyper\"] = 143] = \"Hyper\";\n Key2[Key2[\"Super\"] = 144] = \"Super\";\n Key2[Key2[\"Turbo\"] = 145] = \"Turbo\";\n Key2[Key2[\"Abort\"] = 146] = \"Abort\";\n Key2[Key2[\"Resume\"] = 147] = \"Resume\";\n Key2[Key2[\"Suspend\"] = 148] = \"Suspend\";\n Key2[Key2[\"Again\"] = 149] = \"Again\";\n Key2[Key2[\"Copy\"] = 150] = \"Copy\";\n Key2[Key2[\"Cut\"] = 151] = \"Cut\";\n Key2[Key2[\"Find\"] = 152] = \"Find\";\n Key2[Key2[\"Open\"] = 153] = \"Open\";\n Key2[Key2[\"Paste\"] = 154] = \"Paste\";\n Key2[Key2[\"Props\"] = 155] = \"Props\";\n Key2[Key2[\"Select\"] = 156] = \"Select\";\n Key2[Key2[\"Undo\"] = 157] = \"Undo\";\n Key2[Key2[\"Hiragana\"] = 158] = \"Hiragana\";\n Key2[Key2[\"Katakana\"] = 159] = \"Katakana\";\n Key2[Key2[\"F1\"] = 160] = \"F1\";\n Key2[Key2[\"F2\"] = 161] = \"F2\";\n Key2[Key2[\"F3\"] = 162] = \"F3\";\n Key2[Key2[\"F4\"] = 163] = \"F4\";\n Key2[Key2[\"F5\"] = 164] = \"F5\";\n Key2[Key2[\"F6\"] = 165] = \"F6\";\n Key2[Key2[\"F7\"] = 166] = \"F7\";\n Key2[Key2[\"F8\"] = 167] = \"F8\";\n Key2[Key2[\"F9\"] = 168] = \"F9\";\n Key2[Key2[\"F10\"] = 169] = \"F10\";\n Key2[Key2[\"F11\"] = 170] = \"F11\";\n Key2[Key2[\"F12\"] = 171] = \"F12\";\n Key2[Key2[\"F13\"] = 172] = \"F13\";\n Key2[Key2[\"F14\"] = 173] = \"F14\";\n Key2[Key2[\"F15\"] = 174] = \"F15\";\n Key2[Key2[\"F16\"] = 175] = \"F16\";\n Key2[Key2[\"F17\"] = 176] = \"F17\";\n Key2[Key2[\"F18\"] = 177] = \"F18\";\n Key2[Key2[\"F19\"] = 178] = \"F19\";\n Key2[Key2[\"F20\"] = 179] = \"F20\";\n Key2[Key2[\"F21\"] = 180] = \"F21\";\n Key2[Key2[\"F22\"] = 181] = \"F22\";\n Key2[Key2[\"F23\"] = 182] = \"F23\";\n Key2[Key2[\"F24\"] = 183] = \"F24\";\n Key2[Key2[\"F25\"] = 184] = \"F25\";\n Key2[Key2[\"F26\"] = 185] = \"F26\";\n Key2[Key2[\"F27\"] = 186] = \"F27\";\n Key2[Key2[\"F28\"] = 187] = \"F28\";\n Key2[Key2[\"F29\"] = 188] = \"F29\";\n Key2[Key2[\"F30\"] = 189] = \"F30\";\n Key2[Key2[\"F31\"] = 190] = \"F31\";\n Key2[Key2[\"F32\"] = 191] = \"F32\";\n Key2[Key2[\"F33\"] = 192] = \"F33\";\n Key2[Key2[\"F34\"] = 193] = \"F34\";\n Key2[Key2[\"F35\"] = 194] = \"F35\";\n})(Key ||= {});\nvar InputSource;\n((InputSource2) => {\n InputSource2[InputSource2[\"None\"] = 0] = \"None\";\n InputSource2[InputSource2[\"LocalKeyboard\"] = 1] = \"LocalKeyboard\";\n InputSource2[InputSource2[\"LocalMouse\"] = 2] = \"LocalMouse\";\n InputSource2[InputSource2[\"LocalTouch\"] = 3] = \"LocalTouch\";\n InputSource2[InputSource2[\"LocalGamepad0\"] = 4] = \"LocalGamepad0\";\n InputSource2[InputSource2[\"LocalGamepad1\"] = 5] = \"LocalGamepad1\";\n InputSource2[InputSource2[\"LocalGamepad2\"] = 6] = \"LocalGamepad2\";\n InputSource2[InputSource2[\"LocalGamepad3\"] = 7] = \"LocalGamepad3\";\n InputSource2[InputSource2[\"LocalGamepad4\"] = 8] = \"LocalGamepad4\";\n InputSource2[InputSource2[\"LocalGamepad5\"] = 9] = \"LocalGamepad5\";\n InputSource2[InputSource2[\"LocalGamepad6\"] = 10] = \"LocalGamepad6\";\n InputSource2[InputSource2[\"LocalGamepad7\"] = 11] = \"LocalGamepad7\";\n InputSource2[InputSource2[\"LocalGamepad8\"] = 12] = \"LocalGamepad8\";\n InputSource2[InputSource2[\"LocalGamepad9\"] = 13] = \"LocalGamepad9\";\n InputSource2[InputSource2[\"LocalGamepad10\"] = 14] = \"LocalGamepad10\";\n InputSource2[InputSource2[\"LocalGamepad11\"] = 15] = \"LocalGamepad11\";\n InputSource2[InputSource2[\"RemotePeer0\"] = 128] = \"RemotePeer0\";\n InputSource2[InputSource2[\"RemotePeer1\"] = 129] = \"RemotePeer1\";\n InputSource2[InputSource2[\"RemotePeer2\"] = 130] = \"RemotePeer2\";\n InputSource2[InputSource2[\"RemotePeer3\"] = 131] = \"RemotePeer3\";\n InputSource2[InputSource2[\"RemotePeer4\"] = 132] = \"RemotePeer4\";\n InputSource2[InputSource2[\"RemotePeer5\"] = 133] = \"RemotePeer5\";\n InputSource2[InputSource2[\"RemotePeer6\"] = 134] = \"RemotePeer6\";\n InputSource2[InputSource2[\"RemotePeer7\"] = 135] = \"RemotePeer7\";\n InputSource2[InputSource2[\"RemotePeer8\"] = 136] = \"RemotePeer8\";\n InputSource2[InputSource2[\"RemotePeer9\"] = 137] = \"RemotePeer9\";\n InputSource2[InputSource2[\"RemotePeer10\"] = 138] = \"RemotePeer10\";\n InputSource2[InputSource2[\"RemotePeer11\"] = 139] = \"RemotePeer11\";\n InputSource2[InputSource2[\"Unmapped\"] = 255] = \"Unmapped\";\n})(InputSource ||= {});\nvar NetJoinFailReason;\n((NetJoinFailReason2) => {\n NetJoinFailReason2[NetJoinFailReason2[\"unknown\"] = 0] = \"unknown\";\n NetJoinFailReason2[NetJoinFailReason2[\"timeout\"] = 1] = \"timeout\";\n NetJoinFailReason2[NetJoinFailReason2[\"room_full\"] = 2] = \"room_full\";\n NetJoinFailReason2[NetJoinFailReason2[\"room_not_found\"] = 3] = \"room_not_found\";\n NetJoinFailReason2[NetJoinFailReason2[\"already_in_room\"] = 4] = \"already_in_room\";\n})(NetJoinFailReason ||= {});\n// js/inputs.ts\nvar MAX_PLAYERS = 12;\nvar KEYBOARD_OFFSET = 0;\nvar KEYBOARD_SIZE = 256;\nvar MOUSE_OFFSET = 256;\nvar MOUSE_BUTTONS_OFFSET = 16;\nvar PLAYER_INPUTS_SIZE = 280;\nvar INPUT_CTX_SIZE = MAX_PLAYERS * PLAYER_INPUTS_SIZE;\nvar EVENT_PAYLOAD_SIZE = 8;\nvar EVENT_PAYLOAD_ALIGN = 4;\nfunction keyToKeyCode(key) {\n return Key[key];\n}\nfunction keyCodeToKey(code) {\n return Key[code];\n}\nfunction mouseButtonToMouseButtonCode(button) {\n return MouseButton[button];\n}\nfunction mouseButtonCodeToMouseButton(code) {\n return MouseButton[code];\n}\nfunction inputSourceToInputSourceCode(source) {\n return InputSource[source];\n}\nfunction inputSourceCodeToInputSource(code) {\n return InputSource[code];\n}\n\n// js/contexts/inputContext.ts\nclass PlayerInputContext {\n #dataView;\n #keys;\n #mouse;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get keys() {\n if (!this.#keys) {\n this.#keys = new KeyboardContext(new DataView(this.#dataView.buffer, this.#dataView.byteOffset + KEYBOARD_OFFSET));\n }\n return this.#keys;\n }\n get mouse() {\n if (!this.#mouse) {\n this.#mouse = new MouseContext(new DataView(this.#dataView.buffer, this.#dataView.byteOffset + MOUSE_OFFSET));\n }\n return this.#mouse;\n }\n}\n\nclass InputContext {\n #dataView;\n #players = [];\n constructor(dataView) {\n if (dataView) {\n this.#dataView = dataView;\n this.#buildPlayers();\n }\n }\n get dataView() {\n if (!this.#dataView) {\n throw new Error(\"DataView is not initialized on InputContext\");\n }\n return this.#dataView;\n }\n set dataView(dataView) {\n this.#dataView = dataView;\n this.#buildPlayers();\n }\n #buildPlayers() {\n this.#players = [];\n for (let i = 0;i < MAX_PLAYERS; i++) {\n const playerOffset = i * PLAYER_INPUTS_SIZE;\n const playerDataView = new DataView(this.dataView.buffer, this.dataView.byteOffset + playerOffset, PLAYER_INPUTS_SIZE);\n this.#players.push(new PlayerInputContext(playerDataView));\n }\n }\n get players() {\n return this.#players;\n }\n get keys() {\n if (!this.#players[0]) {\n throw new Error(\"No player inputs available in InputContext\");\n }\n return this.#players[0].keys;\n }\n get mouse() {\n if (!this.#players[0]) {\n throw new Error(\"No player inputs available in InputContext\");\n }\n return this.#players[0].mouse;\n }\n}\n\nclass MouseContext {\n #dataView;\n #buttonStates = new Map;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get x() {\n return this.#dataView.getFloat32(0, true);\n }\n get y() {\n return this.#dataView.getFloat32(4, true);\n }\n get wheel() {\n return { x: this.wheelX, y: this.wheelY };\n }\n get wheelX() {\n return this.#dataView.getFloat32(8, true);\n }\n get wheelY() {\n return this.#dataView.getFloat32(12, true);\n }\n get left() {\n return this.#buttonState(1 /* Left */);\n }\n get right() {\n return this.#buttonState(3 /* Right */);\n }\n get middle() {\n return this.#buttonState(2 /* Middle */);\n }\n #buttonState(code) {\n let state;\n if (this.#buttonStates.has(code)) {\n state = this.#buttonStates.get(code);\n } else {\n state = { down: false, held: false, up: false };\n this.#buttonStates.set(code, state);\n }\n const offset = MOUSE_BUTTONS_OFFSET;\n state.held = !!(this.#dataView.getUint8(offset + code) & 1);\n state.down = state.held && !(this.#dataView.getUint8(offset + code) & 2);\n state.up = !state.held && !!(this.#dataView.getUint8(offset + code) & 2);\n return state;\n }\n}\n\nclass KeyboardContext {\n #dataView;\n #keystates = new Map;\n constructor(dataView) {\n this.#dataView = dataView;\n }\n get shift() {\n return this.shiftLeft || this.shiftRight;\n }\n get alt() {\n return this.altLeft || this.altRight;\n }\n get control() {\n return this.controlLeft || this.controlRight;\n }\n get meta() {\n return this.metaLeft || this.metaRight;\n }\n get backquote() {\n return this.#keystate(1 /* Backquote */);\n }\n get backslash() {\n return this.#keystate(2 /* Backslash */);\n }\n get bracketLeft() {\n return this.#keystate(3 /* BracketLeft */);\n }\n get bracketRight() {\n return this.#keystate(4 /* BracketRight */);\n }\n get comma() {\n return this.#keystate(5 /* Comma */);\n }\n get digit0() {\n return this.#keystate(6 /* Digit0 */);\n }\n get digit1() {\n return this.#keystate(7 /* Digit1 */);\n }\n get digit2() {\n return this.#keystate(8 /* Digit2 */);\n }\n get digit3() {\n return this.#keystate(9 /* Digit3 */);\n }\n get digit4() {\n return this.#keystate(10 /* Digit4 */);\n }\n get digit5() {\n return this.#keystate(11 /* Digit5 */);\n }\n get digit6() {\n return this.#keystate(12 /* Digit6 */);\n }\n get digit7() {\n return this.#keystate(13 /* Digit7 */);\n }\n get digit8() {\n return this.#keystate(14 /* Digit8 */);\n }\n get digit9() {\n return this.#keystate(15 /* Digit9 */);\n }\n get equal() {\n return this.#keystate(16 /* Equal */);\n }\n get intlBackslash() {\n return this.#keystate(17 /* IntlBackslash */);\n }\n get intlRo() {\n return this.#keystate(18 /* IntlRo */);\n }\n get intlYen() {\n return this.#keystate(19 /* IntlYen */);\n }\n get a() {\n return this.#keystate(20 /* KeyA */);\n }\n get b() {\n return this.#keystate(21 /* KeyB */);\n }\n get c() {\n return this.#keystate(22 /* KeyC */);\n }\n get d() {\n return this.#keystate(23 /* KeyD */);\n }\n get e() {\n return this.#keystate(24 /* KeyE */);\n }\n get f() {\n return this.#keystate(25 /* KeyF */);\n }\n get g() {\n return this.#keystate(26 /* KeyG */);\n }\n get h() {\n return this.#keystate(27 /* KeyH */);\n }\n get i() {\n return this.#keystate(28 /* KeyI */);\n }\n get j() {\n return this.#keystate(29 /* KeyJ */);\n }\n get k() {\n return this.#keystate(30 /* KeyK */);\n }\n get l() {\n return this.#keystate(31 /* KeyL */);\n }\n get m() {\n return this.#keystate(32 /* KeyM */);\n }\n get n() {\n return this.#keystate(33 /* KeyN */);\n }\n get o() {\n return this.#keystate(34 /* KeyO */);\n }\n get p() {\n return this.#keystate(35 /* KeyP */);\n }\n get q() {\n return this.#keystate(36 /* KeyQ */);\n }\n get r() {\n return this.#keystate(37 /* KeyR */);\n }\n get s() {\n return this.#keystate(38 /* KeyS */);\n }\n get t() {\n return this.#keystate(39 /* KeyT */);\n }\n get u() {\n return this.#keystate(40 /* KeyU */);\n }\n get v() {\n return this.#keystate(41 /* KeyV */);\n }\n get w() {\n return this.#keystate(42 /* KeyW */);\n }\n get x() {\n return this.#keystate(43 /* KeyX */);\n }\n get y() {\n return this.#keystate(44 /* KeyY */);\n }\n get z() {\n return this.#keystate(45 /* KeyZ */);\n }\n get minus() {\n return this.#keystate(46 /* Minus */);\n }\n get period() {\n return this.#keystate(47 /* Period */);\n }\n get quote() {\n return this.#keystate(48 /* Quote */);\n }\n get semicolon() {\n return this.#keystate(49 /* Semicolon */);\n }\n get slash() {\n return this.#keystate(50 /* Slash */);\n }\n get altLeft() {\n return this.#keystate(51 /* AltLeft */);\n }\n get altRight() {\n return this.#keystate(52 /* AltRight */);\n }\n get backspace() {\n return this.#keystate(53 /* Backspace */);\n }\n get capsLock() {\n return this.#keystate(54 /* CapsLock */);\n }\n get contextMenu() {\n return this.#keystate(55 /* ContextMenu */);\n }\n get controlLeft() {\n return this.#keystate(56 /* ControlLeft */);\n }\n get controlRight() {\n return this.#keystate(57 /* ControlRight */);\n }\n get enter() {\n return this.#keystate(58 /* Enter */);\n }\n get metaLeft() {\n return this.#keystate(59 /* MetaLeft */);\n }\n get metaRight() {\n return this.#keystate(60 /* MetaRight */);\n }\n get shiftLeft() {\n return this.#keystate(61 /* ShiftLeft */);\n }\n get shiftRight() {\n return this.#keystate(62 /* ShiftRight */);\n }\n get space() {\n return this.#keystate(63 /* Space */);\n }\n get tab() {\n return this.#keystate(64 /* Tab */);\n }\n get convert() {\n return this.#keystate(65 /* Convert */);\n }\n get kanaMode() {\n return this.#keystate(66 /* KanaMode */);\n }\n get lang1() {\n return this.#keystate(67 /* Lang1 */);\n }\n get lang2() {\n return this.#keystate(68 /* Lang2 */);\n }\n get lang3() {\n return this.#keystate(69 /* Lang3 */);\n }\n get lang4() {\n return this.#keystate(70 /* Lang4 */);\n }\n get lang5() {\n return this.#keystate(71 /* Lang5 */);\n }\n get nonConvert() {\n return this.#keystate(72 /* NonConvert */);\n }\n get delete() {\n return this.#keystate(73 /* Delete */);\n }\n get end() {\n return this.#keystate(74 /* End */);\n }\n get help() {\n return this.#keystate(75 /* Help */);\n }\n get home() {\n return this.#keystate(76 /* Home */);\n }\n get insert() {\n return this.#keystate(77 /* Insert */);\n }\n get pageDown() {\n return this.#keystate(78 /* PageDown */);\n }\n get pageUp() {\n return this.#keystate(79 /* PageUp */);\n }\n get arrowDown() {\n return this.#keystate(80 /* ArrowDown */);\n }\n get arrowLeft() {\n return this.#keystate(81 /* ArrowLeft */);\n }\n get arrowRight() {\n return this.#keystate(82 /* ArrowRight */);\n }\n get arrowUp() {\n return this.#keystate(83 /* ArrowUp */);\n }\n get numLock() {\n return this.#keystate(84 /* NumLock */);\n }\n get numpad0() {\n return this.#keystate(85 /* Numpad0 */);\n }\n get numpad1() {\n return this.#keystate(86 /* Numpad1 */);\n }\n get numpad2() {\n return this.#keystate(87 /* Numpad2 */);\n }\n get numpad3() {\n return this.#keystate(88 /* Numpad3 */);\n }\n get numpad4() {\n return this.#keystate(89 /* Numpad4 */);\n }\n get numpad5() {\n return this.#keystate(90 /* Numpad5 */);\n }\n get numpad6() {\n return this.#keystate(91 /* Numpad6 */);\n }\n get numpad7() {\n return this.#keystate(92 /* Numpad7 */);\n }\n get numpad8() {\n return this.#keystate(93 /* Numpad8 */);\n }\n get numpad9() {\n return this.#keystate(94 /* Numpad9 */);\n }\n get numpadAdd() {\n return this.#keystate(95 /* NumpadAdd */);\n }\n get numpadBackspace() {\n return this.#keystate(96 /* NumpadBackspace */);\n }\n get numpadClear() {\n return this.#keystate(97 /* NumpadClear */);\n }\n get numpadClearEntry() {\n return this.#keystate(98 /* NumpadClearEntry */);\n }\n get numpadComma() {\n return this.#keystate(99 /* NumpadComma */);\n }\n get numpadDecimal() {\n return this.#keystate(100 /* NumpadDecimal */);\n }\n get numpadDivide() {\n return this.#keystate(101 /* NumpadDivide */);\n }\n get numpadEnter() {\n return this.#keystate(102 /* NumpadEnter */);\n }\n get numpadEqual() {\n return this.#keystate(103 /* NumpadEqual */);\n }\n get numpadHash() {\n return this.#keystate(104 /* NumpadHash */);\n }\n get numpadMemoryAdd() {\n return this.#keystate(105 /* NumpadMemoryAdd */);\n }\n get numpadMemoryClear() {\n return this.#keystate(106 /* NumpadMemoryClear */);\n }\n get numpadMemoryRecall() {\n return this.#keystate(107 /* NumpadMemoryRecall */);\n }\n get numpadMemoryStore() {\n return this.#keystate(108 /* NumpadMemoryStore */);\n }\n get numpadMemorySubtract() {\n return this.#keystate(109 /* NumpadMemorySubtract */);\n }\n get numpadMultiply() {\n return this.#keystate(110 /* NumpadMultiply */);\n }\n get numpadParenLeft() {\n return this.#keystate(111 /* NumpadParenLeft */);\n }\n get numpadParenRight() {\n return this.#keystate(112 /* NumpadParenRight */);\n }\n get numpadStar() {\n return this.#keystate(113 /* NumpadStar */);\n }\n get numpadSubtract() {\n return this.#keystate(114 /* NumpadSubtract */);\n }\n get escape() {\n return this.#keystate(115 /* Escape */);\n }\n get fn() {\n return this.#keystate(116 /* Fn */);\n }\n get fnLock() {\n return this.#keystate(117 /* FnLock */);\n }\n get printScreen() {\n return this.#keystate(118 /* PrintScreen */);\n }\n get scrollLock() {\n return this.#keystate(119 /* ScrollLock */);\n }\n get pause() {\n return this.#keystate(120 /* Pause */);\n }\n get browserBack() {\n return this.#keystate(121 /* BrowserBack */);\n }\n get browserFavorites() {\n return this.#keystate(122 /* BrowserFavorites */);\n }\n get browserForward() {\n return this.#keystate(123 /* BrowserForward */);\n }\n get browserHome() {\n return this.#keystate(124 /* BrowserHome */);\n }\n get browserRefresh() {\n return this.#keystate(125 /* BrowserRefresh */);\n }\n get browserSearch() {\n return this.#keystate(126 /* BrowserSearch */);\n }\n get browserStop() {\n return this.#keystate(127 /* BrowserStop */);\n }\n get eject() {\n return this.#keystate(128 /* Eject */);\n }\n get launchApp1() {\n return this.#keystate(129 /* LaunchApp1 */);\n }\n get launchApp2() {\n return this.#keystate(130 /* LaunchApp2 */);\n }\n get launchMail() {\n return this.#keystate(131 /* LaunchMail */);\n }\n get mediaPlayPause() {\n return this.#keystate(132 /* MediaPlayPause */);\n }\n get mediaSelect() {\n return this.#keystate(133 /* MediaSelect */);\n }\n get mediaStop() {\n return this.#keystate(134 /* MediaStop */);\n }\n get mediaTrackNext() {\n return this.#keystate(135 /* MediaTrackNext */);\n }\n get mediaTrackPrevious() {\n return this.#keystate(136 /* MediaTrackPrevious */);\n }\n get power() {\n return this.#keystate(137 /* Power */);\n }\n get sleep() {\n return this.#keystate(138 /* Sleep */);\n }\n get audioVolumeDown() {\n return this.#keystate(139 /* AudioVolumeDown */);\n }\n get audioVolumeMute() {\n return this.#keystate(140 /* AudioVolumeMute */);\n }\n get audioVolumeUp() {\n return this.#keystate(141 /* AudioVolumeUp */);\n }\n get wakeUp() {\n return this.#keystate(142 /* WakeUp */);\n }\n get hyper() {\n return this.#keystate(143 /* Hyper */);\n }\n get super() {\n return this.#keystate(144 /* Super */);\n }\n get turbo() {\n return this.#keystate(145 /* Turbo */);\n }\n get abort() {\n return this.#keystate(146 /* Abort */);\n }\n get resume() {\n return this.#keystate(147 /* Resume */);\n }\n get suspend() {\n return this.#keystate(148 /* Suspend */);\n }\n get again() {\n return this.#keystate(149 /* Again */);\n }\n get copy() {\n return this.#keystate(150 /* Copy */);\n }\n get cut() {\n return this.#keystate(151 /* Cut */);\n }\n get find() {\n return this.#keystate(152 /* Find */);\n }\n get open() {\n return this.#keystate(153 /* Open */);\n }\n get paste() {\n return this.#keystate(154 /* Paste */);\n }\n get props() {\n return this.#keystate(155 /* Props */);\n }\n get select() {\n return this.#keystate(156 /* Select */);\n }\n get undo() {\n return this.#keystate(157 /* Undo */);\n }\n get hiragana() {\n return this.#keystate(158 /* Hiragana */);\n }\n get katakana() {\n return this.#keystate(159 /* Katakana */);\n }\n get f1() {\n return this.#keystate(160 /* F1 */);\n }\n get f2() {\n return this.#keystate(161 /* F2 */);\n }\n get f3() {\n return this.#keystate(162 /* F3 */);\n }\n get f4() {\n return this.#keystate(163 /* F4 */);\n }\n get f5() {\n return this.#keystate(164 /* F5 */);\n }\n get f6() {\n return this.#keystate(165 /* F6 */);\n }\n get f7() {\n return this.#keystate(166 /* F7 */);\n }\n get f8() {\n return this.#keystate(167 /* F8 */);\n }\n get f9() {\n return this.#keystate(168 /* F9 */);\n }\n get f10() {\n return this.#keystate(169 /* F10 */);\n }\n get f11() {\n return this.#keystate(170 /* F11 */);\n }\n get f12() {\n return this.#keystate(171 /* F12 */);\n }\n get f13() {\n return this.#keystate(172 /* F13 */);\n }\n get f14() {\n return this.#keystate(173 /* F14 */);\n }\n get f15() {\n return this.#keystate(174 /* F15 */);\n }\n get f16() {\n return this.#keystate(175 /* F16 */);\n }\n get f17() {\n return this.#keystate(176 /* F17 */);\n }\n get f18() {\n return this.#keystate(177 /* F18 */);\n }\n get f19() {\n return this.#keystate(178 /* F19 */);\n }\n get f20() {\n return this.#keystate(179 /* F20 */);\n }\n get f21() {\n return this.#keystate(180 /* F21 */);\n }\n get f22() {\n return this.#keystate(181 /* F22 */);\n }\n get f23() {\n return this.#keystate(182 /* F23 */);\n }\n get f24() {\n return this.#keystate(183 /* F24 */);\n }\n get f25() {\n return this.#keystate(184 /* F25 */);\n }\n get f26() {\n return this.#keystate(185 /* F26 */);\n }\n get f27() {\n return this.#keystate(186 /* F27 */);\n }\n get f28() {\n return this.#keystate(187 /* F28 */);\n }\n get f29() {\n return this.#keystate(188 /* F29 */);\n }\n get f30() {\n return this.#keystate(189 /* F30 */);\n }\n get f31() {\n return this.#keystate(190 /* F31 */);\n }\n get f32() {\n return this.#keystate(191 /* F32 */);\n }\n get f33() {\n return this.#keystate(192 /* F33 */);\n }\n get f34() {\n return this.#keystate(193 /* F34 */);\n }\n get f35() {\n return this.#keystate(194 /* F35 */);\n }\n #keystate(code) {\n let state;\n if (this.#keystates.has(code)) {\n state = this.#keystates.get(code);\n } else {\n state = { down: false, held: false, up: false };\n this.#keystates.set(code, state);\n }\n state.held = !!(this.#dataView.getUint8(code) & 1);\n state.down = state.held && !(this.#dataView.getUint8(code) & 2);\n state.up = !state.held && !!(this.#dataView.getUint8(code) & 2);\n return state;\n }\n}\n// js/contexts/netContext.ts\nvar MAX_PEERS = 12;\nvar PEERS_ARRAY_OFFSET = 32;\nvar PEER_CTX_SIZE = 8;\nvar PEER_CONNECTED_OFFSET = 0;\nvar PEER_PACKET_COUNT_OFFSET = 1;\nvar PEER_SEQ_OFFSET = 2;\nvar PEER_ACK_OFFSET = 4;\nvar PEER_ACK_COUNT_OFFSET = 6;\nvar STATUS_MAP = {\n 0: \"offline\",\n 1: \"local\",\n 2: \"join:pending\",\n 3: \"connected\",\n 4: \"disconnected\"\n};\n\nclass NetContext {\n dataView;\n #peers = Array.from({ length: MAX_PEERS }, () => ({\n isLocal: false,\n seq: -1,\n ack: -1\n }));\n #peersResult = [];\n constructor(dataView) {\n this.dataView = dataView;\n }\n #hasValidBuffer() {\n if (!this.dataView)\n return false;\n return this.dataView.buffer.byteLength > 0;\n }\n get peerCount() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint8(0);\n }\n get localPeerId() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint8(1);\n }\n get isInSession() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint8(2) !== 0;\n }\n get status() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n const statusByte = this.dataView.getUint8(3);\n return STATUS_MAP[statusByte] ?? \"local\";\n }\n get matchFrame() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint32(4, true);\n }\n get sessionStartFrame() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n return this.dataView.getUint32(8, true);\n }\n get roomCode() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n const bytes = [];\n for (let i = 0;i < 8; i++) {\n const byte = this.dataView.getUint8(12 + i);\n if (byte === 0)\n break;\n bytes.push(byte);\n }\n return String.fromCharCode(...bytes);\n }\n get wantsRoomCode() {\n if (!this.#hasValidBuffer()) {\n return;\n }\n const bytes = [];\n for (let i = 0;i < 8; i++) {\n const byte = this.dataView.getUint8(20 + i);\n if (byte === 0)\n break;\n bytes.push(byte);\n }\n return bytes.length > 0 ? String.fromCharCode(...bytes) : undefined;\n }\n set wantsRoomCode(code) {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n for (let i = 0;i < 8; i++) {\n this.dataView.setUint8(20 + i, 0);\n }\n if (code) {\n for (let i = 0;i < Math.min(code.length, 7); i++) {\n this.dataView.setUint8(20 + i, code.charCodeAt(i));\n }\n }\n }\n get wantsDisconnect() {\n if (!this.#hasValidBuffer()) {\n return false;\n }\n return this.dataView.getUint8(28) !== 0;\n }\n set wantsDisconnect(value) {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n this.dataView.setUint8(28, value ? 1 : 0);\n }\n get peers() {\n if (!this.#hasValidBuffer()) {\n throw new Error(\"NetContext dataView is not valid\");\n }\n const dv = this.dataView;\n const localPeerId = this.localPeerId;\n const matchFrame = this.matchFrame;\n let minRemoteSeq = -1;\n for (let i = 0;i < MAX_PEERS; i++) {\n if (i === localPeerId)\n continue;\n const peerOffset = PEERS_ARRAY_OFFSET + i * PEER_CTX_SIZE;\n if (dv.getUint8(peerOffset + PEER_CONNECTED_OFFSET) !== 1)\n continue;\n if (dv.getUint8(peerOffset + PEER_PACKET_COUNT_OFFSET) === 0)\n continue;\n const seq = dv.getUint16(peerOffset + PEER_SEQ_OFFSET, true);\n if (minRemoteSeq === -1 || seq < minRemoteSeq) {\n minRemoteSeq = seq;\n }\n }\n this.#peersResult.length = 0;\n for (let i = 0;i < MAX_PEERS; i++) {\n const peerOffset = PEERS_ARRAY_OFFSET + i * PEER_CTX_SIZE;\n if (dv.getUint8(peerOffset + PEER_CONNECTED_OFFSET) !== 1)\n continue;\n const peer = this.#peers[i];\n if (!peer) {\n throw new Error(`Unexpected missing peer object at index ${i}`);\n }\n const isLocal = i === localPeerId;\n peer.isLocal = isLocal;\n if (isLocal) {\n peer.seq = matchFrame;\n peer.ack = minRemoteSeq;\n } else {\n const packetCount = dv.getUint8(peerOffset + PEER_PACKET_COUNT_OFFSET);\n const ackCount = dv.getUint8(peerOffset + PEER_ACK_COUNT_OFFSET);\n peer.seq = packetCount === 0 ? -1 : dv.getUint16(peerOffset + PEER_SEQ_OFFSET, true);\n peer.ack = ackCount === 0 ? -1 : dv.getUint16(peerOffset + PEER_ACK_OFFSET, true);\n }\n this.#peersResult.push(peer);\n }\n return this.#peersResult;\n }\n}\n// js/contexts/timeContext.ts\nclass TimeContext {\n dataView;\n constructor(dataView) {\n this.dataView = dataView;\n }\n get frame() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(0, true);\n }\n get dt() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(4, true) / 1000;\n }\n get time() {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(8, true) / 1000;\n }\n}\n// js/tape.ts\nvar TAPE_MAGIC = 1413566533;\nfunction readTapeHeader(tape) {\n const view = new DataView(tape.buffer, tape.byteOffset, tape.byteLength);\n const magic = view.getUint32(0, true);\n if (magic !== TAPE_MAGIC) {\n throw new Error(`Invalid tape format: expected magic ${TAPE_MAGIC.toString(16)}, got ${magic.toString(16)}`);\n }\n return {\n magic,\n version: view.getUint16(4, true),\n startFrame: view.getUint32(8, true),\n frameCount: view.getUint16(12, true),\n eventCount: view.getUint16(14, true)\n };\n}\n// js/defaultUrl.ts\nvar DEFAULT_WASM_URL = new URL(\"https://unpkg.com/@bloopjs/engine@0.0.87/wasm/bloop.wasm\");\n\n// js/engine.ts\nvar MAX_ROLLBACK_FRAMES = 500;\nvar TIME_CTX_OFFSET = 0;\nvar INPUT_CTX_OFFSET = TIME_CTX_OFFSET + 4;\nvar EVENTS_OFFSET = INPUT_CTX_OFFSET + 4;\nvar NET_CTX_OFFSET = EVENTS_OFFSET + 4;\nvar SNAPSHOT_HEADER_LEN = 16;\nvar SNAPSHOT_HEADER_USER_LEN_OFFSET = 4;\nvar SNAPSHOT_HEADER_ENGINE_LEN_OFFSET = 8;\nexport {\n readTapeHeader,\n mouseButtonToMouseButtonCode,\n mouseButtonCodeToMouseButton,\n keyToKeyCode,\n keyCodeToKey,\n inputSourceToInputSourceCode,\n inputSourceCodeToInputSource,\n TimeContext,\n TIME_CTX_OFFSET,\n SNAPSHOT_HEADER_USER_LEN_OFFSET,\n SNAPSHOT_HEADER_LEN,\n SNAPSHOT_HEADER_ENGINE_LEN_OFFSET,\n PlayerInputContext,\n PLAYER_INPUTS_SIZE,\n NetContext,\n NET_CTX_OFFSET,\n MouseContext,\n MOUSE_OFFSET,\n MOUSE_BUTTONS_OFFSET,\n MAX_ROLLBACK_FRAMES,\n MAX_PLAYERS,\n KeyboardContext,\n KEYBOARD_SIZE,\n KEYBOARD_OFFSET,\n InputContext,\n INPUT_CTX_SIZE,\n INPUT_CTX_OFFSET,\n exports_enums as Enums,\n EVENT_PAYLOAD_SIZE,\n EVENT_PAYLOAD_ALIGN,\n EVENTS_OFFSET,\n DEFAULT_WASM_URL\n};\n\n//# debugId=9B6D95398695556E64756E2164756E21\n//# sourceMappingURL=engine.js.map\n",
7
7
  "var n,l,u,t,i,r,o,e,f,c,s,a,h,p={},v=[],y=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,w=Array.isArray;function d(n,l){for(var u in l)n[u]=l[u];return n}function g(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function _(l,u,t){var i,r,o,e={};for(o in u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:e[o]=u[o];if(arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)void 0===e[o]&&(e[o]=l.defaultProps[o]);return m(l,e,i,r,null)}function m(n,t,i,r,o){var e={type:n,props:t,key:i,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==o?++u:o,__i:-1,__u:0};return null==o&&null!=l.vnode&&l.vnode(e),e}function b(){return{current:null}}function k(n){return n.children}function x(n,l){this.props=n,this.context=l}function S(n,l){if(null==l)return n.__?S(n.__,n.__i+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?S(n):null}function C(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return C(n)}}function M(n){(!n.__d&&(n.__d=!0)&&i.push(n)&&!$.__r++||r!=l.debounceRendering)&&((r=l.debounceRendering)||o)($)}function $(){for(var n,u,t,r,o,f,c,s=1;i.length;)i.length>s&&i.sort(e),n=i.shift(),s=i.length,n.__d&&(t=void 0,r=void 0,o=(r=(u=n).__v).__e,f=[],c=[],u.__P&&((t=d({},r)).__v=r.__v+1,l.vnode&&l.vnode(t),O(u.__P,t,r,u.__n,u.__P.namespaceURI,32&r.__u?[o]:null,f,null==o?S(r):o,!!(32&r.__u),c),t.__v=r.__v,t.__.__k[t.__i]=t,N(f,t,c),r.__e=r.__=null,t.__e!=o&&C(t)));$.__r=0}function I(n,l,u,t,i,r,o,e,f,c,s){var a,h,y,w,d,g,_,m=t&&t.__k||v,b=l.length;for(f=P(u,l,m,f,b),a=0;a<b;a++)null!=(y=u.__k[a])&&(h=-1==y.__i?p:m[y.__i]||p,y.__i=a,g=O(n,y,h,i,r,o,e,f,c,s),w=y.__e,y.ref&&h.ref!=y.ref&&(h.ref&&B(h.ref,null,y),s.push(y.ref,y.__c||w,y)),null==d&&null!=w&&(d=w),(_=!!(4&y.__u))||h.__k===y.__k?f=A(y,f,n,_):\"function\"==typeof y.type&&void 0!==g?f=g:w&&(f=w.nextSibling),y.__u&=-7);return u.__e=d,f}function P(n,l,u,t,i){var r,o,e,f,c,s=u.length,a=s,h=0;for(n.__k=new Array(i),r=0;r<i;r++)null!=(o=l[r])&&\"boolean\"!=typeof o&&\"function\"!=typeof o?(\"string\"==typeof o||\"number\"==typeof o||\"bigint\"==typeof o||o.constructor==String?o=n.__k[r]=m(null,o,null,null,null):w(o)?o=n.__k[r]=m(k,{children:o},null,null,null):null==o.constructor&&o.__b>0?o=n.__k[r]=m(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):n.__k[r]=o,f=r+h,o.__=n,o.__b=n.__b+1,-1!=(c=o.__i=L(o,u,f,a))&&(a--,(e=u[c])&&(e.__u|=2)),null==e||null==e.__v?(-1==c&&(i>s?h--:i<s&&h++),\"function\"!=typeof o.type&&(o.__u|=4)):c!=f&&(c==f-1?h--:c==f+1?h++:(c>f?h--:h++,o.__u|=4))):n.__k[r]=null;if(a)for(r=0;r<s;r++)null!=(e=u[r])&&0==(2&e.__u)&&(e.__e==t&&(t=S(e)),D(e,e));return t}function A(n,l,u,t){var i,r;if(\"function\"==typeof n.type){for(i=n.__k,r=0;i&&r<i.length;r++)i[r]&&(i[r].__=n,l=A(i[r],l,u,t));return l}n.__e!=l&&(t&&(l&&n.type&&!l.parentNode&&(l=S(n)),u.insertBefore(n.__e,l||null)),l=n.__e);do{l=l&&l.nextSibling}while(null!=l&&8==l.nodeType);return l}function H(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(w(n)?n.some(function(n){H(n,l)}):l.push(n)),l}function L(n,l,u,t){var i,r,o,e=n.key,f=n.type,c=l[u],s=null!=c&&0==(2&c.__u);if(null===c&&null==e||s&&e==c.key&&f==c.type)return u;if(t>(s?1:0))for(i=u-1,r=u+1;i>=0||r<l.length;)if(null!=(c=l[o=i>=0?i--:r++])&&0==(2&c.__u)&&e==c.key&&f==c.type)return o;return-1}function T(n,l,u){\"-\"==l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||y.test(l)?u:u+\"px\"}function j(n,l,u,t,i){var r,o;n:if(\"style\"==l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof t&&(n.style.cssText=t=\"\"),t)for(l in t)u&&l in u||T(n.style,l,\"\");if(u)for(l in u)t&&u[l]==t[l]||T(n.style,l,u[l])}else if(\"o\"==l[0]&&\"n\"==l[1])r=l!=(l=l.replace(f,\"$1\")),o=l.toLowerCase(),l=o in n||\"onFocusOut\"==l||\"onFocusIn\"==l?o.slice(2):l.slice(2),n.l||(n.l={}),n.l[l+r]=u,u?t?u.u=t.u:(u.u=c,n.addEventListener(l,r?a:s,r)):n.removeEventListener(l,r?a:s,r);else{if(\"http://www.w3.org/2000/svg\"==i)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!=l&&\"height\"!=l&&\"href\"!=l&&\"list\"!=l&&\"form\"!=l&&\"tabIndex\"!=l&&\"download\"!=l&&\"rowSpan\"!=l&&\"colSpan\"!=l&&\"role\"!=l&&\"popover\"!=l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!=l[4]?n.removeAttribute(l):n.setAttribute(l,\"popover\"==l&&1==u?\"\":u))}}function F(n){return function(u){if(this.l){var t=this.l[u.type+n];if(null==u.t)u.t=c++;else if(u.t<t.u)return;return t(l.event?l.event(u):u)}}}function O(n,u,t,i,r,o,e,f,c,s){var a,h,p,v,y,_,m,b,S,C,M,$,P,A,H,L,T,j=u.type;if(null!=u.constructor)return null;128&t.__u&&(c=!!(32&t.__u),o=[f=u.__e=t.__e]),(a=l.__b)&&a(u);n:if(\"function\"==typeof j)try{if(b=u.props,S=\"prototype\"in j&&j.prototype.render,C=(a=j.contextType)&&i[a.__c],M=a?C?C.props.value:a.__:i,t.__c?m=(h=u.__c=t.__c).__=h.__E:(S?u.__c=h=new j(b,M):(u.__c=h=new x(b,M),h.constructor=j,h.render=E),C&&C.sub(h),h.state||(h.state={}),h.__n=i,p=h.__d=!0,h.__h=[],h._sb=[]),S&&null==h.__s&&(h.__s=h.state),S&&null!=j.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=d({},h.__s)),d(h.__s,j.getDerivedStateFromProps(b,h.__s))),v=h.props,y=h.state,h.__v=u,p)S&&null==j.getDerivedStateFromProps&&null!=h.componentWillMount&&h.componentWillMount(),S&&null!=h.componentDidMount&&h.__h.push(h.componentDidMount);else{if(S&&null==j.getDerivedStateFromProps&&b!==v&&null!=h.componentWillReceiveProps&&h.componentWillReceiveProps(b,M),u.__v==t.__v||!h.__e&&null!=h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(b,h.__s,M)){for(u.__v!=t.__v&&(h.props=b,h.state=h.__s,h.__d=!1),u.__e=t.__e,u.__k=t.__k,u.__k.some(function(n){n&&(n.__=u)}),$=0;$<h._sb.length;$++)h.__h.push(h._sb[$]);h._sb=[],h.__h.length&&e.push(h);break n}null!=h.componentWillUpdate&&h.componentWillUpdate(b,h.__s,M),S&&null!=h.componentDidUpdate&&h.__h.push(function(){h.componentDidUpdate(v,y,_)})}if(h.context=M,h.props=b,h.__P=n,h.__e=!1,P=l.__r,A=0,S){for(h.state=h.__s,h.__d=!1,P&&P(u),a=h.render(h.props,h.state,h.context),H=0;H<h._sb.length;H++)h.__h.push(h._sb[H]);h._sb=[]}else do{h.__d=!1,P&&P(u),a=h.render(h.props,h.state,h.context),h.state=h.__s}while(h.__d&&++A<25);h.state=h.__s,null!=h.getChildContext&&(i=d(d({},i),h.getChildContext())),S&&!p&&null!=h.getSnapshotBeforeUpdate&&(_=h.getSnapshotBeforeUpdate(v,y)),L=a,null!=a&&a.type===k&&null==a.key&&(L=V(a.props.children)),f=I(n,w(L)?L:[L],u,t,i,r,o,e,f,c,s),h.base=u.__e,u.__u&=-161,h.__h.length&&e.push(h),m&&(h.__E=h.__=null)}catch(n){if(u.__v=null,c||null!=o)if(n.then){for(u.__u|=c?160:128;f&&8==f.nodeType&&f.nextSibling;)f=f.nextSibling;o[o.indexOf(f)]=null,u.__e=f}else{for(T=o.length;T--;)g(o[T]);z(u)}else u.__e=t.__e,u.__k=t.__k,n.then||z(u);l.__e(n,u,t)}else null==o&&u.__v==t.__v?(u.__k=t.__k,u.__e=t.__e):f=u.__e=q(t.__e,u,t,i,r,o,e,c,s);return(a=l.diffed)&&a(u),128&u.__u?void 0:f}function z(n){n&&n.__c&&(n.__c.__e=!0),n&&n.__k&&n.__k.forEach(z)}function N(n,u,t){for(var i=0;i<t.length;i++)B(t[i],t[++i],t[++i]);l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function V(n){return\"object\"!=typeof n||null==n||n.__b&&n.__b>0?n:w(n)?n.map(V):d({},n)}function q(u,t,i,r,o,e,f,c,s){var a,h,v,y,d,_,m,b=i.props||p,k=t.props,x=t.type;if(\"svg\"==x?o=\"http://www.w3.org/2000/svg\":\"math\"==x?o=\"http://www.w3.org/1998/Math/MathML\":o||(o=\"http://www.w3.org/1999/xhtml\"),null!=e)for(a=0;a<e.length;a++)if((d=e[a])&&\"setAttribute\"in d==!!x&&(x?d.localName==x:3==d.nodeType)){u=d,e[a]=null;break}if(null==u){if(null==x)return document.createTextNode(k);u=document.createElementNS(o,x,k.is&&k),c&&(l.__m&&l.__m(t,e),c=!1),e=null}if(null==x)b===k||c&&u.data==k||(u.data=k);else{if(e=e&&n.call(u.childNodes),!c&&null!=e)for(b={},a=0;a<u.attributes.length;a++)b[(d=u.attributes[a]).name]=d.value;for(a in b)if(d=b[a],\"children\"==a);else if(\"dangerouslySetInnerHTML\"==a)v=d;else if(!(a in k)){if(\"value\"==a&&\"defaultValue\"in k||\"checked\"==a&&\"defaultChecked\"in k)continue;j(u,a,null,d,o)}for(a in k)d=k[a],\"children\"==a?y=d:\"dangerouslySetInnerHTML\"==a?h=d:\"value\"==a?_=d:\"checked\"==a?m=d:c&&\"function\"!=typeof d||b[a]===d||j(u,a,d,b[a],o);if(h)c||v&&(h.__html==v.__html||h.__html==u.innerHTML)||(u.innerHTML=h.__html),t.__k=[];else if(v&&(u.innerHTML=\"\"),I(\"template\"==t.type?u.content:u,w(y)?y:[y],t,i,r,\"foreignObject\"==x?\"http://www.w3.org/1999/xhtml\":o,e,f,e?e[0]:i.__k&&S(i,0),c,s),null!=e)for(a=e.length;a--;)g(e[a]);c||(a=\"value\",\"progress\"==x&&null==_?u.removeAttribute(\"value\"):null!=_&&(_!==u[a]||\"progress\"==x&&!_||\"option\"==x&&_!=b[a])&&j(u,a,_,b[a],o),a=\"checked\",null!=m&&m!=u[a]&&j(u,a,m,b[a],o))}return u}function B(n,u,t){try{if(\"function\"==typeof n){var i=\"function\"==typeof n.__u;i&&n.__u(),i&&null==u||(n.__u=n(u))}else n.current=u}catch(n){l.__e(n,t)}}function D(n,u,t){var i,r;if(l.unmount&&l.unmount(n),(i=n.ref)&&(i.current&&i.current!=n.__e||B(i,null,u)),null!=(i=n.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){l.__e(n,u)}i.base=i.__P=null}if(i=n.__k)for(r=0;r<i.length;r++)i[r]&&D(i[r],u,t||\"function\"!=typeof n.type);t||g(n.__e),n.__c=n.__=n.__e=void 0}function E(n,l,u){return this.constructor(n,u)}function G(u,t,i){var r,o,e,f;t==document&&(t=document.documentElement),l.__&&l.__(u,t),o=(r=\"function\"==typeof i)?null:i&&i.__k||t.__k,e=[],f=[],O(t,u=(!r&&i||t).__k=_(k,null,[u]),o||p,p,t.namespaceURI,!r&&i?[i]:o?null:t.firstChild?n.call(t.childNodes):null,e,!r&&i?i:o?o.__e:t.firstChild,r,f),N(e,u,f)}function J(n,l){G(n,l,J)}function K(l,u,t){var i,r,o,e,f=d({},l.props);for(o in l.type&&l.type.defaultProps&&(e=l.type.defaultProps),u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:f[o]=void 0===u[o]&&null!=e?e[o]:u[o];return arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),m(l.type,f,i||l.key,r||l.ref,null)}function Q(n){function l(n){var u,t;return this.getChildContext||(u=new Set,(t={})[l.__c]=this,this.getChildContext=function(){return t},this.componentWillUnmount=function(){u=null},this.shouldComponentUpdate=function(n){this.props.value!=n.value&&u.forEach(function(n){n.__e=!0,M(n)})},this.sub=function(n){u.add(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u&&u.delete(n),l&&l.call(n)}}),n.children}return l.__c=\"__cC\"+h++,l.__=n,l.Provider=l.__l=(l.Consumer=function(n,l){return n.children(l)}).contextType=l,l}n=v.slice,l={__e:function(n,l,u,t){for(var i,r,o;l=l.__;)if((i=l.__c)&&!i.__)try{if((r=i.constructor)&&null!=r.getDerivedStateFromError&&(i.setState(r.getDerivedStateFromError(n)),o=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),o=i.__d),o)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&null==n.constructor},x.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!=this.state?this.__s:this.__s=d({},this.state),\"function\"==typeof n&&(n=n(d({},u),this.props)),n&&d(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),M(this))},x.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),M(this))},x.prototype.render=k,i=[],o=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,e=function(n,l){return n.__v.__b-l.__v.__b},$.__r=0,f=/(PointerCapture)$|Capture$/i,c=0,s=F(!1),a=F(!0),h=0;export{x as Component,k as Fragment,K as cloneElement,Q as createContext,_ as createElement,b as createRef,_ as h,J as hydrate,t as isValidElement,l as options,G as render,H as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n",
8
8
  "import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=n,e=c.__b,a=c.__r,v=c.diffed,l=c.__c,m=c.unmount,s=c.__;function p(n,t){c.__h&&c.__h(r,n,o||t),o=0;var u=r.__H||(r.__H={__:[],__h:[]});return n>=u.__.length&&u.__.push({}),u.__[n]}function d(n){return o=1,h(D,n)}function h(n,u,i){var o=p(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):D(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.__f)){var f=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return!!n.__c});if(u.every(function(n){return!n.__N}))return!c||c.call(this,n,t,r);var i=o.__c.props!==n;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),c&&c.call(this,n,t,r)||i};r.__f=!0;var c=r.shouldComponentUpdate,e=r.componentWillUpdate;r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u}e&&e.call(this,n,t,r)},r.shouldComponentUpdate=f}return o.__N||o.__}function y(n,u){var i=p(t++,3);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__H.__h.push(i))}function _(n,u){var i=p(t++,4);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__h.push(i))}function A(n){return o=5,T(function(){return{current:n}},[])}function F(n,t,r){o=6,_(function(){if(\"function\"==typeof n){var r=n(t());return function(){n(null),r&&\"function\"==typeof r&&r()}}if(n)return n.current=t(),function(){return n.current=null}},null==r?r:r.concat(n))}function T(n,r){var u=p(t++,7);return C(u.__H,r)&&(u.__=n(),u.__H=r,u.__h=n),u.__}function q(n,t){return o=8,T(function(){return n},t)}function x(n){var u=r.context[n.__c],i=p(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function P(n,t){c.useDebugValue&&c.useDebugValue(t?t(n):n)}function b(n){var u=p(t++,10),i=d();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function g(){var n=p(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function j(){for(var n;n=f.shift();)if(n.__P&&n.__H)try{n.__H.__h.forEach(z),n.__H.__h.forEach(B),n.__H.__h=[]}catch(t){n.__H.__h=[],c.__e(t,n.__v)}}c.__b=function(n){r=null,e&&e(n)},c.__=function(n,t){n&&t.__k&&t.__k.__m&&(n.__m=t.__k.__m),s&&s(n,t)},c.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(i.__h.forEach(z),i.__h.forEach(B),i.__h=[],t=0)),u=r},c.diffed=function(n){v&&v(n);var t=n.__c;t&&t.__H&&(t.__H.__h.length&&(1!==f.push(t)&&i===c.requestAnimationFrame||((i=c.requestAnimationFrame)||w)(j)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),u=r=null},c.__c=function(n,t){t.some(function(n){try{n.__h.forEach(z),n.__h=n.__h.filter(function(n){return!n.__||B(n)})}catch(r){t.some(function(n){n.__h&&(n.__h=[])}),t=[],c.__e(r,n.__v)}}),l&&l(n,t)},c.unmount=function(n){m&&m(n);var t,r=n.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{z(n)}catch(n){t=n}}),r.__H=void 0,t&&c.__e(t,r.__v))};var k=\"function\"==typeof requestAnimationFrame;function w(n){var t,r=function(){clearTimeout(u),k&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,35);k&&(t=requestAnimationFrame(r))}function z(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function B(n){var t=r;n.__c=n.__(),r=t}function C(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function D(n,t){return\"function\"==typeof t?t(n):t}export{q as useCallback,x as useContext,P as useDebugValue,y as useEffect,b as useErrorBoundary,g as useId,F as useImperativeHandle,_ as useLayoutEffect,T as useMemo,h as useReducer,A as useRef,d as useState};\n//# sourceMappingURL=hooks.module.js.map\n",
9
9
  "var i=Symbol.for(\"preact-signals\");function t(){if(!(s>1)){var i,t=!1;while(void 0!==h){var r=h;h=void 0;f++;while(void 0!==r){var o=r.o;r.o=void 0;r.f&=-3;if(!(8&r.f)&&c(r))try{r.c()}catch(r){if(!t){i=r;t=!0}}r=o}}f=0;s--;if(t)throw i}else s--}function r(i){if(s>0)return i();s++;try{return i()}finally{t()}}var o=void 0;function n(i){var t=o;o=void 0;try{return i()}finally{o=t}}var h=void 0,s=0,f=0,v=0;function e(i){if(void 0!==o){var t=i.n;if(void 0===t||t.t!==o){t={i:0,S:i,p:o.s,n:void 0,t:o,e:void 0,x:void 0,r:t};if(void 0!==o.s)o.s.n=t;o.s=t;i.n=t;if(32&o.f)i.S(t);return t}else if(-1===t.i){t.i=0;if(void 0!==t.n){t.n.p=t.p;if(void 0!==t.p)t.p.n=t.n;t.p=o.s;t.n=void 0;o.s.n=t;o.s=t}return t}}}function u(i,t){this.v=i;this.i=0;this.n=void 0;this.t=void 0;this.W=null==t?void 0:t.watched;this.Z=null==t?void 0:t.unwatched;this.name=null==t?void 0:t.name}u.prototype.brand=i;u.prototype.h=function(){return!0};u.prototype.S=function(i){var t=this,r=this.t;if(r!==i&&void 0===i.e){i.x=r;this.t=i;if(void 0!==r)r.e=i;else n(function(){var i;null==(i=t.W)||i.call(t)})}};u.prototype.U=function(i){var t=this;if(void 0!==this.t){var r=i.e,o=i.x;if(void 0!==r){r.x=o;i.e=void 0}if(void 0!==o){o.e=r;i.x=void 0}if(i===this.t){this.t=o;if(void 0===o)n(function(){var i;null==(i=t.Z)||i.call(t)})}}};u.prototype.subscribe=function(i){var t=this;return E(function(){var r=t.value,n=o;o=void 0;try{i(r)}finally{o=n}},{name:\"sub\"})};u.prototype.valueOf=function(){return this.value};u.prototype.toString=function(){return this.value+\"\"};u.prototype.toJSON=function(){return this.value};u.prototype.peek=function(){var i=o;o=void 0;try{return this.value}finally{o=i}};Object.defineProperty(u.prototype,\"value\",{get:function(){var i=e(this);if(void 0!==i)i.i=this.i;return this.v},set:function(i){if(i!==this.v){if(f>100)throw new Error(\"Cycle detected\");this.v=i;this.i++;v++;s++;try{for(var r=this.t;void 0!==r;r=r.x)r.t.N()}finally{t()}}}});function d(i,t){return new u(i,t)}function c(i){for(var t=i.s;void 0!==t;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function a(i){for(var t=i.s;void 0!==t;t=t.n){var r=t.S.n;if(void 0!==r)t.r=r;t.S.n=t;t.i=-1;if(void 0===t.n){i.s=t;break}}}function l(i){var t=i.s,r=void 0;while(void 0!==t){var o=t.p;if(-1===t.i){t.S.U(t);if(void 0!==o)o.n=t.n;if(void 0!==t.n)t.n.p=o}else r=t;t.S.n=t.r;if(void 0!==t.r)t.r=void 0;t=o}i.s=r}function y(i,t){u.call(this,void 0);this.x=i;this.s=void 0;this.g=v-1;this.f=4;this.W=null==t?void 0:t.watched;this.Z=null==t?void 0:t.unwatched;this.name=null==t?void 0:t.name}y.prototype=new u;y.prototype.h=function(){this.f&=-3;if(1&this.f)return!1;if(32==(36&this.f))return!0;this.f&=-5;if(this.g===v)return!0;this.g=v;this.f|=1;if(this.i>0&&!c(this)){this.f&=-2;return!0}var i=o;try{a(this);o=this;var t=this.x();if(16&this.f||this.v!==t||0===this.i){this.v=t;this.f&=-17;this.i++}}catch(i){this.v=i;this.f|=16;this.i++}o=i;l(this);this.f&=-2;return!0};y.prototype.S=function(i){if(void 0===this.t){this.f|=36;for(var t=this.s;void 0!==t;t=t.n)t.S.S(t)}u.prototype.S.call(this,i)};y.prototype.U=function(i){if(void 0!==this.t){u.prototype.U.call(this,i);if(void 0===this.t){this.f&=-33;for(var t=this.s;void 0!==t;t=t.n)t.S.U(t)}}};y.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var i=this.t;void 0!==i;i=i.x)i.t.N()}};Object.defineProperty(y.prototype,\"value\",{get:function(){if(1&this.f)throw new Error(\"Cycle detected\");var i=e(this);this.h();if(void 0!==i)i.i=this.i;if(16&this.f)throw this.v;return this.v}});function w(i,t){return new y(i,t)}function _(i){var r=i.u;i.u=void 0;if(\"function\"==typeof r){s++;var n=o;o=void 0;try{r()}catch(t){i.f&=-2;i.f|=8;b(i);throw t}finally{o=n;t()}}}function b(i){for(var t=i.s;void 0!==t;t=t.n)t.S.U(t);i.x=void 0;i.s=void 0;_(i)}function g(i){if(o!==this)throw new Error(\"Out-of-order effect\");l(this);o=i;this.f&=-2;if(8&this.f)b(this);t()}function p(i,t){this.x=i;this.u=void 0;this.s=void 0;this.o=void 0;this.f=32;this.name=null==t?void 0:t.name}p.prototype.c=function(){var i=this.S();try{if(8&this.f)return;if(void 0===this.x)return;var t=this.x();if(\"function\"==typeof t)this.u=t}finally{i()}};p.prototype.S=function(){if(1&this.f)throw new Error(\"Cycle detected\");this.f|=1;this.f&=-9;_(this);a(this);s++;var i=o;o=this;return g.bind(this,i)};p.prototype.N=function(){if(!(2&this.f)){this.f|=2;this.o=h;h=this}};p.prototype.d=function(){this.f|=8;if(!(1&this.f))b(this)};p.prototype.dispose=function(){this.d()};function E(i,t){var r=new p(i,t);try{r.c()}catch(i){r.d();throw i}var o=r.d.bind(r);o[Symbol.dispose]=o;return o}export{y as Computed,p as Effect,u as Signal,r as batch,w as computed,E as effect,d as signal,n as untracked};//# sourceMappingURL=signals-core.module.js.map\n",
@@ -29,6 +29,6 @@
29
29
  "import { unwrap } from \"@bloopjs/bloop\";\nimport type { App } from \"../App.ts\";\nimport * as Debug from \"../debugui/mod.ts\";\nimport { logger } from \"./logs.ts\";\n\nexport type JoinRollbackRoomOptions = {\n /** Called when session becomes active */\n onSessionStart?: () => void;\n /** Called when session ends */\n onSessionEnd?: () => void;\n};\n\n/**\n * Join a rollback netcode room and wire up packet processing.\n * This is a scaffold/stopgap - not the final architecture.\n */\nexport function joinRollbackRoom(\n roomId: string,\n app: App,\n opts?: JoinRollbackRoomOptions,\n): void {\n // State\n let udp: RTCDataChannel | null = null;\n let sessionActive = false;\n let localPeerId: number | null = null;\n let remotePeerId: number | null = null;\n let localStringPeerId: string | null = null;\n let remoteStringPeerId: string | null = null;\n const incomingPackets: Uint8Array[] = [];\n\n function assignPeerIds(\n localId: string,\n remoteId: string,\n ): { local: number; remote: number } {\n if (localId < remoteId) {\n return { local: 0, remote: 1 };\n } else {\n return { local: 1, remote: 0 };\n }\n }\n\n function receivePackets() {\n for (const packetData of incomingPackets) {\n app.sim.emit.packet(packetData);\n\n if (remotePeerId == null) {\n return;\n }\n\n const peerState = unwrap(\n app.sim.net.peers[remotePeerId],\n `Remote peer state not found for peerId ${remotePeerId}`,\n );\n Debug.updatePeer(remoteStringPeerId!, {\n ack: peerState.ack,\n seq: peerState.seq,\n lastPacketTime: performance.now(),\n });\n }\n incomingPackets.length = 0;\n }\n\n function sendPacket() {\n if (!udp || remotePeerId === null) {\n console.warn(\"[netcode] Cannot send packet, udp or remotePeerId is null\");\n return;\n }\n\n if (udp.readyState !== \"open\") {\n console.warn(\n \"[netcode] Data channel not open, cannot send packet. readyState=\",\n udp.readyState,\n );\n return;\n }\n\n const packet = app.sim.getOutboundPacket(remotePeerId);\n\n if (!packet) {\n console.warn(\"[netcode] No packet to send\");\n return;\n }\n\n udp.send(packet);\n }\n\n // Wire up logger to debug state\n logger.onLog = (log) => {\n Debug.addLog(log);\n };\n\n app.joinRoom(roomId, {\n onPeerIdAssign: (peerId) => {\n localStringPeerId = peerId;\n },\n onBrokerMessage: (_message) => {},\n onMessage(_peerId, data, _reliable) {\n incomingPackets.push(new Uint8Array(data));\n },\n onDataChannelClose(peerId, reliable) {\n if (!reliable && remotePeerId !== null) {\n app.sim.emit.network(\"peer:leave\", { peerId: remotePeerId });\n sessionActive = false;\n opts?.onSessionEnd?.();\n }\n },\n onDataChannelOpen(peerId, reliable, channel) {\n if (!reliable) {\n udp = channel;\n\n if (localStringPeerId === null) {\n console.error(\"[netcode] Local peer ID not assigned yet!\");\n return;\n }\n\n const ids = assignPeerIds(localStringPeerId, peerId);\n localPeerId = ids.local;\n Debug.setLocalId(localPeerId);\n remotePeerId = ids.remote;\n remoteStringPeerId = peerId;\n Debug.setRemoteId(remotePeerId);\n\n // Set up local and remote peers in net state\n app.sim.emit.network(\"peer:join\", { peerId: localPeerId });\n app.sim.emit.network(\"peer:join\", { peerId: remotePeerId });\n app.sim.emit.network(\"peer:assign_local_id\", { peerId: localPeerId });\n app.sim.emit.network(\"session:start\", {});\n\n sessionActive = true;\n opts?.onSessionStart?.();\n }\n },\n onPeerConnected(peerId) {\n Debug.addPeer({\n id: peerId,\n nickname: peerId.substring(0, 6),\n ack: -1,\n seq: -1,\n lastPacketTime: performance.now(),\n });\n console.log(\n `[netcode] Peer connected: ${peerId}. Total peers: ${Debug.debugState.netStatus.value.peers.length}`,\n );\n },\n onPeerDisconnected(peerId) {\n Debug.removePeer(peerId);\n if (remotePeerId !== null && peerId === remoteStringPeerId) {\n app.sim.emit.network(\"peer:leave\", { peerId: remotePeerId });\n sessionActive = false;\n opts?.onSessionEnd?.();\n }\n },\n });\n\n // Process packets and send our state each frame\n app.beforeFrame.subscribe((_frame) => {\n if (!sessionActive || !udp || remotePeerId === null) {\n return;\n }\n\n try {\n receivePackets();\n sendPacket();\n } catch (e) {\n console.error(\"Error in beforeFrame:\", e);\n }\n });\n}\n"
30
30
  ],
31
31
  "mappings": "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,SAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACcvB,MAAM,QAAQ;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAgC;AAAA,EAChC;AAAA,EAEA,WAAW,CAAC,UAA0B,CAAC,GAAG;AAAA,IACxC,KAAK,UAAU,QAAQ,UAAU;AAAA,IACjC,MAAM,YAAY,QAAQ,aAAa,SAAS;AAAA,IAChD,MAAM,mBACJ,QAAQ,oBACR,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAAE,IAAI,OAAO;AAAA,IAGzD,KAAK,QAAQ,SAAS,cAAc,gBAAgB;AAAA,IACpD,KAAK,MAAM,MAAM,UACf;AAAA,IAGF,KAAK,UAAU,KAAK,MAAM,aAAa,EAAE,MAAM,OAAO,CAAC;AAAA,IAGvD,MAAM,UAAU,SAAS,cAAc,OAAO;AAAA,IAC9C,QAAQ,cAAc;AAAA,IACtB,KAAK,QAAQ,YAAY,OAAO;AAAA,IAGhC,KAAK,cAAc,SAAS,cAAc,KAAK;AAAA,IAC/C,KAAK,YAAY,KAAK;AAAA,IACtB,KAAK,YAAY,MAAM,UAAU;AAAA,IACjC,KAAK,QAAQ,YAAY,KAAK,WAAW;AAAA,IAGzC,WAAW,WAAW,QAAQ,mBAAmB,gBAAgB;AAAA,IAGjE,KAAK,UAAU,SAAS,cAAc,QAAQ;AAAA,IAG9C,KAAK,QAAQ;AAAA,IAGb,UAAU,YAAY,KAAK,KAAK;AAAA,IAGhC,KAAK,WAAW,KAAK,aAAa;AAAA,IAGlC,WAAW,WAAW,UAAU,MAAM;AAAA,MACpC,KAAK,QAAQ;AAAA,KACd;AAAA;AAAA,EAGH,OAAO,GAAS;AAAA,IACd,EACE,KAAK,EAAE,QAAQ,KAAK,SAAS,QAAQ,KAAK,QAAQ,CAAC,GACnD,KAAK,WACP;AAAA;AAAA,EAGF,YAAY,GAAe;AAAA,IACzB,MAAM,UAAU,CAAC,OAAqB;AAAA,MACpC,IAAI,GAAE,QAAQ,KAAK,SAAS;AAAA,QAC1B,YAAY;AAAA,MACd;AAAA;AAAA,IAEF,OAAO,iBAAiB,WAAW,OAAO;AAAA,IAC1C,OAAO,MAAM,OAAO,oBAAoB,WAAW,OAAO;AAAA;AAAA,MAIxD,MAAM,GAAsB;AAAA,IAC9B,OAAO,KAAK;AAAA;AAAA,MAIV,KAAK,GAAe;AAAA,IACtB,OAAO;AAAA;AAAA,MAIL,SAAS,GAAY;AAAA,IACvB,OAAO,WAAW,UAAU;AAAA;AAAA,MAG1B,SAAS,CAAC,OAAgB;AAAA,IAC5B,WAAW,WAAW,QAAQ,QAAQ,gBAAgB;AAAA;AAAA,EAGxD,OAAO,GAAS;AAAA,IACd,KAAK,WAAW;AAAA,IAChB,EAAO,MAAM,KAAK,WAAW;AAAA,IAC7B,KAAK,MAAM,OAAO;AAAA;AAEtB;;AC7GA,IAAI,CAAC,WAAW,eAAe,CAAC,WAAW,OAAO;AAAA,EAChD,QAAQ,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAQf;AACD;AACA,IAAI,aAAa,cAAc,MAAM;AAAA,EACnC;AAAA,EACA;AAAA,EAEA,WAAW,CAAC,OAAO,QAAQ;AAAA,IACzB,MAAM,SAAS,MAAM;AAAA,IACrB,KAAK,UAAU,MAAM;AAAA,IACrB,KAAK,QAAQ;AAAA;AAEjB;AACA,IAAI,aAAa,cAAc,MAAM;AAAA,EACnC;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EAEX,WAAW,CAAC,OAAO,MAAK,SAAS,IAAI,QAAQ;AAAA,IAC3C,MAAM,SAAS,MAAM;AAAA,IACrB,KAAK,OAAO;AAAA,IACZ,KAAK,SAAS;AAAA;AAElB;AACA,IAAI,SAAS;AAAA,EACX;AAAA,EACA;AAAA,EACA;AACF;AACA,SAAS,OAAM,CAAC,WAAW,KAAK;AAAA,EAC9B,IAAI,CAAC,WAAW;AAAA,IACd,MAAM,IAAI,MAAM,GAAG;AAAA,EACrB;AAAA;AAEF,SAAS,iBAAiB,CAAC,IAAG;AAAA,EAC5B,OAAO,IAAI,GAAE,YAAY,GAAE,MAAM,EAAC;AAAA;AAEpC,SAAS,cAAc,CAAC,IAAG;AAAA,EACzB,IAAI,UAAU,IAAG;AAAA,IACf,MAAM,OAAO,IAAI,aAAa,GAAE,MAAM,EAAC;AAAA,IACvC,OAAO;AAAA,EACT;AAAA,EACA,IAAI,UAAU,MAAK,YAAY,IAAG;AAAA,IAChC,MAAM,OAAO,IAAI,WAEf,GAAE,QAAQ,MAEV,GAAE,UAAU,kBACZ,EACF;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,IAAI,WAAW,IAAG;AAAA,IAChB,MAAM,OAAO,IAAI,WAAW,GAAE,OAAO,EAAC;AAAA,IACtC,OAAO;AAAA,EACT;AAAA,EACA,MAAM,MAAM,IAAI,MAAM,GAAE,MAAM,EAAC;AAAA,EAC/B,OAAO;AAAA;AAET,IAAI;AACJ,IAAI,SACF,OAAO,YAAY,eACnB,SAAS,KAAK,QAAQ,aAAa,OAAY,YAAI,GAAG,UAAU,eAChE,OAAO,aAAa;AACtB,IAAI,aAAa,SAAS,iBAAiB;AAC3C,IAAI,UAAU;AAAA,EACZ,sBAAsB;AAAA,EACtB,sBAAsB,OAAM,KAAK,OAAO,IAAI;AAAA,EAC5C,WAAW;AAAA,EACX,6BAA6B;AAAA,EAC7B,mBAAmB;AAAA,EACnB,YAAY,OAAO;AAAA,EACnB,qBAAqB,OAAO;AAAA,EAC5B,aAAa;AAAA,EACb,OAAO;AACT;AACA,IAAI,+BAA+B;AACnC,IAAI,wBAAwB,MAAM,+BAA+B,YAAY;AAAA,EAC3E;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,cAAc;AAAA,EACd,eAAe;AAAA,EACf,gBAAgB,CAAC;AAAA,EACjB,eAAe,QAAQ,IAAI,KAAK,OAAO;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW,CAAC,KAAK,WAAW,UAAU,CAAC,GAAG;AAAA,IACxC,MAAM;AAAA,IACN,KAAK,OAAO;AAAA,IACZ,KAAK,aAAa;AAAA,IAClB,KAAK,WAAW;AAAA,IAChB,IAAI,KAAK,SAAS,aAAa;AAAA,MAC7B,KAAK,mBAAmB;AAAA,IAC1B;AAAA,IACA,IAAI,KAAK,SAAS,aAAa;AAAA,MAC7B,KAAK,eAAe,KAAK,SAAS;AAAA,IACpC;AAAA,IACA,KAAK,SAAS;AAAA;AAAA,aAEL,UAAU,GAAG;AAAA,IACtB,OAAO;AAAA;AAAA,aAEE,IAAI,GAAG;AAAA,IAChB,OAAO;AAAA;AAAA,aAEE,OAAO,GAAG;AAAA,IACnB,OAAO;AAAA;AAAA,aAEE,MAAM,GAAG;AAAA,IAClB,OAAO;AAAA;AAAA,MAEL,UAAU,GAAG;AAAA,IACf,OAAO,uBAAuB;AAAA;AAAA,MAE5B,IAAI,GAAG;AAAA,IACT,OAAO,uBAAuB;AAAA;AAAA,MAE5B,OAAO,GAAG;AAAA,IACZ,OAAO,uBAAuB;AAAA;AAAA,MAE5B,MAAM,GAAG;AAAA,IACX,OAAO,uBAAuB;AAAA;AAAA,MAE5B,UAAU,GAAG;AAAA,IACf,OAAO,KAAK,MAAM,KAAK,IAAI,aAAa,KAAK;AAAA;AAAA,MAE3C,UAAU,CAAC,OAAO;AAAA,IACpB,KAAK,cAAc;AAAA,IACnB,IAAI,KAAK,KAAK;AAAA,MACZ,KAAK,IAAI,aAAa;AAAA,IACxB;AAAA;AAAA,MAKE,UAAU,GAAG;AAAA,IACf,OAAO,KAAK,IAAI,KAAK,aAAa,CAAC;AAAA;AAAA,MAQjC,cAAc,GAAG;AAAA,IACnB,MAAM,QAAQ,KAAK,cAAc,OAAO,CAAC,KAAK,YAAY;AAAA,MACxD,IAAI,OAAO,YAAY,UAAU;AAAA,QAC/B,OAAO,QAAQ;AAAA,MACjB,EAAO,SAAI,mBAAmB,MAAM;AAAA,QAClC,OAAO,QAAQ;AAAA,MACjB,EAAO;AAAA,QACL,OAAO,QAAQ;AAAA;AAAA,MAEjB,OAAO;AAAA,OACN,CAAC;AAAA,IACJ,OAAO,SAAS,KAAK,MAAM,KAAK,IAAI,iBAAiB;AAAA;AAAA,MAMnD,UAAU,GAAG;AAAA,IACf,OAAO,KAAK,MAAM,KAAK,IAAI,aAAa;AAAA;AAAA,MAOtC,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK,MAAM,KAAK,IAAI,WAAW;AAAA;AAAA,MAKpC,UAAU,GAAG;AAAA,IACf,IAAI,KAAK,KAAK;AAAA,MACZ,OAAO,KAAK,IAAI;AAAA,IAClB;AAAA,IACA,OAAO,KAAK,SAAS,cACjB,uBAAuB,SACvB,uBAAuB;AAAA;AAAA,MAKzB,GAAG,GAAG;AAAA,IACR,OAAO,KAAK,MAAM,KAAK,IAAI,MAAM;AAAA;AAAA,MAK/B,eAAe,GAAG;AAAA,IACpB,OAAO,KAAK;AAAA;AAAA,EAKd,UAAU;AAAA,EAIV,UAAU;AAAA,EAIV,YAAY;AAAA,EAKZ,SAAS;AAAA,EAKT,KAAK,CAAC,OAAO,MAAK,QAAQ;AAAA,IACxB,KAAK,eAAe;AAAA,IACpB,KAAK,mBAAmB;AAAA,IACxB,KAAK,eAAe;AAAA,IACpB,IAAI,CAAC,KAAK,KAAK;AAAA,MACb,KAAK,OAAO,gCAAgC;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,IAAI,KAAK,IAAI,eAAe,KAAK,QAAQ;AAAA,MACvC,KAAK,OAAO,uBAAuB;AAAA,MACnC;AAAA,IACF;AAAA,IACA,KAAK,IAAI,MAAM,MAAM,MAAM;AAAA;AAAA,EAM7B,SAAS,CAAC,MAAM,QAAQ;AAAA,IACtB,KAAK,mBAAmB;AAAA,IACxB,KAAK,eAAe;AAAA,IACpB,KAAK,cAAc;AAAA,IACnB,IAAI,CAAC,KAAK,OAAO,KAAK,IAAI,eAAe,KAAK,QAAQ;AAAA,MACpD,KAAK,SAAS;AAAA,IAChB,EAAO;AAAA,MACL,KAAK,YAAY,MAAM,MAAM;AAAA,MAC7B,KAAK,SAAS;AAAA;AAAA;AAAA,EAMlB,IAAI,CAAC,MAAM;AAAA,IACT,IAAI,KAAK,OAAO,KAAK,IAAI,eAAe,KAAK,MAAM;AAAA,MACjD,KAAK,OAAO,QAAQ,IAAI;AAAA,MACxB,KAAK,IAAI,KAAK,IAAI;AAAA,IACpB,EAAO;AAAA,MACL,QAAQ,sBAAsB,QAAQ,wBACpC,KAAK;AAAA,MACP,IAAI,KAAK,cAAc,SAAS,qBAAqB;AAAA,QACnD,KAAK,OAAO,WAAW,IAAI;AAAA,QAC3B,KAAK,cAAc,KAAK,IAAI;AAAA,MAC9B;AAAA;AAAA;AAAA,EAGJ,MAAM,IAAI,MAAM;AAAA,IACd,IAAI,KAAK,SAAS,OAAO;AAAA,MACvB,KAAK,aAAa,QAAQ,GAAG,IAAI;AAAA,IACnC;AAAA;AAAA,EAEF,aAAa,GAAG;AAAA,IACd;AAAA,MACE,8BAA8B,QAAQ;AAAA,MACtC,uBAAuB,QAAQ;AAAA,MAC/B,uBAAuB,QAAQ;AAAA,QAC7B,KAAK;AAAA,IACT,IAAI,QAAQ;AAAA,IACZ,IAAI,KAAK,cAAc,GAAG;AAAA,MACxB,QACE,uBACA,gCAAgC,KAAK,cAAc;AAAA,MACrD,IAAI,QAAQ,sBAAsB;AAAA,QAChC,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA,KAAK,OAAO,cAAc,KAAK;AAAA,IAC/B,OAAO;AAAA;AAAA,EAET,KAAK,GAAG;AAAA,IACN,OAAO,IAAI,QAAQ,CAAC,YAAY;AAAA,MAC9B,WAAW,SAAS,KAAK,cAAc,CAAC;AAAA,KACzC;AAAA;AAAA,EAEH,iBAAiB,CAAC,mBAAmB;AAAA,IACnC,IAAI,CAAC;AAAA,MAAmB,OAAO,QAAQ,QAAQ,IAAI;AAAA,IACnD,IACE,OAAO,sBAAsB,YAC7B,MAAM,QAAQ,iBAAiB,GAC/B;AAAA,MACA,OAAO,QAAQ,QAAQ,iBAAiB;AAAA,IAC1C;AAAA,IACA,IAAI,OAAO,sBAAsB,YAAY;AAAA,MAC3C,MAAM,YAAY,kBAAkB;AAAA,MACpC,IAAI,CAAC;AAAA,QAAW,OAAO,QAAQ,QAAQ,IAAI;AAAA,MAC3C,IAAI,OAAO,cAAc,YAAY,MAAM,QAAQ,SAAS,GAAG;AAAA,QAC7D,OAAO,QAAQ,QAAQ,SAAS;AAAA,MAClC;AAAA,MACA,IAAI,UAAU,MAAM;AAAA,QAClB,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,MAAM,MAAM,mBAAmB;AAAA;AAAA,EAEjC,WAAW,CAAC,aAAa;AAAA,IACvB,IAAI,OAAO,gBAAgB,UAAU;AAAA,MACnC,OAAO,QAAQ,QAAQ,WAAW;AAAA,IACpC;AAAA,IACA,IAAI,OAAO,gBAAgB,YAAY;AAAA,MACrC,MAAM,MAAM,YAAY;AAAA,MACxB,IAAI,OAAO,QAAQ,UAAU;AAAA,QAC3B,OAAO,QAAQ,QAAQ,GAAG;AAAA,MAC5B;AAAA,MACA,IAAI,IAAI,MAAM;AAAA,QACZ,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,MAAM,MAAM,aAAa;AAAA;AAAA,EAE3B,QAAQ,GAAG;AAAA,IACT,IAAI,KAAK,gBAAgB,CAAC,KAAK,kBAAkB;AAAA,MAC/C;AAAA,IACF;AAAA,IACA,KAAK,eAAe;AAAA,IACpB;AAAA,MACE,aAAa,QAAQ;AAAA,MACrB,oBAAoB,QAAQ;AAAA,QAC1B,KAAK;AAAA,IACT,IAAI,KAAK,eAAe,YAAY;AAAA,MAClC,KAAK,OAAO,uBAAuB,KAAK,aAAa,MAAM,UAAU;AAAA,MACrE;AAAA,IACF;AAAA,IACA,KAAK;AAAA,IACL,KAAK,OAAO,WAAW,KAAK,WAAW;AAAA,IACvC,KAAK,iBAAiB;AAAA,IACtB,KAAK,MAAM,EACR,KAAK,MACJ,QAAQ,IAAI;AAAA,MACV,KAAK,YAAY,KAAK,IAAI;AAAA,MAC1B,KAAK,kBAAkB,KAAK,cAAc,IAAI;AAAA,IAChD,CAAC,CACH,EACC,KAAK,EAAE,KAAK,eAAe;AAAA,MAC1B,IAAI,KAAK,cAAc;AAAA,QACrB,KAAK,eAAe;AAAA,QACpB;AAAA,MACF;AAAA,MACA,IACE,CAAC,KAAK,SAAS,aACf,OAAO,cAAc,eACrB,CAAC,8BACD;AAAA,QACA,QAAQ,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAavB;AAAA,QACS,+BAA+B;AAAA,MACjC;AAAA,MACA,MAAM,KAAK,KAAK,SAAS,aAAa;AAAA,MACtC,KAAK,OAAO,WAAW,EAAE,KAAK,UAAU,CAAC;AAAA,MACzC,KAAK,MAAM,YAAY,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,GAAG,GAAG;AAAA,MAC1D,KAAK,IAAI,aAAa,KAAK;AAAA,MAC3B,KAAK,eAAe;AAAA,MACpB,KAAK,cAAc;AAAA,MACnB,KAAK,kBAAkB,WACrB,MAAM,KAAK,eAAe,GAC1B,iBACF;AAAA,KACD,EACA,MAAM,CAAC,QAAQ;AAAA,MACd,KAAK,eAAe;AAAA,MACpB,KAAK,aAAa,IAAI,OAAO,WAAW,MAAM,IAAI,OAAO,GAAG,IAAI,CAAC;AAAA,KAClE;AAAA;AAAA,EAEL,cAAc,GAAG;AAAA,IACf,KAAK,OAAO,eAAe;AAAA,IAC3B,KAAK,aAAa,IAAI,OAAO,WAAW,MAAM,SAAS,GAAG,IAAI,CAAC;AAAA;AAAA,EAEjE,WAAW,CAAC,OAAO,MAAK,QAAQ;AAAA,IAC9B,KAAK,eAAe;AAAA,IACpB,IAAI,CAAC,KAAK,KAAK;AAAA,MACb;AAAA,IACF;AAAA,IACA,KAAK,iBAAiB;AAAA,IACtB,IAAI;AAAA,MACF,IACE,KAAK,IAAI,eAAe,KAAK,QAC7B,KAAK,IAAI,eAAe,KAAK,YAC7B;AAAA,QACA,KAAK,IAAI,MAAM,MAAM,MAAM;AAAA,MAC7B;AAAA,MACA,KAAK,aAAa,IAAI,OAAO,WAAW,MAAM,QAAQ,IAAI,CAAC;AAAA,MAC3D,OAAO,QAAQ;AAAA;AAAA,EAEnB,WAAW,GAAG;AAAA,IACZ,KAAK,OAAO,aAAa;AAAA,IACzB,KAAK,cAAc;AAAA;AAAA,EAErB,cAAc,CAAC,UAAU;AAAA,IACvB,KAAK,OAAO,YAAY;AAAA,IACxB,QAAQ,YAAY,QAAQ,cAAc,KAAK;AAAA,IAC/C,aAAa,KAAK,eAAe;AAAA,IACjC,KAAK,iBAAiB,WAAW,MAAM,KAAK,YAAY,GAAG,SAAS;AAAA,IACpE,QAAO,KAAK,KAAK,0BAA0B;AAAA,IAC3C,KAAK,IAAI,aAAa,KAAK;AAAA,IAC3B,KAAK,cAAc,QAAQ,CAAC,YAAY;AAAA,MACtC,IAAI;AAAA,OACH,MAAM,KAAK,QAAQ,QAAgB,IAAI,KAAK,OAAO;AAAA,KACrD;AAAA,IACD,KAAK,gBAAgB,CAAC;AAAA,IACtB,IAAI,KAAK,QAAQ;AAAA,MACf,KAAK,OAAO,KAAK;AAAA,IACnB;AAAA,IACA,KAAK,cAAc,WAAW,KAAK,CAAC;AAAA;AAAA,EAEtC,iBAAiB,CAAC,UAAU;AAAA,IAC1B,KAAK,OAAO,eAAe;AAAA,IAC3B,IAAI,KAAK,WAAW;AAAA,MAClB,KAAK,UAAU,KAAK;AAAA,IACtB;AAAA,IACA,KAAK,cAAc,WAAW,KAAK,CAAC;AAAA;AAAA,EAEtC,eAAe,CAAC,UAAU;AAAA,IACxB,KAAK,OAAO,eAAe,MAAM,OAAO;AAAA,IACxC,KAAK,YAAiB,WAAG,MAAM,YAAY,YAAY,YAAiB,SAAC;AAAA,IACzE,IAAI,KAAK,SAAS;AAAA,MAChB,KAAK,QAAQ,KAAK;AAAA,IACpB;AAAA,IACA,KAAK,OAAO,sBAAsB;AAAA,IAClC,KAAK,cAAc,WAAW,KAAK,CAAC;AAAA,IACpC,KAAK,SAAS;AAAA;AAAA,EAEhB,eAAe,CAAC,UAAU;AAAA,IACxB,KAAK,OAAO,aAAa;AAAA,IACzB,KAAK,eAAe;AAAA,IACpB,IAAI,KAAK,kBAAkB;AAAA,MACzB,KAAK,SAAS;AAAA,IAChB;AAAA,IACA,IAAI,KAAK,SAAS;AAAA,MAChB,KAAK,QAAQ,KAAK;AAAA,IACpB;AAAA,IACA,KAAK,cAAc,WAAW,KAAK,CAAC;AAAA;AAAA,EAEtC,gBAAgB,GAAG;AAAA,IACjB,IAAI,CAAC,KAAK,KAAK;AAAA,MACb;AAAA,IACF;AAAA,IACA,KAAK,OAAO,iBAAiB;AAAA,IAC7B,KAAK,IAAI,oBAAoB,QAAQ,KAAK,WAAW;AAAA,IACrD,KAAK,IAAI,oBAAoB,SAAS,KAAK,YAAY;AAAA,IACvD,KAAK,IAAI,oBAAoB,WAAW,KAAK,cAAc;AAAA,IAC3D,KAAK,IAAI,oBAAoB,SAAS,KAAK,YAAY;AAAA;AAAA,EAEzD,aAAa,GAAG;AAAA,IACd,IAAI,CAAC,KAAK,KAAK;AAAA,MACb;AAAA,IACF;AAAA,IACA,KAAK,OAAO,cAAc;AAAA,IAC1B,KAAK,IAAI,iBAAiB,QAAQ,KAAK,WAAW;AAAA,IAClD,KAAK,IAAI,iBAAiB,SAAS,KAAK,YAAY;AAAA,IACpD,KAAK,IAAI,iBAAiB,WAAW,KAAK,cAAc;AAAA,IACxD,KAAK,IAAI,iBAAiB,SAAS,KAAK,YAAY;AAAA;AAAA,EAEtD,cAAc,GAAG;AAAA,IACf,aAAa,KAAK,eAAe;AAAA,IACjC,aAAa,KAAK,cAAc;AAAA;AAEpC;AAUA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AC7cO,IAAM,SAAiB;AAAA,EAC5B,OAAO;AAAA,EAEP,YAAY;AAAA,EACZ,aAAa;AAAA,EAEb,GAAG,CAAC,MAAe;AAAA,IACjB,KAAK,QAAQ;AAAA,SACR;AAAA,MACH,cAAc,KAAK;AAAA,MACnB,aAAa,KAAK,cAAc,IAAI,KAAK,aAAa;AAAA,MACtD,WAAW,KAAK,IAAI;AAAA,MACpB,UAAU;AAAA,IACZ,CAAC;AAAA;AAAA,EAGH,IAAI,CAAC,MAAe;AAAA,IAClB,KAAK,QAAQ;AAAA,SACR;AAAA,MACH,cAAc,KAAK;AAAA,MACnB,aAAa,KAAK,cAAc,IAAI,KAAK,aAAa;AAAA,MACtD,WAAW,KAAK,IAAI;AAAA,MACpB,UAAU;AAAA,IACZ,CAAC;AAAA;AAAA,EAGH,KAAK,CAAC,MAAe;AAAA,IACnB,KAAK,QAAQ;AAAA,SACR;AAAA,MACH,cAAc,KAAK;AAAA,MACnB,aAAa,KAAK,cAAc,IAAI,KAAK,aAAa;AAAA,MACtD,WAAW,KAAK,IAAI;AAAA,MACpB,UAAU;AAAA,IACZ,CAAC;AAAA;AAEL;;;AC1EA,IAAI,mBAA0D;AAC9D,IAAI,cAAc;AAGlB,IAAM,uBACJ;AAEF,IAAM,sBAAsB;AAM5B,eAAsB,aAAa,GAA4C;AAAA,EAC7E,MAAM,MAAM,KAAK,IAAI;AAAA,EACrB,IAAI,oBAAoB,MAAM,aAAa;AAAA,IACzC,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,MAAM,MAAM,MAAM,oBAAoB;AAAA,EAC5C,IAAI,CAAC,IAAI,IAAI;AAAA,IACX,MAAM,IAAI,MAAM,kCAAkC,IAAI,QAAQ;AAAA,EAChE;AAAA,EAEA,MAAM,OAAO,MAAM,IAAI,KAAK;AAAA,EAC5B,IAAI,CAAC,KAAK,YAAY;AAAA,IACpB,MAAM,IAAI,MAAM,gCAAgC;AAAA,EAClD;AAAA,EAIA,mBAAmB,KAAK,WAAW,IAAI,CAAC,WAAyB;AAAA,IAC/D,IAAI,MAAM,QAAQ,OAAO,IAAI,GAAG;AAAA,MAC9B,OAAO;AAAA,WACF;AAAA,QACH,MAAM,OAAO,KAAK,OAAO,CAAC,QAAgB,CAAC,IAAI,SAAS,KAAK,CAAC;AAAA,MAChE;AAAA,IACF;AAAA,IACA,OAAO;AAAA,GACR;AAAA,EAED,OACE,oBAAoB,iBAAiB,SAAS,GAC9C,qCACF;AAAA,EAEA,cAAc,MAAM,KAAK,KAAK;AAAA,EAC9B,OAAO,IAAI;AAAA,IACT,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,YAAY;AAAA,IACd;AAAA,EACF,CAAC;AAAA,EACD,OAAO;AAAA;AAUT,eAAsB,OAAO,CAC3B,IACA,QAEA,YAAoB,qBACC;AAAA,EACrB,MAAM,aAAa,MAAM,cAAc;AAAA,EACvC,MAAM,KAAK,IAAI,kBAAkB,EAAE,WAAW,CAAC;AAAA,EAC/C,MAAM,WAAW,GAAG,kBAAkB,YAAY,CAAC,CAAC;AAAA,EACpD,MAAM,aAAa,GAAG,kBAAkB,cAAc;AAAA,IACpD,SAAS;AAAA,IACT,gBAAgB;AAAA,EAClB,CAAC;AAAA,EAED,MAAM,QAAQ,MAAM,GAAG,YAAY;AAAA,EACnC,MAAM,GAAG,oBAAoB,KAAK;AAAA,EAClC,OAAO,IAAI,EAAE,QAAQ,UAAU,OAAO,aAAa,MAAM,MAAM,CAAC;AAAA,EAChE,MAAM,UAAU,IAAI,SAAS;AAAA,EAC7B,OAAO,IAAI,EAAE,QAAQ,UAAU,OAAO,0BAA0B,CAAC;AAAA,EAEjE,OAAO,IAAI;AAAA,IACT,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM,GAAG;AAAA,IACT,IAAI;AAAA,EACN,CAAC;AAAA,EACD,KAAK,IAAI;AAAA,IACP,MAAM;AAAA,IACN,SAAS,KAAK,KAAK,UAAU,GAAG,gBAAgB,CAAC;AAAA,IACjD,QAAQ;AAAA,EACV,CAAC;AAAA,EACD,MAAM,cAAc,IAAI,IAAI,SAAS;AAAA,EAErC,OAAO;AAAA,IACL,gBAAgB;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA;AAGF,eAAsB,SAAS,CAAC,IAAoB;AAAA,EAClD,GAAG,UAAU,CAAC,UAAU;AAAA,IACtB,OAAO,MAAM;AAAA,MACX,QAAQ;AAAA,MACR,OAAO,YAAY,GAAG;AAAA,MACtB,MAAM,MAAM;AAAA,IACd,CAAC;AAAA;AAAA,EAGH,GAAG,YAAY,CAAC,WAAW;AAAA,IACzB,OAAO,IAAI;AAAA,MACT,QAAQ;AAAA,MACR,OAAO,WAAW,GAAG;AAAA,IACvB,CAAC;AAAA;AAAA,EAGH,GAAG,SAAS,CAAC,WAAW;AAAA,IACtB,OAAO,IAAI;AAAA,MACT,QAAQ;AAAA,MACR,OAAO,UAAU,GAAG;AAAA,IACtB,CAAC;AAAA;AAAA,EAGH,GAAG,UAAU,CAAC,WAAW;AAAA,IACvB,OAAO,IAAI;AAAA,MACT,QAAQ;AAAA,MACR,OAAO,UAAU,GAAG;AAAA,IACtB,CAAC;AAAA;AAAA;AAIL,eAAsB,iBAAiB,CAAC,IAAuB,QAAgB;AAAA,EAC7E,GAAG,0BAA0B,MAAM;AAAA,IACjC,OAAO,IAAI;AAAA,MACT,QAAQ;AAAA,MACR,OAAO,IAAI,OAAO,UAAU,GAAG,CAAC,wBAAwB,GAAG;AAAA,IAC7D,CAAC;AAAA;AAAA,EAGH,GAAG,yBAAyB,MAAM;AAAA,IAChC,OAAO,IAAI;AAAA,MACT,QAAQ;AAAA,MACR,OAAO,IAAI,OAAO,UAAU,GAAG,CAAC,uBAAuB,GAAG;AAAA,IAC5D,CAAC;AAAA;AAAA;AAIL,eAAsB,SAAS,CAC7B,IACA,WAC0B;AAAA,EAC1B,OAAO,IAAI,QAAyB,CAAC,KAAK,OAAO;AAAA,IAC/C,WAAW,MAAM,GAAG,IAAI,MAAM,uBAAuB,CAAC,GAAG,SAAS;AAAA,IAElE,GAAG,4BAA4B,MAAM;AAAA,MACnC,OAAO,IAAI;AAAA,QACT,QAAQ;AAAA,QACR,OAAO,4BAA4B,GAAG;AAAA,MACxC,CAAC;AAAA,MAED,IAAI,GAAG,sBAAsB,YAAY;AAAA,QACvC,IAAI,IAAI;AAAA,MACV;AAAA;AAAA,GAEH;AAAA;AAGH,eAAsB,aAAa,CACjC,IACA,IACA,WACe;AAAA,EACf,OAAO,IAAI,QAAc,CAAC,KAAK,OAAO;AAAA,IACpC,MAAM,YAAY,WAAW,IAAI,SAAS;AAAA,IAC1C,MAAM,kBAAkB,OAAO,UAAwB;AAAA,MACrD,MAAM,YAA2B,KAAK,MAAM,MAAM,IAAI;AAAA,MACtD,IAAI,UAAU,SAAS,gBAAgB;AAAA,QACrC;AAAA,MACF;AAAA,MACA,MAAM,UAAU,UAAU;AAAA,MAC1B,IAAI,QAAQ,SAAS,UAAU;AAAA,QAC7B;AAAA,MACF;AAAA,MACA,MAAM,aAAa,KAAK,MAAM,KAAK,QAAQ,OAAO,CAAC;AAAA,MACnD,OAAO,IAAI;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,MAAM;AAAA,MACR,CAAC;AAAA,MACD,MAAM,GAAG,qBAAqB,IAAI,sBAAsB,UAAU,CAAC;AAAA,MACnE,OAAO,IAAI;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,MACT,CAAC;AAAA,MACD,aAAa,SAAS;AAAA,MACtB,IAAI;AAAA;AAAA,IAEN,GAAG,iBAAiB,WAAW,eAAe;AAAA,GAC/C;AAAA;AAGI,SAAS,eAAe,CAAC,IAAe,IAAgC;AAAA,EAC7E,MAAM,kBAAkB,OAAO,UAAwB;AAAA,IACrD,MAAM,WAA0B,KAAK,MAAM,MAAM,IAAI;AAAA,IACrD,IAAI,SAAS,SAAS,gBAAgB;AAAA,MACpC;AAAA,IACF;AAAA,IACA,MAAM,MAAM,SAAS;AAAA,IACrB,IAAI,IAAI,SAAS,SAAS;AAAA,MACxB;AAAA,IACF;AAAA,IACA,OAAO,IAAI,EAAE,QAAQ,UAAU,OAAO,iBAAiB,CAAC;AAAA,IACxD,MAAM,QAAQ,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC;AAAA,IAC1C,MAAM,aAAa,MAAM,cAAc;AAAA,IACvC,MAAM,KAAK,IAAI,kBAAkB,EAAE,WAAW,CAAC;AAAA,IAE/C,MAAM,GAAG,qBAAqB,KAAK;AAAA,IACnC,OAAO,IAAI;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM,EAAE,OAAO,mBAAmB,GAAG,kBAAkB;AAAA,IACzD,CAAC;AAAA,IACD,MAAM,SAAS,MAAM,GAAG,aAAa;AAAA,IACrC,MAAM,GAAG,oBAAoB,MAAM;AAAA,IACnC,OAAO,IAAI;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM,GAAG;AAAA,IACX,CAAC;AAAA,IACD,MAAM,UAAU,IAAI,mBAAmB;AAAA,IAEvC,MAAM,WAAW;AAAA,MACf,UAAU;AAAA,MACV,YAAY;AAAA,IACd;AAAA,IAEA,GAAG,gBAAgB,CAAC,WAAU;AAAA,MAC5B,OAAO,IAAI;AAAA,QACT,QAAQ;AAAA,QACR,OAAO,wBAAwB,OAAM,QAAQ;AAAA,MAC/C,CAAC;AAAA,MACD,QAAQ,OAAM,QAAQ;AAAA,aACf;AAAA,UACH,SAAS,WAAW,OAAM;AAAA,UAC1B;AAAA,aACG;AAAA,UACH,SAAS,aAAa,OAAM;AAAA,UAC5B;AAAA;AAAA,MAEJ,IAAI,SAAS,YAAY,SAAS,YAAY;AAAA,QAC5C,GAAG,gBAAgB;AAAA,QACnB,GAAG;AAAA,UACD,gBAAgB;AAAA,UAChB,UAAU,SAAS;AAAA,UACnB,YAAY,SAAS;AAAA,UACrB,QAAQ,SAAS;AAAA,QACnB,CAAC;AAAA,MACH;AAAA;AAAA,IAGF,OAAO,IAAI;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM,GAAG;AAAA,IACX,CAAC;AAAA,IAED,KAAK,IAAI;AAAA,MACP,MAAM;AAAA,MACN,SAAS,KAAK,KAAK,UAAU,GAAG,gBAAgB,CAAC;AAAA,MACjD,QAAQ,SAAS;AAAA,IACnB,CAAC;AAAA;AAAA,EAGH,GAAG,iBAAiB,WAAW,eAAe;AAAA;AAGhD,SAAS,IAAI,CAAC,IAAe,KAAkB;AAAA,EAC7C,GAAG,KAAK,KAAK,UAAU,GAAG,CAAC;AAAA,EAC3B,OAAO,IAAI,EAAE,QAAQ,MAAM,WAAW,YAAY,MAAM,IAAI,CAAC;AAAA;;;ACvQxD,SAAS,QAAQ,CAAC,WAAmB,SAAiB,KAAiB;AAAA,EAC5E,MAAM,SAAS,IAAI,sBAAU,SAAS;AAAA,EAEtC,OAAO,iBAAiB,QAAQ,MAAM;AAAA,IACpC,OAAO,IAAI;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,IACT,CAAC;AAAA,GACF;AAAA,EAED,OAAO,iBAAiB,SAAS,CAAC,UAAU;AAAA,IAC1C,OAAO,KAAK;AAAA,MACV,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,GACF;AAAA,EAED,OAAO,iBAAiB,SAAS,CAAC,UAAU;AAAA,IAC1C,OAAO,MAAM;AAAA,MACX,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,GACF;AAAA,EAED,MAAM,QAAiC,IAAI;AAAA,EAE3C,IAAI,QAAQ;AAAA,EAEZ,OAAO,iBAAiB,WAAW,OAAO,UAAU;AAAA,IAClD,IAAI;AAAA,MACF,MAAM,WAAW,KAAK,MAAM,MAAM,IAAI;AAAA,MACtC,OAAO,IAAI;AAAA,QACT,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,MAAM;AAAA,MACR,CAAC;AAAA,MAED,QAAQ,SAAS;AAAA,aACV;AAAA,UACH,QAAQ,SAAS;AAAA,UACjB,IAAI,eAAe,SAAS,MAAM;AAAA,UAClC,WAAW,UAAU,SAAS,SAAS;AAAA,YACrC,IAAI,WAAW;AAAA,cAAO;AAAA,YACtB,IAAI,gBAAgB,MAAM;AAAA,UAC5B;AAAA,UACA;AAAA,aACG;AAAA,UACH;AAAA,aACG,gBAAgB;AAAA,UACnB,MAAM,OAAO,MAAM,QAAQ,QAAQ,SAAS,MAAM;AAAA,UAClD,aAAa,MAAM,GAAG;AAAA,UACtB,IAAI,gBAAgB,SAAS,MAAM;AAAA,UACnC;AAAA,QACF;AAAA,aACK;AAAA,UACH,IAAI,mBAAmB,SAAS,MAAM;AAAA,UACtC;AAAA;AAAA,UAEA,OAAO,KAAK;AAAA,YACV,QAAQ;AAAA,YACR,OAAO,yBAAyB,SAAS;AAAA,YACzC,MAAM;AAAA,UACR,CAAC;AAAA;AAAA,MAEL,OAAO,IAAG;AAAA,MACV,OAAO,MAAM;AAAA,QACX,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,MAAM;AAAA,UACJ,MAAM,MAAM;AAAA,UACZ,OAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA;AAAA,GAEJ;AAAA,EAED,gBAAgB,QAAQ,CAAC,SAAS;AAAA,IAChC,aAAa,MAAM,GAAG;AAAA,GACvB;AAAA,EAED,SAAS,YAAY,CAAC,MAAkB,MAAiB;AAAA,IACvD,UAAU,KAAK,QAAQ;AAAA,IACvB,UAAU,KAAK,UAAU;AAAA,IACzB,kBAAkB,KAAK,gBAAgB,KAAK;AAAA,IAE5C,KAAI,kBAAkB,KAAK,QAAQ,MAAM,KAAK,QAAQ;AAAA,IACtD,KAAI,kBAAkB,KAAK,QAAQ,OAAO,KAAK,UAAU;AAAA,IAEzD,KAAK,SAAS,YAAY,CAAC,UAAU;AAAA,MACnC,KAAI,UAAU,KAAK,QAAQ,MAAM,MAAM,IAAI;AAAA;AAAA,IAE7C,KAAK,SAAS,UAAU,MAAM;AAAA,MAC5B,KAAI,mBAAmB,KAAK,QAAQ,IAAI;AAAA;AAAA,IAG1C,KAAK,WAAW,YAAY,CAAC,UAAU;AAAA,MACrC,KAAI,UAAU,KAAK,QAAQ,MAAM,MAAM,KAAK;AAAA;AAAA,IAE9C,KAAK,WAAW,UAAU,MAAM;AAAA,MAC9B,KAAI,mBAAmB,KAAK,QAAQ,KAAK;AAAA;AAAA,IAE3C,MAAM,IAAI,KAAK,QAAQ,IAAI;AAAA;AAAA;;;ACxF/B,IAAM,qBAAqB;AAG3B,eAAsB,KAAK,CAAC,MAAkC;AAAA,EAC5D,IAAI,CAAC,KAAK,KAAK;AAAA,IACb,QAAQ,QAAQ,MAAM,MAAM,KAAK,MAAM;AAAA,MACrC,gBAAgB,KAAK,kBAAkB;AAAA,MACvC,SAAS,KAAK;AAAA,IAChB,CAAC;AAAA,IACD,KAAK,MAAM;AAAA,EACb;AAAA,EAEA,MAAM,YAAY,KAAK,UACnB,OAAO,KAAK,YAAY,YACtB,EAAE,kBAAkB,KAAK,IACzB,KAAK,UACP;AAAA,EAEJ,MAAM,MAAM,IAAI,IACd,KAAK,KACL,KAAK,MACL,KAAK,aAAa,oBAClB,SACF;AAAA,EAEA,OAAO;AAAA;AAAA;AAUF,MAAM,IAAI;AAAA,EACf;AAAA,EACA;AAAA,EAES;AAAA,EAET,aAA4B;AAAA,EAC5B,eAAqC;AAAA,EACrC,OAAe,YAAY,IAAI;AAAA,EAC/B,WAA2B;AAAA,EAE3B,WAAW,CACT,KACA,MACA,WACA,aACA;AAAA,IACA,KAAK,OAAO;AAAA,IACZ,KAAK,OAAO;AAAA,IACZ,KAAK,YAAY;AAAA,IAEjB,IAAI,aAAa;AAAA,MACf,KAAK,aAAa,WAAW;AAAA,IAC/B;AAAA,IAEA,KAAK,KAAK,MAAM,cAAc,CAAC,UAAkB;AAAA,MAC/C,OAAO,cAAc,KAAK,KAAK,KAAK;AAAA,MACpC,OAAO,aAAa,KAAK,KAAK,QAAQ,IAAI;AAAA,MAC1C,KAAK,YAAY,OAAO,KAAK;AAAA;AAAA,IAG/B,KAAK,UAAU;AAAA;AAAA,MAIb,GAAG,GAAQ;AAAA,IACb,OAAO,KAAK;AAAA;AAAA,MAGV,GAAG,CAAC,KAAU;AAAA,IAChB,KAAK,OAAO;AAAA;AAAA,EAId,YAAY,CAAC,OAAuB,CAAC,GAAY;AAAA,IAC/C,IAAI,KAAK;AAAA,MAAU,OAAO,KAAK;AAAA,IAC/B,KAAK,WAAW,IAAI,QAAQ,IAAI;AAAA,IAGhC,oBAAoB,IAAI;AAAA,IACxB,iBAAiB,KAAK,SAAS,QAAQ,IAAI;AAAA,IAE3C,OAAO,KAAK;AAAA;AAAA,MAIV,OAAO,GAAmB;AAAA,IAC5B,OAAO,KAAK;AAAA;AAAA,MAIV,MAAM,GAA6B;AAAA,IACrC,OAAO,KAAK,UAAU,UAAU;AAAA;AAAA,EAIlC,QAAQ,CAAC,QAAgB,WAA6B;AAAA,IACpD,SAAiB,KAAK,WAAW,QAAQ,SAAS;AAAA;AAAA,EAIpD,QAAQ,CAAC,MAAkB,SAAiC;AAAA,IAC1D,MAAM,SAAS,gBAAe,IAAI;AAAA,IAClC,KAAK,IAAI,SAAS,MAAM,OAAO;AAAA,IAC/B,KAAK,IAAI,KAAK,OAAO,UAAU;AAAA,IAC/B,KAAK,IAAI,MAAM;AAAA,IAGf,WAAW,eAAe,QAAQ,OAAO;AAAA,IACzC,WAAW,eAAe,QAAQ,OAAO;AAAA,IACzC,WAAW,gBAAgB,QAAQ;AAAA,IACnC,WAAW,iBAAiB,QAAQ;AAAA,IACpC,WAAW,UAAU,QAAQ;AAAA;AAAA,EAI/B,cAAiD,eAAyB;AAAA,EAE1E,aAAgD,eAAyB;AAAA,EAEzE,QAA2C,eAA2B;AAAA,EAGtE,SAAS,GAAS;AAAA,IAGhB,MAAM,mBAAmB,MAAM,CAAC,KAAK,IAAI;AAAA,IAEzC,MAAM,gBAAgB,CAAC,UAAyB;AAAA,MAC9C,IAAI,iBAAiB;AAAA,QAAG,KAAK,IAAI,KAAK,QAAQ,MAAM,IAAW;AAAA;AAAA,IAEjE,OAAO,iBAAiB,WAAW,aAAa;AAAA,IAEhD,MAAM,cAAc,CAAC,UAAyB;AAAA,MAC5C,IAAI,iBAAiB;AAAA,QAAG,KAAK,IAAI,KAAK,MAAM,MAAM,IAAW;AAAA;AAAA,IAE/D,OAAO,iBAAiB,SAAS,WAAW;AAAA,IAE5C,MAAM,kBAAkB,CAAC,UAAsB;AAAA,MAC7C,IAAI,iBAAiB;AAAA,QACnB,KAAK,IAAI,KAAK,UAAU,MAAM,SAAS,MAAM,OAAO;AAAA;AAAA,IAExD,OAAO,iBAAiB,aAAa,eAAe;AAAA,IAEpD,MAAM,kBAAkB,CAAC,UAAsB;AAAA,MAC7C,IAAI,iBAAiB;AAAA,QACnB,KAAK,IAAI,KAAK,UAAU,8BAA6B,MAAM,SAAS,CAAC,CAAC;AAAA;AAAA,IAE1E,OAAO,iBAAiB,aAAa,eAAe;AAAA,IAEpD,MAAM,gBAAgB,CAAC,UAAsB;AAAA,MAC3C,IAAI,iBAAiB;AAAA,QACnB,KAAK,IAAI,KAAK,QAAQ,8BAA6B,MAAM,SAAS,CAAC,CAAC;AAAA;AAAA,IAExE,OAAO,iBAAiB,WAAW,aAAa;AAAA,IAEhD,MAAM,mBAAmB,CAAC,UAAsB;AAAA,MAC9C,IAAI,iBAAiB;AAAA,QACnB,KAAK,IAAI,KAAK,WAAW,MAAM,QAAQ,MAAM,MAAM;AAAA;AAAA,IAEvD,OAAO,iBAAiB,SAAS,gBAAgB;AAAA,IAGjD,MAAM,mBAAmB,CAAC,UAAsB;AAAA,MAC9C,IAAI,CAAC,iBAAiB;AAAA,QAAG;AAAA,MACzB,MAAM,QAAQ,MAAM,QAAQ;AAAA,MAC5B,IAAI,OAAO;AAAA,QACT,KAAK,IAAI,KAAK,UAAU,MAAM,SAAS,MAAM,OAAO;AAAA,QACpD,KAAK,IAAI,KAAK,UAAU,MAAM;AAAA,MAChC;AAAA;AAAA,IAEF,OAAO,iBAAiB,cAAc,gBAAgB;AAAA,IAEtD,MAAM,iBAAiB,MAAM;AAAA,MAC3B,IAAI,iBAAiB;AAAA,QAAG,KAAK,IAAI,KAAK,QAAQ,MAAM;AAAA;AAAA,IAEtD,OAAO,iBAAiB,YAAY,cAAc;AAAA,IAElD,MAAM,kBAAkB,CAAC,UAAsB;AAAA,MAC7C,IAAI,CAAC,iBAAiB;AAAA,QAAG;AAAA,MACzB,MAAM,QAAQ,MAAM,QAAQ;AAAA,MAC5B,IAAI,OAAO;AAAA,QACT,KAAK,IAAI,KAAK,UAAU,MAAM,SAAS,MAAM,OAAO;AAAA,MACtD;AAAA;AAAA,IAEF,OAAO,iBAAiB,aAAa,eAAe;AAAA,IAEpD,MAAM,iBAAiB,CAAC,UAAyB;AAAA,MAE/C,KAAK,MAAM,WAAW,MAAM,YAAY,MAAM,QAAQ,KAAK;AAAA,QACzD,MAAM,eAAe;AAAA,QACrB,IAAI,KAAK,IAAI,YAAY;AAAA,UACvB,MAAM,OAAO,KAAK,IAAI,SAAS;AAAA,UAC/B,MAAM,OAAO,IAAI,KAAK,CAAC,IAAI,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAAA,UAClE,MAAM,MAAM,IAAI,gBAAgB,IAAI;AAAA,UACpC,MAAM,KAAI,SAAS,cAAc,GAAG;AAAA,UACpC,GAAE,OAAO;AAAA,UACT,GAAE,WAAW,QAAQ,KAAK,IAAI;AAAA,UAC9B,GAAE,MAAM;AAAA,UACR,IAAI,gBAAgB,GAAG;AAAA,QACzB;AAAA,QACA;AAAA,MACF;AAAA,MAEA,MAAM,gBACJ,MAAM,QAAQ,YAAY,MAAM,WAAW,MAAM;AAAA,MACnD,IAAI,iBAAiB,MAAM,QAAQ,KAAK;AAAA,QACtC,KAAK,IAAI,WAAW,KAAK,IAAI,QAAQ,IAAI,KAAK,IAAI,MAAM;AAAA,MAC1D;AAAA,MAEA,IAAI,KAAK,IAAI,YAAY;AAAA,QACvB,QAAQ,MAAM;AAAA,eACP;AAAA,eACA;AAAA,YACH,WAAW,WAAW,QAAQ;AAAA,YAC9B;AAAA,eACG;AAAA,eACA;AAAA,YACH,IAAI,KAAK,IAAI;AAAA,cAAU,KAAK,IAAI,SAAS;AAAA,YACzC;AAAA,eACG;AAAA,eACA;AAAA,YACH,IAAI,KAAK,IAAI;AAAA,cAAU,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,QAAQ,CAAC;AAAA,YAC5D;AAAA,eACG;AAAA,eACA;AAAA,YACH,WAAW,cAAc,QAAQ;AAAA,YACjC;AAAA;AAAA,MAEN;AAAA;AAAA,IAEF,OAAO,iBAAiB,WAAW,cAAc;AAAA,IAGjD,IAAI,YAAY;AAAA,IAChB,IAAI,cAAc,YAAY,IAAI;AAAA,IAElC,MAAM,QAAQ,MAAM;AAAA,MAClB,MAAM,YAAY,YAAY,IAAI;AAAA,MAClC,MAAM,QAAQ,KAAK,IAAI,KAAK,YAAY,KAAK,IAAI;AAAA,MAGjD,WAAW,YAAY,QAAQ,KAAK,IAAI,KAAK;AAAA,MAG7C,IAAI,QAAQ,GAAG;AAAA,QACb,MAAM,UAAU,YAAY,IAAI;AAAA,QAChC,WAAW,UAAU,QAAQ,UAAU;AAAA,QAGvC,IAAI,WAAW,WAAW,UAAU,eAAe;AAAA,UACjD,MAAM,MAAM,KAAK,KAAK;AAAA,UACtB,IAAI,KAAK;AAAA,YACP,WAAW,aAAa,QAAQ,KAAK,UAAU,GAAG,EAAE;AAAA,UACtD;AAAA,QACF;AAAA,QAGA;AAAA,QACA,MAAM,UAAU,UAAU;AAAA,QAC1B,IAAI,WAAW,MAAM;AAAA,UACnB,WAAW,IAAI,QAAQ,KAAK,MAAO,YAAY,OAAQ,OAAO;AAAA,UAC9D,YAAY;AAAA,UACZ,cAAc;AAAA,QAChB;AAAA,MACF;AAAA,MAGA,WAAW,UAAU,QAAQ,CAAC,KAAK,IAAI;AAAA,MACvC,IAAI,KAAK,IAAI,cAAc,WAAW,eAAe,QAAQ,GAAG;AAAA,QAC9D,MAAM,eAAe,KAAK,IAAI,KAAK;AAAA,QACnC,MAAM,aAAa,WAAW,eAAe;AAAA,QAC7C,MAAM,aAAa,WAAW,eAAe;AAAA,QAC7C,MAAM,YAAY,eAAe,cAAc;AAAA,QAC/C,WAAW,iBAAiB,QAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,QAAQ,CAAC;AAAA,QAGrE,IACE,KAAK,IAAI,eACT,CAAC,KAAK,IAAI,YACV,gBAAgB,aAAa,YAC7B;AAAA,UACA,KAAK,IAAI,MAAM;AAAA,QACjB;AAAA,MACF;AAAA,MAEA,IAAI,CAAC,KAAK,IAAI,UAAU;AAAA,QACtB,IAAI;AAAA,UACF,KAAK,WAAW,OAAO,KAAK,IAAI,KAAK,KAAK;AAAA,UAC1C,OAAO,IAAG;AAAA,UACV,QAAQ,MAAM,kCAAkC,EAAC;AAAA;AAAA,MAErD;AAAA,MACA,KAAK,OAAO,YAAY,IAAI;AAAA,MAC5B,KAAK,aAAa,sBAAsB,KAAK;AAAA;AAAA,IAE/C,MAAM;AAAA,IAEN,KAAK,eAAe,MAAM;AAAA,MACxB,OAAO,oBAAoB,WAAW,aAAa;AAAA,MACnD,OAAO,oBAAoB,SAAS,WAAW;AAAA,MAC/C,OAAO,oBAAoB,aAAa,eAAe;AAAA,MACvD,OAAO,oBAAoB,aAAa,eAAe;AAAA,MACvD,OAAO,oBAAoB,WAAW,aAAa;AAAA,MACnD,OAAO,oBAAoB,SAAS,gBAAgB;AAAA,MACpD,OAAO,oBAAoB,WAAW,cAAc;AAAA,MACpD,OAAO,oBAAoB,cAAc,gBAAgB;AAAA,MACzD,OAAO,oBAAoB,YAAY,cAAc;AAAA,MACrD,OAAO,oBAAoB,aAAa,eAAe;AAAA,MACvD,IAAI,KAAK,cAAc,MAAM;AAAA,QAC3B,qBAAqB,KAAK,UAAU;AAAA,MACtC;AAAA;AAAA;AAAA,EAKJ,OAAO,GAAS;AAAA,IACd,KAAK,eAAe;AAAA,IACpB,KAAK,IAAI,QAAQ;AAAA,IACjB,KAAK,YAAY,eAAe;AAAA,IAChC,KAAK,WAAW,eAAe;AAAA,IAC/B,KAAK,MAAM,eAAe;AAAA,IAC1B,KAAK,UAAU,QAAQ;AAAA;AAAA,OAgBnB,UAAS,CACb,QACA,MACe;AAAA,IACf,MAAM,OAAQ,OAAO,QAAQ;AAAA,IAC7B,IAAI,CAAC,KAAK,OAAO;AAAA,MACf,MAAM,IAAI,MACR,6CAA6C,KAAK,UAAU,MAAM,GACpE;AAAA,IACF;AAAA,IAGA,KAAK,IAAI,MAAM;AAAA,IACf,QAAQ,QAAQ,MAAM,MAAM,MAAM;AAAA,MAChC,SAAS,IAAI,IAAI,0BAA0B,OAAO,SAAS,IAAI;AAAA,SAC5D;AAAA,IACL,CAAC;AAAA,IACD,IAAI,aAAa,KAAK,GAAG;AAAA,IACzB,KAAK,IAAI,QAAQ;AAAA,IACjB,KAAK,MAAM;AAAA,IACX,KAAK,OAAO;AAAA,IAGZ,gBAAgB;AAAA,IAChB,KAAK,MAAM,OAAO,EAAE,OAAO,MAAM,SAAS,CAAC,EAAE,CAAC;AAAA;AAElD;AAEA,SAAS,cAA+B,GAItC;AAAA,EACA,MAAM,YAAY,IAAI;AAAA,EAEtB,MAAM,YAAY,CAAC,aAAiD;AAAA,IAClE,UAAU,IAAI,QAAQ;AAAA,IAGtB,OAAO,MAAM;AAAA,MACX,UAAU,OAAO,QAAQ;AAAA;AAAA;AAAA,EAI7B,MAAM,SAAS,IAAI,SAAkB;AAAA,IACnC,UAAU,QAAQ,CAAC,aAAa;AAAA,MAC9B,SAAS,GAAG,IAAI;AAAA,KACjB;AAAA;AAAA,EAGH,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,gBAAgB,MAAM,UAAU,MAAM;AAAA,EACxC;AAAA;;ACjbK,IAAK;AAAA,CAAL,CAAK,gBAAL;AAAA,EACL,kCAAO,KAAP;AAAA,EACA,oCAAS,KAAT;AAAA,GAFU;;ACWL,SAAS,gBAAgB,CAC9B,QACA,KACA,MACM;AAAA,EAEN,IAAI,MAA6B;AAAA,EACjC,IAAI,gBAAgB;AAAA,EACpB,IAAI,cAA6B;AAAA,EACjC,IAAI,eAA8B;AAAA,EAClC,IAAI,oBAAmC;AAAA,EACvC,IAAI,qBAAoC;AAAA,EACxC,MAAM,kBAAgC,CAAC;AAAA,EAEvC,SAAS,aAAa,CACpB,SACA,UACmC;AAAA,IACnC,IAAI,UAAU,UAAU;AAAA,MACtB,OAAO,EAAE,OAAO,GAAG,QAAQ,EAAE;AAAA,IAC/B,EAAO;AAAA,MACL,OAAO,EAAE,OAAO,GAAG,QAAQ,EAAE;AAAA;AAAA;AAAA,EAIjC,SAAS,cAAc,GAAG;AAAA,IACxB,WAAW,cAAc,iBAAiB;AAAA,MACxC,IAAI,IAAI,KAAK,OAAO,UAAU;AAAA,MAE9B,IAAI,gBAAgB,MAAM;AAAA,QACxB;AAAA,MACF;AAAA,MAEA,MAAM,YAAY,OAChB,IAAI,IAAI,IAAI,MAAM,eAClB,0CAA0C,cAC5C;AAAA,MACM,WAAW,oBAAqB;AAAA,QACpC,KAAK,UAAU;AAAA,QACf,KAAK,UAAU;AAAA,QACf,gBAAgB,YAAY,IAAI;AAAA,MAClC,CAAC;AAAA,IACH;AAAA,IACA,gBAAgB,SAAS;AAAA;AAAA,EAG3B,SAAS,UAAU,GAAG;AAAA,IACpB,IAAI,CAAC,OAAO,iBAAiB,MAAM;AAAA,MACjC,QAAQ,KAAK,2DAA2D;AAAA,MACxE;AAAA,IACF;AAAA,IAEA,IAAI,IAAI,eAAe,QAAQ;AAAA,MAC7B,QAAQ,KACN,oEACA,IAAI,UACN;AAAA,MACA;AAAA,IACF;AAAA,IAEA,MAAM,SAAS,IAAI,IAAI,kBAAkB,YAAY;AAAA,IAErD,IAAI,CAAC,QAAQ;AAAA,MACX,QAAQ,KAAK,6BAA6B;AAAA,MAC1C;AAAA,IACF;AAAA,IAEA,IAAI,KAAK,MAAM;AAAA;AAAA,EAIjB,OAAO,QAAQ,CAAC,QAAQ;AAAA,IAChB,OAAO,GAAG;AAAA;AAAA,EAGlB,IAAI,SAAS,QAAQ;AAAA,IACnB,gBAAgB,CAAC,WAAW;AAAA,MAC1B,oBAAoB;AAAA;AAAA,IAEtB,iBAAiB,CAAC,aAAa;AAAA,IAC/B,SAAS,CAAC,SAAS,MAAM,WAAW;AAAA,MAClC,gBAAgB,KAAK,IAAI,WAAW,IAAI,CAAC;AAAA;AAAA,IAE3C,kBAAkB,CAAC,QAAQ,UAAU;AAAA,MACnC,IAAI,CAAC,YAAY,iBAAiB,MAAM;AAAA,QACtC,IAAI,IAAI,KAAK,QAAQ,cAAc,EAAE,QAAQ,aAAa,CAAC;AAAA,QAC3D,gBAAgB;AAAA,QAChB,MAAM,eAAe;AAAA,MACvB;AAAA;AAAA,IAEF,iBAAiB,CAAC,QAAQ,UAAU,SAAS;AAAA,MAC3C,IAAI,CAAC,UAAU;AAAA,QACb,MAAM;AAAA,QAEN,IAAI,sBAAsB,MAAM;AAAA,UAC9B,QAAQ,MAAM,2CAA2C;AAAA,UACzD;AAAA,QACF;AAAA,QAEA,MAAM,MAAM,cAAc,mBAAmB,MAAM;AAAA,QACnD,cAAc,IAAI;AAAA,QACZ,WAAW,WAAW;AAAA,QAC5B,eAAe,IAAI;AAAA,QACnB,qBAAqB;AAAA,QACf,YAAY,YAAY;AAAA,QAG9B,IAAI,IAAI,KAAK,QAAQ,aAAa,EAAE,QAAQ,YAAY,CAAC;AAAA,QACzD,IAAI,IAAI,KAAK,QAAQ,aAAa,EAAE,QAAQ,aAAa,CAAC;AAAA,QAC1D,IAAI,IAAI,KAAK,QAAQ,wBAAwB,EAAE,QAAQ,YAAY,CAAC;AAAA,QACpE,IAAI,IAAI,KAAK,QAAQ,iBAAiB,CAAC,CAAC;AAAA,QAExC,gBAAgB;AAAA,QAChB,MAAM,iBAAiB;AAAA,MACzB;AAAA;AAAA,IAEF,eAAe,CAAC,QAAQ;AAAA,MAChB,QAAQ;AAAA,QACZ,IAAI;AAAA,QACJ,UAAU,OAAO,UAAU,GAAG,CAAC;AAAA,QAC/B,KAAK;AAAA,QACL,KAAK;AAAA,QACL,gBAAgB,YAAY,IAAI;AAAA,MAClC,CAAC;AAAA,MACD,QAAQ,IACN,6BAA6B,wBAA8B,WAAW,UAAU,MAAM,MAAM,QAC9F;AAAA;AAAA,IAEF,kBAAkB,CAAC,QAAQ;AAAA,MACnB,WAAW,MAAM;AAAA,MACvB,IAAI,iBAAiB,QAAQ,WAAW,oBAAoB;AAAA,QAC1D,IAAI,IAAI,KAAK,QAAQ,cAAc,EAAE,QAAQ,aAAa,CAAC;AAAA,QAC3D,gBAAgB;AAAA,QAChB,MAAM,eAAe;AAAA,MACvB;AAAA;AAAA,EAEJ,CAAC;AAAA,EAGD,IAAI,YAAY,UAAU,CAAC,WAAW;AAAA,IACpC,IAAI,CAAC,iBAAiB,CAAC,OAAO,iBAAiB,MAAM;AAAA,MACnD;AAAA,IACF;AAAA,IAEA,IAAI;AAAA,MACF,eAAe;AAAA,MACf,WAAW;AAAA,MACX,OAAO,IAAG;AAAA,MACV,QAAQ,MAAM,yBAAyB,EAAC;AAAA;AAAA,GAE3C;AAAA;",
32
- "debugId": "84BFA067C8C329F964756E2164756E21",
32
+ "debugId": "B9819EC38DD29BBA64756E2164756E21",
33
33
  "names": []
34
34
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bloopjs/web",
3
- "version": "0.0.85",
3
+ "version": "0.0.87",
4
4
  "author": "Neil Sarkar",
5
5
  "type": "module",
6
6
  "repository": {
@@ -33,8 +33,8 @@
33
33
  "typescript": "^5"
34
34
  },
35
35
  "dependencies": {
36
- "@bloopjs/bloop": "0.0.85",
37
- "@bloopjs/engine": "0.0.85",
36
+ "@bloopjs/bloop": "0.0.87",
37
+ "@bloopjs/engine": "0.0.87",
38
38
  "@preact/signals": "^1.3.1",
39
39
  "partysocket": "^1.1.6",
40
40
  "preact": "^10.25.4"