@rpgjs/server 4.3.0 → 5.0.0-alpha.1
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/{lib → dist}/Gui/DialogGui.d.ts +1 -2
- package/{lib → dist}/Gui/Gui.d.ts +1 -2
- package/dist/Player/BattleManager.d.ts +22 -0
- package/dist/Player/ClassManager.d.ts +18 -0
- package/dist/Player/Event.d.ts +0 -0
- package/dist/Player/ItemManager.d.ts +17 -0
- package/dist/Player/MoveManager.d.ts +177 -0
- package/dist/Player/ParameterManager.d.ts +42 -0
- package/dist/Player/Player.d.ts +73 -0
- package/dist/Player/SkillManager.d.ts +23 -0
- package/dist/Player/StateManager.d.ts +39 -0
- package/{lib → dist}/RpgServer.d.ts +32 -15
- package/dist/RpgServerEngine.d.ts +5 -0
- package/dist/core/context.d.ts +2 -0
- package/dist/core/inject.d.ts +5 -0
- package/dist/core/setup.d.ts +6 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +29673 -0
- package/dist/index.js.map +1 -0
- package/dist/module.d.ts +2 -0
- package/dist/rooms/lobby.d.ts +6 -0
- package/dist/rooms/map.d.ts +110 -0
- package/package.json +15 -37
- package/src/Gui/DialogGui.ts +3 -4
- package/src/Gui/Gui.ts +4 -6
- package/src/Player/BattleManager.ts +108 -99
- package/src/Player/ClassManager.ts +47 -46
- package/src/Player/ComponentManager.ts +26 -535
- package/src/Player/EffectManager.ts +44 -59
- package/src/Player/ElementManager.ts +70 -72
- package/src/Player/Event.ts +0 -0
- package/src/Player/GoldManager.ts +24 -6
- package/src/Player/GuiManager.ts +106 -97
- package/src/Player/ItemFixture.ts +22 -17
- package/src/Player/ItemManager.ts +234 -225
- package/src/Player/MoveManager.ts +1047 -457
- package/src/Player/ParameterManager.ts +59 -37
- package/src/Player/Player.ts +272 -1058
- package/src/Player/SkillManager.ts +146 -137
- package/src/Player/StateManager.ts +124 -98
- package/src/Player/VariableManager.ts +23 -3
- package/src/RpgServer.ts +36 -12
- package/src/RpgServerEngine.ts +7 -0
- package/src/core/context.ts +3 -0
- package/src/core/inject.ts +17 -0
- package/src/core/setup.ts +20 -0
- package/src/index.ts +9 -31
- package/src/module.ts +32 -0
- package/src/presets/index.ts +1 -3
- package/src/rooms/lobby.ts +24 -0
- package/src/rooms/map.ts +311 -0
- package/tsconfig.json +26 -23
- package/vite.config.ts +21 -0
- package/CHANGELOG.md +0 -174
- package/LICENSE +0 -19
- package/browser/manifest.json +0 -7
- package/browser/rpg.server.js +0 -22379
- package/browser/rpg.server.umd.cjs +0 -22410
- package/lib/Game/EventManager.d.ts +0 -54
- package/lib/Game/EventManager.js +0 -107
- package/lib/Game/EventManager.js.map +0 -1
- package/lib/Game/Map.d.ts +0 -191
- package/lib/Game/Map.js +0 -419
- package/lib/Game/Map.js.map +0 -1
- package/lib/Game/WorldMaps.d.ts +0 -17
- package/lib/Game/WorldMaps.js +0 -28
- package/lib/Game/WorldMaps.js.map +0 -1
- package/lib/Gui/DialogGui.js +0 -57
- package/lib/Gui/DialogGui.js.map +0 -1
- package/lib/Gui/Gui.js +0 -37
- package/lib/Gui/Gui.js.map +0 -1
- package/lib/Gui/MenuGui.js +0 -23
- package/lib/Gui/MenuGui.js.map +0 -1
- package/lib/Gui/NotificationGui.js +0 -8
- package/lib/Gui/NotificationGui.js.map +0 -1
- package/lib/Gui/ShopGui.js +0 -40
- package/lib/Gui/ShopGui.js.map +0 -1
- package/lib/Gui/index.js +0 -7
- package/lib/Gui/index.js.map +0 -1
- package/lib/Interfaces/Gui.d.ts +0 -4
- package/lib/Interfaces/Gui.js +0 -2
- package/lib/Interfaces/Gui.js.map +0 -1
- package/lib/Interfaces/StateStore.d.ts +0 -5
- package/lib/Interfaces/StateStore.js +0 -2
- package/lib/Interfaces/StateStore.js.map +0 -1
- package/lib/MatchMaker.d.ts +0 -24
- package/lib/MatchMaker.js +0 -42
- package/lib/MatchMaker.js.map +0 -1
- package/lib/Monitor/index.d.ts +0 -17
- package/lib/Monitor/index.js +0 -72
- package/lib/Monitor/index.js.map +0 -1
- package/lib/Player/BattleManager.d.ts +0 -36
- package/lib/Player/BattleManager.js +0 -101
- package/lib/Player/BattleManager.js.map +0 -1
- package/lib/Player/ClassManager.d.ts +0 -47
- package/lib/Player/ClassManager.js +0 -65
- package/lib/Player/ClassManager.js.map +0 -1
- package/lib/Player/ComponentManager.d.ts +0 -397
- package/lib/Player/ComponentManager.js +0 -505
- package/lib/Player/ComponentManager.js.map +0 -1
- package/lib/Player/EffectManager.d.ts +0 -46
- package/lib/Player/EffectManager.js +0 -75
- package/lib/Player/EffectManager.js.map +0 -1
- package/lib/Player/ElementManager.d.ts +0 -108
- package/lib/Player/ElementManager.js +0 -120
- package/lib/Player/ElementManager.js.map +0 -1
- package/lib/Player/GoldManager.d.ts +0 -17
- package/lib/Player/GoldManager.js +0 -27
- package/lib/Player/GoldManager.js.map +0 -1
- package/lib/Player/GuiManager.d.ts +0 -247
- package/lib/Player/GuiManager.js +0 -291
- package/lib/Player/GuiManager.js.map +0 -1
- package/lib/Player/ItemFixture.d.ts +0 -7
- package/lib/Player/ItemFixture.js +0 -19
- package/lib/Player/ItemFixture.js.map +0 -1
- package/lib/Player/ItemManager.d.ts +0 -331
- package/lib/Player/ItemManager.js +0 -475
- package/lib/Player/ItemManager.js.map +0 -1
- package/lib/Player/MoveManager.d.ts +0 -333
- package/lib/Player/MoveManager.js +0 -450
- package/lib/Player/MoveManager.js.map +0 -1
- package/lib/Player/ParameterManager.d.ts +0 -316
- package/lib/Player/ParameterManager.js +0 -408
- package/lib/Player/ParameterManager.js.map +0 -1
- package/lib/Player/Player.d.ts +0 -828
- package/lib/Player/Player.js +0 -927
- package/lib/Player/Player.js.map +0 -1
- package/lib/Player/SkillManager.d.ts +0 -163
- package/lib/Player/SkillManager.js +0 -223
- package/lib/Player/SkillManager.js.map +0 -1
- package/lib/Player/StateManager.d.ts +0 -185
- package/lib/Player/StateManager.js +0 -228
- package/lib/Player/StateManager.js.map +0 -1
- package/lib/Player/VariableManager.d.ts +0 -46
- package/lib/Player/VariableManager.js +0 -52
- package/lib/Player/VariableManager.js.map +0 -1
- package/lib/Query.d.ts +0 -127
- package/lib/Query.js +0 -159
- package/lib/Query.js.map +0 -1
- package/lib/RpgServer.js +0 -2
- package/lib/RpgServer.js.map +0 -1
- package/lib/Scenes/Map.d.ts +0 -136
- package/lib/Scenes/Map.js +0 -273
- package/lib/Scenes/Map.js.map +0 -1
- package/lib/decorators/event.d.ts +0 -43
- package/lib/decorators/event.js +0 -13
- package/lib/decorators/event.js.map +0 -1
- package/lib/decorators/map.d.ts +0 -178
- package/lib/decorators/map.js +0 -43
- package/lib/decorators/map.js.map +0 -1
- package/lib/entry-point.d.ts +0 -34
- package/lib/entry-point.js +0 -70
- package/lib/entry-point.js.map +0 -1
- package/lib/express/api.d.ts +0 -3
- package/lib/express/api.js +0 -105
- package/lib/express/api.js.map +0 -1
- package/lib/express/errors/NotAuthorized.d.ts +0 -4
- package/lib/express/errors/NotAuthorized.js +0 -7
- package/lib/express/errors/NotAuthorized.js.map +0 -1
- package/lib/express/errors/NotFound.d.ts +0 -4
- package/lib/express/errors/NotFound.js +0 -7
- package/lib/express/errors/NotFound.js.map +0 -1
- package/lib/express/server.d.ts +0 -18
- package/lib/express/server.js +0 -70
- package/lib/express/server.js.map +0 -1
- package/lib/index.d.ts +0 -20
- package/lib/index.js +0 -19
- package/lib/index.js.map +0 -1
- package/lib/inject.d.ts +0 -22
- package/lib/inject.js +0 -29
- package/lib/inject.js.map +0 -1
- package/lib/logs/index.js +0 -6
- package/lib/logs/index.js.map +0 -1
- package/lib/logs/item.js +0 -34
- package/lib/logs/item.js.map +0 -1
- package/lib/logs/log.js +0 -7
- package/lib/logs/log.js.map +0 -1
- package/lib/logs/skill.js +0 -19
- package/lib/logs/skill.js.map +0 -1
- package/lib/logs/state.js +0 -13
- package/lib/logs/state.js.map +0 -1
- package/lib/models/Item.d.ts +0 -10
- package/lib/models/Item.js +0 -2
- package/lib/models/Item.js.map +0 -1
- package/lib/presets/index.js +0 -65
- package/lib/presets/index.js.map +0 -1
- package/lib/server.d.ts +0 -137
- package/lib/server.js +0 -443
- package/lib/server.js.map +0 -1
- package/rpg.toml +0 -14
- package/src/Game/EventManager.ts +0 -125
- package/src/Game/Map.ts +0 -500
- package/src/Game/WorldMaps.ts +0 -45
- package/src/Interfaces/Gui.ts +0 -4
- package/src/Interfaces/StateStore.ts +0 -5
- package/src/MatchMaker.ts +0 -65
- package/src/Monitor/index.ts +0 -78
- package/src/Query.ts +0 -172
- package/src/Scenes/Map.ts +0 -310
- package/src/decorators/event.ts +0 -58
- package/src/decorators/map.ts +0 -226
- package/src/entry-point.ts +0 -111
- package/src/express/api.ts +0 -118
- package/src/express/errors/NotAuthorized.ts +0 -6
- package/src/express/errors/NotFound.ts +0 -6
- package/src/express/server.ts +0 -94
- package/src/inject.ts +0 -33
- package/src/models/Item.ts +0 -11
- package/src/server.ts +0 -459
- /package/{lib → dist}/Gui/MenuGui.d.ts +0 -0
- /package/{lib → dist}/Gui/NotificationGui.d.ts +0 -0
- /package/{lib → dist}/Gui/ShopGui.d.ts +0 -0
- /package/{lib → dist}/Gui/index.d.ts +0 -0
- /package/{lib → dist}/logs/index.d.ts +0 -0
- /package/{lib → dist}/logs/item.d.ts +0 -0
- /package/{lib → dist}/logs/log.d.ts +0 -0
- /package/{lib → dist}/logs/skill.d.ts +0 -0
- /package/{lib → dist}/logs/state.d.ts +0 -0
- /package/{lib → dist}/presets/index.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/dset@3.1.4/node_modules/dset/dist/index.mjs","../../../node_modules/.pnpm/zod@3.24.2/node_modules/zod/lib/index.mjs","../../../node_modules/.pnpm/@signe+sync@2.3.2/node_modules/@signe/sync/dist/chunk-7QVYU63E.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isFunction.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscription.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/config.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/noop.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/errorContext.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscriber.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/symbol/observable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/identity.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/pipe.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Observable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/lift.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subject.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isScheduler.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/args.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isPromise.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isIterable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/observeOn.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/from.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/EmptyError.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/lastValueFrom.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/map.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/argsArgArrayOrObject.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/createObject.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/filter.js","../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/finalize.js","../../../node_modules/.pnpm/@signe+reactive@2.3.2/node_modules/@signe/reactive/dist/index.js","../../../node_modules/.pnpm/@signe+sync@2.3.2/node_modules/@signe/sync/dist/index.js","../../../node_modules/.pnpm/@signe+reactive@2.3.1/node_modules/@signe/reactive/dist/index.js","../../../node_modules/.pnpm/@signe+room@2.3.2/node_modules/@signe/room/dist/index.js","../../common/dist/index.js","../src/Player/ComponentManager.ts","../../../node_modules/.pnpm/@signe+di@2.3.2/node_modules/@signe/di/dist/index.js","../src/Gui/Gui.ts","../src/Player/MoveManager.ts","../src/Gui/DialogGui.ts","../src/Gui/MenuGui.ts","../src/Gui/ShopGui.ts","../src/Gui/NotificationGui.ts","../src/Player/GuiManager.ts","../src/Player/GoldManager.ts","../src/Player/VariableManager.ts","../src/presets/index.ts","../src/Player/ParameterManager.ts","../src/Player/ItemFixture.ts","../src/logs/log.ts","../src/logs/item.ts","../src/logs/skill.ts","../src/logs/state.ts","../src/Player/StateManager.ts","../src/Player/ItemManager.ts","../src/Player/EffectManager.ts","../src/Player/BattleManager.ts","../src/Player/SkillManager.ts","../src/Player/ClassManager.ts","../src/Player/ElementManager.ts","../src/Player/Player.ts","../src/core/context.ts","../src/rooms/map.ts","../src/rooms/lobby.ts","../src/RpgServerEngine.ts","../src/core/inject.ts","../src/core/setup.ts","../src/module.ts"],"sourcesContent":["export function dset(obj, keys, val) {\n\tkeys.split && (keys=keys.split('.'));\n\tvar i=0, l=keys.length, t=obj, x, k;\n\twhile (i < l) {\n\t\tk = ''+keys[i++];\n\t\tif (k === '__proto__' || k === 'constructor' || k === 'prototype') break;\n\t\tt = t[k] = (i === l) ? val : (typeof(x=t[k])===typeof(keys)) ? x : (keys[i]*0 !== 0 || !!~(''+keys[i]).indexOf('.')) ? {} : [];\n\t}\n}\n","var util;\n(function (util) {\n util.assertEqual = (val) => val;\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array\n .map((val) => (typeof val === \"string\" ? `'${val}'` : val))\n .join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nvar objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nconst ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nconst getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then &&\n typeof data.then === \"function\" &&\n data.catch &&\n typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n\nconst ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nconst quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nclass ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `smaller than or equal to`\n : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\n\nlet overrideErrorMap = errorMap;\nfunction setErrorMap(map) {\n overrideErrorMap = map;\n}\nfunction getErrorMap() {\n return overrideErrorMap;\n}\n\nconst makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nconst EMPTY_PATH = [];\nfunction addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === errorMap ? undefined : errorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nclass ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" &&\n (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nconst INVALID = Object.freeze({\n status: \"aborted\",\n});\nconst DIRTY = (value) => ({ status: \"dirty\", value });\nconst OK = (value) => ({ status: \"valid\", value });\nconst isAborted = (x) => x.status === \"aborted\";\nconst isDirty = (x) => x.status === \"dirty\";\nconst isValid = (x) => x.status === \"valid\";\nconst isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nfunction __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nvar errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message === null || message === void 0 ? void 0 : message.message;\n})(errorUtil || (errorUtil = {}));\n\nvar _ZodEnum_cache, _ZodNativeEnum_cache;\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (this._key instanceof Array) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n var _a, _b;\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message !== null && message !== void 0 ? message : ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: (_a = message !== null && message !== void 0 ? message : required_error) !== null && _a !== void 0 ? _a : ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: (_b = message !== null && message !== void 0 ? message : invalid_type_error) !== null && _b !== void 0 ? _b : ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nclass ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n var _a;\n const ctx = {\n common: {\n issues: [],\n async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false,\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n var _a, _b;\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if ((_b = (_a = err === null || err === void 0 ? void 0 : err.message) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === null || _b === void 0 ? void 0 : _b.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n async: true,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult)\n ? maybeAsyncResult\n : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\"\n ? refinementData(val, ctx)\n : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n // let regex = `\\\\d{2}:\\\\d{2}:\\\\d{2}`;\n let regex = `([01]\\\\d|2[0-3]):[0-5]\\\\d:[0-5]\\\\d`;\n if (args.precision) {\n regex = `${regex}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n regex = `${regex}(\\\\.\\\\d+)?`;\n }\n return regex;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nfunction datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (!decoded.typ || !decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch (_a) {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nclass ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch (_a) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n var _a, _b;\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false,\n local: (_b = options === null || options === void 0 ? void 0 : options.local) !== null && _b !== void 0 ? _b : false,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options === null || options === void 0 ? void 0 : options.position,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n var _a;\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / Math.pow(10, decCount);\n}\nclass ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" ||\n (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null, min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" ||\n ch.kind === \"int\" ||\n ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch (_a) {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n var _a;\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\nclass ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nclass ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nclass ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nclass ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nclass ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nclass ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nclass ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nclass ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nclass ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nclass ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n return (this._cached = { shape, keys });\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever &&\n this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") ;\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n var _a, _b, _c, _d;\n const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n util.objectKeys(mask).forEach((key) => {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nclass ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nclass ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util\n .objectKeys(a)\n .filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date &&\n bType === ZodParsedType.date &&\n +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nclass ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\nclass ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nclass ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nclass ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nclass ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nclass ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args\n .parseAsync(args, params)\n .catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args\n ? args\n : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nclass ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nclass ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nclass ZodEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodEnum_cache.set(this, void 0);\n }\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodEnum_cache, new Set(this._def.values), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\").has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\n_ZodEnum_cache = new WeakMap();\nZodEnum.create = createZodEnum;\nclass ZodNativeEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodNativeEnum_cache.set(this, void 0);\n }\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string &&\n ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodNativeEnum_cache, new Set(util.getValidEnumValues(this._def.values)), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\").has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\n_ZodNativeEnum_cache = new WeakMap();\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nclass ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise &&\n ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise\n ? ctx.data\n : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nclass ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return base;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((base) => {\n if (!isValid(base))\n return base;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nclass ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nclass ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nclass ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\"\n ? params.default\n : () => params.default,\n ...processCreateParams(params),\n });\n};\nclass ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nclass ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nconst BRAND = Symbol(\"zod_brand\");\nclass ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nclass ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nclass ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result)\n ? result.then((data) => freeze(data))\n : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\"\n ? params(data)\n : typeof params === \"string\"\n ? { message: params }\n : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nfunction custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n var _a, _b;\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n var _a, _b;\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = (_b = (_a = params.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = (_b = (_a = params.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nconst late = {\n object: ZodObject.lazycreate,\n};\nvar ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nconst coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nconst NEVER = INVALID;\n\nvar z = /*#__PURE__*/Object.freeze({\n __proto__: null,\n defaultErrorMap: errorMap,\n setErrorMap: setErrorMap,\n getErrorMap: getErrorMap,\n makeIssue: makeIssue,\n EMPTY_PATH: EMPTY_PATH,\n addIssueToContext: addIssueToContext,\n ParseStatus: ParseStatus,\n INVALID: INVALID,\n DIRTY: DIRTY,\n OK: OK,\n isAborted: isAborted,\n isDirty: isDirty,\n isValid: isValid,\n isAsync: isAsync,\n get util () { return util; },\n get objectUtil () { return objectUtil; },\n ZodParsedType: ZodParsedType,\n getParsedType: getParsedType,\n ZodType: ZodType,\n datetimeRegex: datetimeRegex,\n ZodString: ZodString,\n ZodNumber: ZodNumber,\n ZodBigInt: ZodBigInt,\n ZodBoolean: ZodBoolean,\n ZodDate: ZodDate,\n ZodSymbol: ZodSymbol,\n ZodUndefined: ZodUndefined,\n ZodNull: ZodNull,\n ZodAny: ZodAny,\n ZodUnknown: ZodUnknown,\n ZodNever: ZodNever,\n ZodVoid: ZodVoid,\n ZodArray: ZodArray,\n ZodObject: ZodObject,\n ZodUnion: ZodUnion,\n ZodDiscriminatedUnion: ZodDiscriminatedUnion,\n ZodIntersection: ZodIntersection,\n ZodTuple: ZodTuple,\n ZodRecord: ZodRecord,\n ZodMap: ZodMap,\n ZodSet: ZodSet,\n ZodFunction: ZodFunction,\n ZodLazy: ZodLazy,\n ZodLiteral: ZodLiteral,\n ZodEnum: ZodEnum,\n ZodNativeEnum: ZodNativeEnum,\n ZodPromise: ZodPromise,\n ZodEffects: ZodEffects,\n ZodTransformer: ZodEffects,\n ZodOptional: ZodOptional,\n ZodNullable: ZodNullable,\n ZodDefault: ZodDefault,\n ZodCatch: ZodCatch,\n ZodNaN: ZodNaN,\n BRAND: BRAND,\n ZodBranded: ZodBranded,\n ZodPipeline: ZodPipeline,\n ZodReadonly: ZodReadonly,\n custom: custom,\n Schema: ZodType,\n ZodSchema: ZodType,\n late: late,\n get ZodFirstPartyTypeKind () { return ZodFirstPartyTypeKind; },\n coerce: coerce,\n any: anyType,\n array: arrayType,\n bigint: bigIntType,\n boolean: booleanType,\n date: dateType,\n discriminatedUnion: discriminatedUnionType,\n effect: effectsType,\n 'enum': enumType,\n 'function': functionType,\n 'instanceof': instanceOfType,\n intersection: intersectionType,\n lazy: lazyType,\n literal: literalType,\n map: mapType,\n nan: nanType,\n nativeEnum: nativeEnumType,\n never: neverType,\n 'null': nullType,\n nullable: nullableType,\n number: numberType,\n object: objectType,\n oboolean: oboolean,\n onumber: onumber,\n optional: optionalType,\n ostring: ostring,\n pipeline: pipelineType,\n preprocess: preprocessType,\n promise: promiseType,\n record: recordType,\n set: setType,\n strictObject: strictObjectType,\n string: stringType,\n symbol: symbolType,\n transformer: effectsType,\n tuple: tupleType,\n 'undefined': undefinedType,\n union: unionType,\n unknown: unknownType,\n 'void': voidType,\n NEVER: NEVER,\n ZodIssueCode: ZodIssueCode,\n quotelessJson: quotelessJson,\n ZodError: ZodError\n});\n\nexport { BRAND, DIRTY, EMPTY_PATH, INVALID, NEVER, OK, ParseStatus, ZodType as Schema, ZodAny, ZodArray, ZodBigInt, ZodBoolean, ZodBranded, ZodCatch, ZodDate, ZodDefault, ZodDiscriminatedUnion, ZodEffects, ZodEnum, ZodError, ZodFirstPartyTypeKind, ZodFunction, ZodIntersection, ZodIssueCode, ZodLazy, ZodLiteral, ZodMap, ZodNaN, ZodNativeEnum, ZodNever, ZodNull, ZodNullable, ZodNumber, ZodObject, ZodOptional, ZodParsedType, ZodPipeline, ZodPromise, ZodReadonly, ZodRecord, ZodType as ZodSchema, ZodSet, ZodString, ZodSymbol, ZodEffects as ZodTransformer, ZodTuple, ZodType, ZodUndefined, ZodUnion, ZodUnknown, ZodVoid, addIssueToContext, anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, coerce, custom, dateType as date, datetimeRegex, z as default, errorMap as defaultErrorMap, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, getErrorMap, getParsedType, instanceOfType as instanceof, intersectionType as intersection, isAborted, isAsync, isDirty, isValid, late, lazyType as lazy, literalType as literal, makeIssue, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, objectUtil, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, quotelessJson, recordType as record, setType as set, setErrorMap, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, util, voidType as void, z };\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\nexport {\n __name\n};\n//# sourceMappingURL=chunk-7QVYU63E.js.map","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map","import { identity } from './identity';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n _this.subscribe(subscriber);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n//# sourceMappingURL=lift.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { createErrorClass } from './createErrorClass';\nexport var ObjectUnsubscribedError = createErrorClass(function (_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n };\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { __extends, __values } from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nvar Subject = (function (_super) {\n __extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.closed = false;\n _this.currentObservers = null;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype._throwIfClosed = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n Subject.prototype.next = function (value) {\n var _this = this;\n errorContext(function () {\n var e_1, _a;\n _this._throwIfClosed();\n if (!_this.isStopped) {\n if (!_this.currentObservers) {\n _this.currentObservers = Array.from(_this.observers);\n }\n try {\n for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n var observer = _c.value;\n observer.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n });\n };\n Subject.prototype.error = function (err) {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n Subject.prototype.complete = function () {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n };\n Object.defineProperty(Subject.prototype, \"observed\", {\n get: function () {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n },\n enumerable: false,\n configurable: true\n });\n Subject.prototype._trySubscribe = function (subscriber) {\n this._throwIfClosed();\n return _super.prototype._trySubscribe.call(this, subscriber);\n };\n Subject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n };\n Subject.prototype._innerSubscribe = function (subscriber) {\n var _this = this;\n var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(function () {\n _this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n };\n Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = (function (_super) {\n __extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n AnonymousSubject.prototype.error = function (err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n AnonymousSubject.prototype.complete = function () {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nvar BehaviorSubject = (function (_super) {\n __extends(BehaviorSubject, _super);\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n _this._value = _value;\n return _this;\n }\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: false,\n configurable: true\n });\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n };\n BehaviorSubject.prototype.getValue = function () {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n };\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, (this._value = value));\n };\n return BehaviorSubject;\n}(Subject));\nexport { BehaviorSubject };\n//# sourceMappingURL=BehaviorSubject.js.map","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n//# sourceMappingURL=isScheduler.js.map","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n//# sourceMappingURL=args.js.map","export var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","export function createInvalidObservableTypeError(input) {\n return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n//# sourceMappingURL=throwUnobservableError.js.map","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { __asyncGenerator, __await, __generator } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n var reader, _a, value, done;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reader = readableStream.getReader();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 9, 10]);\n _b.label = 2;\n case 2:\n if (!true) return [3, 8];\n return [4, __await(reader.read())];\n case 3:\n _a = _b.sent(), value = _a.value, done = _a.done;\n if (!done) return [3, 5];\n return [4, __await(void 0)];\n case 4: return [2, _b.sent()];\n case 5: return [4, __await(value)];\n case 6: return [4, _b.sent()];\n case 7:\n _b.sent();\n return [3, 2];\n case 8: return [3, 10];\n case 9:\n reader.releaseLock();\n return [7];\n case 10: return [2];\n }\n });\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","import { __asyncValues, __awaiter, __generator, __values } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n return new Observable(function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable(function (subscriber) {\n for (var i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexport function fromPromise(promise) {\n return new Observable(function (subscriber) {\n promise\n .then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, reportUnhandledError);\n });\n}\nexport function fromIterable(iterable) {\n return new Observable(function (subscriber) {\n var e_1, _a;\n try {\n for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n var value = iterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable(function (subscriber) {\n process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n });\n}\nexport function fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_2, _a;\n return __awaiter(this, void 0, void 0, function () {\n var value, e_2_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 11]);\n asyncIterable_1 = __asyncValues(asyncIterable);\n _b.label = 1;\n case 1: return [4, asyncIterable_1.next()];\n case 2:\n if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return [2];\n }\n _b.label = 3;\n case 3: return [3, 1];\n case 4: return [3, 11];\n case 5:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3, 11];\n case 6:\n _b.trys.push([6, , 9, 10]);\n if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n return [4, _a.call(asyncIterable_1)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8: return [3, 10];\n case 9:\n if (e_2) throw e_2.error;\n return [7];\n case 10: return [7];\n case 11:\n subscriber.complete();\n return [2];\n }\n });\n });\n}\n//# sourceMappingURL=innerFrom.js.map","export function executeSchedule(parentSubscription, scheduler, work, delay, repeat) {\n if (delay === void 0) { delay = 0; }\n if (repeat === void 0) { repeat = false; }\n var scheduleSubscription = scheduler.schedule(function () {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n }\n else {\n this.unsubscribe();\n }\n }, delay);\n parentSubscription.add(scheduleSubscription);\n if (!repeat) {\n return scheduleSubscription;\n }\n}\n//# sourceMappingURL=executeSchedule.js.map","import { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return executeSchedule(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return executeSchedule(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return executeSchedule(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));\n });\n}\n//# sourceMappingURL=observeOn.js.map","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));\n });\n}\n//# sourceMappingURL=subscribeOn.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function scheduleObservable(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=scheduleObservable.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function schedulePromise(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=schedulePromise.js.map","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n//# sourceMappingURL=scheduleArray.js.map","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleIterable(input, scheduler) {\n return new Observable(function (subscriber) {\n var iterator;\n executeSchedule(subscriber, scheduler, function () {\n iterator = input[Symbol_iterator]();\n executeSchedule(subscriber, scheduler, function () {\n var _a;\n var value;\n var done;\n try {\n (_a = iterator.next(), value = _a.value, done = _a.done);\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n }\n }, 0, true);\n });\n return function () { return isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); };\n });\n}\n//# sourceMappingURL=scheduleIterable.js.map","import { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(function (subscriber) {\n executeSchedule(subscriber, scheduler, function () {\n var iterator = input[Symbol.asyncIterator]();\n executeSchedule(subscriber, scheduler, function () {\n iterator.next().then(function (result) {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n }\n });\n }, 0, true);\n });\n });\n}\n//# sourceMappingURL=scheduleAsyncIterable.js.map","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n//# sourceMappingURL=scheduleReadableStreamLike.js.map","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n//# sourceMappingURL=scheduled.js.map","import { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\nexport function from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n//# sourceMappingURL=from.js.map","import { createErrorClass } from './createErrorClass';\nexport var EmptyError = createErrorClass(function (_super) {\n return function EmptyErrorImpl() {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n };\n});\n//# sourceMappingURL=EmptyError.js.map","import { EmptyError } from './util/EmptyError';\nexport function lastValueFrom(source, config) {\n var hasConfig = typeof config === 'object';\n return new Promise(function (resolve, reject) {\n var _hasValue = false;\n var _value;\n source.subscribe({\n next: function (value) {\n _value = value;\n _hasValue = true;\n },\n error: reject,\n complete: function () {\n if (_hasValue) {\n resolve(_value);\n }\n else if (hasConfig) {\n resolve(config.defaultValue);\n }\n else {\n reject(new EmptyError());\n }\n },\n });\n });\n}\n//# sourceMappingURL=lastValueFrom.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n//# sourceMappingURL=map.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { map } from \"../operators/map\";\nvar isArray = Array.isArray;\nfunction callOrApply(fn, args) {\n return isArray(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);\n}\nexport function mapOneOrManyArgs(fn) {\n return map(function (args) { return callOrApply(fn, args); });\n}\n//# sourceMappingURL=mapOneOrManyArgs.js.map","var isArray = Array.isArray;\nvar getPrototypeOf = Object.getPrototypeOf, objectProto = Object.prototype, getKeys = Object.keys;\nexport function argsArgArrayOrObject(args) {\n if (args.length === 1) {\n var first_1 = args[0];\n if (isArray(first_1)) {\n return { args: first_1, keys: null };\n }\n if (isPOJO(first_1)) {\n var keys = getKeys(first_1);\n return {\n args: keys.map(function (key) { return first_1[key]; }),\n keys: keys,\n };\n }\n }\n return { args: args, keys: null };\n}\nfunction isPOJO(obj) {\n return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n//# sourceMappingURL=argsArgArrayOrObject.js.map","export function createObject(keys, values) {\n return keys.reduce(function (result, key, i) { return ((result[key] = values[i]), result); }, {});\n}\n//# sourceMappingURL=createObject.js.map","import { Observable } from '../Observable';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { from } from './from';\nimport { identity } from '../util/identity';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { popResultSelector, popScheduler } from '../util/args';\nimport { createObject } from '../util/createObject';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function combineLatest() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var resultSelector = popResultSelector(args);\n var _a = argsArgArrayOrObject(args), observables = _a.args, keys = _a.keys;\n if (observables.length === 0) {\n return from([], scheduler);\n }\n var result = new Observable(combineLatestInit(observables, scheduler, keys\n ?\n function (values) { return createObject(keys, values); }\n :\n identity));\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\nexport function combineLatestInit(observables, scheduler, valueTransform) {\n if (valueTransform === void 0) { valueTransform = identity; }\n return function (subscriber) {\n maybeSchedule(scheduler, function () {\n var length = observables.length;\n var values = new Array(length);\n var active = length;\n var remainingFirstValues = length;\n var _loop_1 = function (i) {\n maybeSchedule(scheduler, function () {\n var source = from(observables[i], scheduler);\n var hasFirstValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n values[i] = value;\n if (!hasFirstValue) {\n hasFirstValue = true;\n remainingFirstValues--;\n }\n if (!remainingFirstValues) {\n subscriber.next(valueTransform(values.slice()));\n }\n }, function () {\n if (!--active) {\n subscriber.complete();\n }\n }));\n }, subscriber);\n };\n for (var i = 0; i < length; i++) {\n _loop_1(i);\n }\n }, subscriber);\n };\n}\nfunction maybeSchedule(scheduler, execute, subscription) {\n if (scheduler) {\n executeSchedule(subscription, scheduler, execute);\n }\n else {\n execute();\n }\n}\n//# sourceMappingURL=combineLatest.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=filter.js.map","import { operate } from '../util/lift';\nexport function finalize(callback) {\n return operate(function (source, subscriber) {\n try {\n source.subscribe(subscriber);\n }\n finally {\n subscriber.add(callback);\n }\n });\n}\n//# sourceMappingURL=finalize.js.map","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/ArraySubject.ts\nimport { BehaviorSubject } from \"rxjs\";\nvar ArraySubject = class extends BehaviorSubject {\n static {\n __name(this, \"ArraySubject\");\n }\n _items = [];\n constructor(items = []) {\n super({\n type: \"init\",\n items\n });\n this.createProxy(items);\n }\n createProxy(items) {\n this._items = new Proxy(items, {\n get: /* @__PURE__ */ __name((target, prop, receiver) => {\n const origMethod = target[prop];\n if (typeof origMethod === \"function\") {\n return (...args) => {\n let changeType = \"update\";\n let index = void 0;\n let isMutateFn = false;\n let itemsToEmit = [];\n let changeSplice = true;\n switch (prop) {\n case \"push\":\n index = target.length;\n changeType = \"add\";\n isMutateFn = true;\n break;\n case \"pop\":\n index = target.length - 1;\n changeType = \"remove\";\n isMutateFn = true;\n break;\n case \"unshift\":\n index = 0;\n changeType = \"add\";\n isMutateFn = true;\n break;\n case \"shift\":\n index = 0;\n changeType = \"remove\";\n isMutateFn = true;\n break;\n case \"splice\":\n index = args[0];\n const deleteCount = args[1];\n const newItems = args.slice(2);\n itemsToEmit = newItems;\n if (deleteCount > 0 && newItems.length === 0) {\n changeType = \"remove\";\n } else if (deleteCount === 0 && newItems.length > 0) {\n changeType = \"add\";\n } else if (deleteCount === 0 && newItems.length === 0) {\n changeSplice = false;\n } else {\n changeType = \"update\";\n }\n isMutateFn = true;\n break;\n }\n const result = origMethod.apply(target, args);\n if (isMutateFn && changeSplice) {\n if (prop === \"splice\") {\n this.next({\n type: changeType,\n index,\n items: itemsToEmit\n });\n } else {\n this.next({\n type: changeType,\n index,\n items: args\n });\n }\n }\n return result;\n };\n }\n return Reflect.get(target, prop, receiver);\n }, \"get\"),\n set: /* @__PURE__ */ __name((target, prop, value) => {\n const index = !isNaN(Number(prop)) ? Number(prop) : void 0;\n target[prop] = value;\n this.next({\n type: \"update\",\n index,\n items: [\n value\n ]\n });\n return true;\n }, \"set\")\n });\n }\n get items() {\n return this._items;\n }\n set items(newItems) {\n this.createProxy(newItems);\n this.next({\n type: \"reset\",\n items: newItems\n });\n }\n};\nvar isArraySubject = /* @__PURE__ */ __name((value) => {\n return \"_items\" in value;\n}, \"isArraySubject\");\n\n// src/ObjectSubject.ts\nimport { BehaviorSubject as BehaviorSubject2 } from \"rxjs\";\nvar ObjectSubject = class extends BehaviorSubject2 {\n static {\n __name(this, \"ObjectSubject\");\n }\n _obj;\n constructor(obj = {}) {\n super({\n type: \"init\",\n value: obj\n });\n this.createProxy(obj);\n }\n createProxy(obj) {\n this._obj = new Proxy(obj, {\n get: /* @__PURE__ */ __name((target, prop, receiver) => {\n return Reflect.get(target, prop, receiver);\n }, \"get\"),\n set: /* @__PURE__ */ __name((target, prop, value, receiver) => {\n const key = prop;\n const changeType = key in target ? \"update\" : \"add\";\n target[key] = value;\n this.next({\n type: changeType,\n key,\n value\n });\n return true;\n }, \"set\"),\n deleteProperty: /* @__PURE__ */ __name((target, prop) => {\n const key = prop;\n if (key in target) {\n const value = target[key];\n delete target[key];\n this.next({\n type: \"remove\",\n key,\n value\n });\n return true;\n }\n return false;\n }, \"deleteProperty\")\n });\n }\n get obj() {\n return this._obj;\n }\n set obj(newObj) {\n this.createProxy(newObj);\n this.next({\n type: \"reset\",\n value: newObj\n });\n }\n};\nvar isObjectSubject = /* @__PURE__ */ __name((value) => {\n return \"_obj\" in value;\n}, \"isObjectSubject\");\n\n// src/signal.ts\nimport { BehaviorSubject as BehaviorSubject3, combineLatest, filter, finalize, map } from \"rxjs\";\nvar getGlobalReactiveStore = /* @__PURE__ */ __name(() => {\n const globalKey = \"__REACTIVE_STORE__\";\n if (typeof globalThis !== \"undefined\") {\n if (!globalThis[globalKey]) {\n globalThis[globalKey] = {\n currentDependencyTracker: null,\n currentSubscriptionsTracker: null\n };\n }\n return globalThis[globalKey];\n }\n let globalObj;\n if (typeof window !== \"undefined\") {\n globalObj = window;\n } else if (typeof process !== \"undefined\" && process.versions && process.versions.node) {\n globalObj = Function(\"return this\")();\n } else if (typeof self !== \"undefined\") {\n globalObj = self;\n } else {\n console.warn(\"Unable to find global object, using local instance\");\n return {\n currentDependencyTracker: null,\n currentSubscriptionsTracker: null\n };\n }\n if (!globalObj[globalKey]) {\n globalObj[globalKey] = {\n currentDependencyTracker: null,\n currentSubscriptionsTracker: null\n };\n }\n return globalObj[globalKey];\n}, \"getGlobalReactiveStore\");\nvar reactiveStore = getGlobalReactiveStore();\nvar trackDependency = /* @__PURE__ */ __name((signal2) => {\n if (reactiveStore.currentDependencyTracker) {\n reactiveStore.currentDependencyTracker(signal2);\n }\n}, \"trackDependency\");\nfunction signal(defaultValue) {\n let subject;\n if (Array.isArray(defaultValue)) {\n subject = new ArraySubject(defaultValue);\n } else if (typeof defaultValue === \"object\" && defaultValue !== null) {\n subject = new ObjectSubject(defaultValue);\n } else {\n subject = new BehaviorSubject3(defaultValue);\n }\n const getValue = /* @__PURE__ */ __name(() => {\n if (subject instanceof ArraySubject) {\n return subject.items;\n } else if (subject instanceof ObjectSubject) {\n return subject.obj;\n }\n return subject.value;\n }, \"getValue\");\n const fn = /* @__PURE__ */ __name(function() {\n trackDependency(fn);\n return getValue();\n }, \"fn\");\n fn.set = (value) => {\n if (subject instanceof ArraySubject) {\n subject.items = value;\n } else if (subject instanceof ObjectSubject) {\n subject.obj = value;\n } else {\n subject.next(value);\n }\n };\n fn._isFrozen = false;\n fn.freeze = () => {\n fn._isFrozen = true;\n };\n fn.unfreeze = () => {\n fn._isFrozen = false;\n if (subject instanceof ArraySubject) {\n subject.next({\n type: \"init\",\n items: subject.items\n });\n } else if (subject instanceof ObjectSubject) {\n subject.next({\n type: \"init\",\n value: subject.obj\n });\n } else {\n subject.next(subject.value);\n }\n };\n fn.mutate = (mutateFn) => {\n const value = getValue();\n mutateFn(value);\n };\n fn.update = (updateFn) => {\n const updatedValue = updateFn(getValue());\n fn.set(updatedValue);\n };\n fn.observable = subject.asObservable().pipe(filter(() => !fn._isFrozen));\n fn._subject = subject;\n return fn;\n}\n__name(signal, \"signal\");\nfunction isSignal(value) {\n return !!(value && value.observable);\n}\n__name(isSignal, \"isSignal\");\nfunction isComputed(value) {\n return isSignal(value) && !!value.dependencies;\n}\n__name(isComputed, \"isComputed\");\nfunction computed(computeFunction, disposableFn) {\n const dependencies = /* @__PURE__ */ new Set();\n let init = true;\n let lastComputedValue;\n const previousTracker = reactiveStore.currentDependencyTracker;\n reactiveStore.currentDependencyTracker = (signal2) => {\n dependencies.add(signal2);\n };\n lastComputedValue = computeFunction();\n if (computeFunction[\"isEffect\"]) {\n disposableFn = lastComputedValue;\n }\n reactiveStore.currentDependencyTracker = previousTracker;\n const computedObservable = combineLatest([\n ...dependencies\n ].map((signal2) => signal2.observable)).pipe(filter(() => !init), map(() => computeFunction()), finalize(() => disposableFn?.()));\n const fn = /* @__PURE__ */ __name(function() {\n trackDependency(fn);\n return lastComputedValue;\n }, \"fn\");\n fn.observable = computedObservable;\n fn.subscription = computedObservable.subscribe((value) => {\n lastComputedValue = value;\n });\n fn.dependencies = dependencies;\n reactiveStore.currentSubscriptionsTracker?.(fn.subscription);\n init = false;\n return fn;\n}\n__name(computed, \"computed\");\n\n// src/effect.ts\nfunction effect(fn) {\n fn[\"isEffect\"] = true;\n return computed(fn);\n}\n__name(effect, \"effect\");\nexport {\n ArraySubject,\n ObjectSubject,\n computed,\n effect,\n isArraySubject,\n isComputed,\n isObjectSubject,\n isSignal,\n signal\n};\n//# sourceMappingURL=index.js.map","import {\n __name\n} from \"./chunk-7QVYU63E.js\";\n\n// src/core.ts\nimport { isArraySubject, isObjectSubject, isSignal, isComputed } from \"@signe/reactive\";\n\n// src/utils.ts\nfunction isFunction(val) {\n return {}.toString.call(val) === \"[object Function]\";\n}\n__name(isFunction, \"isFunction\");\nfunction isClass(obj) {\n return typeof obj === \"function\" && obj.prototype && obj.prototype.constructor === obj;\n}\n__name(isClass, \"isClass\");\nvar isObject = /* @__PURE__ */ __name((item) => item && typeof item === \"object\" && !Array.isArray(item) && item !== null, \"isObject\");\nfunction isInstanceOfClass(value) {\n if (value === null || typeof value !== \"object\" || value === void 0 || Array.isArray(value)) {\n return false;\n }\n return Object.getPrototypeOf(value) !== Object.prototype;\n}\n__name(isInstanceOfClass, \"isInstanceOfClass\");\nfunction generateShortUUID() {\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let uuid = \"\";\n for (let i = 0; i < 8; i++) {\n const randomIndex = Math.floor(Math.random() * chars.length);\n uuid += chars[randomIndex];\n }\n return uuid;\n}\n__name(generateShortUUID, \"generateShortUUID\");\n\n// src/core.ts\nvar DELETE_TOKEN = \"$delete\";\nvar syncClass = /* @__PURE__ */ __name((instance, options = {}) => {\n const cacheSync = /* @__PURE__ */ new Map();\n const cachePersist = /* @__PURE__ */ new Map();\n instance.$valuesChanges = {\n set: /* @__PURE__ */ __name((path, value) => {\n cacheSync.set(path, value);\n options.onSync?.(cacheSync);\n }, \"set\"),\n setPersist: /* @__PURE__ */ __name((path, value) => {\n if (path == \"\") path = \".\";\n cachePersist.set(path, value);\n options.onPersist?.(cachePersist);\n }, \"setPersist\"),\n has: /* @__PURE__ */ __name((path) => {\n return cacheSync.has(path);\n }, \"has\"),\n get: /* @__PURE__ */ __name((path) => {\n return cacheSync.get(path);\n }, \"get\")\n };\n createSyncClass(instance);\n}, \"syncClass\");\nfunction createStatesSnapshot(instance) {\n let persistObject = {};\n if (instance?.$snapshot) {\n for (const key of instance.$snapshot.keys()) {\n const signal = instance.$snapshot.get(key);\n const persist2 = signal.options.persist ?? true;\n let value = signal();\n if (isObject(value) || Array.isArray(value)) {\n continue;\n }\n if (persist2) {\n persistObject[key] = value;\n }\n }\n }\n return persistObject;\n}\n__name(createStatesSnapshot, \"createStatesSnapshot\");\nfunction setMetadata(target, key, value) {\n const meta = target.constructor._propertyMetadata;\n const propId = meta?.get(key);\n if (propId) {\n if (isSignal(target[propId])) {\n target[propId].set(value);\n } else {\n target[propId] = value;\n }\n }\n}\n__name(setMetadata, \"setMetadata\");\nvar createSyncClass = /* @__PURE__ */ __name((currentClass, parentKey = null, parentClass = null, path = \"\") => {\n currentClass.$path = path;\n if (parentClass) {\n currentClass.$valuesChanges = parentClass.$valuesChanges;\n }\n if (parentKey) {\n setMetadata(currentClass, \"id\", parentKey);\n }\n if (currentClass.$snapshot) {\n for (const key of currentClass.$snapshot.keys()) {\n const signal = currentClass.$snapshot.get(key);\n const syncToClient = signal.options?.syncToClient ?? true;\n const persist2 = signal.options?.persist ?? true;\n let signalValue = signal();\n if (isObject(signalValue) || Array.isArray(signalValue)) {\n signalValue = {\n ...signalValue\n };\n }\n const newPath = (path ? path + \".\" : \"\") + key;\n if (syncToClient) {\n currentClass.$valuesChanges.set(newPath, signalValue);\n }\n if (persist2) {\n if (parentClass) currentClass.$valuesChanges.setPersist(path, signalValue);\n }\n if (isComputed(signal)) {\n signal.observable.subscribe((newValue) => {\n if (syncToClient) {\n currentClass.$valuesChanges.set(newPath, newValue);\n }\n });\n }\n }\n }\n}, \"createSyncClass\");\nvar type = /* @__PURE__ */ __name((_signal, path, options = {}, currentInstance) => {\n const { syncToClient = true, persist: persist2 = true } = options;\n let init = true;\n const handleObjectSubject = /* @__PURE__ */ __name((value, propPath) => {\n const newPath = `${propPath}${value.key ? `.${value.key}` : \"\"}`;\n if ([\n \"add\",\n \"reset\",\n \"update\"\n ].includes(value.type)) {\n if (isInstanceOfClass(value.value)) {\n createSyncClass(value.value, value.key, currentInstance, newPath);\n } else if (value.type === \"update\" && (isObject(value.value) || Array.isArray(value.value))) {\n createSyncClass(value.value, value.key, currentInstance, newPath);\n } else {\n savePath(newPath, value.value);\n }\n } else if (value.type === \"remove\") {\n savePath(newPath, DELETE_TOKEN);\n }\n }, \"handleObjectSubject\");\n const handleArraySubject = /* @__PURE__ */ __name((value, propPath) => {\n if (value.type === \"reset\" && Array.isArray(value.items)) {\n value.items.forEach((item, index) => {\n const newPath2 = `${propPath}.${index}`;\n if (isInstanceOfClass(item)) {\n createSyncClass(item, value.key, currentInstance, newPath2);\n } else {\n savePath(newPath2, item);\n }\n });\n return;\n }\n const newPath = `${propPath}.${value.index}`;\n const firstItem = value.items?.[0];\n if ([\n \"add\",\n \"update\"\n ].includes(value.type) && firstItem !== void 0) {\n if (isInstanceOfClass(firstItem)) {\n createSyncClass(firstItem, value.key, currentInstance, newPath);\n } else if (value.type === \"update\" && (isObject(firstItem) || Array.isArray(firstItem))) {\n createSyncClass(firstItem, value.key, currentInstance, newPath);\n } else {\n savePath(newPath, firstItem);\n }\n } else if (value.type === \"remove\") {\n savePath(newPath, DELETE_TOKEN);\n }\n }, \"handleArraySubject\");\n const savePath = /* @__PURE__ */ __name((propPath, value) => {\n if (syncToClient) {\n currentInstance.$valuesChanges.set(propPath, value);\n }\n if (persist2 && currentInstance.$path !== void 0) {\n currentInstance.$valuesChanges.setPersist(value == DELETE_TOKEN ? propPath : currentInstance.$path, value);\n }\n }, \"savePath\");\n const setupSubscription = /* @__PURE__ */ __name((signal, signalPath) => {\n if (!isSignal(signal)) return;\n if (syncToClient && currentInstance.$valuesChanges) {\n const initialValue = signal();\n currentInstance.$valuesChanges.set(signalPath, initialValue);\n }\n signal.options = options;\n signal.observable.subscribe((value) => {\n if (init) return;\n if (currentInstance.$path !== void 0) {\n const fullPath = `${currentInstance.$path ? currentInstance.$path + \".\" : \"\"}${signalPath}`;\n if (isComputed(signal)) {\n savePath(fullPath, value);\n } else if (isObjectSubject(signal._subject)) {\n handleObjectSubject(value, fullPath);\n } else if (isArraySubject(signal._subject)) {\n handleArraySubject(value, fullPath);\n } else {\n savePath(fullPath, value);\n }\n }\n });\n if (!currentInstance.$snapshot) {\n currentInstance.$snapshot = /* @__PURE__ */ new Map();\n }\n currentInstance.$snapshot.set(path, signal);\n }, \"setupSubscription\");\n if (!isSignal(_signal)) {\n if (_signal && typeof _signal === \"object\" && !Array.isArray(_signal)) {\n for (const key in _signal) {\n if (Object.prototype.hasOwnProperty.call(_signal, key)) {\n const value = _signal[key];\n const propertyPath = `${path}.${key}`;\n if (isSignal(value)) {\n setupSubscription(value, propertyPath);\n } else if (value && typeof value === \"object\" && !Array.isArray(value)) {\n type(value, propertyPath, options, currentInstance);\n }\n }\n }\n init = false;\n }\n return _signal;\n }\n setupSubscription(_signal, path);\n init = false;\n return _signal;\n}, \"type\");\n\n// src/decorators.ts\nfunction sync(options) {\n let classType;\n let persist2 = true;\n let syncToClient = true;\n if (typeof options === \"function\") {\n classType = options;\n } else if (typeof options === \"object\") {\n classType = options.classType;\n if (options.hasOwnProperty(\"persist\")) {\n persist2 = options.persist;\n }\n if (options.hasOwnProperty(\"syncToClient\")) {\n syncToClient = options.syncToClient;\n }\n }\n return function(target, propertyKey) {\n const privatePropertyKey = `__${propertyKey}`;\n const getter = /* @__PURE__ */ __name(function() {\n return this[privatePropertyKey];\n }, \"getter\");\n const setter = /* @__PURE__ */ __name(function(newVal) {\n this[privatePropertyKey] = type(newVal, propertyKey, {\n classType,\n persist: persist2,\n syncToClient\n }, this);\n }, \"setter\");\n Object.defineProperty(target, propertyKey, {\n get: getter,\n set: setter,\n enumerable: true,\n configurable: true\n });\n };\n}\n__name(sync, \"sync\");\nfunction id() {\n return function(target, propertyKey) {\n if (!target.constructor._propertyMetadata) {\n target.constructor._propertyMetadata = /* @__PURE__ */ new Map();\n }\n target.constructor._propertyMetadata.set(\"id\", propertyKey);\n };\n}\n__name(id, \"id\");\nfunction users(options) {\n return function(target, propertyKey) {\n if (!target.constructor._propertyMetadata) {\n target.constructor._propertyMetadata = /* @__PURE__ */ new Map();\n }\n target.constructor._propertyMetadata.set(\"users\", propertyKey);\n sync(options)(target, propertyKey);\n };\n}\n__name(users, \"users\");\nfunction persist() {\n return sync({\n persist: true,\n syncToClient: false\n });\n}\n__name(persist, \"persist\");\nfunction connected() {\n return function(target, propertyKey) {\n if (!target.constructor._propertyMetadata) {\n target.constructor._propertyMetadata = /* @__PURE__ */ new Map();\n }\n target.constructor._propertyMetadata.set(\"connected\", propertyKey);\n sync({\n persist: false\n })(target, propertyKey);\n };\n}\n__name(connected, \"connected\");\n\n// src/load.ts\nimport { isSignal as isSignal2 } from \"@signe/reactive\";\nfunction load(rootInstance, values, valueIsObject) {\n if (valueIsObject) {\n loadFromObject(rootInstance, values);\n } else {\n loadFromPaths(rootInstance, values);\n }\n}\n__name(load, \"load\");\nfunction loadFromPaths(rootInstance, values) {\n for (const [path, value] of Object.entries(values)) {\n const parts = path.split(\".\");\n loadValue(rootInstance, parts, value);\n }\n}\n__name(loadFromPaths, \"loadFromPaths\");\nfunction loadFromObject(rootInstance, values, currentPath = \"\") {\n for (let key in values) {\n const value = values[key];\n const newPath = currentPath ? `${currentPath}.${key}` : key;\n if (typeof value === \"object\" && !Array.isArray(value) && value !== null) {\n loadFromObject(rootInstance, value, newPath);\n } else {\n const parts = newPath.split(\".\");\n loadValue(rootInstance, parts, value);\n }\n }\n}\n__name(loadFromObject, \"loadFromObject\");\nfunction loadValue(rootInstance, parts, value) {\n let current = rootInstance;\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n if (i === parts.length - 1) {\n if (value == DELETE_TOKEN) {\n if (isSignal2(current)) {\n current = current();\n }\n Reflect.deleteProperty(current, part);\n } else if (current[part]?._subject) {\n current[part].set(value);\n } else {\n current[part] = value;\n }\n } else {\n if (isSignal2(current)) {\n current = current();\n }\n const currentValue = current[part];\n if (currentValue === void 0) {\n const parentInstance = getByPath(rootInstance, parts.slice(0, i).join(\".\"));\n const classType = parentInstance?.options?.classType;\n if (classType) {\n current[part] = !isClass(classType) ? classType(part) : new classType();\n setMetadata(current[part], \"id\", part);\n } else {\n current[part] = {};\n }\n }\n current = current[part];\n }\n }\n}\n__name(loadValue, \"loadValue\");\nfunction getByPath(root, path) {\n const parts = path.split(\".\");\n let current = root;\n for (const part of parts) {\n if (isSignal2(current)) {\n current = current();\n }\n if (current[part]) {\n current = current[part];\n } else {\n return void 0;\n }\n }\n return current;\n}\n__name(getByPath, \"getByPath\");\nexport {\n DELETE_TOKEN,\n connected,\n createStatesSnapshot,\n createSyncClass,\n generateShortUUID,\n getByPath,\n id,\n isClass,\n isFunction,\n isInstanceOfClass,\n isObject,\n load,\n persist,\n setMetadata,\n sync,\n syncClass,\n type,\n users\n};\n//# sourceMappingURL=index.js.map","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/ArraySubject.ts\nimport { BehaviorSubject } from \"rxjs\";\nvar ArraySubject = class extends BehaviorSubject {\n static {\n __name(this, \"ArraySubject\");\n }\n _items = [];\n constructor(items = []) {\n super({\n type: \"init\",\n items\n });\n this.createProxy(items);\n }\n createProxy(items) {\n this._items = new Proxy(items, {\n get: /* @__PURE__ */ __name((target, prop, receiver) => {\n const origMethod = target[prop];\n if (typeof origMethod === \"function\") {\n return (...args) => {\n let changeType = \"update\";\n let index = void 0;\n let isMutateFn = false;\n let itemsToEmit = [];\n let changeSplice = true;\n switch (prop) {\n case \"push\":\n index = target.length;\n changeType = \"add\";\n isMutateFn = true;\n break;\n case \"pop\":\n index = target.length - 1;\n changeType = \"remove\";\n isMutateFn = true;\n break;\n case \"unshift\":\n index = 0;\n changeType = \"add\";\n isMutateFn = true;\n break;\n case \"shift\":\n index = 0;\n changeType = \"remove\";\n isMutateFn = true;\n break;\n case \"splice\":\n index = args[0];\n const deleteCount = args[1];\n const newItems = args.slice(2);\n itemsToEmit = newItems;\n if (deleteCount > 0 && newItems.length === 0) {\n changeType = \"remove\";\n } else if (deleteCount === 0 && newItems.length > 0) {\n changeType = \"add\";\n } else if (deleteCount === 0 && newItems.length === 0) {\n changeSplice = false;\n } else {\n changeType = \"update\";\n }\n isMutateFn = true;\n break;\n }\n const result = origMethod.apply(target, args);\n if (isMutateFn && changeSplice) {\n if (prop === \"splice\") {\n this.next({\n type: changeType,\n index,\n items: itemsToEmit\n });\n } else {\n this.next({\n type: changeType,\n index,\n items: args\n });\n }\n }\n return result;\n };\n }\n return Reflect.get(target, prop, receiver);\n }, \"get\"),\n set: /* @__PURE__ */ __name((target, prop, value) => {\n const index = !isNaN(Number(prop)) ? Number(prop) : void 0;\n target[prop] = value;\n this.next({\n type: \"update\",\n index,\n items: [\n value\n ]\n });\n return true;\n }, \"set\")\n });\n }\n get items() {\n return this._items;\n }\n set items(newItems) {\n this.createProxy(newItems);\n this.next({\n type: \"reset\",\n items: newItems\n });\n }\n};\nvar isArraySubject = /* @__PURE__ */ __name((value) => {\n return \"_items\" in value;\n}, \"isArraySubject\");\n\n// src/ObjectSubject.ts\nimport { BehaviorSubject as BehaviorSubject2 } from \"rxjs\";\nvar ObjectSubject = class extends BehaviorSubject2 {\n static {\n __name(this, \"ObjectSubject\");\n }\n _obj;\n constructor(obj = {}) {\n super({\n type: \"init\",\n value: obj\n });\n this.createProxy(obj);\n }\n createProxy(obj) {\n this._obj = new Proxy(obj, {\n get: /* @__PURE__ */ __name((target, prop, receiver) => {\n return Reflect.get(target, prop, receiver);\n }, \"get\"),\n set: /* @__PURE__ */ __name((target, prop, value, receiver) => {\n const key = prop;\n const changeType = key in target ? \"update\" : \"add\";\n target[key] = value;\n this.next({\n type: changeType,\n key,\n value\n });\n return true;\n }, \"set\"),\n deleteProperty: /* @__PURE__ */ __name((target, prop) => {\n const key = prop;\n if (key in target) {\n const value = target[key];\n delete target[key];\n this.next({\n type: \"remove\",\n key,\n value\n });\n return true;\n }\n return false;\n }, \"deleteProperty\")\n });\n }\n get obj() {\n return this._obj;\n }\n set obj(newObj) {\n this.createProxy(newObj);\n this.next({\n type: \"reset\",\n value: newObj\n });\n }\n};\nvar isObjectSubject = /* @__PURE__ */ __name((value) => {\n return \"_obj\" in value;\n}, \"isObjectSubject\");\n\n// src/signal.ts\nimport { BehaviorSubject as BehaviorSubject3, combineLatest, filter, finalize, map } from \"rxjs\";\nvar getGlobalReactiveStore = /* @__PURE__ */ __name(() => {\n const globalKey = \"__REACTIVE_STORE__\";\n if (typeof globalThis !== \"undefined\") {\n if (!globalThis[globalKey]) {\n globalThis[globalKey] = {\n currentDependencyTracker: null,\n currentSubscriptionsTracker: null\n };\n }\n return globalThis[globalKey];\n }\n let globalObj;\n if (typeof window !== \"undefined\") {\n globalObj = window;\n } else if (typeof process !== \"undefined\" && process.versions && process.versions.node) {\n globalObj = Function(\"return this\")();\n } else if (typeof self !== \"undefined\") {\n globalObj = self;\n } else {\n console.warn(\"Unable to find global object, using local instance\");\n return {\n currentDependencyTracker: null,\n currentSubscriptionsTracker: null\n };\n }\n if (!globalObj[globalKey]) {\n globalObj[globalKey] = {\n currentDependencyTracker: null,\n currentSubscriptionsTracker: null\n };\n }\n return globalObj[globalKey];\n}, \"getGlobalReactiveStore\");\nvar reactiveStore = getGlobalReactiveStore();\nvar trackDependency = /* @__PURE__ */ __name((signal2) => {\n if (reactiveStore.currentDependencyTracker) {\n reactiveStore.currentDependencyTracker(signal2);\n }\n}, \"trackDependency\");\nfunction signal(defaultValue) {\n let subject;\n if (Array.isArray(defaultValue)) {\n subject = new ArraySubject(defaultValue);\n } else if (typeof defaultValue === \"object\" && defaultValue !== null) {\n subject = new ObjectSubject(defaultValue);\n } else {\n subject = new BehaviorSubject3(defaultValue);\n }\n const getValue = /* @__PURE__ */ __name(() => {\n if (subject instanceof ArraySubject) {\n return subject.items;\n } else if (subject instanceof ObjectSubject) {\n return subject.obj;\n }\n return subject.value;\n }, \"getValue\");\n const fn = /* @__PURE__ */ __name(function() {\n trackDependency(fn);\n return getValue();\n }, \"fn\");\n fn.set = (value) => {\n if (subject instanceof ArraySubject) {\n subject.items = value;\n } else if (subject instanceof ObjectSubject) {\n subject.obj = value;\n } else {\n subject.next(value);\n }\n };\n fn._isFrozen = false;\n fn.freeze = () => {\n fn._isFrozen = true;\n };\n fn.unfreeze = () => {\n fn._isFrozen = false;\n if (subject instanceof ArraySubject) {\n subject.next({\n type: \"init\",\n items: subject.items\n });\n } else if (subject instanceof ObjectSubject) {\n subject.next({\n type: \"init\",\n value: subject.obj\n });\n } else {\n subject.next(subject.value);\n }\n };\n fn.mutate = (mutateFn) => {\n const value = getValue();\n mutateFn(value);\n };\n fn.update = (updateFn) => {\n const updatedValue = updateFn(getValue());\n fn.set(updatedValue);\n };\n fn.observable = subject.asObservable().pipe(filter(() => !fn._isFrozen));\n fn._subject = subject;\n return fn;\n}\n__name(signal, \"signal\");\nfunction isSignal(value) {\n return !!(value && value.observable);\n}\n__name(isSignal, \"isSignal\");\nfunction isComputed(value) {\n return isSignal(value) && !!value.dependencies;\n}\n__name(isComputed, \"isComputed\");\nfunction computed(computeFunction, disposableFn) {\n const dependencies = /* @__PURE__ */ new Set();\n let init = true;\n let lastComputedValue;\n const previousTracker = reactiveStore.currentDependencyTracker;\n reactiveStore.currentDependencyTracker = (signal2) => {\n dependencies.add(signal2);\n };\n lastComputedValue = computeFunction();\n if (computeFunction[\"isEffect\"]) {\n disposableFn = lastComputedValue;\n }\n reactiveStore.currentDependencyTracker = previousTracker;\n const computedObservable = combineLatest([\n ...dependencies\n ].map((signal2) => signal2.observable)).pipe(filter(() => !init), map(() => computeFunction()), finalize(() => disposableFn?.()));\n const fn = /* @__PURE__ */ __name(function() {\n trackDependency(fn);\n return lastComputedValue;\n }, \"fn\");\n fn.observable = computedObservable;\n fn.subscription = computedObservable.subscribe((value) => {\n lastComputedValue = value;\n });\n fn.dependencies = dependencies;\n reactiveStore.currentSubscriptionsTracker?.(fn.subscription);\n init = false;\n return fn;\n}\n__name(computed, \"computed\");\n\n// src/effect.ts\nfunction effect(fn) {\n fn[\"isEffect\"] = true;\n return computed(fn);\n}\n__name(effect, \"effect\");\nexport {\n ArraySubject,\n ObjectSubject,\n computed,\n effect,\n isArraySubject,\n isComputed,\n isObjectSubject,\n isSignal,\n signal\n};\n//# sourceMappingURL=index.js.map","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/decorators.ts\nfunction Action(name, bodyValidation) {\n return function(target, propertyKey) {\n if (!target.constructor._actionMetadata) {\n target.constructor._actionMetadata = /* @__PURE__ */ new Map();\n }\n target.constructor._actionMetadata.set(name, {\n key: propertyKey,\n bodyValidation\n });\n };\n}\n__name(Action, \"Action\");\nfunction Request2(options, bodyValidation) {\n return function(target, propertyKey) {\n if (!target.constructor._requestMetadata) {\n target.constructor._requestMetadata = /* @__PURE__ */ new Map();\n }\n const path = options.path.startsWith(\"/\") ? options.path : `/${options.path}`;\n const method = options.method || \"GET\";\n const routeKey = `${method}:${path}`;\n target.constructor._requestMetadata.set(routeKey, {\n key: propertyKey,\n path,\n method,\n bodyValidation\n });\n };\n}\n__name(Request2, \"Request\");\nfunction Room(options) {\n return function(target) {\n target.path = options.path;\n target.prototype.maxUsers = options.maxUsers;\n target.prototype.throttleStorage = options.throttleStorage;\n target.prototype.throttleSync = options.throttleSync;\n target.prototype.sessionExpiryTime = options.sessionExpiryTime ?? 5 * 60 * 1e3;\n if (options.guards) {\n target[\"_roomGuards\"] = options.guards;\n }\n };\n}\n__name(Room, \"Room\");\nfunction RoomGuard(guards) {\n return function(target) {\n target[\"_roomGuards\"] = guards;\n };\n}\n__name(RoomGuard, \"RoomGuard\");\nfunction Guard(guards) {\n return function(target, propertyKey, descriptor) {\n if (!target.constructor[\"_actionGuards\"]) {\n target.constructor[\"_actionGuards\"] = /* @__PURE__ */ new Map();\n }\n if (!Array.isArray(guards)) {\n guards = [\n guards\n ];\n }\n target.constructor[\"_actionGuards\"].set(propertyKey, guards);\n };\n}\n__name(Guard, \"Guard\");\n\n// ../sync/src/utils.ts\nfunction generateShortUUID() {\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let uuid = \"\";\n for (let i = 0; i < 8; i++) {\n const randomIndex = Math.floor(Math.random() * chars.length);\n uuid += chars[randomIndex];\n }\n return uuid;\n}\n__name(generateShortUUID, \"generateShortUUID\");\n\n// src/storage.ts\nvar Storage = class {\n static {\n __name(this, \"Storage\");\n }\n memory = /* @__PURE__ */ new Map();\n async put(key, value) {\n this.memory.set(key, value);\n }\n async get(key) {\n return this.memory.get(key);\n }\n async delete(key) {\n this.memory.delete(key);\n }\n async list() {\n return this.memory;\n }\n};\n\n// src/server.ts\nimport { dset as dset2 } from \"dset\";\nimport z from \"zod\";\nimport { createStatesSnapshot, getByPath, load, syncClass, DELETE_TOKEN, generateShortUUID as generateShortUUID2 } from \"@signe/sync\";\n\n// src/utils.ts\nimport { dset } from \"dset\";\nfunction isPromise(value) {\n return value instanceof Promise;\n}\n__name(isPromise, \"isPromise\");\nasync function awaitReturn(val) {\n return isPromise(val) ? await val : val;\n}\n__name(awaitReturn, \"awaitReturn\");\nfunction isClass(obj) {\n return typeof obj === \"function\" && obj.prototype && obj.prototype.constructor === obj;\n}\n__name(isClass, \"isClass\");\nfunction throttle(func, wait) {\n let timeout = null;\n let lastArgs = null;\n return function(...args) {\n if (!timeout) {\n func(...args);\n timeout = setTimeout(() => {\n if (lastArgs) {\n func(...lastArgs);\n lastArgs = null;\n }\n timeout = null;\n }, wait);\n } else {\n lastArgs = args;\n }\n };\n}\n__name(throttle, \"throttle\");\nfunction extractParams(pattern, str) {\n const regexPattern = pattern.replace(/{(\\w+)}/g, \"(?<$1>[\\\\w-]+)\");\n const regex = new RegExp(`^${regexPattern}$`);\n const match = regex.exec(str);\n if (match && match.groups) {\n return match.groups;\n } else if (pattern === str) {\n return {};\n } else {\n return null;\n }\n}\n__name(extractParams, \"extractParams\");\nfunction dremove(obj, keys) {\n if (typeof keys === \"string\") {\n keys = keys.split(\".\");\n }\n let i = 0;\n const l = keys.length;\n let t = obj;\n let k;\n while (i < l - 1) {\n k = keys[i++];\n if (k === \"__proto__\" || k === \"constructor\" || k === \"prototype\") return;\n if (typeof t[k] !== \"object\" || t[k] === null) return;\n t = t[k];\n }\n k = keys[i];\n if (t && typeof t === \"object\" && !(k === \"__proto__\" || k === \"constructor\" || k === \"prototype\")) {\n delete t[k];\n }\n}\n__name(dremove, \"dremove\");\nfunction buildObject(valuesMap, allMemory) {\n let memoryObj = {};\n for (let path of valuesMap.keys()) {\n const value = valuesMap.get(path);\n dset(memoryObj, path, value);\n if (value === \"$delete\") {\n dremove(allMemory, path);\n } else {\n dset(allMemory, path, value);\n }\n }\n return memoryObj;\n}\n__name(buildObject, \"buildObject\");\nfunction response(status, body) {\n return new Response(JSON.stringify(body), {\n status,\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n}\n__name(response, \"response\");\n\n// src/request/response.ts\nvar ServerResponse = class {\n static {\n __name(this, \"ServerResponse\");\n }\n interceptors;\n statusCode = 200;\n responseBody = {};\n responseHeaders = {\n \"Content-Type\": \"application/json\"\n };\n /**\n * Creates a new ServerResponse instance\n * @param interceptors Array of interceptor functions that can modify the response\n */\n constructor(interceptors = []) {\n this.interceptors = interceptors;\n }\n /**\n * Sets the status code for the response\n * @param code HTTP status code\n * @returns this instance for chaining\n */\n status(code) {\n this.statusCode = code;\n return this;\n }\n /**\n * Sets the response body and returns this instance (chainable method)\n * \n * @param body Response body\n * @returns this instance for chaining\n */\n body(body) {\n this.responseBody = body;\n return this;\n }\n /**\n * Adds a header to the response\n * @param name Header name\n * @param value Header value\n * @returns this instance for chaining\n */\n header(name, value) {\n this.responseHeaders[name] = value;\n return this;\n }\n /**\n * Adds multiple headers to the response\n * @param headers Object containing headers\n * @returns this instance for chaining\n */\n setHeaders(headers) {\n this.responseHeaders = {\n ...this.responseHeaders,\n ...headers\n };\n return this;\n }\n /**\n * Add an interceptor to the chain\n * @param interceptor Function that takes a Response and returns a modified Response\n * @returns this instance for chaining\n */\n use(interceptor) {\n this.interceptors.push(interceptor);\n return this;\n }\n /**\n * Builds and returns the Response object after applying all interceptors\n * @returns Promise<Response> The final Response object\n * @private Internal method used by terminal methods\n */\n async buildResponse() {\n let response2 = new Response(JSON.stringify(this.responseBody), {\n status: this.statusCode,\n headers: this.responseHeaders\n });\n for (const interceptor of this.interceptors) {\n try {\n const interceptedResponse = interceptor(response2);\n if (interceptedResponse instanceof Promise) {\n response2 = await interceptedResponse;\n } else {\n response2 = interceptedResponse;\n }\n } catch (error) {\n console.error(\"Error in interceptor:\", error);\n }\n }\n return response2;\n }\n /**\n * Sets the response body to the JSON-stringified version of the provided value\n * and sends the response (terminal method)\n * \n * @param body Response body to be JSON stringified\n * @returns Promise<Response> The final Response object\n */\n async json(body) {\n this.responseBody = body;\n this.responseHeaders[\"Content-Type\"] = \"application/json\";\n return this.buildResponse();\n }\n /**\n * Sends the response with the current configuration (terminal method)\n * \n * @param body Optional body to set before sending\n * @returns Promise<Response> The final Response object\n */\n async send(body) {\n if (body !== void 0) {\n this.responseBody = body;\n }\n return this.buildResponse();\n }\n /**\n * Sends a plain text response (terminal method)\n * \n * @param text Text to send\n * @returns Promise<Response> The final Response object\n */\n async text(text) {\n this.responseBody = text;\n this.responseHeaders[\"Content-Type\"] = \"text/plain\";\n let response2 = new Response(text, {\n status: this.statusCode,\n headers: this.responseHeaders\n });\n for (const interceptor of this.interceptors) {\n try {\n const interceptedResponse = interceptor(response2);\n if (interceptedResponse instanceof Promise) {\n response2 = await interceptedResponse;\n } else {\n response2 = interceptedResponse;\n }\n } catch (error) {\n console.error(\"Error in interceptor:\", error);\n }\n }\n return response2;\n }\n /**\n * Redirects to the specified URL (terminal method)\n * \n * @param url URL to redirect to\n * @param statusCode HTTP status code (default: 302)\n * @returns Promise<Response> The final Response object\n */\n async redirect(url, statusCode = 302) {\n this.statusCode = statusCode;\n this.responseHeaders[\"Location\"] = url;\n return this.buildResponse();\n }\n /**\n * Creates a success response with status 200\n * @param body Response body\n * @returns Promise<Response> The final Response object\n */\n async success(body = {}) {\n return this.status(200).json(body);\n }\n /**\n * Creates an error response with status 400\n * @param message Error message\n * @param details Additional error details\n * @returns Promise<Response> The final Response object\n */\n async badRequest(message, details = {}) {\n return this.status(400).json({\n error: message,\n ...details\n });\n }\n /**\n * Creates an error response with status 403\n * @param message Error message\n * @returns Promise<Response> The final Response object\n */\n async notPermitted(message = \"Not permitted\") {\n return this.status(403).json({\n error: message\n });\n }\n /**\n * Creates an error response with status 401\n * @param message Error message\n * @returns Promise<Response> The final Response object\n */\n async unauthorized(message = \"Unauthorized\") {\n return this.status(401).json({\n error: message\n });\n }\n /**\n * Creates an error response with status 404\n * @param message Error message\n * @returns Promise<Response> The final Response object\n */\n async notFound(message = \"Not found\") {\n return this.status(404).json({\n error: message\n });\n }\n /**\n * Creates an error response with status 500\n * @param message Error message\n * @returns Promise<Response> The final Response object\n */\n async serverError(message = \"Internal Server Error\") {\n return this.status(500).json({\n error: message\n });\n }\n};\n\n// src/request/cors.ts\nfunction cors(res, options = {}) {\n const newHeaders = new Headers(res.headers);\n const requestOrigin = options.origin || \"*\";\n newHeaders.set(\"Access-Control-Allow-Origin\", requestOrigin);\n if (options.credentials) {\n newHeaders.set(\"Access-Control-Allow-Credentials\", \"true\");\n }\n if (options.exposedHeaders && options.exposedHeaders.length) {\n newHeaders.set(\"Access-Control-Expose-Headers\", options.exposedHeaders.join(\", \"));\n }\n if (options.methods && options.methods.length) {\n newHeaders.set(\"Access-Control-Allow-Methods\", options.methods.join(\", \"));\n } else {\n newHeaders.set(\"Access-Control-Allow-Methods\", \"GET, POST, PUT, DELETE, PATCH, OPTIONS\");\n }\n if (options.allowedHeaders && options.allowedHeaders.length) {\n newHeaders.set(\"Access-Control-Allow-Headers\", options.allowedHeaders.join(\", \"));\n } else {\n newHeaders.set(\"Access-Control-Allow-Headers\", \"Content-Type, Authorization, X-Requested-With\");\n }\n if (options.maxAge) {\n newHeaders.set(\"Access-Control-Max-Age\", options.maxAge.toString());\n } else {\n newHeaders.set(\"Access-Control-Max-Age\", \"86400\");\n }\n return new Response(res.body, {\n status: res.status,\n headers: newHeaders\n });\n}\n__name(cors, \"cors\");\nfunction createCorsInterceptor(options = {}) {\n return (res) => cors(res, options);\n}\n__name(createCorsInterceptor, \"createCorsInterceptor\");\n\n// src/server.ts\nvar Message = z.object({\n action: z.string(),\n value: z.any()\n});\nvar Server = class {\n static {\n __name(this, \"Server\");\n }\n room;\n subRoom;\n rooms;\n /**\n * @constructor\n * @param {Party.Room} room - The room object representing the current game or application instance.\n * \n * @example\n * ```typescript\n * const server = new MyServer(new ServerIo(\"game\"));\n * ```\n */\n constructor(room) {\n this.room = room;\n this.subRoom = null;\n this.rooms = [];\n }\n /**\n * @readonly\n * @property {boolean} isHibernate - Indicates whether the server is in hibernate mode.\n * \n * @example\n * ```typescript\n * if (!server.isHibernate) {\n * console.log(\"Server is active\");\n * }\n * ```\n */\n get isHibernate() {\n return !!this[\"options\"]?.hibernate;\n }\n get roomStorage() {\n return this.room.storage;\n }\n async send(conn, obj, subRoom) {\n obj = structuredClone(obj);\n if (subRoom.interceptorPacket) {\n const signal2 = this.getUsersProperty(subRoom);\n const { publicId } = conn.state;\n const user = signal2?.()[publicId];\n obj = await awaitReturn(subRoom[\"interceptorPacket\"]?.(user, obj, conn));\n if (obj === null) return;\n }\n conn.send(JSON.stringify(obj));\n }\n broadcast(obj, subRoom) {\n for (let conn of this.room.getConnections()) {\n this.send(conn, obj, subRoom);\n }\n }\n /**\n * @method onStart\n * @async\n * @description Initializes the server and creates the initial room if not in hibernate mode.\n * @returns {Promise<void>}\n * \n * @example\n * ```typescript\n * async function initServer() {\n * await server.onStart();\n * console.log(\"Server started\");\n * }\n * ```\n */\n async onStart() {\n if (!this.isHibernate) {\n this.subRoom = await this.createRoom();\n }\n }\n async garbageCollector(options) {\n const subRoom = await this.getSubRoom();\n if (!subRoom) return;\n const activeConnections = [\n ...this.room.getConnections()\n ];\n const activePrivateIds = new Set(activeConnections.map((conn) => conn.id));\n try {\n const sessions = await this.room.storage.list();\n const users = this.getUsersProperty(subRoom);\n const usersPropName = this.getUsersPropName(subRoom);\n const validPublicIds = /* @__PURE__ */ new Set();\n const expiredPublicIds = /* @__PURE__ */ new Set();\n const SESSION_EXPIRY_TIME = options.sessionExpiryTime;\n const now = Date.now();\n for (const [key, session] of sessions) {\n if (!key.startsWith(\"session:\")) continue;\n const privateId = key.replace(\"session:\", \"\");\n const typedSession = session;\n if (!activePrivateIds.has(privateId) && !typedSession.connected && now - typedSession.created > SESSION_EXPIRY_TIME) {\n await this.deleteSession(privateId);\n expiredPublicIds.add(typedSession.publicId);\n } else if (typedSession && typedSession.publicId) {\n validPublicIds.add(typedSession.publicId);\n }\n }\n if (users && usersPropName) {\n const currentUsers = users();\n for (const publicId in currentUsers) {\n if (expiredPublicIds.has(publicId) && !validPublicIds.has(publicId)) {\n delete currentUsers[publicId];\n await this.room.storage.delete(`${usersPropName}.${publicId}`);\n }\n }\n }\n } catch (error) {\n console.error(\"Error in garbage collector:\", error);\n }\n }\n /**\n * @method createRoom\n * @private\n * @async\n * @param {CreateRoomOptions} [options={}] - Options for creating the room.\n * @returns {Promise<Object>} The created room instance.\n * \n * @example\n * ```typescript\n * // This method is private and called internally\n * async function internalCreateRoom() {\n * const room = await this.createRoom({ getMemoryAll: true });\n * console.log(\"Room created:\", room);\n * }\n * ```\n */\n async createRoom(options = {}) {\n let instance;\n let init = true;\n let initPersist = true;\n for (let room of this.rooms) {\n const params = extractParams(room.path, this.room.id);\n if (params) {\n instance = new room(this.room, params);\n break;\n }\n }\n if (!instance) {\n return null;\n }\n const loadMemory = /* @__PURE__ */ __name(async () => {\n const root = await this.room.storage.get(\".\");\n const memory = await this.room.storage.list();\n const tmpObject = root || {};\n for (let [key, value] of memory) {\n if (key.startsWith(\"session:\")) {\n continue;\n }\n if (key == \".\") {\n continue;\n }\n dset2(tmpObject, key, value);\n }\n load(instance, tmpObject, true);\n }, \"loadMemory\");\n instance.$memoryAll = {};\n instance.$send = (conn, obj) => {\n return this.send(conn, obj, instance);\n };\n instance.$broadcast = (obj) => {\n return this.broadcast(obj, instance);\n };\n const syncCb = /* @__PURE__ */ __name((values) => {\n if (options.getMemoryAll) {\n buildObject(values, instance.$memoryAll);\n }\n if (init && this.isHibernate) {\n init = false;\n return;\n }\n const packet = buildObject(values, instance.$memoryAll);\n this.broadcast({\n type: \"sync\",\n value: packet\n }, instance);\n values.clear();\n }, \"syncCb\");\n const persistCb = /* @__PURE__ */ __name(async (values) => {\n if (initPersist) {\n values.clear();\n return;\n }\n for (let [path, value] of values) {\n const _instance = path == \".\" ? instance : getByPath(instance, path);\n const itemValue = createStatesSnapshot(_instance);\n if (value == DELETE_TOKEN) {\n await this.room.storage.delete(path);\n } else {\n await this.room.storage.put(path, itemValue);\n }\n }\n values.clear();\n }, \"persistCb\");\n syncClass(instance, {\n onSync: throttle(syncCb, instance[\"throttleSync\"] ?? 500),\n onPersist: throttle(persistCb, instance[\"throttleStorage\"] ?? 2e3)\n });\n await loadMemory();\n initPersist = false;\n return instance;\n }\n /**\n * @method getSubRoom\n * @private\n * @async\n * @param {Object} [options={}] - Options for getting the sub-room.\n * @returns {Promise<Object>} The sub-room instance.\n * \n * @example\n * ```typescript\n * // This method is private and called internally\n * async function internalGetSubRoom() {\n * const subRoom = await this.getSubRoom();\n * console.log(\"Sub-room retrieved:\", subRoom);\n * }\n * ```\n */\n async getSubRoom(options = {}) {\n let subRoom;\n if (this.isHibernate) {\n subRoom = await this.createRoom(options);\n } else {\n subRoom = this.subRoom;\n }\n return subRoom;\n }\n /**\n * @method getUsersProperty\n * @private\n * @param {Object} subRoom - The sub-room instance.\n * @returns {Object|null} The users property of the sub-room, or null if not found.\n * \n * @example\n * ```typescript\n * // This method is private and called internally\n * function internalGetUsers(subRoom) {\n * const users = this.getUsersProperty(subRoom);\n * console.log(\"Users:\", users);\n * }\n * ```\n */\n getUsersProperty(subRoom) {\n const meta = subRoom.constructor[\"_propertyMetadata\"];\n const propId = meta?.get(\"users\");\n if (propId) {\n return subRoom[propId];\n }\n return null;\n }\n getUsersPropName(subRoom) {\n if (!subRoom) return null;\n const metadata = subRoom.constructor._propertyMetadata;\n if (!metadata) return null;\n return metadata.get(\"users\");\n }\n /**\n * Retrieves the connection status property from a user object.\n * \n * @param {any} user - The user object to get the connection property from.\n * @returns {Function|null} - The connection property signal function or null if not found.\n * @private\n */\n getUserConnectionProperty(user) {\n if (!user) return null;\n const metadata = user.constructor._propertyMetadata;\n if (!metadata) return null;\n const connectedPropName = metadata.get(\"connected\");\n if (!connectedPropName) return null;\n return user[connectedPropName];\n }\n /**\n * Updates a user's connection status in the signal.\n * \n * @param {any} user - The user object to update.\n * @param {boolean} isConnected - The new connection status.\n * @returns {boolean} - Whether the update was successful.\n * @private\n */\n updateUserConnectionStatus(user, isConnected) {\n const connectionSignal = this.getUserConnectionProperty(user);\n if (connectionSignal) {\n connectionSignal.set(isConnected);\n return true;\n }\n return false;\n }\n /**\n * @method getSession\n * @private\n * @param {string} privateId - The private ID of the session.\n * @returns {Promise<Object|null>} The session object, or null if not found.\n * \n * @example\n * ```typescript\n * const session = await server.getSession(\"privateId\");\n * console.log(session);\n * ```\n */\n async getSession(privateId) {\n if (!privateId) return null;\n try {\n const session = await this.room.storage.get(`session:${privateId}`);\n return session;\n } catch (e) {\n return null;\n }\n }\n async saveSession(privateId, data) {\n const sessionData = {\n ...data,\n created: data.created || Date.now(),\n connected: data.connected !== void 0 ? data.connected : true\n };\n await this.room.storage.put(`session:${privateId}`, sessionData);\n }\n async updateSessionConnection(privateId, connected) {\n const session = await this.getSession(privateId);\n if (session) {\n await this.saveSession(privateId, {\n ...session,\n connected\n });\n }\n }\n /**\n * @method deleteSession\n * @private\n * @param {string} privateId - The private ID of the session to delete.\n * @returns {Promise<void>}\n * \n * @example\n * ```typescript\n * await server.deleteSession(\"privateId\");\n * ```\n */\n async deleteSession(privateId) {\n await this.room.storage.delete(`session:${privateId}`);\n }\n async onConnectClient(conn, ctx) {\n const subRoom = await this.getSubRoom({\n getMemoryAll: true\n });\n if (!subRoom) {\n conn.close();\n return;\n }\n const sessionExpiryTime = subRoom.constructor.sessionExpiryTime;\n await this.garbageCollector({\n sessionExpiryTime\n });\n const roomGuards = subRoom.constructor[\"_roomGuards\"] || [];\n for (const guard of roomGuards) {\n const isAuthorized = await guard(conn, ctx);\n if (!isAuthorized) {\n conn.close();\n return;\n }\n }\n const existingSession = await this.getSession(conn.id);\n const publicId = existingSession?.publicId || generateShortUUID2();\n let user = null;\n const signal2 = this.getUsersProperty(subRoom);\n const usersPropName = this.getUsersPropName(subRoom);\n if (signal2) {\n const { classType } = signal2.options;\n if (!existingSession?.publicId) {\n user = isClass(classType) ? new classType() : classType(conn, ctx);\n signal2()[publicId] = user;\n const snapshot = createStatesSnapshot(user);\n this.room.storage.put(`${usersPropName}.${publicId}`, snapshot);\n } else {\n user = signal2()[existingSession.publicId];\n }\n if (!existingSession) {\n await this.saveSession(conn.id, {\n publicId\n });\n } else {\n await this.updateSessionConnection(conn.id, true);\n }\n }\n this.updateUserConnectionStatus(user, true);\n await awaitReturn(subRoom[\"onJoin\"]?.(user, conn, ctx));\n conn.setState({\n ...conn.state,\n publicId\n });\n this.send(conn, {\n type: \"sync\",\n value: {\n pId: publicId,\n ...subRoom.$memoryAll\n }\n }, subRoom);\n }\n /**\n * @method onConnect\n * @async\n * @param {Party.Connection} conn - The connection object for the new user.\n * @param {Party.ConnectionContext} ctx - The context of the connection.\n * @description Handles a new user connection, creates a user object, and sends initial sync data.\n * @returns {Promise<void>}\n * \n * @example\n * ```typescript\n * server.onConnect = async (conn, ctx) => {\n * await server.onConnect(conn, ctx);\n * console.log(\"New user connected:\", conn.id);\n * };\n * ```\n */\n async onConnect(conn, ctx) {\n if (ctx.request?.headers.has(\"x-shard-id\")) {\n this.onConnectShard(conn, ctx);\n } else {\n await this.onConnectClient(conn, ctx);\n }\n }\n /**\n * @method onConnectShard\n * @private\n * @param {Party.Connection} conn - The connection object for the new shard.\n * @param {Party.ConnectionContext} ctx - The context of the shard connection.\n * @description Handles a new shard connection, setting up the necessary state.\n * @returns {void}\n */\n onConnectShard(conn, ctx) {\n const shardId = ctx.request?.headers.get(\"x-shard-id\") || \"unknown-shard\";\n conn.setState({\n shard: true,\n shardId,\n clients: /* @__PURE__ */ new Map()\n // Track clients connected through this shard\n });\n }\n /**\n * @method onMessage\n * @async\n * @param {string} message - The message received from a user or shard.\n * @param {Party.Connection} sender - The connection object of the sender.\n * @description Processes incoming messages, handling differently based on if sender is shard or client.\n * @returns {Promise<void>}\n */\n async onMessage(message, sender) {\n if (sender.state && sender.state.shard) {\n await this.handleShardMessage(message, sender);\n return;\n }\n let json;\n try {\n json = JSON.parse(message);\n } catch (e) {\n return;\n }\n const result = Message.safeParse(json);\n if (!result.success) {\n return;\n }\n const subRoom = await this.getSubRoom();\n if (!subRoom) {\n console.warn(\"Room not found\");\n return;\n }\n const roomGuards = subRoom.constructor[\"_roomGuards\"] || [];\n for (const guard of roomGuards) {\n const isAuthorized = await guard(sender, result.data.value, this.room);\n if (!isAuthorized) {\n return;\n }\n }\n const actions = subRoom.constructor[\"_actionMetadata\"];\n if (actions) {\n const signal2 = this.getUsersProperty(subRoom);\n const { publicId } = sender.state;\n const user = signal2?.()[publicId];\n const actionName = actions.get(result.data.action);\n if (actionName) {\n const guards = subRoom.constructor[\"_actionGuards\"]?.get(actionName.key) || [];\n for (const guard of guards) {\n const isAuthorized = await guard(sender, result.data.value);\n if (!isAuthorized) {\n return;\n }\n }\n if (actionName.bodyValidation) {\n const bodyResult = actionName.bodyValidation.safeParse(result.data.value);\n if (!bodyResult.success) {\n return;\n }\n }\n await awaitReturn(subRoom[actionName.key](user, result.data.value, sender));\n }\n }\n }\n /**\n * @method handleShardMessage\n * @private\n * @async\n * @param {string} message - The message received from a shard.\n * @param {Party.Connection} shardConnection - The connection object of the shard.\n * @description Processes messages from shards, extracting client information.\n * @returns {Promise<void>}\n */\n async handleShardMessage(message, shardConnection) {\n let parsedMessage;\n try {\n parsedMessage = JSON.parse(message);\n } catch (e) {\n console.error(\"Error parsing shard message:\", e);\n return;\n }\n const shardState = shardConnection.state;\n const clients = shardState.clients;\n switch (parsedMessage.type) {\n case \"shard.clientConnected\":\n await this.handleShardClientConnect(parsedMessage, shardConnection);\n break;\n case \"shard.clientMessage\":\n await this.handleShardClientMessage(parsedMessage, shardConnection);\n break;\n case \"shard.clientDisconnected\":\n await this.handleShardClientDisconnect(parsedMessage, shardConnection);\n break;\n default:\n console.warn(`Unknown shard message type: ${parsedMessage.type}`);\n }\n }\n /**\n * @method handleShardClientConnect\n * @private\n * @async\n * @param {Object} message - The client connection message from a shard.\n * @param {Party.Connection} shardConnection - The connection object of the shard.\n * @description Handles a new client connection via a shard.\n * @returns {Promise<void>}\n */\n async handleShardClientConnect(message, shardConnection) {\n const { privateId, requestInfo } = message;\n const shardState = shardConnection.state;\n const virtualContext = {\n request: requestInfo ? {\n headers: new Headers(requestInfo.headers),\n method: requestInfo.method,\n url: requestInfo.url\n } : void 0\n };\n const virtualConnection = {\n id: privateId,\n send: /* @__PURE__ */ __name((data) => {\n shardConnection.send(JSON.stringify({\n targetClientId: privateId,\n data\n }));\n }, \"send\"),\n state: {},\n setState: /* @__PURE__ */ __name((state) => {\n const clients = shardState.clients;\n const currentState = clients.get(privateId) || {};\n const mergedState = Object.assign({}, currentState, state);\n clients.set(privateId, mergedState);\n virtualConnection.state = clients.get(privateId);\n return virtualConnection.state;\n }, \"setState\"),\n close: /* @__PURE__ */ __name(() => {\n shardConnection.send(JSON.stringify({\n type: \"shard.closeClient\",\n privateId\n }));\n if (shardState.clients) {\n shardState.clients.delete(privateId);\n }\n }, \"close\")\n };\n if (!shardState.clients.has(privateId)) {\n shardState.clients.set(privateId, {});\n }\n await this.onConnectClient(virtualConnection, virtualContext);\n }\n /**\n * @method handleShardClientMessage\n * @private\n * @async\n * @param {Object} message - The client message from a shard.\n * @param {Party.Connection} shardConnection - The connection object of the shard.\n * @description Handles a message from a client via a shard.\n * @returns {Promise<void>}\n */\n async handleShardClientMessage(message, shardConnection) {\n const { privateId, publicId, payload } = message;\n const shardState = shardConnection.state;\n const clients = shardState.clients;\n if (!clients.has(privateId)) {\n console.warn(`Received message from unknown client ${privateId}, creating virtual connection`);\n clients.set(privateId, {\n publicId\n });\n }\n const virtualConnection = {\n id: privateId,\n send: /* @__PURE__ */ __name((data) => {\n shardConnection.send(JSON.stringify({\n targetClientId: privateId,\n data\n }));\n }, \"send\"),\n state: clients.get(privateId),\n setState: /* @__PURE__ */ __name((state) => {\n const currentState = clients.get(privateId) || {};\n const mergedState = Object.assign({}, currentState, state);\n clients.set(privateId, mergedState);\n virtualConnection.state = clients.get(privateId);\n return virtualConnection.state;\n }, \"setState\"),\n close: /* @__PURE__ */ __name(() => {\n shardConnection.send(JSON.stringify({\n type: \"shard.closeClient\",\n privateId\n }));\n if (shardState.clients) {\n shardState.clients.delete(privateId);\n }\n }, \"close\")\n };\n const payloadString = typeof payload === \"string\" ? payload : JSON.stringify(payload);\n await this.onMessage(payloadString, virtualConnection);\n }\n /**\n * @method handleShardClientDisconnect\n * @private\n * @async\n * @param {Object} message - The client disconnection message from a shard.\n * @param {Party.Connection} shardConnection - The connection object of the shard.\n * @description Handles a client disconnection via a shard.\n * @returns {Promise<void>}\n */\n async handleShardClientDisconnect(message, shardConnection) {\n const { privateId, publicId } = message;\n const shardState = shardConnection.state;\n const clients = shardState.clients;\n const clientState = clients.get(privateId);\n if (!clientState) {\n console.warn(`Disconnection for unknown client ${privateId}`);\n return;\n }\n const virtualConnection = {\n id: privateId,\n send: /* @__PURE__ */ __name(() => {\n }, \"send\"),\n state: clientState,\n setState: /* @__PURE__ */ __name(() => {\n return {};\n }, \"setState\"),\n close: /* @__PURE__ */ __name(() => {\n }, \"close\")\n };\n await this.onClose(virtualConnection);\n clients.delete(privateId);\n }\n /**\n * @method onClose\n * @async\n * @param {Party.Connection} conn - The connection object of the disconnecting user.\n * @description Handles user disconnection, removing them from the room and triggering the onLeave event.\n * @returns {Promise<void>}\n * \n * @example\n * ```typescript\n * server.onClose = async (conn) => {\n * await server.onClose(conn);\n * console.log(\"User disconnected:\", conn.id);\n * };\n * ```\n */\n async onClose(conn) {\n const subRoom = await this.getSubRoom();\n if (!subRoom) {\n return;\n }\n const signal2 = this.getUsersProperty(subRoom);\n if (!conn.state) {\n return;\n }\n const privateId = conn.id;\n const { publicId } = conn.state;\n const user = signal2?.()[publicId];\n if (!user) return;\n await this.updateSessionConnection(privateId, false);\n const connectionUpdated = this.updateUserConnectionStatus(user, false);\n await awaitReturn(subRoom[\"onLeave\"]?.(user, conn));\n if (!connectionUpdated) {\n this.broadcast({\n type: \"user_disconnected\",\n value: {\n publicId\n }\n }, subRoom);\n }\n }\n async onAlarm() {\n const subRoom = await this.getSubRoom();\n await awaitReturn(subRoom[\"onAlarm\"]?.(subRoom));\n }\n async onError(connection, error) {\n const subRoom = await this.getSubRoom();\n await awaitReturn(subRoom[\"onError\"]?.(connection, error));\n }\n /**\n * @method onRequest\n * @async\n * @param {Party.Request} req - The HTTP request to handle\n * @description Handles HTTP requests, either directly from clients or forwarded by shards\n * @returns {Promise<Response>} The response to return to the client\n */\n async onRequest(req) {\n const isFromShard = req.headers.has(\"x-forwarded-by-shard\");\n const shardId = req.headers.get(\"x-shard-id\");\n const res = new ServerResponse([\n createCorsInterceptor()\n ]);\n if (req.method === \"OPTIONS\") {\n return res.status(200).send({});\n }\n if (isFromShard) {\n return this.handleShardRequest(req, res, shardId);\n }\n return this.handleDirectRequest(req, res);\n }\n /**\n * @method handleDirectRequest\n * @private\n * @async\n * @param {Party.Request} req - The HTTP request received directly from a client\n * @description Processes requests received directly from clients\n * @returns {Promise<Response>} The response to return to the client\n */\n async handleDirectRequest(req, res) {\n const subRoom = await this.getSubRoom();\n if (!subRoom) {\n return res.notFound();\n }\n const response2 = await this.tryMatchRequestHandler(req, res, subRoom);\n if (response2) {\n return response2;\n }\n const legacyResponse = await awaitReturn(subRoom[\"onRequest\"]?.(req, res));\n if (!legacyResponse) {\n return res.notFound();\n }\n if (legacyResponse instanceof Response) {\n return legacyResponse;\n }\n return res.success(legacyResponse);\n }\n /**\n * @method tryMatchRequestHandler\n * @private\n * @async\n * @param {Party.Request} req - The HTTP request to handle\n * @param {Object} subRoom - The room instance\n * @description Attempts to match the request to a registered @Request handler\n * @returns {Promise<Response | null>} The response or null if no handler matched\n */\n async tryMatchRequestHandler(req, res, subRoom) {\n const requestHandlers = subRoom.constructor[\"_requestMetadata\"];\n if (!requestHandlers) {\n return null;\n }\n const url = new URL(req.url);\n const method = req.method;\n let pathname = url.pathname;\n pathname = \"/\" + pathname.split(\"/\").slice(4).join(\"/\");\n for (const [routeKey, handler] of requestHandlers.entries()) {\n const firstColonIndex = routeKey.indexOf(\":\");\n const handlerMethod = routeKey.substring(0, firstColonIndex);\n const handlerPath = routeKey.substring(firstColonIndex + 1);\n if (handlerMethod !== method) {\n continue;\n }\n if (this.pathMatches(pathname, handlerPath)) {\n const params = this.extractPathParams(pathname, handlerPath);\n const guards = subRoom.constructor[\"_actionGuards\"]?.get(handler.key) || [];\n for (const guard of guards) {\n const isAuthorized = await guard(null, req, this.room);\n if (isAuthorized instanceof Response) {\n return isAuthorized;\n }\n if (!isAuthorized) {\n return res.notPermitted();\n }\n }\n let bodyData = null;\n if (handler.bodyValidation && [\n \"POST\",\n \"PUT\",\n \"PATCH\"\n ].includes(method)) {\n try {\n const contentType = req.headers.get(\"content-type\") || \"\";\n if (contentType.includes(\"application/json\")) {\n const body = await req.json();\n const validation = handler.bodyValidation.safeParse(body);\n if (!validation.success) {\n return res.badRequest(\"Invalid request body\", {\n details: validation.error\n });\n }\n bodyData = validation.data;\n }\n } catch (error) {\n return res.badRequest(\"Failed to parse request body\");\n }\n }\n try {\n req[\"data\"] = bodyData;\n req[\"params\"] = params;\n const result = await awaitReturn(subRoom[handler.key](req, res));\n if (result instanceof Response) {\n return result;\n }\n return res.success(result);\n } catch (error) {\n console.error(\"Error executing request handler:\", error);\n return res.serverError();\n }\n }\n }\n return null;\n }\n /**\n * @method pathMatches\n * @private\n * @param {string} requestPath - The path from the request\n * @param {string} handlerPath - The path pattern from the handler\n * @description Checks if a request path matches a handler path pattern\n * @returns {boolean} True if the paths match\n */\n pathMatches(requestPath, handlerPath) {\n const pathRegexString = handlerPath.replace(/\\//g, \"\\\\/\").replace(/:([^\\/]+)/g, \"([^/]+)\");\n const pathRegex = new RegExp(`^${pathRegexString}$`);\n return pathRegex.test(requestPath);\n }\n /**\n * @method extractPathParams\n * @private\n * @param {string} requestPath - The path from the request\n * @param {string} handlerPath - The path pattern from the handler\n * @description Extracts path parameters from the request path based on the handler pattern\n * @returns {Object} An object containing the path parameters\n */\n extractPathParams(requestPath, handlerPath) {\n const params = {};\n const paramNames = [];\n handlerPath.split(\"/\").forEach((segment) => {\n if (segment.startsWith(\":\")) {\n paramNames.push(segment.substring(1));\n }\n });\n const pathRegexString = handlerPath.replace(/\\//g, \"\\\\/\").replace(/:([^\\/]+)/g, \"([^/]+)\");\n const pathRegex = new RegExp(`^${pathRegexString}$`);\n const matches = requestPath.match(pathRegex);\n if (matches && matches.length > 1) {\n for (let i = 0; i < paramNames.length; i++) {\n params[paramNames[i]] = matches[i + 1];\n }\n }\n return params;\n }\n /**\n * @method handleShardRequest\n * @private\n * @async\n * @param {Party.Request} req - The HTTP request forwarded by a shard\n * @param {string | null} shardId - The ID of the shard that forwarded the request\n * @description Processes requests forwarded by shards, preserving client context\n * @returns {Promise<Response>} The response to return to the shard (which will forward it to the client)\n */\n async handleShardRequest(req, res, shardId) {\n const subRoom = await this.getSubRoom();\n if (!subRoom) {\n return res.notFound();\n }\n const originalClientIp = req.headers.get(\"x-original-client-ip\");\n const enhancedReq = this.createEnhancedRequest(req, originalClientIp);\n try {\n const response2 = await this.tryMatchRequestHandler(enhancedReq, res, subRoom);\n if (response2) {\n return response2;\n }\n const legacyResponse = await awaitReturn(subRoom[\"onRequest\"]?.(enhancedReq, res));\n if (!legacyResponse) {\n return res.notFound();\n }\n if (legacyResponse instanceof Response) {\n return legacyResponse;\n }\n return res.success(legacyResponse);\n } catch (error) {\n console.error(`Error processing request from shard ${shardId}:`, error);\n return res.serverError();\n }\n }\n /**\n * @method createEnhancedRequest\n * @private\n * @param {Party.Request} originalReq - The original request received from the shard\n * @param {string | null} originalClientIp - The original client IP, if available\n * @description Creates an enhanced request object that preserves the original client context\n * @returns {Party.Request} The enhanced request object\n */\n createEnhancedRequest(originalReq, originalClientIp) {\n const clonedReq = originalReq.clone();\n clonedReq.viaShard = true;\n if (originalClientIp) {\n clonedReq.originalClientIp = originalClientIp;\n }\n return clonedReq;\n }\n};\n\n// src/shard.ts\nvar Shard = class {\n static {\n __name(this, \"Shard\");\n }\n room;\n ws;\n connectionMap;\n mainServerStub;\n worldUrl;\n worldId;\n lastReportedConnections;\n statsInterval;\n statsIntervalId;\n constructor(room) {\n this.room = room;\n this.connectionMap = /* @__PURE__ */ new Map();\n this.worldUrl = null;\n this.worldId = \"default\";\n this.lastReportedConnections = 0;\n this.statsInterval = 3e4;\n this.statsIntervalId = null;\n }\n async onStart() {\n const roomId = this.room.id.split(\":\")[0];\n const roomStub = this.room.context.parties.main.get(roomId);\n if (!roomStub) {\n console.warn(\"No room room stub found in main party context\");\n return;\n }\n this.mainServerStub = roomStub;\n this.ws = await roomStub.socket({\n headers: {\n \"x-shard-id\": this.room.id\n }\n });\n this.ws.addEventListener(\"message\", (event) => {\n try {\n const message = JSON.parse(event.data);\n if (message.targetClientId) {\n const clientConn = this.connectionMap.get(message.targetClientId);\n if (clientConn) {\n delete message.targetClientId;\n clientConn.send(message.data);\n }\n } else {\n this.room.broadcast(event.data);\n }\n } catch (error) {\n console.error(\"Error processing message from main server:\", error);\n }\n });\n await this.updateWorldStats();\n this.startPeriodicStatsUpdates();\n }\n startPeriodicStatsUpdates() {\n if (!this.worldUrl) {\n return;\n }\n if (this.statsIntervalId) {\n clearInterval(this.statsIntervalId);\n }\n this.statsIntervalId = setInterval(() => {\n this.updateWorldStats().catch((error) => {\n console.error(\"Error in periodic stats update:\", error);\n });\n }, this.statsInterval);\n }\n stopPeriodicStatsUpdates() {\n if (this.statsIntervalId) {\n clearInterval(this.statsIntervalId);\n this.statsIntervalId = null;\n }\n }\n onConnect(conn, ctx) {\n this.connectionMap.set(conn.id, conn);\n const headers = {};\n if (ctx.request?.headers) {\n ctx.request.headers.forEach((value, key) => {\n headers[key] = value;\n });\n }\n const requestInfo = ctx.request ? {\n headers,\n url: ctx.request.url,\n method: ctx.request.method\n } : null;\n this.ws.send(JSON.stringify({\n type: \"shard.clientConnected\",\n privateId: conn.id,\n requestInfo\n }));\n this.updateWorldStats();\n }\n onMessage(message, sender) {\n try {\n const parsedMessage = typeof message === \"string\" ? JSON.parse(message) : message;\n const wrappedMessage = JSON.stringify({\n type: \"shard.clientMessage\",\n privateId: sender.id,\n publicId: sender.state?.publicId,\n payload: parsedMessage\n });\n this.ws.send(wrappedMessage);\n } catch (error) {\n console.error(\"Error forwarding message to main server:\", error);\n }\n }\n onClose(conn) {\n this.connectionMap.delete(conn.id);\n this.ws.send(JSON.stringify({\n type: \"shard.clientDisconnected\",\n privateId: conn.id,\n publicId: conn.state?.publicId\n }));\n this.updateWorldStats();\n }\n async updateWorldStats() {\n const currentConnections = this.connectionMap.size;\n if (currentConnections === this.lastReportedConnections) {\n return true;\n }\n try {\n const worldRoom = this.room.context.parties.world.get(\"world-default\");\n const response2 = await worldRoom.fetch(\"/update-shard\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"x-access-shard\": this.room.env.SHARD_SECRET\n },\n body: JSON.stringify({\n shardId: this.room.id,\n connections: currentConnections\n })\n });\n if (!response2.ok) {\n const errorData = await response2.json().catch(() => ({\n error: \"Unknown error\"\n }));\n console.error(`Failed to update World stats: ${response2.status} - ${errorData.error || \"Unknown error\"}`);\n return false;\n }\n this.lastReportedConnections = currentConnections;\n return true;\n } catch (error) {\n console.error(\"Error updating World stats:\", error);\n return false;\n }\n }\n /**\n * @method onRequest\n * @async\n * @param {Party.Request} req - The HTTP request to handle\n * @description Forwards HTTP requests to the main server, preserving client context\n * @returns {Promise<Response>} The response from the main server\n */\n async onRequest(req) {\n if (!this.mainServerStub) {\n return response(503, {\n error: \"Shard not connected to main server\"\n });\n }\n try {\n const url = new URL(req.url);\n const path = url.pathname;\n const method = req.method;\n let body = null;\n if (method !== \"GET\" && method !== \"HEAD\") {\n body = await req.text();\n }\n const headers = new Headers();\n req.headers.forEach((value, key) => {\n headers.set(key, value);\n });\n headers.set(\"x-shard-id\", this.room.id);\n headers.set(\"x-forwarded-by-shard\", \"true\");\n const clientIp = req.headers.get(\"x-forwarded-for\") || \"unknown\";\n if (clientIp) {\n headers.set(\"x-original-client-ip\", clientIp);\n }\n const requestInit = {\n method,\n headers,\n body\n };\n const response2 = await this.mainServerStub.fetch(path, requestInit);\n return response2;\n } catch (error) {\n return response(500, {\n error: \"Error forwarding request\"\n });\n }\n }\n /**\n * @method onAlarm\n * @async\n * @description Executed periodically, used to perform maintenance tasks\n */\n async onAlarm() {\n await this.updateWorldStats();\n }\n};\n\n// src/testing.ts\nasync function testRoom(Room3, options = {}) {\n const createServer = /* @__PURE__ */ __name((io2) => {\n const server2 = new Server(io2);\n server2.rooms = [\n Room3\n ];\n return server2;\n }, \"createServer\");\n const isShard = options.shard || false;\n const io = new ServerIo(Room3.path, isShard ? {\n parties: {\n game: createServer\n },\n env: options.env\n } : {\n env: options.env\n });\n Room3.prototype.throttleSync = 0;\n Room3.prototype.throttleStorage = 0;\n Room3.prototype.options = options;\n let server;\n if (options.shard) {\n const shardServer = new Shard(io);\n shardServer.subRoom = null;\n server = shardServer;\n for (const lobby of io.context.parties.main.values()) {\n await lobby.server.onStart();\n }\n } else {\n server = await createServer(io);\n }\n await server.onStart();\n return {\n server,\n room: server.subRoom,\n createClient: /* @__PURE__ */ __name(async (id2) => {\n const client = await io.connection(server, id2);\n return client;\n }, \"createClient\")\n };\n}\n__name(testRoom, \"testRoom\");\nasync function request(room, path, options = {\n method: \"GET\"\n}) {\n const url = new URL(\"http://localhost\" + path);\n const request1 = new Request(url.toString(), options);\n const response2 = await room.onRequest(request1);\n return response2;\n}\n__name(request, \"request\");\n\n// src/mock.ts\nvar MockPartyClient = class {\n static {\n __name(this, \"MockPartyClient\");\n }\n server;\n events;\n id;\n conn;\n constructor(server, id2) {\n this.server = server;\n this.events = /* @__PURE__ */ new Map();\n this.id = id2 || generateShortUUID();\n this.conn = new MockConnection(this);\n }\n addEventListener(event, cb) {\n if (!this.events.has(event)) {\n this.events.set(event, []);\n }\n this.events.get(event).push(cb);\n }\n removeEventListener(event, cb) {\n if (!this.events.has(event)) return;\n const callbacks = this.events.get(event);\n const index = callbacks.indexOf(cb);\n if (index !== -1) {\n callbacks.splice(index, 1);\n }\n if (callbacks.length === 0) {\n this.events.delete(event);\n }\n }\n _trigger(event, data) {\n const callbacks = this.events.get(event);\n if (callbacks) {\n for (const cb of callbacks) {\n cb(data);\n }\n }\n }\n send(data) {\n return this.server.onMessage(JSON.stringify(data), this.conn);\n }\n};\nvar MockLobby = class MockLobby2 {\n static {\n __name(this, \"MockLobby\");\n }\n server;\n constructor(server) {\n this.server = server;\n }\n socket() {\n return new MockPartyClient(this.server);\n }\n fetch(url, options) {\n return request(this.server, url, options);\n }\n};\nvar MockContext = class MockContext2 {\n static {\n __name(this, \"MockContext\");\n }\n room;\n parties;\n constructor(room, options = {}) {\n this.room = room;\n this.parties = {\n main: /* @__PURE__ */ new Map()\n };\n const parties = options.parties || {};\n for (let lobbyId in parties) {\n this.parties.main.set(lobbyId, new MockLobby(parties[lobbyId](room)));\n }\n }\n};\nvar MockPartyRoom = class MockPartyRoom2 {\n static {\n __name(this, \"MockPartyRoom\");\n }\n id;\n clients;\n storage;\n context;\n env;\n constructor(id2, options = {}) {\n this.id = id2;\n this.clients = /* @__PURE__ */ new Map();\n this.storage = new Storage();\n this.env = {};\n this.id = id2 || generateShortUUID();\n this.context = new MockContext(this, {\n parties: options.parties || {}\n });\n this.env = options.env || {};\n }\n async connection(server, id2) {\n const socket = new MockPartyClient(server, id2);\n const url = new URL(\"http://localhost\");\n const request2 = new Request(url.toString(), {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n await server.onConnect(socket.conn, {\n request: request2\n });\n this.clients.set(socket.id, socket);\n return socket;\n }\n broadcast(data) {\n this.clients.forEach((client) => {\n client._trigger(\"message\", data);\n });\n }\n getConnection(id2) {\n return this.clients.get(id2);\n }\n getConnections() {\n return Array.from(this.clients.values()).map((client) => client.conn);\n }\n clear() {\n this.clients.clear();\n }\n};\nvar MockConnection = class {\n static {\n __name(this, \"MockConnection\");\n }\n client;\n server;\n id;\n constructor(client) {\n this.client = client;\n this.state = {};\n this.server = client.server;\n this.id = client.id;\n }\n state;\n setState(value) {\n this.state = value;\n }\n send(data) {\n this.client._trigger(\"message\", data);\n }\n close() {\n this.server.onClose(this);\n }\n};\nvar ServerIo = MockPartyRoom;\nvar ClientIo = MockPartyClient;\n\n// src/world.ts\nimport { signal } from \"@signe/reactive\";\nimport { sync, id, persist } from \"@signe/sync\";\nimport { z as z2 } from \"zod\";\n\n// src/types/party.ts\nvar party_exports = {};\n\n// src/jwt.ts\nvar JWTAuth = class {\n static {\n __name(this, \"JWTAuth\");\n }\n secret;\n encoder;\n decoder;\n /**\n * Constructor for the JWTAuth class\n * @param {string} secret - The secret key used for signing and verifying tokens\n */\n constructor(secret) {\n if (!secret || typeof secret !== \"string\") {\n throw new Error(\"Secret is required and must be a string\");\n }\n this.secret = secret;\n this.encoder = new TextEncoder();\n this.decoder = new TextDecoder();\n }\n /**\n * Convert the secret to a CryptoKey for HMAC operations\n * @returns {Promise<CryptoKey>} - The CryptoKey for HMAC operations\n */\n async getSecretKey() {\n const keyData = this.encoder.encode(this.secret);\n return await crypto.subtle.importKey(\n \"raw\",\n keyData,\n {\n name: \"HMAC\",\n hash: {\n name: \"SHA-256\"\n }\n },\n false,\n [\n \"sign\",\n \"verify\"\n ]\n // key usages\n );\n }\n /**\n * Base64Url encode a buffer\n * @param {ArrayBuffer} buffer - The buffer to encode\n * @returns {string} - The base64url encoded string\n */\n base64UrlEncode(buffer) {\n const base64 = btoa(String.fromCharCode(...new Uint8Array(buffer)));\n return base64.replace(/=/g, \"\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n }\n /**\n * Base64Url decode a string\n * @param {string} base64Url - The base64url encoded string\n * @returns {ArrayBuffer} - The decoded buffer\n */\n base64UrlDecode(base64Url) {\n const padding = \"=\".repeat((4 - base64Url.length % 4) % 4);\n const base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\") + padding;\n const rawData = atob(base64);\n const buffer = new Uint8Array(rawData.length);\n for (let i = 0; i < rawData.length; i++) {\n buffer[i] = rawData.charCodeAt(i);\n }\n return buffer.buffer;\n }\n /**\n * Sign a payload and create a JWT token\n * @param {JWTPayload} payload - The payload to include in the token\n * @param {JWTOptions} [options={}] - Options for the token\n * @param {string | number} [options.expiresIn='1h'] - Token expiration time\n * @returns {Promise<string>} - The JWT token\n */\n async sign(payload, options = {}) {\n if (!payload || typeof payload !== \"object\") {\n throw new Error(\"Payload must be an object\");\n }\n const expiresIn = options.expiresIn || \"1h\";\n let exp;\n if (typeof expiresIn === \"number\") {\n exp = Math.floor(Date.now() / 1e3) + expiresIn;\n } else if (typeof expiresIn === \"string\") {\n const match = expiresIn.match(/^(\\d+)([smhd])$/);\n if (match) {\n const value = parseInt(match[1]);\n const unit = match[2];\n const seconds = {\n \"s\": value,\n \"m\": value * 60,\n \"h\": value * 60 * 60,\n \"d\": value * 60 * 60 * 24\n }[unit];\n exp = Math.floor(Date.now() / 1e3) + seconds;\n } else {\n throw new Error('Invalid expiresIn format. Use a number (seconds) or a string like \"1h\", \"30m\", etc.');\n }\n }\n const fullPayload = {\n ...payload,\n iat: Math.floor(Date.now() / 1e3),\n exp\n };\n const header = {\n alg: \"HS256\",\n typ: \"JWT\"\n };\n const encodedHeader = this.base64UrlEncode(this.encoder.encode(JSON.stringify(header)));\n const encodedPayload = this.base64UrlEncode(this.encoder.encode(JSON.stringify(fullPayload)));\n const signatureBase = `${encodedHeader}.${encodedPayload}`;\n const key = await this.getSecretKey();\n const signature = await crypto.subtle.sign({\n name: \"HMAC\"\n }, key, this.encoder.encode(signatureBase));\n const encodedSignature = this.base64UrlEncode(signature);\n return `${signatureBase}.${encodedSignature}`;\n }\n /**\n * Verify a JWT token and return the decoded payload\n * @param {string} token - The JWT token to verify\n * @returns {Promise<JWTPayload>} - The decoded payload if verification succeeds\n * @throws {Error} - If verification fails\n */\n async verify(token) {\n if (!token || typeof token !== \"string\") {\n throw new Error(\"Token is required and must be a string\");\n }\n const parts = token.split(\".\");\n if (parts.length !== 3) {\n throw new Error(\"Invalid token format\");\n }\n const [encodedHeader, encodedPayload, encodedSignature] = parts;\n try {\n const header = JSON.parse(this.decoder.decode(this.base64UrlDecode(encodedHeader)));\n const payload = JSON.parse(this.decoder.decode(this.base64UrlDecode(encodedPayload)));\n if (header.alg !== \"HS256\") {\n throw new Error(`Unsupported algorithm: ${header.alg}`);\n }\n const now = Math.floor(Date.now() / 1e3);\n if (payload.exp && payload.exp < now) {\n throw new Error(\"Token has expired\");\n }\n const key = await this.getSecretKey();\n const signatureBase = `${encodedHeader}.${encodedPayload}`;\n const signature = this.base64UrlDecode(encodedSignature);\n const isValid = await crypto.subtle.verify({\n name: \"HMAC\"\n }, key, signature, this.encoder.encode(signatureBase));\n if (!isValid) {\n throw new Error(\"Invalid signature\");\n }\n return payload;\n } catch (error) {\n if (error instanceof Error) {\n throw new Error(`Token verification failed: ${error.message}`);\n }\n throw new Error(\"Token verification failed: Unknown error\");\n }\n }\n};\n\n// src/world.guard.ts\nvar guardManageWorld = /* @__PURE__ */ __name(async (_, req, room) => {\n const tokenShard = req.headers.get(\"x-access-shard\");\n if (tokenShard) {\n if (tokenShard !== room.env.SHARD_SECRET) {\n return false;\n }\n return true;\n }\n const url = new URL(req.url);\n const token = req.headers.get(\"Authorization\") ?? url.searchParams.get(\"world-auth-token\");\n if (!token) {\n return false;\n }\n const jwt = new JWTAuth(room.env.AUTH_JWT_SECRET);\n try {\n const payload = await jwt.verify(token);\n if (!payload) {\n return false;\n }\n } catch (error) {\n return false;\n }\n return true;\n}, \"guardManageWorld\");\n\n// src/world.ts\nfunction _ts_decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n__name(_ts_decorate, \"_ts_decorate\");\nfunction _ts_metadata(k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n}\n__name(_ts_metadata, \"_ts_metadata\");\nvar MAX_PLAYERS_PER_SHARD = 75;\nvar RoomConfigSchema = z2.object({\n name: z2.string(),\n balancingStrategy: z2.enum([\n \"round-robin\",\n \"least-connections\",\n \"random\"\n ]),\n public: z2.boolean(),\n maxPlayersPerShard: z2.number().int().positive(),\n minShards: z2.number().int().min(0),\n maxShards: z2.number().int().positive().optional()\n});\nvar RegisterShardSchema = z2.object({\n shardId: z2.string(),\n roomId: z2.string(),\n url: z2.string().url(),\n maxConnections: z2.number().int().positive()\n});\nvar UpdateShardStatsSchema = z2.object({\n connections: z2.number().int().min(0),\n status: z2.enum([\n \"active\",\n \"maintenance\",\n \"draining\"\n ]).optional()\n});\nvar ScaleRoomSchema = z2.object({\n roomId: z2.string(),\n targetShardCount: z2.number().int().positive(),\n shardTemplate: z2.object({\n urlTemplate: z2.string(),\n maxConnections: z2.number().int().positive()\n }).optional()\n});\nvar RoomConfig = class RoomConfig2 {\n static {\n __name(this, \"RoomConfig\");\n }\n id;\n name = signal(\"\");\n balancingStrategy = signal(\"round-robin\");\n public = signal(true);\n maxPlayersPerShard = signal(MAX_PLAYERS_PER_SHARD);\n minShards = signal(1);\n maxShards = signal(void 0);\n};\n_ts_decorate([\n id(),\n _ts_metadata(\"design:type\", String)\n], RoomConfig.prototype, \"id\", void 0);\n_ts_decorate([\n sync()\n], RoomConfig.prototype, \"name\", void 0);\n_ts_decorate([\n sync()\n], RoomConfig.prototype, \"balancingStrategy\", void 0);\n_ts_decorate([\n sync()\n], RoomConfig.prototype, \"public\", void 0);\n_ts_decorate([\n sync()\n], RoomConfig.prototype, \"maxPlayersPerShard\", void 0);\n_ts_decorate([\n sync()\n], RoomConfig.prototype, \"minShards\", void 0);\n_ts_decorate([\n sync()\n], RoomConfig.prototype, \"maxShards\", void 0);\nvar ShardInfo = class ShardInfo2 {\n static {\n __name(this, \"ShardInfo\");\n }\n id;\n roomId = signal(\"\");\n url = signal(\"\");\n currentConnections = signal(0);\n maxConnections = signal(MAX_PLAYERS_PER_SHARD);\n status = signal(\"active\");\n lastHeartbeat = signal(0);\n};\n_ts_decorate([\n id(),\n _ts_metadata(\"design:type\", String)\n], ShardInfo.prototype, \"id\", void 0);\n_ts_decorate([\n sync()\n], ShardInfo.prototype, \"roomId\", void 0);\n_ts_decorate([\n sync()\n], ShardInfo.prototype, \"url\", void 0);\n_ts_decorate([\n sync({\n persist: false\n })\n], ShardInfo.prototype, \"currentConnections\", void 0);\n_ts_decorate([\n sync()\n], ShardInfo.prototype, \"maxConnections\", void 0);\n_ts_decorate([\n sync()\n], ShardInfo.prototype, \"status\", void 0);\n_ts_decorate([\n sync()\n], ShardInfo.prototype, \"lastHeartbeat\", void 0);\nvar WorldRoom = class {\n static {\n __name(this, \"WorldRoom\");\n }\n room;\n // Synchronized state\n rooms;\n shards;\n // Only persisted state (not synced to clients)\n rrCounters;\n // Configuration\n defaultShardUrlTemplate;\n defaultMaxConnectionsPerShard;\n constructor(room) {\n this.room = room;\n this.rooms = signal({});\n this.shards = signal({});\n this.rrCounters = signal({});\n this.defaultShardUrlTemplate = signal(\"{shardId}\");\n this.defaultMaxConnectionsPerShard = signal(MAX_PLAYERS_PER_SHARD);\n const { AUTH_JWT_SECRET, SHARD_SECRET } = this.room.env;\n if (!AUTH_JWT_SECRET) {\n throw new Error(\"AUTH_JWT_SECRET env variable is not set\");\n }\n if (!SHARD_SECRET) {\n throw new Error(\"SHARD_SECRET env variable is not set\");\n }\n }\n async onJoin(user, conn, ctx) {\n const canConnect = await guardManageWorld(user, ctx.request, this.room);\n conn.setState({\n ...conn.state,\n isAdmin: canConnect\n });\n }\n interceptorPacket(_, obj, conn) {\n if (!conn.state[\"isAdmin\"]) {\n return null;\n }\n return obj;\n }\n // Helper methods\n cleanupInactiveShards() {\n const now = Date.now();\n const timeout = 5 * 60 * 1e3;\n const shardsValue = this.shards();\n let hasChanges = false;\n Object.values(shardsValue).forEach((shard) => {\n if (now - shard.lastHeartbeat() > timeout) {\n delete this.shards()[shard.id];\n hasChanges = true;\n }\n });\n setTimeout(() => this.cleanupInactiveShards(), 6e4);\n }\n // Actions\n async registerRoom(req) {\n const roomConfig = await req.json();\n const roomId = roomConfig.name;\n if (!this.rooms()[roomId]) {\n const newRoom = new RoomConfig();\n newRoom.id = roomId;\n newRoom.name.set(roomConfig.name);\n newRoom.balancingStrategy.set(roomConfig.balancingStrategy);\n newRoom.public.set(roomConfig.public);\n newRoom.maxPlayersPerShard.set(roomConfig.maxPlayersPerShard);\n newRoom.minShards.set(roomConfig.minShards);\n newRoom.maxShards.set(roomConfig.maxShards);\n this.rooms()[roomId] = newRoom;\n if (roomConfig.minShards > 0) {\n for (let i = 0; i < roomConfig.minShards; i++) {\n await this.createShard(roomId);\n }\n }\n } else {\n const room = this.rooms()[roomId];\n room.balancingStrategy.set(roomConfig.balancingStrategy);\n room.public.set(roomConfig.public);\n room.maxPlayersPerShard.set(roomConfig.maxPlayersPerShard);\n room.minShards.set(roomConfig.minShards);\n room.maxShards.set(roomConfig.maxShards);\n }\n }\n async updateShardStats(req, res) {\n const body = await req.json();\n const { shardId, connections, status } = body;\n const shard = this.shards()[shardId];\n if (!shard) {\n return res.notFound(`Shard ${shardId} not found`);\n }\n shard.currentConnections.set(connections);\n if (status) {\n shard.status.set(status);\n }\n shard.lastHeartbeat.set(Date.now());\n }\n async scaleRoom(req, res) {\n const data = await req.json();\n const { targetShardCount, shardTemplate, roomId } = data;\n const room = this.rooms()[roomId];\n if (!room) {\n return res.notFound(`Room ${roomId} does not exist`);\n }\n const roomShards = Object.values(this.shards()).filter((shard) => shard.roomId() === roomId);\n const previousShardCount = roomShards.length;\n if (room.maxShards() !== void 0 && targetShardCount > room.maxShards()) {\n return res.badRequest(`Cannot scale beyond maximum allowed shards (${room.maxShards()})`, {\n roomId,\n currentShardCount: previousShardCount\n });\n }\n if (targetShardCount < previousShardCount) {\n const shardsToRemove = [\n ...roomShards\n ].sort((a, b) => {\n if (a.status() === \"draining\" && b.status() !== \"draining\") return -1;\n if (a.status() !== \"draining\" && b.status() === \"draining\") return 1;\n return a.currentConnections() - b.currentConnections();\n }).slice(0, previousShardCount - targetShardCount);\n const shardsToKeep = roomShards.filter((shard) => !shardsToRemove.some((s) => s.id === shard.id));\n for (const shard of shardsToRemove) {\n delete this.shards()[shard.id];\n }\n return;\n }\n if (targetShardCount > previousShardCount) {\n const newShards = [];\n for (let i = 0; i < targetShardCount - previousShardCount; i++) {\n const newShard = await this.createShard(roomId, shardTemplate?.urlTemplate, shardTemplate?.maxConnections);\n if (newShard) {\n newShards.push(newShard);\n }\n }\n }\n }\n async connect(req, res) {\n try {\n let data;\n try {\n const body = await req.text();\n if (!body || body.trim() === \"\") {\n return res.badRequest(\"Request body is empty\");\n }\n data = JSON.parse(body);\n } catch (parseError) {\n return res.badRequest(\"Invalid JSON in request body\");\n }\n if (!data.roomId) {\n return res.badRequest(\"roomId parameter is required\");\n }\n const autoCreate = data.autoCreate !== void 0 ? data.autoCreate : true;\n const result = await this.findOptimalShard(data.roomId, autoCreate);\n if (\"error\" in result) {\n return res.notFound(result.error);\n }\n return res.success({\n success: true,\n shardId: result.shardId,\n url: result.url\n });\n } catch (error) {\n console.error(\"Error connecting to shard:\", error);\n return res.serverError();\n }\n }\n async findOptimalShard(roomId, autoCreate = true) {\n let room = this.rooms()[roomId];\n if (!room) {\n if (autoCreate) {\n const mockRequest = {\n json: /* @__PURE__ */ __name(async () => ({\n name: roomId,\n balancingStrategy: \"round-robin\",\n public: true,\n maxPlayersPerShard: this.defaultMaxConnectionsPerShard(),\n minShards: 1,\n maxShards: void 0\n }), \"json\")\n };\n await this.registerRoom(mockRequest);\n room = this.rooms()[roomId];\n if (!room) {\n return {\n error: `Failed to create room ${roomId}`\n };\n }\n } else {\n return {\n error: `Room ${roomId} does not exist`\n };\n }\n }\n const roomShards = Object.values(this.shards()).filter((shard) => shard.roomId() === roomId);\n if (roomShards.length === 0) {\n if (autoCreate) {\n const newShard = await this.createShard(roomId);\n if (newShard) {\n return {\n shardId: newShard.id,\n url: newShard.url()\n };\n } else {\n return {\n error: `Failed to create shard for room ${roomId}`\n };\n }\n } else {\n return {\n error: `No shards available for room ${roomId}`\n };\n }\n }\n const activeShards = roomShards.filter((shard) => shard && shard.status() === \"active\");\n if (activeShards.length === 0) {\n return {\n error: `No active shards available for room ${roomId}`\n };\n }\n const balancingStrategy = room.balancingStrategy();\n let selectedShard;\n switch (balancingStrategy) {\n case \"least-connections\":\n selectedShard = activeShards.reduce((min, shard) => shard.currentConnections() < min.currentConnections() ? shard : min, activeShards[0]);\n break;\n case \"random\":\n selectedShard = activeShards[Math.floor(Math.random() * activeShards.length)];\n break;\n case \"round-robin\":\n default:\n const counter = this.rrCounters()[roomId] || 0;\n const nextCounter = (counter + 1) % activeShards.length;\n this.rrCounters()[roomId] = nextCounter;\n selectedShard = activeShards[counter];\n break;\n }\n return {\n shardId: selectedShard.id,\n url: selectedShard.url()\n };\n }\n // Private methods\n async createShard(roomId, urlTemplate, maxConnections) {\n const room = this.rooms()[roomId];\n if (!room) {\n console.error(`Cannot create shard for non-existent room: ${roomId}`);\n return null;\n }\n const shardId = `${roomId}:${Date.now()}-${Math.floor(Math.random() * 1e4)}`;\n const template = urlTemplate || this.defaultShardUrlTemplate();\n const url = template.replace(\"{shardId}\", shardId).replace(\"{roomId}\", roomId);\n const max = maxConnections || room.maxPlayersPerShard();\n const newShard = new ShardInfo();\n newShard.id = shardId;\n newShard.roomId.set(roomId);\n newShard.url.set(url);\n newShard.maxConnections.set(max);\n newShard.currentConnections.set(0);\n newShard.status.set(\"active\");\n newShard.lastHeartbeat.set(Date.now());\n this.shards()[shardId] = newShard;\n return newShard;\n }\n};\n_ts_decorate([\n sync(RoomConfig)\n], WorldRoom.prototype, \"rooms\", void 0);\n_ts_decorate([\n sync(ShardInfo)\n], WorldRoom.prototype, \"shards\", void 0);\n_ts_decorate([\n persist()\n], WorldRoom.prototype, \"rrCounters\", void 0);\n_ts_decorate([\n Request2({\n path: \"register-room\",\n method: \"POST\"\n }),\n Guard([\n guardManageWorld\n ]),\n _ts_metadata(\"design:type\", Function),\n _ts_metadata(\"design:paramtypes\", [\n typeof party_exports === \"undefined\" || typeof void 0 === \"undefined\" ? Object : void 0\n ]),\n _ts_metadata(\"design:returntype\", Promise)\n], WorldRoom.prototype, \"registerRoom\", null);\n_ts_decorate([\n Request2({\n path: \"update-shard\",\n method: \"POST\"\n }),\n Guard([\n guardManageWorld\n ]),\n _ts_metadata(\"design:type\", Function),\n _ts_metadata(\"design:paramtypes\", [\n typeof party_exports === \"undefined\" || typeof void 0 === \"undefined\" ? Object : void 0,\n typeof ServerResponse === \"undefined\" ? Object : ServerResponse\n ]),\n _ts_metadata(\"design:returntype\", Promise)\n], WorldRoom.prototype, \"updateShardStats\", null);\n_ts_decorate([\n Request2({\n path: \"scale-room\",\n method: \"POST\"\n }),\n Guard([\n guardManageWorld\n ]),\n _ts_metadata(\"design:type\", Function),\n _ts_metadata(\"design:paramtypes\", [\n typeof party_exports === \"undefined\" || typeof void 0 === \"undefined\" ? Object : void 0,\n typeof ServerResponse === \"undefined\" ? Object : ServerResponse\n ]),\n _ts_metadata(\"design:returntype\", Promise)\n], WorldRoom.prototype, \"scaleRoom\", null);\n_ts_decorate([\n Request2({\n path: \"connect\",\n method: \"POST\"\n }),\n _ts_metadata(\"design:type\", Function),\n _ts_metadata(\"design:paramtypes\", [\n typeof party_exports === \"undefined\" || typeof void 0 === \"undefined\" ? Object : void 0,\n typeof ServerResponse === \"undefined\" ? Object : ServerResponse\n ]),\n _ts_metadata(\"design:returntype\", Promise)\n], WorldRoom.prototype, \"connect\", null);\nWorldRoom = _ts_decorate([\n Room({\n path: \"world-{worldId}\",\n maxUsers: 100,\n throttleStorage: 2e3,\n throttleSync: 500\n }),\n _ts_metadata(\"design:type\", Function),\n _ts_metadata(\"design:paramtypes\", [\n typeof party_exports === \"undefined\" || typeof void 0 === \"undefined\" ? Object : void 0\n ])\n], WorldRoom);\nexport {\n Action,\n ClientIo,\n Guard,\n MockConnection,\n Request2 as Request,\n Room,\n RoomGuard,\n Server,\n ServerIo,\n ServerResponse,\n Shard,\n WorldRoom,\n request,\n testRoom\n};\n//# sourceMappingURL=index.js.map","function _mergeNamespaces(n, m) {\n for (var i = 0; i < m.length; i++) {\n const e = m[i];\n if (typeof e !== 'string' && !Array.isArray(e)) { for (const k in e) {\n if (k !== 'default' && !(k in n)) {\n const d = Object.getOwnPropertyDescriptor(e, k);\n if (d) {\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: () => e[k]\n });\n }\n }\n } }\n }\n return Object.freeze(Object.defineProperty(n, Symbol.toStringTag, { value: 'Module' }));\n}\n\n/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nfunction __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nfunction __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nfunction __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nfunction __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\nfunction __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nfunction __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nfunction __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nfunction __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nfunction isFunction$2(value) {\n return typeof value === 'function';\n}\n\nfunction createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n\nvar UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n\nfunction arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction$2(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nvar EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nfunction isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction$2(value.remove) && isFunction$2(value.add) && isFunction$2(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction$2(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n\nvar config = {\n Promise: undefined};\n\nvar timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n return (clearTimeout)(handle);\n },\n delegate: undefined,\n};\n\nfunction reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n {\n throw err;\n }\n });\n}\n\nfunction noop() { }\n\nfunction errorContext(cb) {\n {\n cb();\n }\n}\n\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) ;\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) ;\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) ;\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction$2(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nfunction handleUnhandledError(error) {\n {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nvar EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n\nvar observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n\nfunction identity(x) {\n return x;\n}\n\nfunction pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n _this.subscribe(subscriber);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction$2(value.next) && isFunction$2(value.error) && isFunction$2(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n\nfunction hasLift(source) {\n return isFunction$2(source === null || source === void 0 ? void 0 : source.lift);\n}\nfunction operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n\nfunction createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber));\n\nvar ObjectUnsubscribedError = createErrorClass(function (_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n };\n});\n\nvar Subject = (function (_super) {\n __extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.closed = false;\n _this.currentObservers = null;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype._throwIfClosed = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n Subject.prototype.next = function (value) {\n var _this = this;\n errorContext(function () {\n var e_1, _a;\n _this._throwIfClosed();\n if (!_this.isStopped) {\n if (!_this.currentObservers) {\n _this.currentObservers = Array.from(_this.observers);\n }\n try {\n for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n var observer = _c.value;\n observer.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n });\n };\n Subject.prototype.error = function (err) {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n Subject.prototype.complete = function () {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n };\n Object.defineProperty(Subject.prototype, \"observed\", {\n get: function () {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n },\n enumerable: false,\n configurable: true\n });\n Subject.prototype._trySubscribe = function (subscriber) {\n this._throwIfClosed();\n return _super.prototype._trySubscribe.call(this, subscriber);\n };\n Subject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n };\n Subject.prototype._innerSubscribe = function (subscriber) {\n var _this = this;\n var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(function () {\n _this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n };\n Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nvar AnonymousSubject = (function (_super) {\n __extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n AnonymousSubject.prototype.error = function (err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n AnonymousSubject.prototype.complete = function () {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject;\n}(Subject));\n\nvar BehaviorSubject = (function (_super) {\n __extends(BehaviorSubject, _super);\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n _this._value = _value;\n return _this;\n }\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: false,\n configurable: true\n });\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n };\n BehaviorSubject.prototype.getValue = function () {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n };\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, (this._value = value));\n };\n return BehaviorSubject;\n}(Subject));\n\nfunction isScheduler(value) {\n return value && isFunction$2(value.schedule);\n}\n\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nfunction popResultSelector(args) {\n return isFunction$2(last(args)) ? args.pop() : undefined;\n}\nfunction popScheduler(args) {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\n\nvar isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n\nfunction isPromise$1(value) {\n return isFunction$2(value === null || value === void 0 ? void 0 : value.then);\n}\n\nfunction isInteropObservable(input) {\n return isFunction$2(input[observable]);\n}\n\nfunction isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction$2(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n\nfunction createInvalidObservableTypeError(input) {\n return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n\nfunction getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nvar iterator = getSymbolIterator();\n\nfunction isIterable(input) {\n return isFunction$2(input === null || input === void 0 ? void 0 : input[iterator]);\n}\n\nfunction readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n var reader, _a, value, done;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reader = readableStream.getReader();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 9, 10]);\n _b.label = 2;\n case 2:\n return [4, __await(reader.read())];\n case 3:\n _a = _b.sent(), value = _a.value, done = _a.done;\n if (!done) return [3, 5];\n return [4, __await(void 0)];\n case 4: return [2, _b.sent()];\n case 5: return [4, __await(value)];\n case 6: return [4, _b.sent()];\n case 7:\n _b.sent();\n return [3, 2];\n case 8: return [3, 10];\n case 9:\n reader.releaseLock();\n return [7];\n case 10: return [2];\n }\n });\n });\n}\nfunction isReadableStreamLike(obj) {\n return isFunction$2(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n\nfunction innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise$1(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nfunction fromInteropObservable(obj) {\n return new Observable(function (subscriber) {\n var obs = obj[observable]();\n if (isFunction$2(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nfunction fromArrayLike(array) {\n return new Observable(function (subscriber) {\n for (var i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nfunction fromPromise(promise) {\n return new Observable(function (subscriber) {\n promise\n .then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, reportUnhandledError);\n });\n}\nfunction fromIterable(iterable) {\n return new Observable(function (subscriber) {\n var e_1, _a;\n try {\n for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n var value = iterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\nfunction fromAsyncIterable(asyncIterable) {\n return new Observable(function (subscriber) {\n process$1(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n });\n}\nfunction fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process$1(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_2, _a;\n return __awaiter(this, void 0, void 0, function () {\n var value, e_2_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 11]);\n asyncIterable_1 = __asyncValues(asyncIterable);\n _b.label = 1;\n case 1: return [4, asyncIterable_1.next()];\n case 2:\n if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return [2];\n }\n _b.label = 3;\n case 3: return [3, 1];\n case 4: return [3, 11];\n case 5:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3, 11];\n case 6:\n _b.trys.push([6, , 9, 10]);\n if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n return [4, _a.call(asyncIterable_1)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8: return [3, 10];\n case 9:\n if (e_2) throw e_2.error;\n return [7];\n case 10: return [7];\n case 11:\n subscriber.complete();\n return [2];\n }\n });\n });\n}\n\nfunction executeSchedule(parentSubscription, scheduler, work, delay, repeat) {\n if (delay === void 0) { delay = 0; }\n if (repeat === void 0) { repeat = false; }\n var scheduleSubscription = scheduler.schedule(function () {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n }\n else {\n this.unsubscribe();\n }\n }, delay);\n parentSubscription.add(scheduleSubscription);\n if (!repeat) {\n return scheduleSubscription;\n }\n}\n\nfunction observeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return executeSchedule(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return executeSchedule(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return executeSchedule(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));\n });\n}\n\nfunction subscribeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));\n });\n}\n\nfunction scheduleObservable(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n\nfunction schedulePromise(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n\nfunction scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n\nfunction scheduleIterable(input, scheduler) {\n return new Observable(function (subscriber) {\n var iterator$1;\n executeSchedule(subscriber, scheduler, function () {\n iterator$1 = input[iterator]();\n executeSchedule(subscriber, scheduler, function () {\n var _a;\n var value;\n var done;\n try {\n (_a = iterator$1.next(), value = _a.value, done = _a.done);\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n }\n }, 0, true);\n });\n return function () { return isFunction$2(iterator$1 === null || iterator$1 === void 0 ? void 0 : iterator$1.return) && iterator$1.return(); };\n });\n}\n\nfunction scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(function (subscriber) {\n executeSchedule(subscriber, scheduler, function () {\n var iterator = input[Symbol.asyncIterator]();\n executeSchedule(subscriber, scheduler, function () {\n iterator.next().then(function (result) {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n }\n });\n }, 0, true);\n });\n });\n}\n\nfunction scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n\nfunction scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise$1(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n\nfunction from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n\nfunction map(project, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n\nvar isArray$2 = Array.isArray;\nfunction callOrApply(fn, args) {\n return isArray$2(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);\n}\nfunction mapOneOrManyArgs(fn) {\n return map(function (args) { return callOrApply(fn, args); });\n}\n\nvar isArray$1 = Array.isArray;\nvar getPrototypeOf = Object.getPrototypeOf, objectProto = Object.prototype, getKeys = Object.keys;\nfunction argsArgArrayOrObject(args) {\n if (args.length === 1) {\n var first_1 = args[0];\n if (isArray$1(first_1)) {\n return { args: first_1, keys: null };\n }\n if (isPOJO(first_1)) {\n var keys = getKeys(first_1);\n return {\n args: keys.map(function (key) { return first_1[key]; }),\n keys: keys,\n };\n }\n }\n return { args: args, keys: null };\n}\nfunction isPOJO(obj) {\n return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n\nfunction createObject(keys, values) {\n return keys.reduce(function (result, key, i) { return ((result[key] = values[i]), result); }, {});\n}\n\nfunction combineLatest() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var resultSelector = popResultSelector(args);\n var _a = argsArgArrayOrObject(args), observables = _a.args, keys = _a.keys;\n if (observables.length === 0) {\n return from([], scheduler);\n }\n var result = new Observable(combineLatestInit(observables, scheduler, keys\n ?\n function (values) { return createObject(keys, values); }\n :\n identity));\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\nfunction combineLatestInit(observables, scheduler, valueTransform) {\n if (valueTransform === void 0) { valueTransform = identity; }\n return function (subscriber) {\n maybeSchedule(scheduler, function () {\n var length = observables.length;\n var values = new Array(length);\n var active = length;\n var remainingFirstValues = length;\n var _loop_1 = function (i) {\n maybeSchedule(scheduler, function () {\n var source = from(observables[i], scheduler);\n var hasFirstValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n values[i] = value;\n if (!hasFirstValue) {\n hasFirstValue = true;\n remainingFirstValues--;\n }\n if (!remainingFirstValues) {\n subscriber.next(valueTransform(values.slice()));\n }\n }, function () {\n if (!--active) {\n subscriber.complete();\n }\n }));\n }, subscriber);\n };\n for (var i = 0; i < length; i++) {\n _loop_1(i);\n }\n }, subscriber);\n };\n}\nfunction maybeSchedule(scheduler, execute, subscription) {\n if (scheduler) {\n executeSchedule(subscription, scheduler, execute);\n }\n else {\n execute();\n }\n}\n\nfunction mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n var buffer = [];\n var active = 0;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); };\n var doInnerSub = function (value) {\n active++;\n var innerComplete = false;\n innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, function (innerValue) {\n {\n subscriber.next(innerValue);\n }\n }, function () {\n innerComplete = true;\n }, undefined, function () {\n if (innerComplete) {\n try {\n active--;\n var _loop_1 = function () {\n var bufferedValue = buffer.shift();\n if (innerSubScheduler) ;\n else {\n doInnerSub(bufferedValue);\n }\n };\n while (buffer.length && active < concurrent) {\n _loop_1();\n }\n checkComplete();\n }\n catch (err) {\n subscriber.error(err);\n }\n }\n }));\n };\n source.subscribe(createOperatorSubscriber(subscriber, outerNext, function () {\n isComplete = true;\n checkComplete();\n }));\n return function () {\n };\n}\n\nfunction mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n if (isFunction$2(resultSelector)) {\n return mergeMap(function (a, i) { return map(function (b, ii) { return resultSelector(a, b, i, ii); })(innerFrom(project(a, i))); }, concurrent);\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return operate(function (source, subscriber) { return mergeInternals(source, subscriber, project, concurrent); });\n}\n\nfunction filter(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n });\n}\n\nfunction scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) {\n return function (source, subscriber) {\n var hasState = hasSeed;\n var state = seed;\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var i = index++;\n state = hasState\n ?\n accumulator(state, value, i)\n :\n ((hasState = true), value);\n }, (function () {\n hasState && subscriber.next(state);\n subscriber.complete();\n })));\n };\n}\n\nfunction reduce(accumulator, seed) {\n return operate(scanInternals(accumulator, seed, arguments.length >= 2, false, true));\n}\n\nvar arrReducer = function (arr, value) { return (arr.push(value), arr); };\nfunction toArray() {\n return operate(function (source, subscriber) {\n reduce(arrReducer, [])(source).subscribe(subscriber);\n });\n}\n\nfunction finalize(callback) {\n return operate(function (source, subscriber) {\n try {\n source.subscribe(subscriber);\n }\n finally {\n subscriber.add(callback);\n }\n });\n}\n\nfunction share(options) {\n if (options === void 0) { options = {}; }\n var _a = options.connector, connector = _a === void 0 ? function () { return new Subject(); } : _a, _b = options.resetOnError, resetOnError = _b === void 0 ? true : _b, _c = options.resetOnComplete, resetOnComplete = _c === void 0 ? true : _c, _d = options.resetOnRefCountZero, resetOnRefCountZero = _d === void 0 ? true : _d;\n return function (wrapperSource) {\n var connection;\n var resetConnection;\n var subject;\n var refCount = 0;\n var hasCompleted = false;\n var hasErrored = false;\n var cancelReset = function () {\n resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();\n resetConnection = undefined;\n };\n var reset = function () {\n cancelReset();\n connection = subject = undefined;\n hasCompleted = hasErrored = false;\n };\n var resetAndUnsubscribe = function () {\n var conn = connection;\n reset();\n conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n };\n return operate(function (source, subscriber) {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n var dest = (subject = subject !== null && subject !== void 0 ? subject : connector());\n subscriber.add(function () {\n refCount--;\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n dest.subscribe(subscriber);\n if (!connection &&\n refCount > 0) {\n connection = new SafeSubscriber({\n next: function (value) { return dest.next(value); },\n error: function (err) {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: function () {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n },\n });\n innerFrom(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\nfunction handleReset(reset, on) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (on === true) {\n reset();\n return;\n }\n if (on === false) {\n return;\n }\n var onSubscriber = new SafeSubscriber({\n next: function () {\n onSubscriber.unsubscribe();\n reset();\n },\n });\n return innerFrom(on.apply(void 0, __spreadArray([], __read(args)))).subscribe(onSubscriber);\n}\n\nvar __defProp$3 = Object.defineProperty;\nvar __name$1 = (target, value) => __defProp$3(target, \"name\", { value, configurable: true });\nvar ArraySubject = class extends BehaviorSubject {\n static {\n __name$1(this, \"ArraySubject\");\n }\n _items = [];\n constructor(items = []) {\n super({\n type: \"init\",\n items\n });\n this.createProxy(items);\n }\n createProxy(items) {\n this._items = new Proxy(items, {\n get: /* @__PURE__ */ __name$1((target, prop, receiver) => {\n const origMethod = target[prop];\n if (typeof origMethod === \"function\") {\n return (...args) => {\n let changeType = \"update\";\n let index = void 0;\n let isMutateFn = false;\n let itemsToEmit = [];\n let changeSplice = true;\n switch (prop) {\n case \"push\":\n index = target.length;\n changeType = \"add\";\n isMutateFn = true;\n break;\n case \"pop\":\n index = target.length - 1;\n changeType = \"remove\";\n isMutateFn = true;\n break;\n case \"unshift\":\n index = 0;\n changeType = \"add\";\n isMutateFn = true;\n break;\n case \"shift\":\n index = 0;\n changeType = \"remove\";\n isMutateFn = true;\n break;\n case \"splice\":\n index = args[0];\n const deleteCount = args[1];\n const newItems = args.slice(2);\n itemsToEmit = newItems;\n if (deleteCount > 0 && newItems.length === 0) {\n changeType = \"remove\";\n } else if (deleteCount === 0 && newItems.length > 0) {\n changeType = \"add\";\n } else if (deleteCount === 0 && newItems.length === 0) {\n changeSplice = false;\n } else {\n changeType = \"update\";\n }\n isMutateFn = true;\n break;\n }\n const result = origMethod.apply(target, args);\n if (isMutateFn && changeSplice) {\n if (prop === \"splice\") {\n this.next({\n type: changeType,\n index,\n items: itemsToEmit\n });\n } else {\n this.next({\n type: changeType,\n index,\n items: args\n });\n }\n }\n return result;\n };\n }\n return Reflect.get(target, prop, receiver);\n }, \"get\"),\n set: /* @__PURE__ */ __name$1((target, prop, value) => {\n const index = !isNaN(Number(prop)) ? Number(prop) : void 0;\n target[prop] = value;\n this.next({\n type: \"update\",\n index,\n items: [\n value\n ]\n });\n return true;\n }, \"set\")\n });\n }\n get items() {\n return this._items;\n }\n set items(newItems) {\n this.createProxy(newItems);\n this.next({\n type: \"reset\",\n items: newItems\n });\n }\n};\nvar isArraySubject = /* @__PURE__ */ __name$1((value) => {\n return \"_items\" in value;\n}, \"isArraySubject\");\nvar ObjectSubject = class extends BehaviorSubject {\n static {\n __name$1(this, \"ObjectSubject\");\n }\n _obj;\n constructor(obj = {}) {\n super({\n type: \"init\",\n value: obj\n });\n this.createProxy(obj);\n }\n createProxy(obj) {\n this._obj = new Proxy(obj, {\n get: /* @__PURE__ */ __name$1((target, prop, receiver) => {\n return Reflect.get(target, prop, receiver);\n }, \"get\"),\n set: /* @__PURE__ */ __name$1((target, prop, value, receiver) => {\n const key = prop;\n const changeType = key in target ? \"update\" : \"add\";\n target[key] = value;\n this.next({\n type: changeType,\n key,\n value\n });\n return true;\n }, \"set\"),\n deleteProperty: /* @__PURE__ */ __name$1((target, prop) => {\n const key = prop;\n if (key in target) {\n const value = target[key];\n delete target[key];\n this.next({\n type: \"remove\",\n key,\n value\n });\n return true;\n }\n return false;\n }, \"deleteProperty\")\n });\n }\n get obj() {\n return this._obj;\n }\n set obj(newObj) {\n this.createProxy(newObj);\n this.next({\n type: \"reset\",\n value: newObj\n });\n }\n};\nvar isObjectSubject = /* @__PURE__ */ __name$1((value) => {\n return \"_obj\" in value;\n}, \"isObjectSubject\");\nvar getGlobalReactiveStore = /* @__PURE__ */ __name$1(() => {\n const globalKey = \"__REACTIVE_STORE__\";\n if (typeof globalThis !== \"undefined\") {\n if (!globalThis[globalKey]) {\n globalThis[globalKey] = {\n currentDependencyTracker: null,\n currentSubscriptionsTracker: null\n };\n }\n return globalThis[globalKey];\n }\n let globalObj;\n if (typeof window !== \"undefined\") {\n globalObj = window;\n } else if (typeof process !== \"undefined\" && process.versions && process.versions.node) {\n globalObj = Function(\"return this\")();\n } else if (typeof self !== \"undefined\") {\n globalObj = self;\n } else {\n console.warn(\"Unable to find global object, using local instance\");\n return {\n currentDependencyTracker: null,\n currentSubscriptionsTracker: null\n };\n }\n if (!globalObj[globalKey]) {\n globalObj[globalKey] = {\n currentDependencyTracker: null,\n currentSubscriptionsTracker: null\n };\n }\n return globalObj[globalKey];\n}, \"getGlobalReactiveStore\");\nvar reactiveStore = getGlobalReactiveStore();\nvar trackDependency = /* @__PURE__ */ __name$1((signal2) => {\n if (reactiveStore.currentDependencyTracker) {\n reactiveStore.currentDependencyTracker(signal2);\n }\n}, \"trackDependency\");\nfunction signal(defaultValue) {\n let subject;\n if (Array.isArray(defaultValue)) {\n subject = new ArraySubject(defaultValue);\n } else if (typeof defaultValue === \"object\" && defaultValue !== null) {\n subject = new ObjectSubject(defaultValue);\n } else {\n subject = new BehaviorSubject(defaultValue);\n }\n const getValue = /* @__PURE__ */ __name$1(() => {\n if (subject instanceof ArraySubject) {\n return subject.items;\n } else if (subject instanceof ObjectSubject) {\n return subject.obj;\n }\n return subject.value;\n }, \"getValue\");\n const fn = /* @__PURE__ */ __name$1(function() {\n trackDependency(fn);\n return getValue();\n }, \"fn\");\n fn.set = (value) => {\n if (subject instanceof ArraySubject) {\n subject.items = value;\n } else if (subject instanceof ObjectSubject) {\n subject.obj = value;\n } else {\n subject.next(value);\n }\n };\n fn._isFrozen = false;\n fn.freeze = () => {\n fn._isFrozen = true;\n };\n fn.unfreeze = () => {\n fn._isFrozen = false;\n if (subject instanceof ArraySubject) {\n subject.next({\n type: \"init\",\n items: subject.items\n });\n } else if (subject instanceof ObjectSubject) {\n subject.next({\n type: \"init\",\n value: subject.obj\n });\n } else {\n subject.next(subject.value);\n }\n };\n fn.mutate = (mutateFn) => {\n const value = getValue();\n mutateFn(value);\n };\n fn.update = (updateFn) => {\n const updatedValue = updateFn(getValue());\n fn.set(updatedValue);\n };\n fn.observable = subject.asObservable().pipe(filter(() => !fn._isFrozen));\n fn._subject = subject;\n return fn;\n}\n__name$1(signal, \"signal\");\nfunction isSignal(value) {\n return !!(value && value.observable);\n}\n__name$1(isSignal, \"isSignal\");\nfunction isComputed(value) {\n return isSignal(value) && !!value.dependencies;\n}\n__name$1(isComputed, \"isComputed\");\nfunction computed(computeFunction, disposableFn) {\n const dependencies = /* @__PURE__ */ new Set();\n let init = true;\n let lastComputedValue;\n const previousTracker = reactiveStore.currentDependencyTracker;\n reactiveStore.currentDependencyTracker = (signal2) => {\n dependencies.add(signal2);\n };\n lastComputedValue = computeFunction();\n if (computeFunction[\"isEffect\"]) {\n disposableFn = lastComputedValue;\n }\n reactiveStore.currentDependencyTracker = previousTracker;\n const computedObservable = combineLatest([\n ...dependencies\n ].map((signal2) => signal2.observable)).pipe(filter(() => !init), map(() => computeFunction()), finalize(() => disposableFn?.()));\n const fn = /* @__PURE__ */ __name$1(function() {\n trackDependency(fn);\n return lastComputedValue;\n }, \"fn\");\n fn.observable = computedObservable;\n fn.subscription = computedObservable.subscribe((value) => {\n lastComputedValue = value;\n });\n fn.dependencies = dependencies;\n reactiveStore.currentSubscriptionsTracker?.(fn.subscription);\n init = false;\n return fn;\n}\n__name$1(computed, \"computed\");\n\n// src/effect.ts\nfunction effect(fn) {\n fn[\"isEffect\"] = true;\n return computed(fn);\n}\n__name$1(effect, \"effect\");\n\nvar __defProp$2 = Object.defineProperty;\nvar __name = (target, value) => __defProp$2(target, \"name\", { value, configurable: true });\n\n// src/utils.ts\nfunction isFunction$1(val) {\n return {}.toString.call(val) === \"[object Function]\";\n}\n__name(isFunction$1, \"isFunction\");\nfunction isClass$1(obj) {\n return typeof obj === \"function\" && obj.prototype && obj.prototype.constructor === obj;\n}\n__name(isClass$1, \"isClass\");\nvar isObject$1 = /* @__PURE__ */ __name((item) => item && typeof item === \"object\" && !Array.isArray(item) && item !== null, \"isObject\");\nfunction isInstanceOfClass(value) {\n if (value === null || typeof value !== \"object\" || value === void 0 || Array.isArray(value)) {\n return false;\n }\n return Object.getPrototypeOf(value) !== Object.prototype;\n}\n__name(isInstanceOfClass, \"isInstanceOfClass\");\nfunction generateShortUUID() {\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let uuid = \"\";\n for (let i = 0; i < 8; i++) {\n const randomIndex = Math.floor(Math.random() * chars.length);\n uuid += chars[randomIndex];\n }\n return uuid;\n}\n__name(generateShortUUID, \"generateShortUUID\");\n\n// src/core.ts\nvar DELETE_TOKEN = \"$delete\";\nfunction createStatesSnapshot(instance) {\n let persistObject = {};\n if (instance?.$snapshot) {\n for (const key of instance.$snapshot.keys()) {\n const signal = instance.$snapshot.get(key);\n const persist2 = signal.options.persist ?? true;\n let value = signal();\n if (isObject$1(value) || Array.isArray(value)) {\n continue;\n }\n if (persist2) {\n persistObject[key] = value;\n }\n }\n }\n return persistObject;\n}\n__name(createStatesSnapshot, \"createStatesSnapshot\");\nfunction setMetadata(target, key, value) {\n const meta = target.constructor._propertyMetadata;\n const propId = meta?.get(key);\n if (propId) {\n if (isSignal(target[propId])) {\n target[propId].set(value);\n } else {\n target[propId] = value;\n }\n }\n}\n__name(setMetadata, \"setMetadata\");\nvar createSyncClass = /* @__PURE__ */ __name((currentClass, parentKey = null, parentClass = null, path = \"\") => {\n currentClass.$path = path;\n if (parentClass) {\n currentClass.$valuesChanges = parentClass.$valuesChanges;\n }\n if (parentKey) {\n setMetadata(currentClass, \"id\", parentKey);\n }\n if (currentClass.$snapshot) {\n for (const key of currentClass.$snapshot.keys()) {\n const signal = currentClass.$snapshot.get(key);\n const syncToClient = signal.options?.syncToClient ?? true;\n const persist2 = signal.options?.persist ?? true;\n let signalValue = signal();\n if (isObject$1(signalValue) || Array.isArray(signalValue)) {\n signalValue = {\n ...signalValue\n };\n }\n const newPath = (path ? path + \".\" : \"\") + key;\n if (syncToClient) {\n currentClass.$valuesChanges.set(newPath, signalValue);\n }\n if (persist2) {\n if (parentClass) currentClass.$valuesChanges.setPersist(path, signalValue);\n }\n if (isComputed(signal)) {\n signal.observable.subscribe((newValue) => {\n if (syncToClient) {\n currentClass.$valuesChanges.set(newPath, newValue);\n }\n });\n }\n }\n }\n}, \"createSyncClass\");\nvar type = /* @__PURE__ */ __name((_signal, path, options = {}, currentInstance) => {\n const { syncToClient = true, persist: persist2 = true } = options;\n let init = true;\n const handleObjectSubject = /* @__PURE__ */ __name((value, propPath) => {\n const newPath = `${propPath}${value.key ? `.${value.key}` : \"\"}`;\n if ([\n \"add\",\n \"reset\",\n \"update\"\n ].includes(value.type)) {\n if (isInstanceOfClass(value.value)) {\n createSyncClass(value.value, value.key, currentInstance, newPath);\n } else if (value.type === \"update\" && (isObject$1(value.value) || Array.isArray(value.value))) {\n createSyncClass(value.value, value.key, currentInstance, newPath);\n } else {\n savePath(newPath, value.value);\n }\n } else if (value.type === \"remove\") {\n savePath(newPath, DELETE_TOKEN);\n }\n }, \"handleObjectSubject\");\n const handleArraySubject = /* @__PURE__ */ __name((value, propPath) => {\n if (value.type === \"reset\" && Array.isArray(value.items)) {\n value.items.forEach((item, index) => {\n const newPath2 = `${propPath}.${index}`;\n if (isInstanceOfClass(item)) {\n createSyncClass(item, value.key, currentInstance, newPath2);\n } else {\n savePath(newPath2, item);\n }\n });\n return;\n }\n const newPath = `${propPath}.${value.index}`;\n const firstItem = value.items?.[0];\n if ([\n \"add\",\n \"update\"\n ].includes(value.type) && firstItem !== void 0) {\n if (isInstanceOfClass(firstItem)) {\n createSyncClass(firstItem, value.key, currentInstance, newPath);\n } else if (value.type === \"update\" && (isObject$1(firstItem) || Array.isArray(firstItem))) {\n createSyncClass(firstItem, value.key, currentInstance, newPath);\n } else {\n savePath(newPath, firstItem);\n }\n } else if (value.type === \"remove\") {\n savePath(newPath, DELETE_TOKEN);\n }\n }, \"handleArraySubject\");\n const savePath = /* @__PURE__ */ __name((propPath, value) => {\n if (syncToClient) {\n currentInstance.$valuesChanges.set(propPath, value);\n }\n if (persist2 && currentInstance.$path !== void 0) {\n currentInstance.$valuesChanges.setPersist(value == DELETE_TOKEN ? propPath : currentInstance.$path, value);\n }\n }, \"savePath\");\n const setupSubscription = /* @__PURE__ */ __name((signal, signalPath) => {\n if (!isSignal(signal)) return;\n if (syncToClient && currentInstance.$valuesChanges) {\n const initialValue = signal();\n currentInstance.$valuesChanges.set(signalPath, initialValue);\n }\n signal.options = options;\n signal.observable.subscribe((value) => {\n if (init) return;\n if (currentInstance.$path !== void 0) {\n const fullPath = `${currentInstance.$path ? currentInstance.$path + \".\" : \"\"}${signalPath}`;\n if (isComputed(signal)) {\n savePath(fullPath, value);\n } else if (isObjectSubject(signal._subject)) {\n handleObjectSubject(value, fullPath);\n } else if (isArraySubject(signal._subject)) {\n handleArraySubject(value, fullPath);\n } else {\n savePath(fullPath, value);\n }\n }\n });\n if (!currentInstance.$snapshot) {\n currentInstance.$snapshot = /* @__PURE__ */ new Map();\n }\n currentInstance.$snapshot.set(path, signal);\n }, \"setupSubscription\");\n if (!isSignal(_signal)) {\n if (_signal && typeof _signal === \"object\" && !Array.isArray(_signal)) {\n for (const key in _signal) {\n if (Object.prototype.hasOwnProperty.call(_signal, key)) {\n const value = _signal[key];\n const propertyPath = `${path}.${key}`;\n if (isSignal(value)) {\n setupSubscription(value, propertyPath);\n } else if (value && typeof value === \"object\" && !Array.isArray(value)) {\n type(value, propertyPath, options, currentInstance);\n }\n }\n }\n init = false;\n }\n return _signal;\n }\n setupSubscription(_signal, path);\n init = false;\n return _signal;\n}, \"type\");\n\n// src/decorators.ts\nfunction sync(options) {\n let classType;\n let persist2 = true;\n let syncToClient = true;\n if (typeof options === \"function\") {\n classType = options;\n } else if (typeof options === \"object\") {\n classType = options.classType;\n if (options.hasOwnProperty(\"persist\")) {\n persist2 = options.persist;\n }\n if (options.hasOwnProperty(\"syncToClient\")) {\n syncToClient = options.syncToClient;\n }\n }\n return function(target, propertyKey) {\n const privatePropertyKey = `__${propertyKey}`;\n const getter = /* @__PURE__ */ __name(function() {\n return this[privatePropertyKey];\n }, \"getter\");\n const setter = /* @__PURE__ */ __name(function(newVal) {\n this[privatePropertyKey] = type(newVal, propertyKey, {\n classType,\n persist: persist2,\n syncToClient\n }, this);\n }, \"setter\");\n Object.defineProperty(target, propertyKey, {\n get: getter,\n set: setter,\n enumerable: true,\n configurable: true\n });\n };\n}\n__name(sync, \"sync\");\nfunction id() {\n return function(target, propertyKey) {\n if (!target.constructor._propertyMetadata) {\n target.constructor._propertyMetadata = /* @__PURE__ */ new Map();\n }\n target.constructor._propertyMetadata.set(\"id\", propertyKey);\n };\n}\n__name(id, \"id\");\nfunction users(options) {\n return function(target, propertyKey) {\n if (!target.constructor._propertyMetadata) {\n target.constructor._propertyMetadata = /* @__PURE__ */ new Map();\n }\n target.constructor._propertyMetadata.set(\"users\", propertyKey);\n sync(options)(target, propertyKey);\n };\n}\n__name(users, \"users\");\nfunction persist() {\n return sync({\n persist: true,\n syncToClient: false\n });\n}\n__name(persist, \"persist\");\nfunction connected() {\n return function(target, propertyKey) {\n if (!target.constructor._propertyMetadata) {\n target.constructor._propertyMetadata = /* @__PURE__ */ new Map();\n }\n target.constructor._propertyMetadata.set(\"connected\", propertyKey);\n sync({\n persist: false\n })(target, propertyKey);\n };\n}\n__name(connected, \"connected\");\nfunction load(rootInstance, values, valueIsObject) {\n if (valueIsObject) {\n loadFromObject(rootInstance, values);\n } else {\n loadFromPaths(rootInstance, values);\n }\n}\n__name(load, \"load\");\nfunction loadFromPaths(rootInstance, values) {\n for (const [path, value] of Object.entries(values)) {\n const parts = path.split(\".\");\n loadValue(rootInstance, parts, value);\n }\n}\n__name(loadFromPaths, \"loadFromPaths\");\nfunction loadFromObject(rootInstance, values, currentPath = \"\") {\n for (let key in values) {\n const value = values[key];\n const newPath = currentPath ? `${currentPath}.${key}` : key;\n if (typeof value === \"object\" && !Array.isArray(value) && value !== null) {\n loadFromObject(rootInstance, value, newPath);\n } else {\n const parts = newPath.split(\".\");\n loadValue(rootInstance, parts, value);\n }\n }\n}\n__name(loadFromObject, \"loadFromObject\");\nfunction loadValue(rootInstance, parts, value) {\n let current = rootInstance;\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n if (i === parts.length - 1) {\n if (value == DELETE_TOKEN) {\n if (isSignal(current)) {\n current = current();\n }\n Reflect.deleteProperty(current, part);\n } else if (current[part]?._subject) {\n current[part].set(value);\n } else {\n current[part] = value;\n }\n } else {\n if (isSignal(current)) {\n current = current();\n }\n const currentValue = current[part];\n if (currentValue === void 0) {\n const parentInstance = getByPath(rootInstance, parts.slice(0, i).join(\".\"));\n const classType = parentInstance?.options?.classType;\n if (classType) {\n current[part] = !isClass$1(classType) ? classType(part) : new classType();\n setMetadata(current[part], \"id\", part);\n } else {\n current[part] = {};\n }\n }\n current = current[part];\n }\n }\n}\n__name(loadValue, \"loadValue\");\nfunction getByPath(root, path) {\n const parts = path.split(\".\");\n let current = root;\n for (const part of parts) {\n if (isSignal(current)) {\n current = current();\n }\n if (current[part]) {\n current = current[part];\n } else {\n return void 0;\n }\n }\n return current;\n}\n__name(getByPath, \"getByPath\");\n\nvar __defProp$1 = Object.defineProperty;\nvar __decorateClass$1 = (decorators, target, key, kind) => {\n var result = void 0 ;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (decorator(target, key, result) ) || result;\n if (result) __defProp$1(target, key, result);\n return result;\n};\nclass Item {\n constructor(data) {\n this.id = signal(\"\");\n this.name = signal(\"\");\n this.description = signal(\"\");\n this.price = signal(0);\n this.quantity = signal(1);\n this.onAdd = () => {\n };\n this.description.set(data.description);\n this.price.set(data.price);\n this.onAdd = data.onAdd?.bind(this) ?? (() => {\n });\n }\n}\n__decorateClass$1([\n id()\n], Item.prototype, \"id\");\n__decorateClass$1([\n sync()\n], Item.prototype, \"name\");\n__decorateClass$1([\n sync()\n], Item.prototype, \"description\");\n__decorateClass$1([\n sync()\n], Item.prototype, \"price\");\n__decorateClass$1([\n sync()\n], Item.prototype, \"quantity\");\n\nvar __defProp = Object.defineProperty;\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = void 0 ;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (decorator(target, key, result) ) || result;\n if (result) __defProp(target, key, result);\n return result;\n};\nvar Direction = /* @__PURE__ */ ((Direction2) => {\n Direction2[\"Up\"] = \"up\";\n Direction2[\"Down\"] = \"down\";\n Direction2[\"Left\"] = \"left\";\n Direction2[\"Right\"] = \"right\";\n return Direction2;\n})(Direction || {});\nvar Animation = /* @__PURE__ */ ((Animation2) => {\n Animation2[\"Stand\"] = \"stand\";\n Animation2[\"Walk\"] = \"walk\";\n Animation2[\"Attack\"] = \"attack\";\n Animation2[\"Defense\"] = \"defense\";\n Animation2[\"Skill\"] = \"skill\";\n return Animation2;\n})(Animation || {});\nclass RpgCommonPlayer {\n constructor() {\n this.x = signal(0);\n this.y = signal(0);\n this.z = signal(0);\n this.tint = signal(\"white\");\n this.direction = signal(\"down\" /* Down */);\n this.speed = signal(4);\n this.graphics = signal([]);\n this.canMove = signal(true);\n this.hitbox = signal({\n w: 32,\n h: 32\n });\n this._gold = signal(0);\n this.animationName = signal(\"stand\");\n this._hp = signal(0);\n this._sp = signal(0);\n this._exp = signal(0);\n this._level = signal(0);\n this._class = signal({});\n this.items = signal([]);\n this.equipments = signal([]);\n this.states = signal([]);\n this.skills = signal([]);\n this._effects = signal([]);\n this._through = signal(false);\n this._throughOtherPlayer = signal(true);\n this._throughEvent = signal(false);\n this._frequency = signal(0);\n // Store intended movement direction (not synced, only used locally)\n this._intendedDirection = null;\n }\n /**\n * Change the player's facing direction\n * \n * Updates the direction the player is facing, which affects animations\n * and directional abilities. This should be called when the player\n * intends to move in a specific direction, not when they are pushed\n * by physics or sliding.\n * \n * @param direction - The new direction to face\n * \n * @example\n * ```ts\n * // Player presses right arrow key\n * player.changeDirection(Direction.Right);\n * ```\n */\n changeDirection(direction) {\n this.direction.set(direction);\n }\n /**\n * Get the current facing direction\n * \n * @returns Current direction the player is facing\n * \n * @example\n * ```ts\n * const currentDirection = player.getDirection();\n * if (currentDirection === Direction.Up) {\n * // Player is facing up\n * }\n * ```\n */\n getDirection() {\n return this.direction();\n }\n /**\n * Set the intended movement direction\n * \n * This should be called when the player intends to move in a direction,\n * typically from input handling. This direction will be used to update\n * the player's facing direction regardless of physics interactions.\n * \n * @param direction - The intended movement direction, or null if not moving\n * \n * @example\n * ```ts\n * // Player presses down arrow key\n * player.setIntendedDirection(Direction.Down);\n * \n * // Player releases all movement keys\n * player.setIntendedDirection(null);\n * ```\n */\n setIntendedDirection(direction) {\n this._intendedDirection = direction;\n if (direction !== null) {\n this.changeDirection(direction);\n }\n }\n /**\n * Get the intended movement direction\n * \n * @returns The direction the player intends to move, or null if not moving\n * \n * @example\n * ```ts\n * const intended = player.getIntendedDirection();\n * if (intended === Direction.Left) {\n * // Player is trying to move left\n * }\n * ```\n */\n getIntendedDirection() {\n return this._intendedDirection;\n }\n /**\n * Apply physics body position to player coordinates\n * \n * Synchronizes the player's position with their physics body after\n * physics calculations. This method no longer automatically changes\n * the player's direction based on position changes, as direction\n * should be controlled by intended movement instead.\n * \n * @param body - The Matter.js physics body\n * \n * @example\n * ```ts\n * // Called automatically by physics system\n * player.applyPhysic(body);\n * ```\n */\n applyPhysic(body) {\n const width = body.bounds.max.x - body.bounds.min.x;\n const height = body.bounds.max.y - body.bounds.min.y;\n const topLeftX = body.position.x - width / 2;\n const topLeftY = body.position.y - height / 2;\n const posChanged = Math.round(this.x()) !== Math.round(topLeftX) || Math.round(this.y()) !== Math.round(topLeftY);\n if (posChanged) {\n this.x.set(topLeftX);\n this.y.set(topLeftY);\n }\n }\n _showAnimation(params) {\n const { graphic, animationName, loop } = params;\n if (graphic) {\n if (Array.isArray(graphic)) {\n this.graphics.set(graphic);\n } else {\n this.graphics.set([graphic]);\n }\n }\n }\n /**\n * Create a temporary and moving hitbox relative to the player's position\n * \n * Creates a temporary hitbox that moves through multiple positions sequentially,\n * with all coordinates being relative to the player's current position.\n * For example, you can use it for player attacks, spells, or area effects\n * that should follow the player's position.\n * \n * The method creates a zone sensor that moves through the specified hitbox positions\n * at the given speed, detecting collisions with other players and events at each step.\n * \n * @param hitboxes - Array of hitbox positions relative to player position\n * @param options - Configuration options for the movement\n * @param map - Reference to the map instance for physics access\n * @returns Observable that emits arrays of hit entities and completes when movement is finished\n * \n * @example\n * ```ts\n * // Create a forward attack relative to player position\n * player.createMovingHitbox([\n * { x: 0, y: -32, width: 32, height: 32 }, // In front of player\n * { x: 0, y: -64, width: 32, height: 32 } // Further in front\n * ], { speed: 2 }, map).subscribe({\n * next(hits) {\n * // hits contains other RpgPlayer or RpgEvent objects that were hit\n * console.log('Hit entities:', hits);\n * },\n * complete() {\n * console.log('Attack finished');\n * }\n * });\n * ```\n */\n createMovingHitbox(hitboxes, options = {}) {\n const absoluteHitboxes = hitboxes.map((hitbox) => ({\n x: this.x() + hitbox.x,\n y: this.y() + hitbox.y,\n width: hitbox.width,\n height: hitbox.height\n }));\n return this.getCurrentMap().createMovingHitbox(absoluteHitboxes, options);\n }\n getCurrentMap() {\n return this[\"map\"];\n }\n}\n__decorateClass([\n id()\n], RpgCommonPlayer.prototype, \"id\");\n__decorateClass([\n sync()\n], RpgCommonPlayer.prototype, \"x\");\n__decorateClass([\n sync()\n], RpgCommonPlayer.prototype, \"y\");\n__decorateClass([\n sync()\n], RpgCommonPlayer.prototype, \"z\");\n__decorateClass([\n sync()\n], RpgCommonPlayer.prototype, \"tint\");\n__decorateClass([\n sync()\n], RpgCommonPlayer.prototype, \"direction\");\n__decorateClass([\n sync()\n], RpgCommonPlayer.prototype, \"speed\");\n__decorateClass([\n sync()\n], RpgCommonPlayer.prototype, \"graphics\");\n__decorateClass([\n sync()\n], RpgCommonPlayer.prototype, \"canMove\");\n__decorateClass([\n sync()\n], RpgCommonPlayer.prototype, \"hitbox\");\n__decorateClass([\n sync()\n], RpgCommonPlayer.prototype, \"_gold\");\n__decorateClass([\n sync()\n], RpgCommonPlayer.prototype, \"animationName\");\n__decorateClass([\n sync()\n], RpgCommonPlayer.prototype, \"_hp\");\n__decorateClass([\n sync()\n], RpgCommonPlayer.prototype, \"_sp\");\n__decorateClass([\n sync()\n], RpgCommonPlayer.prototype, \"_exp\");\n__decorateClass([\n sync()\n], RpgCommonPlayer.prototype, \"_level\");\n__decorateClass([\n sync()\n], RpgCommonPlayer.prototype, \"_class\");\n__decorateClass([\n sync(Item)\n], RpgCommonPlayer.prototype, \"items\");\n__decorateClass([\n sync()\n], RpgCommonPlayer.prototype, \"equipments\");\n__decorateClass([\n sync()\n], RpgCommonPlayer.prototype, \"states\");\n__decorateClass([\n sync()\n], RpgCommonPlayer.prototype, \"skills\");\n__decorateClass([\n sync()\n], RpgCommonPlayer.prototype, \"_effects\");\n__decorateClass([\n sync()\n], RpgCommonPlayer.prototype, \"_through\");\n__decorateClass([\n sync()\n], RpgCommonPlayer.prototype, \"_throughOtherPlayer\");\n__decorateClass([\n sync()\n], RpgCommonPlayer.prototype, \"_throughEvent\");\n__decorateClass([\n sync()\n], RpgCommonPlayer.prototype, \"_frequency\");\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar matter$3 = {exports: {}};\n\n/*!\n * matter-js 0.20.0 by @liabru\n * http://brm.io/matter-js/\n * License MIT\n * \n * The MIT License (MIT)\n * \n * Copyright (c) Liam Brummitt and contributors.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nvar matter$2 = matter$3.exports;\n\nvar hasRequiredMatter;\n\nfunction requireMatter () {\n\tif (hasRequiredMatter) return matter$3.exports;\n\thasRequiredMatter = 1;\n\t(function (module, exports) {\n\t\t(function webpackUniversalModuleDefinition(root, factory) {\n\t\t\tmodule.exports = factory();\n\t\t})(matter$2, function() {\n\t\treturn /******/ (function(modules) { // webpackBootstrap\n\t\t/******/ \t// The module cache\n\t\t/******/ \tvar installedModules = {};\n\t\t/******/\n\t\t/******/ \t// The require function\n\t\t/******/ \tfunction __webpack_require__(moduleId) {\n\t\t/******/\n\t\t/******/ \t\t// Check if module is in cache\n\t\t/******/ \t\tif(installedModules[moduleId]) {\n\t\t/******/ \t\t\treturn installedModules[moduleId].exports;\n\t\t/******/ \t\t}\n\t\t/******/ \t\t// Create a new module (and put it into the cache)\n\t\t/******/ \t\tvar module = installedModules[moduleId] = {\n\t\t/******/ \t\t\ti: moduleId,\n\t\t/******/ \t\t\tl: false,\n\t\t/******/ \t\t\texports: {}\n\t\t/******/ \t\t};\n\t\t/******/\n\t\t/******/ \t\t// Execute the module function\n\t\t/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t\t/******/\n\t\t/******/ \t\t// Flag the module as loaded\n\t\t/******/ \t\tmodule.l = true;\n\t\t/******/\n\t\t/******/ \t\t// Return the exports of the module\n\t\t/******/ \t\treturn module.exports;\n\t\t/******/ \t}\n\t\t/******/\n\t\t/******/\n\t\t/******/ \t// expose the modules object (__webpack_modules__)\n\t\t/******/ \t__webpack_require__.m = modules;\n\t\t/******/\n\t\t/******/ \t// expose the module cache\n\t\t/******/ \t__webpack_require__.c = installedModules;\n\t\t/******/\n\t\t/******/ \t// define getter function for harmony exports\n\t\t/******/ \t__webpack_require__.d = function(exports, name, getter) {\n\t\t/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n\t\t/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n\t\t/******/ \t\t}\n\t\t/******/ \t};\n\t\t/******/\n\t\t/******/ \t// define __esModule on exports\n\t\t/******/ \t__webpack_require__.r = function(exports) {\n\t\t/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\t/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t\t/******/ \t\t}\n\t\t/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\t/******/ \t};\n\t\t/******/\n\t\t/******/ \t// create a fake namespace object\n\t\t/******/ \t// mode & 1: value is a module id, require it\n\t\t/******/ \t// mode & 2: merge all properties of value into the ns\n\t\t/******/ \t// mode & 4: return value when already ns object\n\t\t/******/ \t// mode & 8|1: behave like require\n\t\t/******/ \t__webpack_require__.t = function(value, mode) {\n\t\t/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n\t\t/******/ \t\tif(mode & 8) return value;\n\t\t/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n\t\t/******/ \t\tvar ns = Object.create(null);\n\t\t/******/ \t\t__webpack_require__.r(ns);\n\t\t/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n\t\t/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n\t\t/******/ \t\treturn ns;\n\t\t/******/ \t};\n\t\t/******/\n\t\t/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n\t\t/******/ \t__webpack_require__.n = function(module) {\n\t\t/******/ \t\tvar getter = module && module.__esModule ?\n\t\t/******/ \t\t\tfunction getDefault() { return module['default']; } :\n\t\t/******/ \t\t\tfunction getModuleExports() { return module; };\n\t\t/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n\t\t/******/ \t\treturn getter;\n\t\t/******/ \t};\n\t\t/******/\n\t\t/******/ \t// Object.prototype.hasOwnProperty.call\n\t\t/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\t\t/******/\n\t\t/******/ \t// __webpack_public_path__\n\t\t/******/ \t__webpack_require__.p = \"\";\n\t\t/******/\n\t\t/******/\n\t\t/******/ \t// Load entry module and return exports\n\t\t/******/ \treturn __webpack_require__(__webpack_require__.s = 20);\n\t\t/******/ })\n\t\t/************************************************************************/\n\t\t/******/ ([\n\t\t/* 0 */\n\t\t/***/ (function(module, exports) {\n\n\t\t/**\n\t\t* The `Matter.Common` module contains utility functions that are common to all modules.\n\t\t*\n\t\t* @class Common\n\t\t*/\n\n\t\tvar Common = {};\n\n\t\tmodule.exports = Common;\n\n\t\t(function() {\n\n\t\t Common._baseDelta = 1000 / 60;\n\t\t Common._nextId = 0;\n\t\t Common._seed = 0;\n\t\t Common._nowStartTime = +(new Date());\n\t\t Common._warnedOnce = {};\n\t\t Common._decomp = null;\n\t\t \n\t\t /**\n\t\t * Extends the object in the first argument using the object in the second argument.\n\t\t * @method extend\n\t\t * @param {} obj\n\t\t * @param {boolean} deep\n\t\t * @return {} obj extended\n\t\t */\n\t\t Common.extend = function(obj, deep) {\n\t\t var argsStart,\n\t\t deepClone;\n\n\t\t if (typeof deep === 'boolean') {\n\t\t argsStart = 2;\n\t\t deepClone = deep;\n\t\t } else {\n\t\t argsStart = 1;\n\t\t deepClone = true;\n\t\t }\n\n\t\t for (var i = argsStart; i < arguments.length; i++) {\n\t\t var source = arguments[i];\n\n\t\t if (source) {\n\t\t for (var prop in source) {\n\t\t if (deepClone && source[prop] && source[prop].constructor === Object) {\n\t\t if (!obj[prop] || obj[prop].constructor === Object) {\n\t\t obj[prop] = obj[prop] || {};\n\t\t Common.extend(obj[prop], deepClone, source[prop]);\n\t\t } else {\n\t\t obj[prop] = source[prop];\n\t\t }\n\t\t } else {\n\t\t obj[prop] = source[prop];\n\t\t }\n\t\t }\n\t\t }\n\t\t }\n\t\t \n\t\t return obj;\n\t\t };\n\n\t\t /**\n\t\t * Creates a new clone of the object, if deep is true references will also be cloned.\n\t\t * @method clone\n\t\t * @param {} obj\n\t\t * @param {bool} deep\n\t\t * @return {} obj cloned\n\t\t */\n\t\t Common.clone = function(obj, deep) {\n\t\t return Common.extend({}, deep, obj);\n\t\t };\n\n\t\t /**\n\t\t * Returns the list of keys for the given object.\n\t\t * @method keys\n\t\t * @param {} obj\n\t\t * @return {string[]} keys\n\t\t */\n\t\t Common.keys = function(obj) {\n\t\t if (Object.keys)\n\t\t return Object.keys(obj);\n\n\t\t // avoid hasOwnProperty for performance\n\t\t var keys = [];\n\t\t for (var key in obj)\n\t\t keys.push(key);\n\t\t return keys;\n\t\t };\n\n\t\t /**\n\t\t * Returns the list of values for the given object.\n\t\t * @method values\n\t\t * @param {} obj\n\t\t * @return {array} Array of the objects property values\n\t\t */\n\t\t Common.values = function(obj) {\n\t\t var values = [];\n\t\t \n\t\t if (Object.keys) {\n\t\t var keys = Object.keys(obj);\n\t\t for (var i = 0; i < keys.length; i++) {\n\t\t values.push(obj[keys[i]]);\n\t\t }\n\t\t return values;\n\t\t }\n\t\t \n\t\t // avoid hasOwnProperty for performance\n\t\t for (var key in obj)\n\t\t values.push(obj[key]);\n\t\t return values;\n\t\t };\n\n\t\t /**\n\t\t * Gets a value from `base` relative to the `path` string.\n\t\t * @method get\n\t\t * @param {} obj The base object\n\t\t * @param {string} path The path relative to `base`, e.g. 'Foo.Bar.baz'\n\t\t * @param {number} [begin] Path slice begin\n\t\t * @param {number} [end] Path slice end\n\t\t * @return {} The object at the given path\n\t\t */\n\t\t Common.get = function(obj, path, begin, end) {\n\t\t path = path.split('.').slice(begin, end);\n\n\t\t for (var i = 0; i < path.length; i += 1) {\n\t\t obj = obj[path[i]];\n\t\t }\n\n\t\t return obj;\n\t\t };\n\n\t\t /**\n\t\t * Sets a value on `base` relative to the given `path` string.\n\t\t * @method set\n\t\t * @param {} obj The base object\n\t\t * @param {string} path The path relative to `base`, e.g. 'Foo.Bar.baz'\n\t\t * @param {} val The value to set\n\t\t * @param {number} [begin] Path slice begin\n\t\t * @param {number} [end] Path slice end\n\t\t * @return {} Pass through `val` for chaining\n\t\t */\n\t\t Common.set = function(obj, path, val, begin, end) {\n\t\t var parts = path.split('.').slice(begin, end);\n\t\t Common.get(obj, path, 0, -1)[parts[parts.length - 1]] = val;\n\t\t return val;\n\t\t };\n\n\t\t /**\n\t\t * Shuffles the given array in-place.\n\t\t * The function uses a seeded random generator.\n\t\t * @method shuffle\n\t\t * @param {array} array\n\t\t * @return {array} array shuffled randomly\n\t\t */\n\t\t Common.shuffle = function(array) {\n\t\t for (var i = array.length - 1; i > 0; i--) {\n\t\t var j = Math.floor(Common.random() * (i + 1));\n\t\t var temp = array[i];\n\t\t array[i] = array[j];\n\t\t array[j] = temp;\n\t\t }\n\t\t return array;\n\t\t };\n\n\t\t /**\n\t\t * Randomly chooses a value from a list with equal probability.\n\t\t * The function uses a seeded random generator.\n\t\t * @method choose\n\t\t * @param {array} choices\n\t\t * @return {object} A random choice object from the array\n\t\t */\n\t\t Common.choose = function(choices) {\n\t\t return choices[Math.floor(Common.random() * choices.length)];\n\t\t };\n\n\t\t /**\n\t\t * Returns true if the object is a HTMLElement, otherwise false.\n\t\t * @method isElement\n\t\t * @param {object} obj\n\t\t * @return {boolean} True if the object is a HTMLElement, otherwise false\n\t\t */\n\t\t Common.isElement = function(obj) {\n\t\t if (typeof HTMLElement !== 'undefined') {\n\t\t return obj instanceof HTMLElement;\n\t\t }\n\n\t\t return !!(obj && obj.nodeType && obj.nodeName);\n\t\t };\n\n\t\t /**\n\t\t * Returns true if the object is an array.\n\t\t * @method isArray\n\t\t * @param {object} obj\n\t\t * @return {boolean} True if the object is an array, otherwise false\n\t\t */\n\t\t Common.isArray = function(obj) {\n\t\t return Object.prototype.toString.call(obj) === '[object Array]';\n\t\t };\n\n\t\t /**\n\t\t * Returns true if the object is a function.\n\t\t * @method isFunction\n\t\t * @param {object} obj\n\t\t * @return {boolean} True if the object is a function, otherwise false\n\t\t */\n\t\t Common.isFunction = function(obj) {\n\t\t return typeof obj === \"function\";\n\t\t };\n\n\t\t /**\n\t\t * Returns true if the object is a plain object.\n\t\t * @method isPlainObject\n\t\t * @param {object} obj\n\t\t * @return {boolean} True if the object is a plain object, otherwise false\n\t\t */\n\t\t Common.isPlainObject = function(obj) {\n\t\t return typeof obj === 'object' && obj.constructor === Object;\n\t\t };\n\n\t\t /**\n\t\t * Returns true if the object is a string.\n\t\t * @method isString\n\t\t * @param {object} obj\n\t\t * @return {boolean} True if the object is a string, otherwise false\n\t\t */\n\t\t Common.isString = function(obj) {\n\t\t return toString.call(obj) === '[object String]';\n\t\t };\n\t\t \n\t\t /**\n\t\t * Returns the given value clamped between a minimum and maximum value.\n\t\t * @method clamp\n\t\t * @param {number} value\n\t\t * @param {number} min\n\t\t * @param {number} max\n\t\t * @return {number} The value clamped between min and max inclusive\n\t\t */\n\t\t Common.clamp = function(value, min, max) {\n\t\t if (value < min)\n\t\t return min;\n\t\t if (value > max)\n\t\t return max;\n\t\t return value;\n\t\t };\n\t\t \n\t\t /**\n\t\t * Returns the sign of the given value.\n\t\t * @method sign\n\t\t * @param {number} value\n\t\t * @return {number} -1 if negative, +1 if 0 or positive\n\t\t */\n\t\t Common.sign = function(value) {\n\t\t return value < 0 ? -1 : 1;\n\t\t };\n\t\t \n\t\t /**\n\t\t * Returns the current timestamp since the time origin (e.g. from page load).\n\t\t * The result is in milliseconds and will use high-resolution timing if available.\n\t\t * @method now\n\t\t * @return {number} the current timestamp in milliseconds\n\t\t */\n\t\t Common.now = function() {\n\t\t if (typeof window !== 'undefined' && window.performance) {\n\t\t if (window.performance.now) {\n\t\t return window.performance.now();\n\t\t } else if (window.performance.webkitNow) {\n\t\t return window.performance.webkitNow();\n\t\t }\n\t\t }\n\n\t\t if (Date.now) {\n\t\t return Date.now();\n\t\t }\n\n\t\t return (new Date()) - Common._nowStartTime;\n\t\t };\n\t\t \n\t\t /**\n\t\t * Returns a random value between a minimum and a maximum value inclusive.\n\t\t * The function uses a seeded random generator.\n\t\t * @method random\n\t\t * @param {number} min\n\t\t * @param {number} max\n\t\t * @return {number} A random number between min and max inclusive\n\t\t */\n\t\t Common.random = function(min, max) {\n\t\t min = (typeof min !== \"undefined\") ? min : 0;\n\t\t max = (typeof max !== \"undefined\") ? max : 1;\n\t\t return min + _seededRandom() * (max - min);\n\t\t };\n\n\t\t var _seededRandom = function() {\n\t\t // https://en.wikipedia.org/wiki/Linear_congruential_generator\n\t\t Common._seed = (Common._seed * 9301 + 49297) % 233280;\n\t\t return Common._seed / 233280;\n\t\t };\n\n\t\t /**\n\t\t * Converts a CSS hex colour string into an integer.\n\t\t * @method colorToNumber\n\t\t * @param {string} colorString\n\t\t * @return {number} An integer representing the CSS hex string\n\t\t */\n\t\t Common.colorToNumber = function(colorString) {\n\t\t colorString = colorString.replace('#','');\n\n\t\t if (colorString.length == 3) {\n\t\t colorString = colorString.charAt(0) + colorString.charAt(0)\n\t\t + colorString.charAt(1) + colorString.charAt(1)\n\t\t + colorString.charAt(2) + colorString.charAt(2);\n\t\t }\n\n\t\t return parseInt(colorString, 16);\n\t\t };\n\n\t\t /**\n\t\t * The console logging level to use, where each level includes all levels above and excludes the levels below.\n\t\t * The default level is 'debug' which shows all console messages. \n\t\t *\n\t\t * Possible level values are:\n\t\t * - 0 = None\n\t\t * - 1 = Debug\n\t\t * - 2 = Info\n\t\t * - 3 = Warn\n\t\t * - 4 = Error\n\t\t * @static\n\t\t * @property logLevel\n\t\t * @type {Number}\n\t\t * @default 1\n\t\t */\n\t\t Common.logLevel = 1;\n\n\t\t /**\n\t\t * Shows a `console.log` message only if the current `Common.logLevel` allows it.\n\t\t * The message will be prefixed with 'matter-js' to make it easily identifiable.\n\t\t * @method log\n\t\t * @param ...objs {} The objects to log.\n\t\t */\n\t\t Common.log = function() {\n\t\t if (console && Common.logLevel > 0 && Common.logLevel <= 3) {\n\t\t console.log.apply(console, ['matter-js:'].concat(Array.prototype.slice.call(arguments)));\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Shows a `console.info` message only if the current `Common.logLevel` allows it.\n\t\t * The message will be prefixed with 'matter-js' to make it easily identifiable.\n\t\t * @method info\n\t\t * @param ...objs {} The objects to log.\n\t\t */\n\t\t Common.info = function() {\n\t\t if (console && Common.logLevel > 0 && Common.logLevel <= 2) {\n\t\t console.info.apply(console, ['matter-js:'].concat(Array.prototype.slice.call(arguments)));\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Shows a `console.warn` message only if the current `Common.logLevel` allows it.\n\t\t * The message will be prefixed with 'matter-js' to make it easily identifiable.\n\t\t * @method warn\n\t\t * @param ...objs {} The objects to log.\n\t\t */\n\t\t Common.warn = function() {\n\t\t if (console && Common.logLevel > 0 && Common.logLevel <= 3) {\n\t\t console.warn.apply(console, ['matter-js:'].concat(Array.prototype.slice.call(arguments)));\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Uses `Common.warn` to log the given message one time only.\n\t\t * @method warnOnce\n\t\t * @param ...objs {} The objects to log.\n\t\t */\n\t\t Common.warnOnce = function() {\n\t\t var message = Array.prototype.slice.call(arguments).join(' ');\n\n\t\t if (!Common._warnedOnce[message]) {\n\t\t Common.warn(message);\n\t\t Common._warnedOnce[message] = true;\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Shows a deprecated console warning when the function on the given object is called.\n\t\t * The target function will be replaced with a new function that first shows the warning\n\t\t * and then calls the original function.\n\t\t * @method deprecated\n\t\t * @param {object} obj The object or module\n\t\t * @param {string} name The property name of the function on obj\n\t\t * @param {string} warning The one-time message to show if the function is called\n\t\t */\n\t\t Common.deprecated = function(obj, prop, warning) {\n\t\t obj[prop] = Common.chain(function() {\n\t\t Common.warnOnce('🔅 deprecated 🔅', warning);\n\t\t }, obj[prop]);\n\t\t };\n\n\t\t /**\n\t\t * Returns the next unique sequential ID.\n\t\t * @method nextId\n\t\t * @return {Number} Unique sequential ID\n\t\t */\n\t\t Common.nextId = function() {\n\t\t return Common._nextId++;\n\t\t };\n\n\t\t /**\n\t\t * A cross browser compatible indexOf implementation.\n\t\t * @method indexOf\n\t\t * @param {array} haystack\n\t\t * @param {object} needle\n\t\t * @return {number} The position of needle in haystack, otherwise -1.\n\t\t */\n\t\t Common.indexOf = function(haystack, needle) {\n\t\t if (haystack.indexOf)\n\t\t return haystack.indexOf(needle);\n\n\t\t for (var i = 0; i < haystack.length; i++) {\n\t\t if (haystack[i] === needle)\n\t\t return i;\n\t\t }\n\n\t\t return -1;\n\t\t };\n\n\t\t /**\n\t\t * A cross browser compatible array map implementation.\n\t\t * @method map\n\t\t * @param {array} list\n\t\t * @param {function} func\n\t\t * @return {array} Values from list transformed by func.\n\t\t */\n\t\t Common.map = function(list, func) {\n\t\t if (list.map) {\n\t\t return list.map(func);\n\t\t }\n\n\t\t var mapped = [];\n\n\t\t for (var i = 0; i < list.length; i += 1) {\n\t\t mapped.push(func(list[i]));\n\t\t }\n\n\t\t return mapped;\n\t\t };\n\n\t\t /**\n\t\t * Takes a directed graph and returns the partially ordered set of vertices in topological order.\n\t\t * Circular dependencies are allowed.\n\t\t * @method topologicalSort\n\t\t * @param {object} graph\n\t\t * @return {array} Partially ordered set of vertices in topological order.\n\t\t */\n\t\t Common.topologicalSort = function(graph) {\n\t\t // https://github.com/mgechev/javascript-algorithms\n\t\t // Copyright (c) Minko Gechev (MIT license)\n\t\t // Modifications: tidy formatting and naming\n\t\t var result = [],\n\t\t visited = [],\n\t\t temp = [];\n\n\t\t for (var node in graph) {\n\t\t if (!visited[node] && !temp[node]) {\n\t\t Common._topologicalSort(node, visited, temp, graph, result);\n\t\t }\n\t\t }\n\n\t\t return result;\n\t\t };\n\n\t\t Common._topologicalSort = function(node, visited, temp, graph, result) {\n\t\t var neighbors = graph[node] || [];\n\t\t temp[node] = true;\n\n\t\t for (var i = 0; i < neighbors.length; i += 1) {\n\t\t var neighbor = neighbors[i];\n\n\t\t if (temp[neighbor]) {\n\t\t // skip circular dependencies\n\t\t continue;\n\t\t }\n\n\t\t if (!visited[neighbor]) {\n\t\t Common._topologicalSort(neighbor, visited, temp, graph, result);\n\t\t }\n\t\t }\n\n\t\t temp[node] = false;\n\t\t visited[node] = true;\n\n\t\t result.push(node);\n\t\t };\n\n\t\t /**\n\t\t * Takes _n_ functions as arguments and returns a new function that calls them in order.\n\t\t * The arguments applied when calling the new function will also be applied to every function passed.\n\t\t * The value of `this` refers to the last value returned in the chain that was not `undefined`.\n\t\t * Therefore if a passed function does not return a value, the previously returned value is maintained.\n\t\t * After all passed functions have been called the new function returns the last returned value (if any).\n\t\t * If any of the passed functions are a chain, then the chain will be flattened.\n\t\t * @method chain\n\t\t * @param ...funcs {function} The functions to chain.\n\t\t * @return {function} A new function that calls the passed functions in order.\n\t\t */\n\t\t Common.chain = function() {\n\t\t var funcs = [];\n\n\t\t for (var i = 0; i < arguments.length; i += 1) {\n\t\t var func = arguments[i];\n\n\t\t if (func._chained) {\n\t\t // flatten already chained functions\n\t\t funcs.push.apply(funcs, func._chained);\n\t\t } else {\n\t\t funcs.push(func);\n\t\t }\n\t\t }\n\n\t\t var chain = function() {\n\t\t // https://github.com/GoogleChrome/devtools-docs/issues/53#issuecomment-51941358\n\t\t var lastResult,\n\t\t args = new Array(arguments.length);\n\n\t\t for (var i = 0, l = arguments.length; i < l; i++) {\n\t\t args[i] = arguments[i];\n\t\t }\n\n\t\t for (i = 0; i < funcs.length; i += 1) {\n\t\t var result = funcs[i].apply(lastResult, args);\n\n\t\t if (typeof result !== 'undefined') {\n\t\t lastResult = result;\n\t\t }\n\t\t }\n\n\t\t return lastResult;\n\t\t };\n\n\t\t chain._chained = funcs;\n\n\t\t return chain;\n\t\t };\n\n\t\t /**\n\t\t * Chains a function to excute before the original function on the given `path` relative to `base`.\n\t\t * See also docs for `Common.chain`.\n\t\t * @method chainPathBefore\n\t\t * @param {} base The base object\n\t\t * @param {string} path The path relative to `base`\n\t\t * @param {function} func The function to chain before the original\n\t\t * @return {function} The chained function that replaced the original\n\t\t */\n\t\t Common.chainPathBefore = function(base, path, func) {\n\t\t return Common.set(base, path, Common.chain(\n\t\t func,\n\t\t Common.get(base, path)\n\t\t ));\n\t\t };\n\n\t\t /**\n\t\t * Chains a function to excute after the original function on the given `path` relative to `base`.\n\t\t * See also docs for `Common.chain`.\n\t\t * @method chainPathAfter\n\t\t * @param {} base The base object\n\t\t * @param {string} path The path relative to `base`\n\t\t * @param {function} func The function to chain after the original\n\t\t * @return {function} The chained function that replaced the original\n\t\t */\n\t\t Common.chainPathAfter = function(base, path, func) {\n\t\t return Common.set(base, path, Common.chain(\n\t\t Common.get(base, path),\n\t\t func\n\t\t ));\n\t\t };\n\n\t\t /**\n\t\t * Provide the [poly-decomp](https://github.com/schteppe/poly-decomp.js) library module to enable\n\t\t * concave vertex decomposition support when using `Bodies.fromVertices` e.g. `Common.setDecomp(require('poly-decomp'))`.\n\t\t * @method setDecomp\n\t\t * @param {} decomp The [poly-decomp](https://github.com/schteppe/poly-decomp.js) library module.\n\t\t */\n\t\t Common.setDecomp = function(decomp) {\n\t\t Common._decomp = decomp;\n\t\t };\n\n\t\t /**\n\t\t * Returns the [poly-decomp](https://github.com/schteppe/poly-decomp.js) library module provided through `Common.setDecomp`,\n\t\t * otherwise returns the global `decomp` if set.\n\t\t * @method getDecomp\n\t\t * @return {} The [poly-decomp](https://github.com/schteppe/poly-decomp.js) library module if provided.\n\t\t */\n\t\t Common.getDecomp = function() {\n\t\t // get user provided decomp if set\n\t\t var decomp = Common._decomp;\n\n\t\t try {\n\t\t // otherwise from window global\n\t\t if (!decomp && typeof window !== 'undefined') {\n\t\t decomp = window.decomp;\n\t\t }\n\t\t \n\t\t // otherwise from node global\n\t\t if (!decomp && typeof commonjsGlobal !== 'undefined') {\n\t\t decomp = commonjsGlobal.decomp;\n\t\t }\n\t\t } catch (e) {\n\t\t // decomp not available\n\t\t decomp = null;\n\t\t }\n\n\t\t return decomp;\n\t\t };\n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 1 */\n\t\t/***/ (function(module, exports) {\n\n\t\t/**\n\t\t* The `Matter.Bounds` module contains methods for creating and manipulating axis-aligned bounding boxes (AABB).\n\t\t*\n\t\t* @class Bounds\n\t\t*/\n\n\t\tvar Bounds = {};\n\n\t\tmodule.exports = Bounds;\n\n\t\t(function() {\n\n\t\t /**\n\t\t * Creates a new axis-aligned bounding box (AABB) for the given vertices.\n\t\t * @method create\n\t\t * @param {vertices} vertices\n\t\t * @return {bounds} A new bounds object\n\t\t */\n\t\t Bounds.create = function(vertices) {\n\t\t var bounds = { \n\t\t min: { x: 0, y: 0 }, \n\t\t max: { x: 0, y: 0 }\n\t\t };\n\n\t\t if (vertices)\n\t\t Bounds.update(bounds, vertices);\n\t\t \n\t\t return bounds;\n\t\t };\n\n\t\t /**\n\t\t * Updates bounds using the given vertices and extends the bounds given a velocity.\n\t\t * @method update\n\t\t * @param {bounds} bounds\n\t\t * @param {vertices} vertices\n\t\t * @param {vector} velocity\n\t\t */\n\t\t Bounds.update = function(bounds, vertices, velocity) {\n\t\t bounds.min.x = Infinity;\n\t\t bounds.max.x = -Infinity;\n\t\t bounds.min.y = Infinity;\n\t\t bounds.max.y = -Infinity;\n\n\t\t for (var i = 0; i < vertices.length; i++) {\n\t\t var vertex = vertices[i];\n\t\t if (vertex.x > bounds.max.x) bounds.max.x = vertex.x;\n\t\t if (vertex.x < bounds.min.x) bounds.min.x = vertex.x;\n\t\t if (vertex.y > bounds.max.y) bounds.max.y = vertex.y;\n\t\t if (vertex.y < bounds.min.y) bounds.min.y = vertex.y;\n\t\t }\n\t\t \n\t\t if (velocity) {\n\t\t if (velocity.x > 0) {\n\t\t bounds.max.x += velocity.x;\n\t\t } else {\n\t\t bounds.min.x += velocity.x;\n\t\t }\n\t\t \n\t\t if (velocity.y > 0) {\n\t\t bounds.max.y += velocity.y;\n\t\t } else {\n\t\t bounds.min.y += velocity.y;\n\t\t }\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Returns true if the bounds contains the given point.\n\t\t * @method contains\n\t\t * @param {bounds} bounds\n\t\t * @param {vector} point\n\t\t * @return {boolean} True if the bounds contain the point, otherwise false\n\t\t */\n\t\t Bounds.contains = function(bounds, point) {\n\t\t return point.x >= bounds.min.x && point.x <= bounds.max.x \n\t\t && point.y >= bounds.min.y && point.y <= bounds.max.y;\n\t\t };\n\n\t\t /**\n\t\t * Returns true if the two bounds intersect.\n\t\t * @method overlaps\n\t\t * @param {bounds} boundsA\n\t\t * @param {bounds} boundsB\n\t\t * @return {boolean} True if the bounds overlap, otherwise false\n\t\t */\n\t\t Bounds.overlaps = function(boundsA, boundsB) {\n\t\t return (boundsA.min.x <= boundsB.max.x && boundsA.max.x >= boundsB.min.x\n\t\t && boundsA.max.y >= boundsB.min.y && boundsA.min.y <= boundsB.max.y);\n\t\t };\n\n\t\t /**\n\t\t * Translates the bounds by the given vector.\n\t\t * @method translate\n\t\t * @param {bounds} bounds\n\t\t * @param {vector} vector\n\t\t */\n\t\t Bounds.translate = function(bounds, vector) {\n\t\t bounds.min.x += vector.x;\n\t\t bounds.max.x += vector.x;\n\t\t bounds.min.y += vector.y;\n\t\t bounds.max.y += vector.y;\n\t\t };\n\n\t\t /**\n\t\t * Shifts the bounds to the given position.\n\t\t * @method shift\n\t\t * @param {bounds} bounds\n\t\t * @param {vector} position\n\t\t */\n\t\t Bounds.shift = function(bounds, position) {\n\t\t var deltaX = bounds.max.x - bounds.min.x,\n\t\t deltaY = bounds.max.y - bounds.min.y;\n\t\t \n\t\t bounds.min.x = position.x;\n\t\t bounds.max.x = position.x + deltaX;\n\t\t bounds.min.y = position.y;\n\t\t bounds.max.y = position.y + deltaY;\n\t\t };\n\t\t \n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 2 */\n\t\t/***/ (function(module, exports) {\n\n\t\t/**\n\t\t* The `Matter.Vector` module contains methods for creating and manipulating vectors.\n\t\t* Vectors are the basis of all the geometry related operations in the engine.\n\t\t* A `Matter.Vector` object is of the form `{ x: 0, y: 0 }`.\n\t\t*\n\t\t* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n\t\t*\n\t\t* @class Vector\n\t\t*/\n\n\t\t// TODO: consider params for reusing vector objects\n\n\t\tvar Vector = {};\n\n\t\tmodule.exports = Vector;\n\n\t\t(function() {\n\n\t\t /**\n\t\t * Creates a new vector.\n\t\t * @method create\n\t\t * @param {number} x\n\t\t * @param {number} y\n\t\t * @return {vector} A new vector\n\t\t */\n\t\t Vector.create = function(x, y) {\n\t\t return { x: x || 0, y: y || 0 };\n\t\t };\n\n\t\t /**\n\t\t * Returns a new vector with `x` and `y` copied from the given `vector`.\n\t\t * @method clone\n\t\t * @param {vector} vector\n\t\t * @return {vector} A new cloned vector\n\t\t */\n\t\t Vector.clone = function(vector) {\n\t\t return { x: vector.x, y: vector.y };\n\t\t };\n\n\t\t /**\n\t\t * Returns the magnitude (length) of a vector.\n\t\t * @method magnitude\n\t\t * @param {vector} vector\n\t\t * @return {number} The magnitude of the vector\n\t\t */\n\t\t Vector.magnitude = function(vector) {\n\t\t return Math.sqrt((vector.x * vector.x) + (vector.y * vector.y));\n\t\t };\n\n\t\t /**\n\t\t * Returns the magnitude (length) of a vector (therefore saving a `sqrt` operation).\n\t\t * @method magnitudeSquared\n\t\t * @param {vector} vector\n\t\t * @return {number} The squared magnitude of the vector\n\t\t */\n\t\t Vector.magnitudeSquared = function(vector) {\n\t\t return (vector.x * vector.x) + (vector.y * vector.y);\n\t\t };\n\n\t\t /**\n\t\t * Rotates the vector about (0, 0) by specified angle.\n\t\t * @method rotate\n\t\t * @param {vector} vector\n\t\t * @param {number} angle\n\t\t * @param {vector} [output]\n\t\t * @return {vector} The vector rotated about (0, 0)\n\t\t */\n\t\t Vector.rotate = function(vector, angle, output) {\n\t\t var cos = Math.cos(angle), sin = Math.sin(angle);\n\t\t if (!output) output = {};\n\t\t var x = vector.x * cos - vector.y * sin;\n\t\t output.y = vector.x * sin + vector.y * cos;\n\t\t output.x = x;\n\t\t return output;\n\t\t };\n\n\t\t /**\n\t\t * Rotates the vector about a specified point by specified angle.\n\t\t * @method rotateAbout\n\t\t * @param {vector} vector\n\t\t * @param {number} angle\n\t\t * @param {vector} point\n\t\t * @param {vector} [output]\n\t\t * @return {vector} A new vector rotated about the point\n\t\t */\n\t\t Vector.rotateAbout = function(vector, angle, point, output) {\n\t\t var cos = Math.cos(angle), sin = Math.sin(angle);\n\t\t if (!output) output = {};\n\t\t var x = point.x + ((vector.x - point.x) * cos - (vector.y - point.y) * sin);\n\t\t output.y = point.y + ((vector.x - point.x) * sin + (vector.y - point.y) * cos);\n\t\t output.x = x;\n\t\t return output;\n\t\t };\n\n\t\t /**\n\t\t * Normalises a vector (such that its magnitude is `1`).\n\t\t * @method normalise\n\t\t * @param {vector} vector\n\t\t * @return {vector} A new vector normalised\n\t\t */\n\t\t Vector.normalise = function(vector) {\n\t\t var magnitude = Vector.magnitude(vector);\n\t\t if (magnitude === 0)\n\t\t return { x: 0, y: 0 };\n\t\t return { x: vector.x / magnitude, y: vector.y / magnitude };\n\t\t };\n\n\t\t /**\n\t\t * Returns the dot-product of two vectors.\n\t\t * @method dot\n\t\t * @param {vector} vectorA\n\t\t * @param {vector} vectorB\n\t\t * @return {number} The dot product of the two vectors\n\t\t */\n\t\t Vector.dot = function(vectorA, vectorB) {\n\t\t return (vectorA.x * vectorB.x) + (vectorA.y * vectorB.y);\n\t\t };\n\n\t\t /**\n\t\t * Returns the cross-product of two vectors.\n\t\t * @method cross\n\t\t * @param {vector} vectorA\n\t\t * @param {vector} vectorB\n\t\t * @return {number} The cross product of the two vectors\n\t\t */\n\t\t Vector.cross = function(vectorA, vectorB) {\n\t\t return (vectorA.x * vectorB.y) - (vectorA.y * vectorB.x);\n\t\t };\n\n\t\t /**\n\t\t * Returns the cross-product of three vectors.\n\t\t * @method cross3\n\t\t * @param {vector} vectorA\n\t\t * @param {vector} vectorB\n\t\t * @param {vector} vectorC\n\t\t * @return {number} The cross product of the three vectors\n\t\t */\n\t\t Vector.cross3 = function(vectorA, vectorB, vectorC) {\n\t\t return (vectorB.x - vectorA.x) * (vectorC.y - vectorA.y) - (vectorB.y - vectorA.y) * (vectorC.x - vectorA.x);\n\t\t };\n\n\t\t /**\n\t\t * Adds the two vectors.\n\t\t * @method add\n\t\t * @param {vector} vectorA\n\t\t * @param {vector} vectorB\n\t\t * @param {vector} [output]\n\t\t * @return {vector} A new vector of vectorA and vectorB added\n\t\t */\n\t\t Vector.add = function(vectorA, vectorB, output) {\n\t\t if (!output) output = {};\n\t\t output.x = vectorA.x + vectorB.x;\n\t\t output.y = vectorA.y + vectorB.y;\n\t\t return output;\n\t\t };\n\n\t\t /**\n\t\t * Subtracts the two vectors.\n\t\t * @method sub\n\t\t * @param {vector} vectorA\n\t\t * @param {vector} vectorB\n\t\t * @param {vector} [output]\n\t\t * @return {vector} A new vector of vectorA and vectorB subtracted\n\t\t */\n\t\t Vector.sub = function(vectorA, vectorB, output) {\n\t\t if (!output) output = {};\n\t\t output.x = vectorA.x - vectorB.x;\n\t\t output.y = vectorA.y - vectorB.y;\n\t\t return output;\n\t\t };\n\n\t\t /**\n\t\t * Multiplies a vector and a scalar.\n\t\t * @method mult\n\t\t * @param {vector} vector\n\t\t * @param {number} scalar\n\t\t * @return {vector} A new vector multiplied by scalar\n\t\t */\n\t\t Vector.mult = function(vector, scalar) {\n\t\t return { x: vector.x * scalar, y: vector.y * scalar };\n\t\t };\n\n\t\t /**\n\t\t * Divides a vector and a scalar.\n\t\t * @method div\n\t\t * @param {vector} vector\n\t\t * @param {number} scalar\n\t\t * @return {vector} A new vector divided by scalar\n\t\t */\n\t\t Vector.div = function(vector, scalar) {\n\t\t return { x: vector.x / scalar, y: vector.y / scalar };\n\t\t };\n\n\t\t /**\n\t\t * Returns the perpendicular vector. Set `negate` to true for the perpendicular in the opposite direction.\n\t\t * @method perp\n\t\t * @param {vector} vector\n\t\t * @param {bool} [negate=false]\n\t\t * @return {vector} The perpendicular vector\n\t\t */\n\t\t Vector.perp = function(vector, negate) {\n\t\t negate = negate === true ? -1 : 1;\n\t\t return { x: negate * -vector.y, y: negate * vector.x };\n\t\t };\n\n\t\t /**\n\t\t * Negates both components of a vector such that it points in the opposite direction.\n\t\t * @method neg\n\t\t * @param {vector} vector\n\t\t * @return {vector} The negated vector\n\t\t */\n\t\t Vector.neg = function(vector) {\n\t\t return { x: -vector.x, y: -vector.y };\n\t\t };\n\n\t\t /**\n\t\t * Returns the angle between the vector `vectorB - vectorA` and the x-axis in radians.\n\t\t * @method angle\n\t\t * @param {vector} vectorA\n\t\t * @param {vector} vectorB\n\t\t * @return {number} The angle in radians\n\t\t */\n\t\t Vector.angle = function(vectorA, vectorB) {\n\t\t return Math.atan2(vectorB.y - vectorA.y, vectorB.x - vectorA.x);\n\t\t };\n\n\t\t /**\n\t\t * Temporary vector pool (not thread-safe).\n\t\t * @property _temp\n\t\t * @type {vector[]}\n\t\t * @private\n\t\t */\n\t\t Vector._temp = [\n\t\t Vector.create(), Vector.create(), \n\t\t Vector.create(), Vector.create(), \n\t\t Vector.create(), Vector.create()\n\t\t ];\n\n\t\t})();\n\n\t\t/***/ }),\n\t\t/* 3 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\n\t\t* The `Matter.Vertices` module contains methods for creating and manipulating sets of vertices.\n\t\t* A set of vertices is an array of `Matter.Vector` with additional indexing properties inserted by `Vertices.create`.\n\t\t* A `Matter.Body` maintains a set of vertices to represent the shape of the object (its convex hull).\n\t\t*\n\t\t* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n\t\t*\n\t\t* @class Vertices\n\t\t*/\n\n\t\tvar Vertices = {};\n\n\t\tmodule.exports = Vertices;\n\n\t\tvar Vector = __webpack_require__(2);\n\t\tvar Common = __webpack_require__(0);\n\n\t\t(function() {\n\n\t\t /**\n\t\t * Creates a new set of `Matter.Body` compatible vertices.\n\t\t * The `points` argument accepts an array of `Matter.Vector` points orientated around the origin `(0, 0)`, for example:\n\t\t *\n\t\t * [{ x: 0, y: 0 }, { x: 25, y: 50 }, { x: 50, y: 0 }]\n\t\t *\n\t\t * The `Vertices.create` method returns a new array of vertices, which are similar to Matter.Vector objects,\n\t\t * but with some additional references required for efficient collision detection routines.\n\t\t *\n\t\t * Vertices must be specified in clockwise order.\n\t\t *\n\t\t * Note that the `body` argument is not optional, a `Matter.Body` reference must be provided.\n\t\t *\n\t\t * @method create\n\t\t * @param {vector[]} points\n\t\t * @param {body} body\n\t\t */\n\t\t Vertices.create = function(points, body) {\n\t\t var vertices = [];\n\n\t\t for (var i = 0; i < points.length; i++) {\n\t\t var point = points[i],\n\t\t vertex = {\n\t\t x: point.x,\n\t\t y: point.y,\n\t\t index: i,\n\t\t body: body,\n\t\t isInternal: false\n\t\t };\n\n\t\t vertices.push(vertex);\n\t\t }\n\n\t\t return vertices;\n\t\t };\n\n\t\t /**\n\t\t * Parses a string containing ordered x y pairs separated by spaces (and optionally commas), \n\t\t * into a `Matter.Vertices` object for the given `Matter.Body`.\n\t\t * For parsing SVG paths, see `Svg.pathToVertices`.\n\t\t * @method fromPath\n\t\t * @param {string} path\n\t\t * @param {body} body\n\t\t * @return {vertices} vertices\n\t\t */\n\t\t Vertices.fromPath = function(path, body) {\n\t\t var pathPattern = /L?\\s*([-\\d.e]+)[\\s,]*([-\\d.e]+)*/ig,\n\t\t points = [];\n\n\t\t path.replace(pathPattern, function(match, x, y) {\n\t\t points.push({ x: parseFloat(x), y: parseFloat(y) });\n\t\t });\n\n\t\t return Vertices.create(points, body);\n\t\t };\n\n\t\t /**\n\t\t * Returns the centre (centroid) of the set of vertices.\n\t\t * @method centre\n\t\t * @param {vertices} vertices\n\t\t * @return {vector} The centre point\n\t\t */\n\t\t Vertices.centre = function(vertices) {\n\t\t var area = Vertices.area(vertices, true),\n\t\t centre = { x: 0, y: 0 },\n\t\t cross,\n\t\t temp,\n\t\t j;\n\n\t\t for (var i = 0; i < vertices.length; i++) {\n\t\t j = (i + 1) % vertices.length;\n\t\t cross = Vector.cross(vertices[i], vertices[j]);\n\t\t temp = Vector.mult(Vector.add(vertices[i], vertices[j]), cross);\n\t\t centre = Vector.add(centre, temp);\n\t\t }\n\n\t\t return Vector.div(centre, 6 * area);\n\t\t };\n\n\t\t /**\n\t\t * Returns the average (mean) of the set of vertices.\n\t\t * @method mean\n\t\t * @param {vertices} vertices\n\t\t * @return {vector} The average point\n\t\t */\n\t\t Vertices.mean = function(vertices) {\n\t\t var average = { x: 0, y: 0 };\n\n\t\t for (var i = 0; i < vertices.length; i++) {\n\t\t average.x += vertices[i].x;\n\t\t average.y += vertices[i].y;\n\t\t }\n\n\t\t return Vector.div(average, vertices.length);\n\t\t };\n\n\t\t /**\n\t\t * Returns the area of the set of vertices.\n\t\t * @method area\n\t\t * @param {vertices} vertices\n\t\t * @param {bool} signed\n\t\t * @return {number} The area\n\t\t */\n\t\t Vertices.area = function(vertices, signed) {\n\t\t var area = 0,\n\t\t j = vertices.length - 1;\n\n\t\t for (var i = 0; i < vertices.length; i++) {\n\t\t area += (vertices[j].x - vertices[i].x) * (vertices[j].y + vertices[i].y);\n\t\t j = i;\n\t\t }\n\n\t\t if (signed)\n\t\t return area / 2;\n\n\t\t return Math.abs(area) / 2;\n\t\t };\n\n\t\t /**\n\t\t * Returns the moment of inertia (second moment of area) of the set of vertices given the total mass.\n\t\t * @method inertia\n\t\t * @param {vertices} vertices\n\t\t * @param {number} mass\n\t\t * @return {number} The polygon's moment of inertia\n\t\t */\n\t\t Vertices.inertia = function(vertices, mass) {\n\t\t var numerator = 0,\n\t\t denominator = 0,\n\t\t v = vertices,\n\t\t cross,\n\t\t j;\n\n\t\t // find the polygon's moment of inertia, using second moment of area\n\t\t // from equations at http://www.physicsforums.com/showthread.php?t=25293\n\t\t for (var n = 0; n < v.length; n++) {\n\t\t j = (n + 1) % v.length;\n\t\t cross = Math.abs(Vector.cross(v[j], v[n]));\n\t\t numerator += cross * (Vector.dot(v[j], v[j]) + Vector.dot(v[j], v[n]) + Vector.dot(v[n], v[n]));\n\t\t denominator += cross;\n\t\t }\n\n\t\t return (mass / 6) * (numerator / denominator);\n\t\t };\n\n\t\t /**\n\t\t * Translates the set of vertices in-place.\n\t\t * @method translate\n\t\t * @param {vertices} vertices\n\t\t * @param {vector} vector\n\t\t * @param {number} scalar\n\t\t */\n\t\t Vertices.translate = function(vertices, vector, scalar) {\n\t\t scalar = typeof scalar !== 'undefined' ? scalar : 1;\n\n\t\t var verticesLength = vertices.length,\n\t\t translateX = vector.x * scalar,\n\t\t translateY = vector.y * scalar,\n\t\t i;\n\t\t \n\t\t for (i = 0; i < verticesLength; i++) {\n\t\t vertices[i].x += translateX;\n\t\t vertices[i].y += translateY;\n\t\t }\n\n\t\t return vertices;\n\t\t };\n\n\t\t /**\n\t\t * Rotates the set of vertices in-place.\n\t\t * @method rotate\n\t\t * @param {vertices} vertices\n\t\t * @param {number} angle\n\t\t * @param {vector} point\n\t\t */\n\t\t Vertices.rotate = function(vertices, angle, point) {\n\t\t if (angle === 0)\n\t\t return;\n\n\t\t var cos = Math.cos(angle),\n\t\t sin = Math.sin(angle),\n\t\t pointX = point.x,\n\t\t pointY = point.y,\n\t\t verticesLength = vertices.length,\n\t\t vertex,\n\t\t dx,\n\t\t dy,\n\t\t i;\n\n\t\t for (i = 0; i < verticesLength; i++) {\n\t\t vertex = vertices[i];\n\t\t dx = vertex.x - pointX;\n\t\t dy = vertex.y - pointY;\n\t\t vertex.x = pointX + (dx * cos - dy * sin);\n\t\t vertex.y = pointY + (dx * sin + dy * cos);\n\t\t }\n\n\t\t return vertices;\n\t\t };\n\n\t\t /**\n\t\t * Returns `true` if the `point` is inside the set of `vertices`.\n\t\t * @method contains\n\t\t * @param {vertices} vertices\n\t\t * @param {vector} point\n\t\t * @return {boolean} True if the vertices contains point, otherwise false\n\t\t */\n\t\t Vertices.contains = function(vertices, point) {\n\t\t var pointX = point.x,\n\t\t pointY = point.y,\n\t\t verticesLength = vertices.length,\n\t\t vertex = vertices[verticesLength - 1],\n\t\t nextVertex;\n\n\t\t for (var i = 0; i < verticesLength; i++) {\n\t\t nextVertex = vertices[i];\n\n\t\t if ((pointX - vertex.x) * (nextVertex.y - vertex.y) \n\t\t + (pointY - vertex.y) * (vertex.x - nextVertex.x) > 0) {\n\t\t return false;\n\t\t }\n\n\t\t vertex = nextVertex;\n\t\t }\n\n\t\t return true;\n\t\t };\n\n\t\t /**\n\t\t * Scales the vertices from a point (default is centre) in-place.\n\t\t * @method scale\n\t\t * @param {vertices} vertices\n\t\t * @param {number} scaleX\n\t\t * @param {number} scaleY\n\t\t * @param {vector} point\n\t\t */\n\t\t Vertices.scale = function(vertices, scaleX, scaleY, point) {\n\t\t if (scaleX === 1 && scaleY === 1)\n\t\t return vertices;\n\n\t\t point = point || Vertices.centre(vertices);\n\n\t\t var vertex,\n\t\t delta;\n\n\t\t for (var i = 0; i < vertices.length; i++) {\n\t\t vertex = vertices[i];\n\t\t delta = Vector.sub(vertex, point);\n\t\t vertices[i].x = point.x + delta.x * scaleX;\n\t\t vertices[i].y = point.y + delta.y * scaleY;\n\t\t }\n\n\t\t return vertices;\n\t\t };\n\n\t\t /**\n\t\t * Chamfers a set of vertices by giving them rounded corners, returns a new set of vertices.\n\t\t * The radius parameter is a single number or an array to specify the radius for each vertex.\n\t\t * @method chamfer\n\t\t * @param {vertices} vertices\n\t\t * @param {number[]} radius\n\t\t * @param {number} quality\n\t\t * @param {number} qualityMin\n\t\t * @param {number} qualityMax\n\t\t */\n\t\t Vertices.chamfer = function(vertices, radius, quality, qualityMin, qualityMax) {\n\t\t if (typeof radius === 'number') {\n\t\t radius = [radius];\n\t\t } else {\n\t\t radius = radius || [8];\n\t\t }\n\n\t\t // quality defaults to -1, which is auto\n\t\t quality = (typeof quality !== 'undefined') ? quality : -1;\n\t\t qualityMin = qualityMin || 2;\n\t\t qualityMax = qualityMax || 14;\n\n\t\t var newVertices = [];\n\n\t\t for (var i = 0; i < vertices.length; i++) {\n\t\t var prevVertex = vertices[i - 1 >= 0 ? i - 1 : vertices.length - 1],\n\t\t vertex = vertices[i],\n\t\t nextVertex = vertices[(i + 1) % vertices.length],\n\t\t currentRadius = radius[i < radius.length ? i : radius.length - 1];\n\n\t\t if (currentRadius === 0) {\n\t\t newVertices.push(vertex);\n\t\t continue;\n\t\t }\n\n\t\t var prevNormal = Vector.normalise({ \n\t\t x: vertex.y - prevVertex.y, \n\t\t y: prevVertex.x - vertex.x\n\t\t });\n\n\t\t var nextNormal = Vector.normalise({ \n\t\t x: nextVertex.y - vertex.y, \n\t\t y: vertex.x - nextVertex.x\n\t\t });\n\n\t\t var diagonalRadius = Math.sqrt(2 * Math.pow(currentRadius, 2)),\n\t\t radiusVector = Vector.mult(Common.clone(prevNormal), currentRadius),\n\t\t midNormal = Vector.normalise(Vector.mult(Vector.add(prevNormal, nextNormal), 0.5)),\n\t\t scaledVertex = Vector.sub(vertex, Vector.mult(midNormal, diagonalRadius));\n\n\t\t var precision = quality;\n\n\t\t if (quality === -1) {\n\t\t // automatically decide precision\n\t\t precision = Math.pow(currentRadius, 0.32) * 1.75;\n\t\t }\n\n\t\t precision = Common.clamp(precision, qualityMin, qualityMax);\n\n\t\t // use an even value for precision, more likely to reduce axes by using symmetry\n\t\t if (precision % 2 === 1)\n\t\t precision += 1;\n\n\t\t var alpha = Math.acos(Vector.dot(prevNormal, nextNormal)),\n\t\t theta = alpha / precision;\n\n\t\t for (var j = 0; j < precision; j++) {\n\t\t newVertices.push(Vector.add(Vector.rotate(radiusVector, theta * j), scaledVertex));\n\t\t }\n\t\t }\n\n\t\t return newVertices;\n\t\t };\n\n\t\t /**\n\t\t * Sorts the input vertices into clockwise order in place.\n\t\t * @method clockwiseSort\n\t\t * @param {vertices} vertices\n\t\t * @return {vertices} vertices\n\t\t */\n\t\t Vertices.clockwiseSort = function(vertices) {\n\t\t var centre = Vertices.mean(vertices);\n\n\t\t vertices.sort(function(vertexA, vertexB) {\n\t\t return Vector.angle(centre, vertexA) - Vector.angle(centre, vertexB);\n\t\t });\n\n\t\t return vertices;\n\t\t };\n\n\t\t /**\n\t\t * Returns true if the vertices form a convex shape (vertices must be in clockwise order).\n\t\t * @method isConvex\n\t\t * @param {vertices} vertices\n\t\t * @return {bool} `true` if the `vertices` are convex, `false` if not (or `null` if not computable).\n\t\t */\n\t\t Vertices.isConvex = function(vertices) {\n\t\t // http://paulbourke.net/geometry/polygonmesh/\n\t\t // Copyright (c) Paul Bourke (use permitted)\n\n\t\t var flag = 0,\n\t\t n = vertices.length,\n\t\t i,\n\t\t j,\n\t\t k,\n\t\t z;\n\n\t\t if (n < 3)\n\t\t return null;\n\n\t\t for (i = 0; i < n; i++) {\n\t\t j = (i + 1) % n;\n\t\t k = (i + 2) % n;\n\t\t z = (vertices[j].x - vertices[i].x) * (vertices[k].y - vertices[j].y);\n\t\t z -= (vertices[j].y - vertices[i].y) * (vertices[k].x - vertices[j].x);\n\n\t\t if (z < 0) {\n\t\t flag |= 1;\n\t\t } else if (z > 0) {\n\t\t flag |= 2;\n\t\t }\n\n\t\t if (flag === 3) {\n\t\t return false;\n\t\t }\n\t\t }\n\n\t\t if (flag !== 0){\n\t\t return true;\n\t\t } else {\n\t\t return null;\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Returns the convex hull of the input vertices as a new array of points.\n\t\t * @method hull\n\t\t * @param {vertices} vertices\n\t\t * @return [vertex] vertices\n\t\t */\n\t\t Vertices.hull = function(vertices) {\n\t\t // http://geomalgorithms.com/a10-_hull-1.html\n\n\t\t var upper = [],\n\t\t lower = [], \n\t\t vertex,\n\t\t i;\n\n\t\t // sort vertices on x-axis (y-axis for ties)\n\t\t vertices = vertices.slice(0);\n\t\t vertices.sort(function(vertexA, vertexB) {\n\t\t var dx = vertexA.x - vertexB.x;\n\t\t return dx !== 0 ? dx : vertexA.y - vertexB.y;\n\t\t });\n\n\t\t // build lower hull\n\t\t for (i = 0; i < vertices.length; i += 1) {\n\t\t vertex = vertices[i];\n\n\t\t while (lower.length >= 2 \n\t\t && Vector.cross3(lower[lower.length - 2], lower[lower.length - 1], vertex) <= 0) {\n\t\t lower.pop();\n\t\t }\n\n\t\t lower.push(vertex);\n\t\t }\n\n\t\t // build upper hull\n\t\t for (i = vertices.length - 1; i >= 0; i -= 1) {\n\t\t vertex = vertices[i];\n\n\t\t while (upper.length >= 2 \n\t\t && Vector.cross3(upper[upper.length - 2], upper[upper.length - 1], vertex) <= 0) {\n\t\t upper.pop();\n\t\t }\n\n\t\t upper.push(vertex);\n\t\t }\n\n\t\t // concatenation of the lower and upper hulls gives the convex hull\n\t\t // omit last points because they are repeated at the beginning of the other list\n\t\t upper.pop();\n\t\t lower.pop();\n\n\t\t return upper.concat(lower);\n\t\t };\n\n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 4 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\n\t\t* The `Matter.Body` module contains methods for creating and manipulating rigid bodies.\n\t\t* For creating bodies with common configurations such as rectangles, circles and other polygons see the module `Matter.Bodies`.\n\t\t*\n\t\t* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n\n\t\t* @class Body\n\t\t*/\n\n\t\tvar Body = {};\n\n\t\tmodule.exports = Body;\n\n\t\tvar Vertices = __webpack_require__(3);\n\t\tvar Vector = __webpack_require__(2);\n\t\tvar Sleeping = __webpack_require__(7);\n\t\tvar Common = __webpack_require__(0);\n\t\tvar Bounds = __webpack_require__(1);\n\t\tvar Axes = __webpack_require__(11);\n\n\t\t(function() {\n\n\t\t Body._timeCorrection = true;\n\t\t Body._inertiaScale = 4;\n\t\t Body._nextCollidingGroupId = 1;\n\t\t Body._nextNonCollidingGroupId = -1;\n\t\t Body._nextCategory = 0x0001;\n\t\t Body._baseDelta = 1000 / 60;\n\n\t\t /**\n\t\t * Creates a new rigid body model. The options parameter is an object that specifies any properties you wish to override the defaults.\n\t\t * All properties have default values, and many are pre-calculated automatically based on other properties.\n\t\t * Vertices must be specified in clockwise order.\n\t\t * See the properties section below for detailed information on what you can pass via the `options` object.\n\t\t * @method create\n\t\t * @param {} options\n\t\t * @return {body} body\n\t\t */\n\t\t Body.create = function(options) {\n\t\t var defaults = {\n\t\t id: Common.nextId(),\n\t\t type: 'body',\n\t\t label: 'Body',\n\t\t parts: [],\n\t\t plugin: {},\n\t\t angle: 0,\n\t\t vertices: Vertices.fromPath('L 0 0 L 40 0 L 40 40 L 0 40'),\n\t\t position: { x: 0, y: 0 },\n\t\t force: { x: 0, y: 0 },\n\t\t torque: 0,\n\t\t positionImpulse: { x: 0, y: 0 },\n\t\t constraintImpulse: { x: 0, y: 0, angle: 0 },\n\t\t totalContacts: 0,\n\t\t speed: 0,\n\t\t angularSpeed: 0,\n\t\t velocity: { x: 0, y: 0 },\n\t\t angularVelocity: 0,\n\t\t isSensor: false,\n\t\t isStatic: false,\n\t\t isSleeping: false,\n\t\t motion: 0,\n\t\t sleepThreshold: 60,\n\t\t density: 0.001,\n\t\t restitution: 0,\n\t\t friction: 0.1,\n\t\t frictionStatic: 0.5,\n\t\t frictionAir: 0.01,\n\t\t collisionFilter: {\n\t\t category: 0x0001,\n\t\t mask: 0xFFFFFFFF,\n\t\t group: 0\n\t\t },\n\t\t slop: 0.05,\n\t\t timeScale: 1,\n\t\t render: {\n\t\t visible: true,\n\t\t opacity: 1,\n\t\t strokeStyle: null,\n\t\t fillStyle: null,\n\t\t lineWidth: null,\n\t\t sprite: {\n\t\t xScale: 1,\n\t\t yScale: 1,\n\t\t xOffset: 0,\n\t\t yOffset: 0\n\t\t }\n\t\t },\n\t\t events: null,\n\t\t bounds: null,\n\t\t chamfer: null,\n\t\t circleRadius: 0,\n\t\t positionPrev: null,\n\t\t anglePrev: 0,\n\t\t parent: null,\n\t\t axes: null,\n\t\t area: 0,\n\t\t mass: 0,\n\t\t inertia: 0,\n\t\t deltaTime: 1000 / 60,\n\t\t _original: null\n\t\t };\n\n\t\t var body = Common.extend(defaults, options);\n\n\t\t _initProperties(body, options);\n\n\t\t return body;\n\t\t };\n\n\t\t /**\n\t\t * Returns the next unique group index for which bodies will collide.\n\t\t * If `isNonColliding` is `true`, returns the next unique group index for which bodies will _not_ collide.\n\t\t * See `body.collisionFilter` for more information.\n\t\t * @method nextGroup\n\t\t * @param {bool} [isNonColliding=false]\n\t\t * @return {Number} Unique group index\n\t\t */\n\t\t Body.nextGroup = function(isNonColliding) {\n\t\t if (isNonColliding)\n\t\t return Body._nextNonCollidingGroupId--;\n\n\t\t return Body._nextCollidingGroupId++;\n\t\t };\n\n\t\t /**\n\t\t * Returns the next unique category bitfield (starting after the initial default category `0x0001`).\n\t\t * There are 32 available. See `body.collisionFilter` for more information.\n\t\t * @method nextCategory\n\t\t * @return {Number} Unique category bitfield\n\t\t */\n\t\t Body.nextCategory = function() {\n\t\t Body._nextCategory = Body._nextCategory << 1;\n\t\t return Body._nextCategory;\n\t\t };\n\n\t\t /**\n\t\t * Initialises body properties.\n\t\t * @method _initProperties\n\t\t * @private\n\t\t * @param {body} body\n\t\t * @param {} [options]\n\t\t */\n\t\t var _initProperties = function(body, options) {\n\t\t options = options || {};\n\n\t\t // init required properties (order is important)\n\t\t Body.set(body, {\n\t\t bounds: body.bounds || Bounds.create(body.vertices),\n\t\t positionPrev: body.positionPrev || Vector.clone(body.position),\n\t\t anglePrev: body.anglePrev || body.angle,\n\t\t vertices: body.vertices,\n\t\t parts: body.parts || [body],\n\t\t isStatic: body.isStatic,\n\t\t isSleeping: body.isSleeping,\n\t\t parent: body.parent || body\n\t\t });\n\n\t\t Vertices.rotate(body.vertices, body.angle, body.position);\n\t\t Axes.rotate(body.axes, body.angle);\n\t\t Bounds.update(body.bounds, body.vertices, body.velocity);\n\n\t\t // allow options to override the automatically calculated properties\n\t\t Body.set(body, {\n\t\t axes: options.axes || body.axes,\n\t\t area: options.area || body.area,\n\t\t mass: options.mass || body.mass,\n\t\t inertia: options.inertia || body.inertia\n\t\t });\n\n\t\t // render properties\n\t\t var defaultFillStyle = (body.isStatic ? '#14151f' : Common.choose(['#f19648', '#f5d259', '#f55a3c', '#063e7b', '#ececd1'])),\n\t\t defaultStrokeStyle = body.isStatic ? '#555' : '#ccc',\n\t\t defaultLineWidth = body.isStatic && body.render.fillStyle === null ? 1 : 0;\n\t\t body.render.fillStyle = body.render.fillStyle || defaultFillStyle;\n\t\t body.render.strokeStyle = body.render.strokeStyle || defaultStrokeStyle;\n\t\t body.render.lineWidth = body.render.lineWidth || defaultLineWidth;\n\t\t body.render.sprite.xOffset += -(body.bounds.min.x - body.position.x) / (body.bounds.max.x - body.bounds.min.x);\n\t\t body.render.sprite.yOffset += -(body.bounds.min.y - body.position.y) / (body.bounds.max.y - body.bounds.min.y);\n\t\t };\n\n\t\t /**\n\t\t * Given a property and a value (or map of), sets the property(s) on the body, using the appropriate setter functions if they exist.\n\t\t * Prefer to use the actual setter functions in performance critical situations.\n\t\t * @method set\n\t\t * @param {body} body\n\t\t * @param {} settings A property name (or map of properties and values) to set on the body.\n\t\t * @param {} value The value to set if `settings` is a single property name.\n\t\t */\n\t\t Body.set = function(body, settings, value) {\n\t\t var property;\n\n\t\t if (typeof settings === 'string') {\n\t\t property = settings;\n\t\t settings = {};\n\t\t settings[property] = value;\n\t\t }\n\n\t\t for (property in settings) {\n\t\t if (!Object.prototype.hasOwnProperty.call(settings, property))\n\t\t continue;\n\n\t\t value = settings[property];\n\t\t switch (property) {\n\n\t\t case 'isStatic':\n\t\t Body.setStatic(body, value);\n\t\t break;\n\t\t case 'isSleeping':\n\t\t Sleeping.set(body, value);\n\t\t break;\n\t\t case 'mass':\n\t\t Body.setMass(body, value);\n\t\t break;\n\t\t case 'density':\n\t\t Body.setDensity(body, value);\n\t\t break;\n\t\t case 'inertia':\n\t\t Body.setInertia(body, value);\n\t\t break;\n\t\t case 'vertices':\n\t\t Body.setVertices(body, value);\n\t\t break;\n\t\t case 'position':\n\t\t Body.setPosition(body, value);\n\t\t break;\n\t\t case 'angle':\n\t\t Body.setAngle(body, value);\n\t\t break;\n\t\t case 'velocity':\n\t\t Body.setVelocity(body, value);\n\t\t break;\n\t\t case 'angularVelocity':\n\t\t Body.setAngularVelocity(body, value);\n\t\t break;\n\t\t case 'speed':\n\t\t Body.setSpeed(body, value);\n\t\t break;\n\t\t case 'angularSpeed':\n\t\t Body.setAngularSpeed(body, value);\n\t\t break;\n\t\t case 'parts':\n\t\t Body.setParts(body, value);\n\t\t break;\n\t\t case 'centre':\n\t\t Body.setCentre(body, value);\n\t\t break;\n\t\t default:\n\t\t body[property] = value;\n\n\t\t }\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Sets the body as static, including isStatic flag and setting mass and inertia to Infinity.\n\t\t * @method setStatic\n\t\t * @param {body} body\n\t\t * @param {bool} isStatic\n\t\t */\n\t\t Body.setStatic = function(body, isStatic) {\n\t\t for (var i = 0; i < body.parts.length; i++) {\n\t\t var part = body.parts[i];\n\n\t\t if (isStatic) {\n\t\t if (!part.isStatic) {\n\t\t part._original = {\n\t\t restitution: part.restitution,\n\t\t friction: part.friction,\n\t\t mass: part.mass,\n\t\t inertia: part.inertia,\n\t\t density: part.density,\n\t\t inverseMass: part.inverseMass,\n\t\t inverseInertia: part.inverseInertia\n\t\t };\n\t\t }\n\n\t\t part.restitution = 0;\n\t\t part.friction = 1;\n\t\t part.mass = part.inertia = part.density = Infinity;\n\t\t part.inverseMass = part.inverseInertia = 0;\n\n\t\t part.positionPrev.x = part.position.x;\n\t\t part.positionPrev.y = part.position.y;\n\t\t part.anglePrev = part.angle;\n\t\t part.angularVelocity = 0;\n\t\t part.speed = 0;\n\t\t part.angularSpeed = 0;\n\t\t part.motion = 0;\n\t\t } else if (part._original) {\n\t\t part.restitution = part._original.restitution;\n\t\t part.friction = part._original.friction;\n\t\t part.mass = part._original.mass;\n\t\t part.inertia = part._original.inertia;\n\t\t part.density = part._original.density;\n\t\t part.inverseMass = part._original.inverseMass;\n\t\t part.inverseInertia = part._original.inverseInertia;\n\n\t\t part._original = null;\n\t\t }\n\n\t\t part.isStatic = isStatic;\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Sets the mass of the body. Inverse mass, density and inertia are automatically updated to reflect the change.\n\t\t * @method setMass\n\t\t * @param {body} body\n\t\t * @param {number} mass\n\t\t */\n\t\t Body.setMass = function(body, mass) {\n\t\t var moment = body.inertia / (body.mass / 6);\n\t\t body.inertia = moment * (mass / 6);\n\t\t body.inverseInertia = 1 / body.inertia;\n\n\t\t body.mass = mass;\n\t\t body.inverseMass = 1 / body.mass;\n\t\t body.density = body.mass / body.area;\n\t\t };\n\n\t\t /**\n\t\t * Sets the density of the body. Mass and inertia are automatically updated to reflect the change.\n\t\t * @method setDensity\n\t\t * @param {body} body\n\t\t * @param {number} density\n\t\t */\n\t\t Body.setDensity = function(body, density) {\n\t\t Body.setMass(body, density * body.area);\n\t\t body.density = density;\n\t\t };\n\n\t\t /**\n\t\t * Sets the moment of inertia of the body. This is the second moment of area in two dimensions.\n\t\t * Inverse inertia is automatically updated to reflect the change. Mass is not changed.\n\t\t * @method setInertia\n\t\t * @param {body} body\n\t\t * @param {number} inertia\n\t\t */\n\t\t Body.setInertia = function(body, inertia) {\n\t\t body.inertia = inertia;\n\t\t body.inverseInertia = 1 / body.inertia;\n\t\t };\n\n\t\t /**\n\t\t * Sets the body's vertices and updates body properties accordingly, including inertia, area and mass (with respect to `body.density`).\n\t\t * Vertices will be automatically transformed to be orientated around their centre of mass as the origin.\n\t\t * They are then automatically translated to world space based on `body.position`.\n\t\t *\n\t\t * The `vertices` argument should be passed as an array of `Matter.Vector` points (or a `Matter.Vertices` array).\n\t\t * Vertices must form a convex hull. Concave vertices must be decomposed into convex parts.\n\t\t * \n\t\t * @method setVertices\n\t\t * @param {body} body\n\t\t * @param {vector[]} vertices\n\t\t */\n\t\t Body.setVertices = function(body, vertices) {\n\t\t // change vertices\n\t\t if (vertices[0].body === body) {\n\t\t body.vertices = vertices;\n\t\t } else {\n\t\t body.vertices = Vertices.create(vertices, body);\n\t\t }\n\n\t\t // update properties\n\t\t body.axes = Axes.fromVertices(body.vertices);\n\t\t body.area = Vertices.area(body.vertices);\n\t\t Body.setMass(body, body.density * body.area);\n\n\t\t // orient vertices around the centre of mass at origin (0, 0)\n\t\t var centre = Vertices.centre(body.vertices);\n\t\t Vertices.translate(body.vertices, centre, -1);\n\n\t\t // update inertia while vertices are at origin (0, 0)\n\t\t Body.setInertia(body, Body._inertiaScale * Vertices.inertia(body.vertices, body.mass));\n\n\t\t // update geometry\n\t\t Vertices.translate(body.vertices, body.position);\n\t\t Bounds.update(body.bounds, body.vertices, body.velocity);\n\t\t };\n\n\t\t /**\n\t\t * Sets the parts of the `body`. \n\t\t * \n\t\t * See `body.parts` for details and requirements on how parts are used.\n\t\t * \n\t\t * See Bodies.fromVertices for a related utility.\n\t\t * \n\t\t * This function updates `body` mass, inertia and centroid based on the parts geometry. \n\t\t * Sets each `part.parent` to be this `body`. \n\t\t * \n\t\t * The convex hull is computed and set on this `body` (unless `autoHull` is `false`). \n\t\t * Automatically ensures that the first part in `body.parts` is the `body`.\n\t\t * @method setParts\n\t\t * @param {body} body\n\t\t * @param {body[]} parts\n\t\t * @param {bool} [autoHull=true]\n\t\t */\n\t\t Body.setParts = function(body, parts, autoHull) {\n\t\t var i;\n\n\t\t // add all the parts, ensuring that the first part is always the parent body\n\t\t parts = parts.slice(0);\n\t\t body.parts.length = 0;\n\t\t body.parts.push(body);\n\t\t body.parent = body;\n\n\t\t for (i = 0; i < parts.length; i++) {\n\t\t var part = parts[i];\n\t\t if (part !== body) {\n\t\t part.parent = body;\n\t\t body.parts.push(part);\n\t\t }\n\t\t }\n\n\t\t if (body.parts.length === 1)\n\t\t return;\n\n\t\t autoHull = typeof autoHull !== 'undefined' ? autoHull : true;\n\n\t\t // find the convex hull of all parts to set on the parent body\n\t\t if (autoHull) {\n\t\t var vertices = [];\n\t\t for (i = 0; i < parts.length; i++) {\n\t\t vertices = vertices.concat(parts[i].vertices);\n\t\t }\n\n\t\t Vertices.clockwiseSort(vertices);\n\n\t\t var hull = Vertices.hull(vertices),\n\t\t hullCentre = Vertices.centre(hull);\n\n\t\t Body.setVertices(body, hull);\n\t\t Vertices.translate(body.vertices, hullCentre);\n\t\t }\n\n\t\t // sum the properties of all compound parts of the parent body\n\t\t var total = Body._totalProperties(body);\n\n\t\t body.area = total.area;\n\t\t body.parent = body;\n\t\t body.position.x = total.centre.x;\n\t\t body.position.y = total.centre.y;\n\t\t body.positionPrev.x = total.centre.x;\n\t\t body.positionPrev.y = total.centre.y;\n\n\t\t Body.setMass(body, total.mass);\n\t\t Body.setInertia(body, total.inertia);\n\t\t Body.setPosition(body, total.centre);\n\t\t };\n\n\t\t /**\n\t\t * Set the centre of mass of the body. \n\t\t * The `centre` is a vector in world-space unless `relative` is set, in which case it is a translation.\n\t\t * The centre of mass is the point the body rotates about and can be used to simulate non-uniform density.\n\t\t * This is equal to moving `body.position` but not the `body.vertices`.\n\t\t * Invalid if the `centre` falls outside the body's convex hull.\n\t\t * @method setCentre\n\t\t * @param {body} body\n\t\t * @param {vector} centre\n\t\t * @param {bool} relative\n\t\t */\n\t\t Body.setCentre = function(body, centre, relative) {\n\t\t if (!relative) {\n\t\t body.positionPrev.x = centre.x - (body.position.x - body.positionPrev.x);\n\t\t body.positionPrev.y = centre.y - (body.position.y - body.positionPrev.y);\n\t\t body.position.x = centre.x;\n\t\t body.position.y = centre.y;\n\t\t } else {\n\t\t body.positionPrev.x += centre.x;\n\t\t body.positionPrev.y += centre.y;\n\t\t body.position.x += centre.x;\n\t\t body.position.y += centre.y;\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Sets the position of the body. By default velocity is unchanged.\n\t\t * If `updateVelocity` is `true` then velocity is inferred from the change in position.\n\t\t * @method setPosition\n\t\t * @param {body} body\n\t\t * @param {vector} position\n\t\t * @param {boolean} [updateVelocity=false]\n\t\t */\n\t\t Body.setPosition = function(body, position, updateVelocity) {\n\t\t var delta = Vector.sub(position, body.position);\n\n\t\t if (updateVelocity) {\n\t\t body.positionPrev.x = body.position.x;\n\t\t body.positionPrev.y = body.position.y;\n\t\t body.velocity.x = delta.x;\n\t\t body.velocity.y = delta.y;\n\t\t body.speed = Vector.magnitude(delta);\n\t\t } else {\n\t\t body.positionPrev.x += delta.x;\n\t\t body.positionPrev.y += delta.y;\n\t\t }\n\n\t\t for (var i = 0; i < body.parts.length; i++) {\n\t\t var part = body.parts[i];\n\t\t part.position.x += delta.x;\n\t\t part.position.y += delta.y;\n\t\t Vertices.translate(part.vertices, delta);\n\t\t Bounds.update(part.bounds, part.vertices, body.velocity);\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Sets the angle of the body. By default angular velocity is unchanged.\n\t\t * If `updateVelocity` is `true` then angular velocity is inferred from the change in angle.\n\t\t * @method setAngle\n\t\t * @param {body} body\n\t\t * @param {number} angle\n\t\t * @param {boolean} [updateVelocity=false]\n\t\t */\n\t\t Body.setAngle = function(body, angle, updateVelocity) {\n\t\t var delta = angle - body.angle;\n\t\t \n\t\t if (updateVelocity) {\n\t\t body.anglePrev = body.angle;\n\t\t body.angularVelocity = delta;\n\t\t body.angularSpeed = Math.abs(delta);\n\t\t } else {\n\t\t body.anglePrev += delta;\n\t\t }\n\n\t\t for (var i = 0; i < body.parts.length; i++) {\n\t\t var part = body.parts[i];\n\t\t part.angle += delta;\n\t\t Vertices.rotate(part.vertices, delta, body.position);\n\t\t Axes.rotate(part.axes, delta);\n\t\t Bounds.update(part.bounds, part.vertices, body.velocity);\n\t\t if (i > 0) {\n\t\t Vector.rotateAbout(part.position, delta, body.position, part.position);\n\t\t }\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Sets the current linear velocity of the body. \n\t\t * Affects body speed.\n\t\t * @method setVelocity\n\t\t * @param {body} body\n\t\t * @param {vector} velocity\n\t\t */\n\t\t Body.setVelocity = function(body, velocity) {\n\t\t var timeScale = body.deltaTime / Body._baseDelta;\n\t\t body.positionPrev.x = body.position.x - velocity.x * timeScale;\n\t\t body.positionPrev.y = body.position.y - velocity.y * timeScale;\n\t\t body.velocity.x = (body.position.x - body.positionPrev.x) / timeScale;\n\t\t body.velocity.y = (body.position.y - body.positionPrev.y) / timeScale;\n\t\t body.speed = Vector.magnitude(body.velocity);\n\t\t };\n\n\t\t /**\n\t\t * Gets the current linear velocity of the body.\n\t\t * @method getVelocity\n\t\t * @param {body} body\n\t\t * @return {vector} velocity\n\t\t */\n\t\t Body.getVelocity = function(body) {\n\t\t var timeScale = Body._baseDelta / body.deltaTime;\n\n\t\t return {\n\t\t x: (body.position.x - body.positionPrev.x) * timeScale,\n\t\t y: (body.position.y - body.positionPrev.y) * timeScale\n\t\t };\n\t\t };\n\n\t\t /**\n\t\t * Gets the current linear speed of the body. \n\t\t * Equivalent to the magnitude of its velocity.\n\t\t * @method getSpeed\n\t\t * @param {body} body\n\t\t * @return {number} speed\n\t\t */\n\t\t Body.getSpeed = function(body) {\n\t\t return Vector.magnitude(Body.getVelocity(body));\n\t\t };\n\n\t\t /**\n\t\t * Sets the current linear speed of the body. \n\t\t * Direction is maintained. Affects body velocity.\n\t\t * @method setSpeed\n\t\t * @param {body} body\n\t\t * @param {number} speed\n\t\t */\n\t\t Body.setSpeed = function(body, speed) {\n\t\t Body.setVelocity(body, Vector.mult(Vector.normalise(Body.getVelocity(body)), speed));\n\t\t };\n\n\t\t /**\n\t\t * Sets the current rotational velocity of the body. \n\t\t * Affects body angular speed.\n\t\t * @method setAngularVelocity\n\t\t * @param {body} body\n\t\t * @param {number} velocity\n\t\t */\n\t\t Body.setAngularVelocity = function(body, velocity) {\n\t\t var timeScale = body.deltaTime / Body._baseDelta;\n\t\t body.anglePrev = body.angle - velocity * timeScale;\n\t\t body.angularVelocity = (body.angle - body.anglePrev) / timeScale;\n\t\t body.angularSpeed = Math.abs(body.angularVelocity);\n\t\t };\n\n\t\t /**\n\t\t * Gets the current rotational velocity of the body.\n\t\t * @method getAngularVelocity\n\t\t * @param {body} body\n\t\t * @return {number} angular velocity\n\t\t */\n\t\t Body.getAngularVelocity = function(body) {\n\t\t return (body.angle - body.anglePrev) * Body._baseDelta / body.deltaTime;\n\t\t };\n\n\t\t /**\n\t\t * Gets the current rotational speed of the body. \n\t\t * Equivalent to the magnitude of its angular velocity.\n\t\t * @method getAngularSpeed\n\t\t * @param {body} body\n\t\t * @return {number} angular speed\n\t\t */\n\t\t Body.getAngularSpeed = function(body) {\n\t\t return Math.abs(Body.getAngularVelocity(body));\n\t\t };\n\n\t\t /**\n\t\t * Sets the current rotational speed of the body. \n\t\t * Direction is maintained. Affects body angular velocity.\n\t\t * @method setAngularSpeed\n\t\t * @param {body} body\n\t\t * @param {number} speed\n\t\t */\n\t\t Body.setAngularSpeed = function(body, speed) {\n\t\t Body.setAngularVelocity(body, Common.sign(Body.getAngularVelocity(body)) * speed);\n\t\t };\n\n\t\t /**\n\t\t * Moves a body by a given vector relative to its current position. By default velocity is unchanged.\n\t\t * If `updateVelocity` is `true` then velocity is inferred from the change in position.\n\t\t * @method translate\n\t\t * @param {body} body\n\t\t * @param {vector} translation\n\t\t * @param {boolean} [updateVelocity=false]\n\t\t */\n\t\t Body.translate = function(body, translation, updateVelocity) {\n\t\t Body.setPosition(body, Vector.add(body.position, translation), updateVelocity);\n\t\t };\n\n\t\t /**\n\t\t * Rotates a body by a given angle relative to its current angle. By default angular velocity is unchanged.\n\t\t * If `updateVelocity` is `true` then angular velocity is inferred from the change in angle.\n\t\t * @method rotate\n\t\t * @param {body} body\n\t\t * @param {number} rotation\n\t\t * @param {vector} [point]\n\t\t * @param {boolean} [updateVelocity=false]\n\t\t */\n\t\t Body.rotate = function(body, rotation, point, updateVelocity) {\n\t\t if (!point) {\n\t\t Body.setAngle(body, body.angle + rotation, updateVelocity);\n\t\t } else {\n\t\t var cos = Math.cos(rotation),\n\t\t sin = Math.sin(rotation),\n\t\t dx = body.position.x - point.x,\n\t\t dy = body.position.y - point.y;\n\t\t \n\t\t Body.setPosition(body, {\n\t\t x: point.x + (dx * cos - dy * sin),\n\t\t y: point.y + (dx * sin + dy * cos)\n\t\t }, updateVelocity);\n\n\t\t Body.setAngle(body, body.angle + rotation, updateVelocity);\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Scales the body, including updating physical properties (mass, area, axes, inertia), from a world-space point (default is body centre).\n\t\t * @method scale\n\t\t * @param {body} body\n\t\t * @param {number} scaleX\n\t\t * @param {number} scaleY\n\t\t * @param {vector} [point]\n\t\t */\n\t\t Body.scale = function(body, scaleX, scaleY, point) {\n\t\t var totalArea = 0,\n\t\t totalInertia = 0;\n\n\t\t point = point || body.position;\n\n\t\t for (var i = 0; i < body.parts.length; i++) {\n\t\t var part = body.parts[i];\n\n\t\t // scale vertices\n\t\t Vertices.scale(part.vertices, scaleX, scaleY, point);\n\n\t\t // update properties\n\t\t part.axes = Axes.fromVertices(part.vertices);\n\t\t part.area = Vertices.area(part.vertices);\n\t\t Body.setMass(part, body.density * part.area);\n\n\t\t // update inertia (requires vertices to be at origin)\n\t\t Vertices.translate(part.vertices, { x: -part.position.x, y: -part.position.y });\n\t\t Body.setInertia(part, Body._inertiaScale * Vertices.inertia(part.vertices, part.mass));\n\t\t Vertices.translate(part.vertices, { x: part.position.x, y: part.position.y });\n\n\t\t if (i > 0) {\n\t\t totalArea += part.area;\n\t\t totalInertia += part.inertia;\n\t\t }\n\n\t\t // scale position\n\t\t part.position.x = point.x + (part.position.x - point.x) * scaleX;\n\t\t part.position.y = point.y + (part.position.y - point.y) * scaleY;\n\n\t\t // update bounds\n\t\t Bounds.update(part.bounds, part.vertices, body.velocity);\n\t\t }\n\n\t\t // handle parent body\n\t\t if (body.parts.length > 1) {\n\t\t body.area = totalArea;\n\n\t\t if (!body.isStatic) {\n\t\t Body.setMass(body, body.density * totalArea);\n\t\t Body.setInertia(body, totalInertia);\n\t\t }\n\t\t }\n\n\t\t // handle circles\n\t\t if (body.circleRadius) { \n\t\t if (scaleX === scaleY) {\n\t\t body.circleRadius *= scaleX;\n\t\t } else {\n\t\t // body is no longer a circle\n\t\t body.circleRadius = null;\n\t\t }\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Performs an update by integrating the equations of motion on the `body`.\n\t\t * This is applied every update by `Matter.Engine` automatically.\n\t\t * @method update\n\t\t * @param {body} body\n\t\t * @param {number} [deltaTime=16.666]\n\t\t */\n\t\t Body.update = function(body, deltaTime) {\n\t\t deltaTime = (typeof deltaTime !== 'undefined' ? deltaTime : (1000 / 60)) * body.timeScale;\n\n\t\t var deltaTimeSquared = deltaTime * deltaTime,\n\t\t correction = Body._timeCorrection ? deltaTime / (body.deltaTime || deltaTime) : 1;\n\n\t\t // from the previous step\n\t\t var frictionAir = 1 - body.frictionAir * (deltaTime / Common._baseDelta),\n\t\t velocityPrevX = (body.position.x - body.positionPrev.x) * correction,\n\t\t velocityPrevY = (body.position.y - body.positionPrev.y) * correction;\n\n\t\t // update velocity with Verlet integration\n\t\t body.velocity.x = (velocityPrevX * frictionAir) + (body.force.x / body.mass) * deltaTimeSquared;\n\t\t body.velocity.y = (velocityPrevY * frictionAir) + (body.force.y / body.mass) * deltaTimeSquared;\n\n\t\t body.positionPrev.x = body.position.x;\n\t\t body.positionPrev.y = body.position.y;\n\t\t body.position.x += body.velocity.x;\n\t\t body.position.y += body.velocity.y;\n\t\t body.deltaTime = deltaTime;\n\n\t\t // update angular velocity with Verlet integration\n\t\t body.angularVelocity = ((body.angle - body.anglePrev) * frictionAir * correction) + (body.torque / body.inertia) * deltaTimeSquared;\n\t\t body.anglePrev = body.angle;\n\t\t body.angle += body.angularVelocity;\n\n\t\t // transform the body geometry\n\t\t for (var i = 0; i < body.parts.length; i++) {\n\t\t var part = body.parts[i];\n\n\t\t Vertices.translate(part.vertices, body.velocity);\n\t\t \n\t\t if (i > 0) {\n\t\t part.position.x += body.velocity.x;\n\t\t part.position.y += body.velocity.y;\n\t\t }\n\n\t\t if (body.angularVelocity !== 0) {\n\t\t Vertices.rotate(part.vertices, body.angularVelocity, body.position);\n\t\t Axes.rotate(part.axes, body.angularVelocity);\n\t\t if (i > 0) {\n\t\t Vector.rotateAbout(part.position, body.angularVelocity, body.position, part.position);\n\t\t }\n\t\t }\n\n\t\t Bounds.update(part.bounds, part.vertices, body.velocity);\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Updates properties `body.velocity`, `body.speed`, `body.angularVelocity` and `body.angularSpeed` which are normalised in relation to `Body._baseDelta`.\n\t\t * @method updateVelocities\n\t\t * @param {body} body\n\t\t */\n\t\t Body.updateVelocities = function(body) {\n\t\t var timeScale = Body._baseDelta / body.deltaTime,\n\t\t bodyVelocity = body.velocity;\n\n\t\t bodyVelocity.x = (body.position.x - body.positionPrev.x) * timeScale;\n\t\t bodyVelocity.y = (body.position.y - body.positionPrev.y) * timeScale;\n\t\t body.speed = Math.sqrt((bodyVelocity.x * bodyVelocity.x) + (bodyVelocity.y * bodyVelocity.y));\n\n\t\t body.angularVelocity = (body.angle - body.anglePrev) * timeScale;\n\t\t body.angularSpeed = Math.abs(body.angularVelocity);\n\t\t };\n\n\t\t /**\n\t\t * Applies the `force` to the `body` from the force origin `position` in world-space, over a single timestep, including applying any resulting angular torque.\n\t\t * \n\t\t * Forces are useful for effects like gravity, wind or rocket thrust, but can be difficult in practice when precise control is needed. In these cases see `Body.setVelocity` and `Body.setPosition` as an alternative.\n\t\t * \n\t\t * The force from this function is only applied once for the duration of a single timestep, in other words the duration depends directly on the current engine update `delta` and the rate of calls to this function.\n\t\t * \n\t\t * Therefore to account for time, you should apply the force constantly over as many engine updates as equivalent to the intended duration.\n\t\t * \n\t\t * If all or part of the force duration is some fraction of a timestep, first multiply the force by `duration / timestep`.\n\t\t * \n\t\t * The force origin `position` in world-space must also be specified. Passing `body.position` will result in zero angular effect as the force origin would be at the centre of mass.\n\t\t * \n\t\t * The `body` will take time to accelerate under a force, the resulting effect depends on duration of the force, the body mass and other forces on the body including friction combined.\n\t\t * @method applyForce\n\t\t * @param {body} body\n\t\t * @param {vector} position The force origin in world-space. Pass `body.position` to avoid angular torque.\n\t\t * @param {vector} force\n\t\t */\n\t\t Body.applyForce = function(body, position, force) {\n\t\t var offset = { x: position.x - body.position.x, y: position.y - body.position.y };\n\t\t body.force.x += force.x;\n\t\t body.force.y += force.y;\n\t\t body.torque += offset.x * force.y - offset.y * force.x;\n\t\t };\n\n\t\t /**\n\t\t * Returns the sums of the properties of all compound parts of the parent body.\n\t\t * @method _totalProperties\n\t\t * @private\n\t\t * @param {body} body\n\t\t * @return {}\n\t\t */\n\t\t Body._totalProperties = function(body) {\n\t\t // from equations at:\n\t\t // https://ecourses.ou.edu/cgi-bin/ebook.cgi?doc=&topic=st&chap_sec=07.2&page=theory\n\t\t // http://output.to/sideway/default.asp?qno=121100087\n\n\t\t var properties = {\n\t\t mass: 0,\n\t\t area: 0,\n\t\t inertia: 0,\n\t\t centre: { x: 0, y: 0 }\n\t\t };\n\n\t\t // sum the properties of all compound parts of the parent body\n\t\t for (var i = body.parts.length === 1 ? 0 : 1; i < body.parts.length; i++) {\n\t\t var part = body.parts[i],\n\t\t mass = part.mass !== Infinity ? part.mass : 1;\n\n\t\t properties.mass += mass;\n\t\t properties.area += part.area;\n\t\t properties.inertia += part.inertia;\n\t\t properties.centre = Vector.add(properties.centre, Vector.mult(part.position, mass));\n\t\t }\n\n\t\t properties.centre = Vector.div(properties.centre, properties.mass);\n\n\t\t return properties;\n\t\t };\n\n\t\t /*\n\t\t *\n\t\t * Events Documentation\n\t\t *\n\t\t */\n\n\t\t /**\n\t\t * Fired when a body starts sleeping (where `this` is the body).\n\t\t *\n\t\t * @event sleepStart\n\t\t * @this {body} The body that has started sleeping\n\t\t * @param {} event An event object\n\t\t * @param {} event.source The source object of the event\n\t\t * @param {} event.name The name of the event\n\t\t */\n\n\t\t /**\n\t\t * Fired when a body ends sleeping (where `this` is the body).\n\t\t *\n\t\t * @event sleepEnd\n\t\t * @this {body} The body that has ended sleeping\n\t\t * @param {} event An event object\n\t\t * @param {} event.source The source object of the event\n\t\t * @param {} event.name The name of the event\n\t\t */\n\n\t\t /*\n\t\t *\n\t\t * Properties Documentation\n\t\t *\n\t\t */\n\n\t\t /**\n\t\t * An integer `Number` uniquely identifying number generated in `Body.create` by `Common.nextId`.\n\t\t *\n\t\t * @property id\n\t\t * @type number\n\t\t */\n\n\t\t /**\n\t\t * _Read only_. Set by `Body.create`.\n\t\t * \n\t\t * A `String` denoting the type of object.\n\t\t *\n\t\t * @readOnly\n\t\t * @property type\n\t\t * @type string\n\t\t * @default \"body\"\n\t\t */\n\n\t\t /**\n\t\t * An arbitrary `String` name to help the user identify and manage bodies.\n\t\t *\n\t\t * @property label\n\t\t * @type string\n\t\t * @default \"Body\"\n\t\t */\n\n\t\t /**\n\t\t * _Read only_. Use `Body.setParts` to set. \n\t\t * \n\t\t * See `Bodies.fromVertices` for a related utility.\n\t\t * \n\t\t * An array of bodies (the 'parts') that make up this body (the 'parent'). The first body in this array must always be a self-reference to this `body`. \n\t\t * \n\t\t * The parts are fixed together and therefore perform as a single unified rigid body.\n\t\t * \n\t\t * Parts in relation to each other are allowed to overlap, as well as form gaps or holes, so can be used to create complex concave bodies unlike when using a single part. \n\t\t * \n\t\t * Use properties and functions on the parent `body` rather than on parts.\n\t\t * \n\t\t * Outside of their geometry, most properties on parts are not considered or updated. \n\t\t * As such 'per-part' material properties among others are not currently considered.\n\t\t * \n\t\t * Parts should be created specifically for their parent body. \n\t\t * Parts should not be shared or reused between bodies, only one parent is supported. \n\t\t * Parts should not have their own parts, they are not handled recursively. \n\t\t * Parts should not be added to the world directly or any other composite. \n\t\t * Parts own vertices must be convex and in clockwise order. \n\t\t * \n\t\t * A body with more than one part is sometimes referred to as a 'compound' body. \n\t\t * \n\t\t * Use `Body.setParts` when setting parts to ensure correct updates of all properties. \n\t\t *\n\t\t * @readOnly\n\t\t * @property parts\n\t\t * @type body[]\n\t\t */\n\n\t\t /**\n\t\t * An object reserved for storing plugin-specific properties.\n\t\t *\n\t\t * @property plugin\n\t\t * @type {}\n\t\t */\n\n\t\t /**\n\t\t * _Read only_. Updated by `Body.setParts`.\n\t\t * \n\t\t * A reference to the body that this is a part of. See `body.parts`.\n\t\t * This is a self reference if the body is not a part of another body.\n\t\t *\n\t\t * @readOnly\n\t\t * @property parent\n\t\t * @type body\n\t\t */\n\n\t\t /**\n\t\t * A `Number` specifying the angle of the body, in radians.\n\t\t *\n\t\t * @property angle\n\t\t * @type number\n\t\t * @default 0\n\t\t */\n\n\t\t /**\n\t\t * _Read only_. Use `Body.setVertices` or `Body.setParts` to set. See also `Bodies.fromVertices`.\n\t\t * \n\t\t * An array of `Vector` objects that specify the convex hull of the rigid body.\n\t\t * These should be provided about the origin `(0, 0)`. E.g.\n\t\t *\n\t\t * `[{ x: 0, y: 0 }, { x: 25, y: 50 }, { x: 50, y: 0 }]`\n\t\t * \n\t\t * Vertices must always be convex, in clockwise order and must not contain any duplicate points.\n\t\t * \n\t\t * Concave vertices should be decomposed into convex `parts`, see `Bodies.fromVertices` and `Body.setParts`.\n\t\t *\n\t\t * When set the vertices are translated such that `body.position` is at the centre of mass.\n\t\t * Many other body properties are automatically calculated from these vertices when set including `density`, `area` and `inertia`.\n\t\t * \n\t\t * The module `Matter.Vertices` contains useful methods for working with vertices.\n\t\t *\n\t\t * @readOnly\n\t\t * @property vertices\n\t\t * @type vector[]\n\t\t */\n\n\t\t /**\n\t\t * _Read only_. Use `Body.setPosition` to set. \n\t\t * \n\t\t * A `Vector` that specifies the current world-space position of the body.\n\t\t * \n\t\t * @readOnly\n\t\t * @property position\n\t\t * @type vector\n\t\t * @default { x: 0, y: 0 }\n\t\t */\n\n\t\t /**\n\t\t * A `Vector` that accumulates the total force applied to the body for a single update.\n\t\t * Force is zeroed after every `Engine.update`, so constant forces should be applied for every update they are needed. See also `Body.applyForce`.\n\t\t * \n\t\t * @property force\n\t\t * @type vector\n\t\t * @default { x: 0, y: 0 }\n\t\t */\n\n\t\t /**\n\t\t * A `Number` that accumulates the total torque (turning force) applied to the body for a single update. See also `Body.applyForce`.\n\t\t * Torque is zeroed after every `Engine.update`, so constant torques should be applied for every update they are needed.\n\t\t *\n\t\t * Torques result in angular acceleration on every update, which depends on body inertia and the engine update delta.\n\t\t * \n\t\t * @property torque\n\t\t * @type number\n\t\t * @default 0\n\t\t */\n\n\t\t /**\n\t\t * _Read only_. Use `Body.setSpeed` to set. \n\t\t * \n\t\t * See `Body.getSpeed` for details.\n\t\t * \n\t\t * Equivalent to the magnitude of `body.velocity` (always positive).\n\t\t * \n\t\t * @readOnly\n\t\t * @property speed\n\t\t * @type number\n\t\t * @default 0\n\t\t */\n\n\t\t /**\n\t\t * _Read only_. Use `Body.setVelocity` to set. \n\t\t * \n\t\t * See `Body.getVelocity` for details.\n\t\t * \n\t\t * Equivalent to the magnitude of `body.angularVelocity` (always positive).\n\t\t * \n\t\t * @readOnly\n\t\t * @property velocity\n\t\t * @type vector\n\t\t * @default { x: 0, y: 0 }\n\t\t */\n\n\t\t /**\n\t\t * _Read only_. Use `Body.setAngularSpeed` to set. \n\t\t * \n\t\t * See `Body.getAngularSpeed` for details.\n\t\t * \n\t\t * \n\t\t * @readOnly\n\t\t * @property angularSpeed\n\t\t * @type number\n\t\t * @default 0\n\t\t */\n\n\t\t /**\n\t\t * _Read only_. Use `Body.setAngularVelocity` to set. \n\t\t * \n\t\t * See `Body.getAngularVelocity` for details.\n\t\t * \n\t\t *\n\t\t * @readOnly\n\t\t * @property angularVelocity\n\t\t * @type number\n\t\t * @default 0\n\t\t */\n\n\t\t /**\n\t\t * _Read only_. Use `Body.setStatic` to set. \n\t\t * \n\t\t * A flag that indicates whether a body is considered static. A static body can never change position or angle and is completely fixed.\n\t\t *\n\t\t * @readOnly\n\t\t * @property isStatic\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\n\t\t /**\n\t\t * A flag that indicates whether a body is a sensor. Sensor triggers collision events, but doesn't react with colliding body physically.\n\t\t *\n\t\t * @property isSensor\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\n\t\t /**\n\t\t * _Read only_. Use `Sleeping.set` to set. \n\t\t * \n\t\t * A flag that indicates whether the body is considered sleeping. A sleeping body acts similar to a static body, except it is only temporary and can be awoken.\n\t\t *\n\t\t * @readOnly\n\t\t * @property isSleeping\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\n\t\t /**\n\t\t * _Read only_. Calculated during engine update only when sleeping is enabled.\n\t\t * \n\t\t * A `Number` that loosely measures the amount of movement a body currently has.\n\t\t *\n\t\t * Derived from `body.speed^2 + body.angularSpeed^2`. See `Sleeping.update`.\n\t\t * \n\t\t * @readOnly\n\t\t * @property motion\n\t\t * @type number\n\t\t * @default 0\n\t\t */\n\n\t\t /**\n\t\t * A `Number` that defines the length of time during which this body must have near-zero velocity before it is set as sleeping by the `Matter.Sleeping` module (if sleeping is enabled by the engine).\n\t\t * \n\t\t * @property sleepThreshold\n\t\t * @type number\n\t\t * @default 60\n\t\t */\n\n\t\t /**\n\t\t * _Read only_. Use `Body.setDensity` to set. \n\t\t * \n\t\t * A `Number` that defines the density of the body (mass per unit area).\n\t\t * \n\t\t * Mass will also be updated when set.\n\t\t *\n\t\t * @readOnly\n\t\t * @property density\n\t\t * @type number\n\t\t * @default 0.001\n\t\t */\n\n\t\t /**\n\t\t * _Read only_. Use `Body.setMass` to set. \n\t\t * \n\t\t * A `Number` that defines the mass of the body.\n\t\t * \n\t\t * Density will also be updated when set.\n\t\t * \n\t\t * @readOnly\n\t\t * @property mass\n\t\t * @type number\n\t\t */\n\n\t\t /**\n\t\t * _Read only_. Use `Body.setMass` to set. \n\t\t * \n\t\t * A `Number` that defines the inverse mass of the body (`1 / mass`).\n\t\t *\n\t\t * @readOnly\n\t\t * @property inverseMass\n\t\t * @type number\n\t\t */\n\n\t\t /**\n\t\t * _Read only_. Automatically calculated when vertices, mass or density are set or set through `Body.setInertia`.\n\t\t * \n\t\t * A `Number` that defines the moment of inertia of the body. This is the second moment of area in two dimensions.\n\t\t * \n\t\t * Can be manually set to `Infinity` to prevent rotation of the body. See `Body.setInertia`.\n\t\t * \n\t\t * @readOnly\n\t\t * @property inertia\n\t\t * @type number\n\t\t */\n\n\t\t /**\n\t\t * _Read only_. Automatically calculated when vertices, mass or density are set or calculated by `Body.setInertia`.\n\t\t * \n\t\t * A `Number` that defines the inverse moment of inertia of the body (`1 / inertia`).\n\t\t * \n\t\t * @readOnly\n\t\t * @property inverseInertia\n\t\t * @type number\n\t\t */\n\n\t\t /**\n\t\t * A `Number` that defines the restitution (elasticity) of the body. The value is always positive and is in the range `(0, 1)`.\n\t\t * A value of `0` means collisions may be perfectly inelastic and no bouncing may occur. \n\t\t * A value of `0.8` means the body may bounce back with approximately 80% of its kinetic energy.\n\t\t * Note that collision response is based on _pairs_ of bodies, and that `restitution` values are _combined_ with the following formula:\n\t\t *\n\t\t * `Math.max(bodyA.restitution, bodyB.restitution)`\n\t\t *\n\t\t * @property restitution\n\t\t * @type number\n\t\t * @default 0\n\t\t */\n\n\t\t /**\n\t\t * A `Number` that defines the friction of the body. The value is always positive and is in the range `(0, 1)`.\n\t\t * A value of `0` means that the body may slide indefinitely.\n\t\t * A value of `1` means the body may come to a stop almost instantly after a force is applied.\n\t\t *\n\t\t * The effects of the value may be non-linear. \n\t\t * High values may be unstable depending on the body.\n\t\t * The engine uses a Coulomb friction model including static and kinetic friction.\n\t\t * Note that collision response is based on _pairs_ of bodies, and that `friction` values are _combined_ with the following formula:\n\t\t *\n\t\t * `Math.min(bodyA.friction, bodyB.friction)`\n\t\t *\n\t\t * @property friction\n\t\t * @type number\n\t\t * @default 0.1\n\t\t */\n\n\t\t /**\n\t\t * A `Number` that defines the static friction of the body (in the Coulomb friction model). \n\t\t * A value of `0` means the body will never 'stick' when it is nearly stationary and only dynamic `friction` is used.\n\t\t * The higher the value (e.g. `10`), the more force it will take to initially get the body moving when nearly stationary.\n\t\t * This value is multiplied with the `friction` property to make it easier to change `friction` and maintain an appropriate amount of static friction.\n\t\t *\n\t\t * @property frictionStatic\n\t\t * @type number\n\t\t * @default 0.5\n\t\t */\n\n\t\t /**\n\t\t * A `Number` that defines the air friction of the body (air resistance). \n\t\t * A value of `0` means the body will never slow as it moves through space.\n\t\t * The higher the value, the faster a body slows when moving through space.\n\t\t * The effects of the value are non-linear. \n\t\t *\n\t\t * @property frictionAir\n\t\t * @type number\n\t\t * @default 0.01\n\t\t */\n\n\t\t /**\n\t\t * An `Object` that specifies the collision filtering properties of this body.\n\t\t *\n\t\t * Collisions between two bodies will obey the following rules:\n\t\t * - If the two bodies have the same non-zero value of `collisionFilter.group`,\n\t\t * they will always collide if the value is positive, and they will never collide\n\t\t * if the value is negative.\n\t\t * - If the two bodies have different values of `collisionFilter.group` or if one\n\t\t * (or both) of the bodies has a value of 0, then the category/mask rules apply as follows:\n\t\t *\n\t\t * Each body belongs to a collision category, given by `collisionFilter.category`. This\n\t\t * value is used as a bit field and the category should have only one bit set, meaning that\n\t\t * the value of this property is a power of two in the range [1, 2^31]. Thus, there are 32\n\t\t * different collision categories available.\n\t\t *\n\t\t * Each body also defines a collision bitmask, given by `collisionFilter.mask` which specifies\n\t\t * the categories it collides with (the value is the bitwise AND value of all these categories).\n\t\t *\n\t\t * Using the category/mask rules, two bodies `A` and `B` collide if each includes the other's\n\t\t * category in its mask, i.e. `(categoryA & maskB) !== 0` and `(categoryB & maskA) !== 0`\n\t\t * are both true.\n\t\t *\n\t\t * @property collisionFilter\n\t\t * @type object\n\t\t */\n\n\t\t /**\n\t\t * An Integer `Number`, that specifies the collision group this body belongs to.\n\t\t * See `body.collisionFilter` for more information.\n\t\t *\n\t\t * @property collisionFilter.group\n\t\t * @type object\n\t\t * @default 0\n\t\t */\n\n\t\t /**\n\t\t * A bit field that specifies the collision category this body belongs to.\n\t\t * The category value should have only one bit set, for example `0x0001`.\n\t\t * This means there are up to 32 unique collision categories available.\n\t\t * See `body.collisionFilter` for more information.\n\t\t *\n\t\t * @property collisionFilter.category\n\t\t * @type object\n\t\t * @default 1\n\t\t */\n\n\t\t /**\n\t\t * A bit mask that specifies the collision categories this body may collide with.\n\t\t * See `body.collisionFilter` for more information.\n\t\t *\n\t\t * @property collisionFilter.mask\n\t\t * @type object\n\t\t * @default -1\n\t\t */\n\n\t\t /**\n\t\t * A `Number` that specifies a thin boundary around the body where it is allowed to slightly sink into other bodies.\n\t\t * \n\t\t * This is required for proper collision response, including friction and restitution effects.\n\t\t * \n\t\t * The default should generally suffice in most cases. You may need to decrease this value for very small bodies that are nearing the default value in scale.\n\t\t *\n\t\t * @property slop\n\t\t * @type number\n\t\t * @default 0.05\n\t\t */\n\n\t\t /**\n\t\t * A `Number` that specifies per-body time scaling.\n\t\t *\n\t\t * @property timeScale\n\t\t * @type number\n\t\t * @default 1\n\t\t */\n\n\t\t /**\n\t\t * _Read only_. Updated during engine update.\n\t\t * \n\t\t * A `Number` that records the last delta time value used to update this body.\n\t\t * Used to calculate speed and velocity.\n\t\t *\n\t\t * @readOnly\n\t\t * @property deltaTime\n\t\t * @type number\n\t\t * @default 1000 / 60\n\t\t */\n\n\t\t /**\n\t\t * An `Object` that defines the rendering properties to be consumed by the module `Matter.Render`.\n\t\t *\n\t\t * @property render\n\t\t * @type object\n\t\t */\n\n\t\t /**\n\t\t * A flag that indicates if the body should be rendered.\n\t\t *\n\t\t * @property render.visible\n\t\t * @type boolean\n\t\t * @default true\n\t\t */\n\n\t\t /**\n\t\t * Sets the opacity to use when rendering.\n\t\t *\n\t\t * @property render.opacity\n\t\t * @type number\n\t\t * @default 1\n\t\t */\n\n\t\t /**\n\t\t * An `Object` that defines the sprite properties to use when rendering, if any.\n\t\t *\n\t\t * @property render.sprite\n\t\t * @type object\n\t\t */\n\n\t\t /**\n\t\t * An `String` that defines the path to the image to use as the sprite texture, if any.\n\t\t *\n\t\t * @property render.sprite.texture\n\t\t * @type string\n\t\t */\n\t\t \n\t\t /**\n\t\t * A `Number` that defines the scaling in the x-axis for the sprite, if any.\n\t\t *\n\t\t * @property render.sprite.xScale\n\t\t * @type number\n\t\t * @default 1\n\t\t */\n\n\t\t /**\n\t\t * A `Number` that defines the scaling in the y-axis for the sprite, if any.\n\t\t *\n\t\t * @property render.sprite.yScale\n\t\t * @type number\n\t\t * @default 1\n\t\t */\n\n\t\t /**\n\t\t * A `Number` that defines the offset in the x-axis for the sprite (normalised by texture width).\n\t\t *\n\t\t * @property render.sprite.xOffset\n\t\t * @type number\n\t\t * @default 0\n\t\t */\n\n\t\t /**\n\t\t * A `Number` that defines the offset in the y-axis for the sprite (normalised by texture height).\n\t\t *\n\t\t * @property render.sprite.yOffset\n\t\t * @type number\n\t\t * @default 0\n\t\t */\n\n\t\t /**\n\t\t * A `Number` that defines the line width to use when rendering the body outline (if a sprite is not defined).\n\t\t * A value of `0` means no outline will be rendered.\n\t\t *\n\t\t * @property render.lineWidth\n\t\t * @type number\n\t\t * @default 0\n\t\t */\n\n\t\t /**\n\t\t * A `String` that defines the fill style to use when rendering the body (if a sprite is not defined).\n\t\t * It is the same as when using a canvas, so it accepts CSS style property values.\n\t\t *\n\t\t * @property render.fillStyle\n\t\t * @type string\n\t\t * @default a random colour\n\t\t */\n\n\t\t /**\n\t\t * A `String` that defines the stroke style to use when rendering the body outline (if a sprite is not defined).\n\t\t * It is the same as when using a canvas, so it accepts CSS style property values.\n\t\t *\n\t\t * @property render.strokeStyle\n\t\t * @type string\n\t\t * @default a random colour\n\t\t */\n\n\t\t /**\n\t\t * _Read only_. Calculated automatically when vertices are set.\n\t\t * \n\t\t * An array of unique axis vectors (edge normals) used for collision detection.\n\t\t * These are automatically calculated when vertices are set.\n\t\t * They are constantly updated by `Body.update` during the simulation.\n\t\t *\n\t\t * @readOnly\n\t\t * @property axes\n\t\t * @type vector[]\n\t\t */\n\t\t \n\t\t /**\n\t\t * _Read only_. Calculated automatically when vertices are set.\n\t\t * \n\t\t * A `Number` that measures the area of the body's convex hull.\n\t\t * \n\t\t * @readOnly\n\t\t * @property area\n\t\t * @type string\n\t\t * @default \n\t\t */\n\n\t\t /**\n\t\t * A `Bounds` object that defines the AABB region for the body.\n\t\t * It is automatically calculated when vertices are set and constantly updated by `Body.update` during simulation.\n\t\t * \n\t\t * @property bounds\n\t\t * @type bounds\n\t\t */\n\n\t\t /**\n\t\t * Temporarily may hold parameters to be passed to `Vertices.chamfer` where supported by external functions.\n\t\t * \n\t\t * See `Vertices.chamfer` for possible parameters this object may hold.\n\t\t * \n\t\t * Currently only functions inside `Matter.Bodies` provide a utility using this property as a vertices pre-processing option.\n\t\t * \n\t\t * Alternatively consider using `Vertices.chamfer` directly on vertices before passing them to a body creation function.\n\t\t * \n\t\t * @property chamfer\n\t\t * @type object|null|undefined\n\t\t */\n\n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 5 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\n\t\t* The `Matter.Events` module contains methods to fire and listen to events on other objects.\n\t\t*\n\t\t* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n\t\t*\n\t\t* @class Events\n\t\t*/\n\n\t\tvar Events = {};\n\n\t\tmodule.exports = Events;\n\n\t\tvar Common = __webpack_require__(0);\n\n\t\t(function() {\n\n\t\t /**\n\t\t * Subscribes a callback function to the given object's `eventName`.\n\t\t * @method on\n\t\t * @param {} object\n\t\t * @param {string} eventNames\n\t\t * @param {function} callback\n\t\t */\n\t\t Events.on = function(object, eventNames, callback) {\n\t\t var names = eventNames.split(' '),\n\t\t name;\n\n\t\t for (var i = 0; i < names.length; i++) {\n\t\t name = names[i];\n\t\t object.events = object.events || {};\n\t\t object.events[name] = object.events[name] || [];\n\t\t object.events[name].push(callback);\n\t\t }\n\n\t\t return callback;\n\t\t };\n\n\t\t /**\n\t\t * Removes the given event callback. If no callback, clears all callbacks in `eventNames`. If no `eventNames`, clears all events.\n\t\t * @method off\n\t\t * @param {} object\n\t\t * @param {string} eventNames\n\t\t * @param {function} callback\n\t\t */\n\t\t Events.off = function(object, eventNames, callback) {\n\t\t if (!eventNames) {\n\t\t object.events = {};\n\t\t return;\n\t\t }\n\n\t\t // handle Events.off(object, callback)\n\t\t if (typeof eventNames === 'function') {\n\t\t callback = eventNames;\n\t\t eventNames = Common.keys(object.events).join(' ');\n\t\t }\n\n\t\t var names = eventNames.split(' ');\n\n\t\t for (var i = 0; i < names.length; i++) {\n\t\t var callbacks = object.events[names[i]],\n\t\t newCallbacks = [];\n\n\t\t if (callback && callbacks) {\n\t\t for (var j = 0; j < callbacks.length; j++) {\n\t\t if (callbacks[j] !== callback)\n\t\t newCallbacks.push(callbacks[j]);\n\t\t }\n\t\t }\n\n\t\t object.events[names[i]] = newCallbacks;\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Fires all the callbacks subscribed to the given object's `eventName`, in the order they subscribed, if any.\n\t\t * @method trigger\n\t\t * @param {} object\n\t\t * @param {string} eventNames\n\t\t * @param {} event\n\t\t */\n\t\t Events.trigger = function(object, eventNames, event) {\n\t\t var names,\n\t\t name,\n\t\t callbacks,\n\t\t eventClone;\n\n\t\t var events = object.events;\n\t\t \n\t\t if (events && Common.keys(events).length > 0) {\n\t\t if (!event)\n\t\t event = {};\n\n\t\t names = eventNames.split(' ');\n\n\t\t for (var i = 0; i < names.length; i++) {\n\t\t name = names[i];\n\t\t callbacks = events[name];\n\n\t\t if (callbacks) {\n\t\t eventClone = Common.clone(event, false);\n\t\t eventClone.name = name;\n\t\t eventClone.source = object;\n\n\t\t for (var j = 0; j < callbacks.length; j++) {\n\t\t callbacks[j].apply(object, [eventClone]);\n\t\t }\n\t\t }\n\t\t }\n\t\t }\n\t\t };\n\n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 6 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\n\t\t* A composite is a collection of `Matter.Body`, `Matter.Constraint` and other `Matter.Composite` objects.\n\t\t*\n\t\t* They are a container that can represent complex objects made of multiple parts, even if they are not physically connected.\n\t\t* A composite could contain anything from a single body all the way up to a whole world.\n\t\t* \n\t\t* When making any changes to composites, use the included functions rather than changing their properties directly.\n\t\t*\n\t\t* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n\t\t*\n\t\t* @class Composite\n\t\t*/\n\n\t\tvar Composite = {};\n\n\t\tmodule.exports = Composite;\n\n\t\tvar Events = __webpack_require__(5);\n\t\tvar Common = __webpack_require__(0);\n\t\tvar Bounds = __webpack_require__(1);\n\t\tvar Body = __webpack_require__(4);\n\n\t\t(function() {\n\n\t\t /**\n\t\t * Creates a new composite. The options parameter is an object that specifies any properties you wish to override the defaults.\n\t\t * See the properites section below for detailed information on what you can pass via the `options` object.\n\t\t * @method create\n\t\t * @param {} [options]\n\t\t * @return {composite} A new composite\n\t\t */\n\t\t Composite.create = function(options) {\n\t\t return Common.extend({ \n\t\t id: Common.nextId(),\n\t\t type: 'composite',\n\t\t parent: null,\n\t\t isModified: false,\n\t\t bodies: [], \n\t\t constraints: [], \n\t\t composites: [],\n\t\t label: 'Composite',\n\t\t plugin: {},\n\t\t cache: {\n\t\t allBodies: null,\n\t\t allConstraints: null,\n\t\t allComposites: null\n\t\t }\n\t\t }, options);\n\t\t };\n\n\t\t /**\n\t\t * Sets the composite's `isModified` flag. \n\t\t * If `updateParents` is true, all parents will be set (default: false).\n\t\t * If `updateChildren` is true, all children will be set (default: false).\n\t\t * @private\n\t\t * @method setModified\n\t\t * @param {composite} composite\n\t\t * @param {boolean} isModified\n\t\t * @param {boolean} [updateParents=false]\n\t\t * @param {boolean} [updateChildren=false]\n\t\t */\n\t\t Composite.setModified = function(composite, isModified, updateParents, updateChildren) {\n\t\t composite.isModified = isModified;\n\n\t\t if (isModified && composite.cache) {\n\t\t composite.cache.allBodies = null;\n\t\t composite.cache.allConstraints = null;\n\t\t composite.cache.allComposites = null;\n\t\t }\n\n\t\t if (updateParents && composite.parent) {\n\t\t Composite.setModified(composite.parent, isModified, updateParents, updateChildren);\n\t\t }\n\n\t\t if (updateChildren) {\n\t\t for (var i = 0; i < composite.composites.length; i++) {\n\t\t var childComposite = composite.composites[i];\n\t\t Composite.setModified(childComposite, isModified, updateParents, updateChildren);\n\t\t }\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Generic single or multi-add function. Adds a single or an array of body(s), constraint(s) or composite(s) to the given composite.\n\t\t * Triggers `beforeAdd` and `afterAdd` events on the `composite`.\n\t\t * @method add\n\t\t * @param {composite} composite\n\t\t * @param {object|array} object A single or an array of body(s), constraint(s) or composite(s)\n\t\t * @return {composite} The original composite with the objects added\n\t\t */\n\t\t Composite.add = function(composite, object) {\n\t\t var objects = [].concat(object);\n\n\t\t Events.trigger(composite, 'beforeAdd', { object: object });\n\n\t\t for (var i = 0; i < objects.length; i++) {\n\t\t var obj = objects[i];\n\n\t\t switch (obj.type) {\n\n\t\t case 'body':\n\t\t // skip adding compound parts\n\t\t if (obj.parent !== obj) {\n\t\t Common.warn('Composite.add: skipped adding a compound body part (you must add its parent instead)');\n\t\t break;\n\t\t }\n\n\t\t Composite.addBody(composite, obj);\n\t\t break;\n\t\t case 'constraint':\n\t\t Composite.addConstraint(composite, obj);\n\t\t break;\n\t\t case 'composite':\n\t\t Composite.addComposite(composite, obj);\n\t\t break;\n\t\t case 'mouseConstraint':\n\t\t Composite.addConstraint(composite, obj.constraint);\n\t\t break;\n\n\t\t }\n\t\t }\n\n\t\t Events.trigger(composite, 'afterAdd', { object: object });\n\n\t\t return composite;\n\t\t };\n\n\t\t /**\n\t\t * Generic remove function. Removes one or many body(s), constraint(s) or a composite(s) to the given composite.\n\t\t * Optionally searching its children recursively.\n\t\t * Triggers `beforeRemove` and `afterRemove` events on the `composite`.\n\t\t * @method remove\n\t\t * @param {composite} composite\n\t\t * @param {object|array} object\n\t\t * @param {boolean} [deep=false]\n\t\t * @return {composite} The original composite with the objects removed\n\t\t */\n\t\t Composite.remove = function(composite, object, deep) {\n\t\t var objects = [].concat(object);\n\n\t\t Events.trigger(composite, 'beforeRemove', { object: object });\n\n\t\t for (var i = 0; i < objects.length; i++) {\n\t\t var obj = objects[i];\n\n\t\t switch (obj.type) {\n\n\t\t case 'body':\n\t\t Composite.removeBody(composite, obj, deep);\n\t\t break;\n\t\t case 'constraint':\n\t\t Composite.removeConstraint(composite, obj, deep);\n\t\t break;\n\t\t case 'composite':\n\t\t Composite.removeComposite(composite, obj, deep);\n\t\t break;\n\t\t case 'mouseConstraint':\n\t\t Composite.removeConstraint(composite, obj.constraint);\n\t\t break;\n\n\t\t }\n\t\t }\n\n\t\t Events.trigger(composite, 'afterRemove', { object: object });\n\n\t\t return composite;\n\t\t };\n\n\t\t /**\n\t\t * Adds a composite to the given composite.\n\t\t * @private\n\t\t * @method addComposite\n\t\t * @param {composite} compositeA\n\t\t * @param {composite} compositeB\n\t\t * @return {composite} The original compositeA with the objects from compositeB added\n\t\t */\n\t\t Composite.addComposite = function(compositeA, compositeB) {\n\t\t compositeA.composites.push(compositeB);\n\t\t compositeB.parent = compositeA;\n\t\t Composite.setModified(compositeA, true, true, false);\n\t\t return compositeA;\n\t\t };\n\n\t\t /**\n\t\t * Removes a composite from the given composite, and optionally searching its children recursively.\n\t\t * @private\n\t\t * @method removeComposite\n\t\t * @param {composite} compositeA\n\t\t * @param {composite} compositeB\n\t\t * @param {boolean} [deep=false]\n\t\t * @return {composite} The original compositeA with the composite removed\n\t\t */\n\t\t Composite.removeComposite = function(compositeA, compositeB, deep) {\n\t\t var position = Common.indexOf(compositeA.composites, compositeB);\n\n\t\t if (position !== -1) {\n\t\t var bodies = Composite.allBodies(compositeB);\n\n\t\t Composite.removeCompositeAt(compositeA, position);\n\n\t\t for (var i = 0; i < bodies.length; i++) {\n\t\t bodies[i].sleepCounter = 0;\n\t\t }\n\t\t }\n\n\t\t if (deep) {\n\t\t for (var i = 0; i < compositeA.composites.length; i++){\n\t\t Composite.removeComposite(compositeA.composites[i], compositeB, true);\n\t\t }\n\t\t }\n\n\t\t return compositeA;\n\t\t };\n\n\t\t /**\n\t\t * Removes a composite from the given composite.\n\t\t * @private\n\t\t * @method removeCompositeAt\n\t\t * @param {composite} composite\n\t\t * @param {number} position\n\t\t * @return {composite} The original composite with the composite removed\n\t\t */\n\t\t Composite.removeCompositeAt = function(composite, position) {\n\t\t composite.composites.splice(position, 1);\n\t\t Composite.setModified(composite, true, true, false);\n\t\t return composite;\n\t\t };\n\n\t\t /**\n\t\t * Adds a body to the given composite.\n\t\t * @private\n\t\t * @method addBody\n\t\t * @param {composite} composite\n\t\t * @param {body} body\n\t\t * @return {composite} The original composite with the body added\n\t\t */\n\t\t Composite.addBody = function(composite, body) {\n\t\t composite.bodies.push(body);\n\t\t Composite.setModified(composite, true, true, false);\n\t\t return composite;\n\t\t };\n\n\t\t /**\n\t\t * Removes a body from the given composite, and optionally searching its children recursively.\n\t\t * @private\n\t\t * @method removeBody\n\t\t * @param {composite} composite\n\t\t * @param {body} body\n\t\t * @param {boolean} [deep=false]\n\t\t * @return {composite} The original composite with the body removed\n\t\t */\n\t\t Composite.removeBody = function(composite, body, deep) {\n\t\t var position = Common.indexOf(composite.bodies, body);\n\n\t\t if (position !== -1) {\n\t\t Composite.removeBodyAt(composite, position);\n\t\t body.sleepCounter = 0;\n\t\t }\n\n\t\t if (deep) {\n\t\t for (var i = 0; i < composite.composites.length; i++){\n\t\t Composite.removeBody(composite.composites[i], body, true);\n\t\t }\n\t\t }\n\n\t\t return composite;\n\t\t };\n\n\t\t /**\n\t\t * Removes a body from the given composite.\n\t\t * @private\n\t\t * @method removeBodyAt\n\t\t * @param {composite} composite\n\t\t * @param {number} position\n\t\t * @return {composite} The original composite with the body removed\n\t\t */\n\t\t Composite.removeBodyAt = function(composite, position) {\n\t\t composite.bodies.splice(position, 1);\n\t\t Composite.setModified(composite, true, true, false);\n\t\t return composite;\n\t\t };\n\n\t\t /**\n\t\t * Adds a constraint to the given composite.\n\t\t * @private\n\t\t * @method addConstraint\n\t\t * @param {composite} composite\n\t\t * @param {constraint} constraint\n\t\t * @return {composite} The original composite with the constraint added\n\t\t */\n\t\t Composite.addConstraint = function(composite, constraint) {\n\t\t composite.constraints.push(constraint);\n\t\t Composite.setModified(composite, true, true, false);\n\t\t return composite;\n\t\t };\n\n\t\t /**\n\t\t * Removes a constraint from the given composite, and optionally searching its children recursively.\n\t\t * @private\n\t\t * @method removeConstraint\n\t\t * @param {composite} composite\n\t\t * @param {constraint} constraint\n\t\t * @param {boolean} [deep=false]\n\t\t * @return {composite} The original composite with the constraint removed\n\t\t */\n\t\t Composite.removeConstraint = function(composite, constraint, deep) {\n\t\t var position = Common.indexOf(composite.constraints, constraint);\n\t\t \n\t\t if (position !== -1) {\n\t\t Composite.removeConstraintAt(composite, position);\n\t\t }\n\n\t\t if (deep) {\n\t\t for (var i = 0; i < composite.composites.length; i++){\n\t\t Composite.removeConstraint(composite.composites[i], constraint, true);\n\t\t }\n\t\t }\n\n\t\t return composite;\n\t\t };\n\n\t\t /**\n\t\t * Removes a body from the given composite.\n\t\t * @private\n\t\t * @method removeConstraintAt\n\t\t * @param {composite} composite\n\t\t * @param {number} position\n\t\t * @return {composite} The original composite with the constraint removed\n\t\t */\n\t\t Composite.removeConstraintAt = function(composite, position) {\n\t\t composite.constraints.splice(position, 1);\n\t\t Composite.setModified(composite, true, true, false);\n\t\t return composite;\n\t\t };\n\n\t\t /**\n\t\t * Removes all bodies, constraints and composites from the given composite.\n\t\t * Optionally clearing its children recursively.\n\t\t * @method clear\n\t\t * @param {composite} composite\n\t\t * @param {boolean} keepStatic\n\t\t * @param {boolean} [deep=false]\n\t\t */\n\t\t Composite.clear = function(composite, keepStatic, deep) {\n\t\t if (deep) {\n\t\t for (var i = 0; i < composite.composites.length; i++){\n\t\t Composite.clear(composite.composites[i], keepStatic, true);\n\t\t }\n\t\t }\n\t\t \n\t\t if (keepStatic) {\n\t\t composite.bodies = composite.bodies.filter(function(body) { return body.isStatic; });\n\t\t } else {\n\t\t composite.bodies.length = 0;\n\t\t }\n\n\t\t composite.constraints.length = 0;\n\t\t composite.composites.length = 0;\n\n\t\t Composite.setModified(composite, true, true, false);\n\n\t\t return composite;\n\t\t };\n\n\t\t /**\n\t\t * Returns all bodies in the given composite, including all bodies in its children, recursively.\n\t\t * @method allBodies\n\t\t * @param {composite} composite\n\t\t * @return {body[]} All the bodies\n\t\t */\n\t\t Composite.allBodies = function(composite) {\n\t\t if (composite.cache && composite.cache.allBodies) {\n\t\t return composite.cache.allBodies;\n\t\t }\n\n\t\t var bodies = [].concat(composite.bodies);\n\n\t\t for (var i = 0; i < composite.composites.length; i++)\n\t\t bodies = bodies.concat(Composite.allBodies(composite.composites[i]));\n\n\t\t if (composite.cache) {\n\t\t composite.cache.allBodies = bodies;\n\t\t }\n\n\t\t return bodies;\n\t\t };\n\n\t\t /**\n\t\t * Returns all constraints in the given composite, including all constraints in its children, recursively.\n\t\t * @method allConstraints\n\t\t * @param {composite} composite\n\t\t * @return {constraint[]} All the constraints\n\t\t */\n\t\t Composite.allConstraints = function(composite) {\n\t\t if (composite.cache && composite.cache.allConstraints) {\n\t\t return composite.cache.allConstraints;\n\t\t }\n\n\t\t var constraints = [].concat(composite.constraints);\n\n\t\t for (var i = 0; i < composite.composites.length; i++)\n\t\t constraints = constraints.concat(Composite.allConstraints(composite.composites[i]));\n\n\t\t if (composite.cache) {\n\t\t composite.cache.allConstraints = constraints;\n\t\t }\n\n\t\t return constraints;\n\t\t };\n\n\t\t /**\n\t\t * Returns all composites in the given composite, including all composites in its children, recursively.\n\t\t * @method allComposites\n\t\t * @param {composite} composite\n\t\t * @return {composite[]} All the composites\n\t\t */\n\t\t Composite.allComposites = function(composite) {\n\t\t if (composite.cache && composite.cache.allComposites) {\n\t\t return composite.cache.allComposites;\n\t\t }\n\n\t\t var composites = [].concat(composite.composites);\n\n\t\t for (var i = 0; i < composite.composites.length; i++)\n\t\t composites = composites.concat(Composite.allComposites(composite.composites[i]));\n\n\t\t if (composite.cache) {\n\t\t composite.cache.allComposites = composites;\n\t\t }\n\n\t\t return composites;\n\t\t };\n\n\t\t /**\n\t\t * Searches the composite recursively for an object matching the type and id supplied, null if not found.\n\t\t * @method get\n\t\t * @param {composite} composite\n\t\t * @param {number} id\n\t\t * @param {string} type\n\t\t * @return {object} The requested object, if found\n\t\t */\n\t\t Composite.get = function(composite, id, type) {\n\t\t var objects,\n\t\t object;\n\n\t\t switch (type) {\n\t\t case 'body':\n\t\t objects = Composite.allBodies(composite);\n\t\t break;\n\t\t case 'constraint':\n\t\t objects = Composite.allConstraints(composite);\n\t\t break;\n\t\t case 'composite':\n\t\t objects = Composite.allComposites(composite).concat(composite);\n\t\t break;\n\t\t }\n\n\t\t if (!objects)\n\t\t return null;\n\n\t\t object = objects.filter(function(object) { \n\t\t return object.id.toString() === id.toString(); \n\t\t });\n\n\t\t return object.length === 0 ? null : object[0];\n\t\t };\n\n\t\t /**\n\t\t * Moves the given object(s) from compositeA to compositeB (equal to a remove followed by an add).\n\t\t * @method move\n\t\t * @param {compositeA} compositeA\n\t\t * @param {object[]} objects\n\t\t * @param {compositeB} compositeB\n\t\t * @return {composite} Returns compositeA\n\t\t */\n\t\t Composite.move = function(compositeA, objects, compositeB) {\n\t\t Composite.remove(compositeA, objects);\n\t\t Composite.add(compositeB, objects);\n\t\t return compositeA;\n\t\t };\n\n\t\t /**\n\t\t * Assigns new ids for all objects in the composite, recursively.\n\t\t * @method rebase\n\t\t * @param {composite} composite\n\t\t * @return {composite} Returns composite\n\t\t */\n\t\t Composite.rebase = function(composite) {\n\t\t var objects = Composite.allBodies(composite)\n\t\t .concat(Composite.allConstraints(composite))\n\t\t .concat(Composite.allComposites(composite));\n\n\t\t for (var i = 0; i < objects.length; i++) {\n\t\t objects[i].id = Common.nextId();\n\t\t }\n\n\t\t return composite;\n\t\t };\n\n\t\t /**\n\t\t * Translates all children in the composite by a given vector relative to their current positions, \n\t\t * without imparting any velocity.\n\t\t * @method translate\n\t\t * @param {composite} composite\n\t\t * @param {vector} translation\n\t\t * @param {bool} [recursive=true]\n\t\t */\n\t\t Composite.translate = function(composite, translation, recursive) {\n\t\t var bodies = recursive ? Composite.allBodies(composite) : composite.bodies;\n\n\t\t for (var i = 0; i < bodies.length; i++) {\n\t\t Body.translate(bodies[i], translation);\n\t\t }\n\n\t\t return composite;\n\t\t };\n\n\t\t /**\n\t\t * Rotates all children in the composite by a given angle about the given point, without imparting any angular velocity.\n\t\t * @method rotate\n\t\t * @param {composite} composite\n\t\t * @param {number} rotation\n\t\t * @param {vector} point\n\t\t * @param {bool} [recursive=true]\n\t\t */\n\t\t Composite.rotate = function(composite, rotation, point, recursive) {\n\t\t var cos = Math.cos(rotation),\n\t\t sin = Math.sin(rotation),\n\t\t bodies = recursive ? Composite.allBodies(composite) : composite.bodies;\n\n\t\t for (var i = 0; i < bodies.length; i++) {\n\t\t var body = bodies[i],\n\t\t dx = body.position.x - point.x,\n\t\t dy = body.position.y - point.y;\n\t\t \n\t\t Body.setPosition(body, {\n\t\t x: point.x + (dx * cos - dy * sin),\n\t\t y: point.y + (dx * sin + dy * cos)\n\t\t });\n\n\t\t Body.rotate(body, rotation);\n\t\t }\n\n\t\t return composite;\n\t\t };\n\n\t\t /**\n\t\t * Scales all children in the composite, including updating physical properties (mass, area, axes, inertia), from a world-space point.\n\t\t * @method scale\n\t\t * @param {composite} composite\n\t\t * @param {number} scaleX\n\t\t * @param {number} scaleY\n\t\t * @param {vector} point\n\t\t * @param {bool} [recursive=true]\n\t\t */\n\t\t Composite.scale = function(composite, scaleX, scaleY, point, recursive) {\n\t\t var bodies = recursive ? Composite.allBodies(composite) : composite.bodies;\n\n\t\t for (var i = 0; i < bodies.length; i++) {\n\t\t var body = bodies[i],\n\t\t dx = body.position.x - point.x,\n\t\t dy = body.position.y - point.y;\n\t\t \n\t\t Body.setPosition(body, {\n\t\t x: point.x + dx * scaleX,\n\t\t y: point.y + dy * scaleY\n\t\t });\n\n\t\t Body.scale(body, scaleX, scaleY);\n\t\t }\n\n\t\t return composite;\n\t\t };\n\n\t\t /**\n\t\t * Returns the union of the bounds of all of the composite's bodies.\n\t\t * @method bounds\n\t\t * @param {composite} composite The composite.\n\t\t * @returns {bounds} The composite bounds.\n\t\t */\n\t\t Composite.bounds = function(composite) {\n\t\t var bodies = Composite.allBodies(composite),\n\t\t vertices = [];\n\n\t\t for (var i = 0; i < bodies.length; i += 1) {\n\t\t var body = bodies[i];\n\t\t vertices.push(body.bounds.min, body.bounds.max);\n\t\t }\n\n\t\t return Bounds.create(vertices);\n\t\t };\n\n\t\t /*\n\t\t *\n\t\t * Events Documentation\n\t\t *\n\t\t */\n\n\t\t /**\n\t\t * Fired when a call to `Composite.add` is made, before objects have been added.\n\t\t *\n\t\t * @event beforeAdd\n\t\t * @param {} event An event object\n\t\t * @param {} event.object The object(s) to be added (may be a single body, constraint, composite or a mixed array of these)\n\t\t * @param {} event.source The source object of the event\n\t\t * @param {} event.name The name of the event\n\t\t */\n\n\t\t /**\n\t\t * Fired when a call to `Composite.add` is made, after objects have been added.\n\t\t *\n\t\t * @event afterAdd\n\t\t * @param {} event An event object\n\t\t * @param {} event.object The object(s) that have been added (may be a single body, constraint, composite or a mixed array of these)\n\t\t * @param {} event.source The source object of the event\n\t\t * @param {} event.name The name of the event\n\t\t */\n\n\t\t /**\n\t\t * Fired when a call to `Composite.remove` is made, before objects have been removed.\n\t\t *\n\t\t * @event beforeRemove\n\t\t * @param {} event An event object\n\t\t * @param {} event.object The object(s) to be removed (may be a single body, constraint, composite or a mixed array of these)\n\t\t * @param {} event.source The source object of the event\n\t\t * @param {} event.name The name of the event\n\t\t */\n\n\t\t /**\n\t\t * Fired when a call to `Composite.remove` is made, after objects have been removed.\n\t\t *\n\t\t * @event afterRemove\n\t\t * @param {} event An event object\n\t\t * @param {} event.object The object(s) that have been removed (may be a single body, constraint, composite or a mixed array of these)\n\t\t * @param {} event.source The source object of the event\n\t\t * @param {} event.name The name of the event\n\t\t */\n\n\t\t /*\n\t\t *\n\t\t * Properties Documentation\n\t\t *\n\t\t */\n\n\t\t /**\n\t\t * An integer `Number` uniquely identifying number generated in `Composite.create` by `Common.nextId`.\n\t\t *\n\t\t * @property id\n\t\t * @type number\n\t\t */\n\n\t\t /**\n\t\t * A `String` denoting the type of object.\n\t\t *\n\t\t * @property type\n\t\t * @type string\n\t\t * @default \"composite\"\n\t\t * @readOnly\n\t\t */\n\n\t\t /**\n\t\t * An arbitrary `String` name to help the user identify and manage composites.\n\t\t *\n\t\t * @property label\n\t\t * @type string\n\t\t * @default \"Composite\"\n\t\t */\n\n\t\t /**\n\t\t * A flag that specifies whether the composite has been modified during the current step.\n\t\t * This is automatically managed when bodies, constraints or composites are added or removed.\n\t\t *\n\t\t * @property isModified\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\n\t\t /**\n\t\t * The `Composite` that is the parent of this composite. It is automatically managed by the `Matter.Composite` methods.\n\t\t *\n\t\t * @property parent\n\t\t * @type composite\n\t\t * @default null\n\t\t */\n\n\t\t /**\n\t\t * An array of `Body` that are _direct_ children of this composite.\n\t\t * To add or remove bodies you should use `Composite.add` and `Composite.remove` methods rather than directly modifying this property.\n\t\t * If you wish to recursively find all descendants, you should use the `Composite.allBodies` method.\n\t\t *\n\t\t * @property bodies\n\t\t * @type body[]\n\t\t * @default []\n\t\t */\n\n\t\t /**\n\t\t * An array of `Constraint` that are _direct_ children of this composite.\n\t\t * To add or remove constraints you should use `Composite.add` and `Composite.remove` methods rather than directly modifying this property.\n\t\t * If you wish to recursively find all descendants, you should use the `Composite.allConstraints` method.\n\t\t *\n\t\t * @property constraints\n\t\t * @type constraint[]\n\t\t * @default []\n\t\t */\n\n\t\t /**\n\t\t * An array of `Composite` that are _direct_ children of this composite.\n\t\t * To add or remove composites you should use `Composite.add` and `Composite.remove` methods rather than directly modifying this property.\n\t\t * If you wish to recursively find all descendants, you should use the `Composite.allComposites` method.\n\t\t *\n\t\t * @property composites\n\t\t * @type composite[]\n\t\t * @default []\n\t\t */\n\n\t\t /**\n\t\t * An object reserved for storing plugin-specific properties.\n\t\t *\n\t\t * @property plugin\n\t\t * @type {}\n\t\t */\n\n\t\t /**\n\t\t * An object used for storing cached results for performance reasons.\n\t\t * This is used internally only and is automatically managed.\n\t\t *\n\t\t * @private\n\t\t * @property cache\n\t\t * @type {}\n\t\t */\n\n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 7 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\n\t\t* The `Matter.Sleeping` module contains methods to manage the sleeping state of bodies.\n\t\t*\n\t\t* @class Sleeping\n\t\t*/\n\n\t\tvar Sleeping = {};\n\n\t\tmodule.exports = Sleeping;\n\n\t\tvar Body = __webpack_require__(4);\n\t\tvar Events = __webpack_require__(5);\n\t\tvar Common = __webpack_require__(0);\n\n\t\t(function() {\n\n\t\t Sleeping._motionWakeThreshold = 0.18;\n\t\t Sleeping._motionSleepThreshold = 0.08;\n\t\t Sleeping._minBias = 0.9;\n\n\t\t /**\n\t\t * Puts bodies to sleep or wakes them up depending on their motion.\n\t\t * @method update\n\t\t * @param {body[]} bodies\n\t\t * @param {number} delta\n\t\t */\n\t\t Sleeping.update = function(bodies, delta) {\n\t\t var timeScale = delta / Common._baseDelta,\n\t\t motionSleepThreshold = Sleeping._motionSleepThreshold;\n\t\t \n\t\t // update bodies sleeping status\n\t\t for (var i = 0; i < bodies.length; i++) {\n\t\t var body = bodies[i],\n\t\t speed = Body.getSpeed(body),\n\t\t angularSpeed = Body.getAngularSpeed(body),\n\t\t motion = speed * speed + angularSpeed * angularSpeed;\n\n\t\t // wake up bodies if they have a force applied\n\t\t if (body.force.x !== 0 || body.force.y !== 0) {\n\t\t Sleeping.set(body, false);\n\t\t continue;\n\t\t }\n\n\t\t var minMotion = Math.min(body.motion, motion),\n\t\t maxMotion = Math.max(body.motion, motion);\n\t\t \n\t\t // biased average motion estimation between frames\n\t\t body.motion = Sleeping._minBias * minMotion + (1 - Sleeping._minBias) * maxMotion;\n\n\t\t if (body.sleepThreshold > 0 && body.motion < motionSleepThreshold) {\n\t\t body.sleepCounter += 1;\n\t\t \n\t\t if (body.sleepCounter >= body.sleepThreshold / timeScale) {\n\t\t Sleeping.set(body, true);\n\t\t }\n\t\t } else if (body.sleepCounter > 0) {\n\t\t body.sleepCounter -= 1;\n\t\t }\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Given a set of colliding pairs, wakes the sleeping bodies involved.\n\t\t * @method afterCollisions\n\t\t * @param {pair[]} pairs\n\t\t */\n\t\t Sleeping.afterCollisions = function(pairs) {\n\t\t var motionSleepThreshold = Sleeping._motionSleepThreshold;\n\n\t\t // wake up bodies involved in collisions\n\t\t for (var i = 0; i < pairs.length; i++) {\n\t\t var pair = pairs[i];\n\t\t \n\t\t // don't wake inactive pairs\n\t\t if (!pair.isActive)\n\t\t continue;\n\n\t\t var collision = pair.collision,\n\t\t bodyA = collision.bodyA.parent, \n\t\t bodyB = collision.bodyB.parent;\n\t\t \n\t\t // don't wake if at least one body is static\n\t\t if ((bodyA.isSleeping && bodyB.isSleeping) || bodyA.isStatic || bodyB.isStatic)\n\t\t continue;\n\t\t \n\t\t if (bodyA.isSleeping || bodyB.isSleeping) {\n\t\t var sleepingBody = (bodyA.isSleeping && !bodyA.isStatic) ? bodyA : bodyB,\n\t\t movingBody = sleepingBody === bodyA ? bodyB : bodyA;\n\n\t\t if (!sleepingBody.isStatic && movingBody.motion > motionSleepThreshold) {\n\t\t Sleeping.set(sleepingBody, false);\n\t\t }\n\t\t }\n\t\t }\n\t\t };\n\t\t \n\t\t /**\n\t\t * Set a body as sleeping or awake.\n\t\t * @method set\n\t\t * @param {body} body\n\t\t * @param {boolean} isSleeping\n\t\t */\n\t\t Sleeping.set = function(body, isSleeping) {\n\t\t var wasSleeping = body.isSleeping;\n\n\t\t if (isSleeping) {\n\t\t body.isSleeping = true;\n\t\t body.sleepCounter = body.sleepThreshold;\n\n\t\t body.positionImpulse.x = 0;\n\t\t body.positionImpulse.y = 0;\n\n\t\t body.positionPrev.x = body.position.x;\n\t\t body.positionPrev.y = body.position.y;\n\n\t\t body.anglePrev = body.angle;\n\t\t body.speed = 0;\n\t\t body.angularSpeed = 0;\n\t\t body.motion = 0;\n\n\t\t if (!wasSleeping) {\n\t\t Events.trigger(body, 'sleepStart');\n\t\t }\n\t\t } else {\n\t\t body.isSleeping = false;\n\t\t body.sleepCounter = 0;\n\n\t\t if (wasSleeping) {\n\t\t Events.trigger(body, 'sleepEnd');\n\t\t }\n\t\t }\n\t\t };\n\n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 8 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\n\t\t* The `Matter.Collision` module contains methods for detecting collisions between a given pair of bodies.\n\t\t*\n\t\t* For efficient detection between a list of bodies, see `Matter.Detector` and `Matter.Query`.\n\t\t*\n\t\t* See `Matter.Engine` for collision events.\n\t\t*\n\t\t* @class Collision\n\t\t*/\n\n\t\tvar Collision = {};\n\n\t\tmodule.exports = Collision;\n\n\t\tvar Vertices = __webpack_require__(3);\n\t\tvar Pair = __webpack_require__(9);\n\n\t\t(function() {\n\t\t var _supports = [];\n\n\t\t var _overlapAB = {\n\t\t overlap: 0,\n\t\t axis: null\n\t\t };\n\n\t\t var _overlapBA = {\n\t\t overlap: 0,\n\t\t axis: null\n\t\t };\n\n\t\t /**\n\t\t * Creates a new collision record.\n\t\t * @method create\n\t\t * @param {body} bodyA The first body part represented by the collision record\n\t\t * @param {body} bodyB The second body part represented by the collision record\n\t\t * @return {collision} A new collision record\n\t\t */\n\t\t Collision.create = function(bodyA, bodyB) {\n\t\t return { \n\t\t pair: null,\n\t\t collided: false,\n\t\t bodyA: bodyA,\n\t\t bodyB: bodyB,\n\t\t parentA: bodyA.parent,\n\t\t parentB: bodyB.parent,\n\t\t depth: 0,\n\t\t normal: { x: 0, y: 0 },\n\t\t tangent: { x: 0, y: 0 },\n\t\t penetration: { x: 0, y: 0 },\n\t\t supports: [null, null],\n\t\t supportCount: 0\n\t\t };\n\t\t };\n\n\t\t /**\n\t\t * Detect collision between two bodies.\n\t\t * @method collides\n\t\t * @param {body} bodyA\n\t\t * @param {body} bodyB\n\t\t * @param {pairs} [pairs] Optionally reuse collision records from existing pairs.\n\t\t * @return {collision|null} A collision record if detected, otherwise null\n\t\t */\n\t\t Collision.collides = function(bodyA, bodyB, pairs) {\n\t\t Collision._overlapAxes(_overlapAB, bodyA.vertices, bodyB.vertices, bodyA.axes);\n\n\t\t if (_overlapAB.overlap <= 0) {\n\t\t return null;\n\t\t }\n\n\t\t Collision._overlapAxes(_overlapBA, bodyB.vertices, bodyA.vertices, bodyB.axes);\n\n\t\t if (_overlapBA.overlap <= 0) {\n\t\t return null;\n\t\t }\n\n\t\t // reuse collision records for gc efficiency\n\t\t var pair = pairs && pairs.table[Pair.id(bodyA, bodyB)],\n\t\t collision;\n\n\t\t if (!pair) {\n\t\t collision = Collision.create(bodyA, bodyB);\n\t\t collision.collided = true;\n\t\t collision.bodyA = bodyA.id < bodyB.id ? bodyA : bodyB;\n\t\t collision.bodyB = bodyA.id < bodyB.id ? bodyB : bodyA;\n\t\t collision.parentA = collision.bodyA.parent;\n\t\t collision.parentB = collision.bodyB.parent;\n\t\t } else {\n\t\t collision = pair.collision;\n\t\t }\n\n\t\t bodyA = collision.bodyA;\n\t\t bodyB = collision.bodyB;\n\n\t\t var minOverlap;\n\n\t\t if (_overlapAB.overlap < _overlapBA.overlap) {\n\t\t minOverlap = _overlapAB;\n\t\t } else {\n\t\t minOverlap = _overlapBA;\n\t\t }\n\n\t\t var normal = collision.normal,\n\t\t tangent = collision.tangent,\n\t\t penetration = collision.penetration,\n\t\t supports = collision.supports,\n\t\t depth = minOverlap.overlap,\n\t\t minAxis = minOverlap.axis,\n\t\t normalX = minAxis.x,\n\t\t normalY = minAxis.y,\n\t\t deltaX = bodyB.position.x - bodyA.position.x,\n\t\t deltaY = bodyB.position.y - bodyA.position.y;\n\n\t\t // ensure normal is facing away from bodyA\n\t\t if (normalX * deltaX + normalY * deltaY >= 0) {\n\t\t normalX = -normalX;\n\t\t normalY = -normalY;\n\t\t }\n\n\t\t normal.x = normalX;\n\t\t normal.y = normalY;\n\t\t \n\t\t tangent.x = -normalY;\n\t\t tangent.y = normalX;\n\n\t\t penetration.x = normalX * depth;\n\t\t penetration.y = normalY * depth;\n\n\t\t collision.depth = depth;\n\n\t\t // find support points, there is always either exactly one or two\n\t\t var supportsB = Collision._findSupports(bodyA, bodyB, normal, 1),\n\t\t supportCount = 0;\n\n\t\t // find the supports from bodyB that are inside bodyA\n\t\t if (Vertices.contains(bodyA.vertices, supportsB[0])) {\n\t\t supports[supportCount++] = supportsB[0];\n\t\t }\n\n\t\t if (Vertices.contains(bodyA.vertices, supportsB[1])) {\n\t\t supports[supportCount++] = supportsB[1];\n\t\t }\n\n\t\t // find the supports from bodyA that are inside bodyB\n\t\t if (supportCount < 2) {\n\t\t var supportsA = Collision._findSupports(bodyB, bodyA, normal, -1);\n\n\t\t if (Vertices.contains(bodyB.vertices, supportsA[0])) {\n\t\t supports[supportCount++] = supportsA[0];\n\t\t }\n\n\t\t if (supportCount < 2 && Vertices.contains(bodyB.vertices, supportsA[1])) {\n\t\t supports[supportCount++] = supportsA[1];\n\t\t }\n\t\t }\n\n\t\t // account for the edge case of overlapping but no vertex containment\n\t\t if (supportCount === 0) {\n\t\t supports[supportCount++] = supportsB[0];\n\t\t }\n\n\t\t // update support count\n\t\t collision.supportCount = supportCount;\n\n\t\t return collision;\n\t\t };\n\n\t\t /**\n\t\t * Find the overlap between two sets of vertices.\n\t\t * @method _overlapAxes\n\t\t * @private\n\t\t * @param {object} result\n\t\t * @param {vertices} verticesA\n\t\t * @param {vertices} verticesB\n\t\t * @param {axes} axes\n\t\t */\n\t\t Collision._overlapAxes = function(result, verticesA, verticesB, axes) {\n\t\t var verticesALength = verticesA.length,\n\t\t verticesBLength = verticesB.length,\n\t\t verticesAX = verticesA[0].x,\n\t\t verticesAY = verticesA[0].y,\n\t\t verticesBX = verticesB[0].x,\n\t\t verticesBY = verticesB[0].y,\n\t\t axesLength = axes.length,\n\t\t overlapMin = Number.MAX_VALUE,\n\t\t overlapAxisNumber = 0,\n\t\t overlap,\n\t\t overlapAB,\n\t\t overlapBA,\n\t\t dot,\n\t\t i,\n\t\t j;\n\n\t\t for (i = 0; i < axesLength; i++) {\n\t\t var axis = axes[i],\n\t\t axisX = axis.x,\n\t\t axisY = axis.y,\n\t\t minA = verticesAX * axisX + verticesAY * axisY,\n\t\t minB = verticesBX * axisX + verticesBY * axisY,\n\t\t maxA = minA,\n\t\t maxB = minB;\n\t\t \n\t\t for (j = 1; j < verticesALength; j += 1) {\n\t\t dot = verticesA[j].x * axisX + verticesA[j].y * axisY;\n\n\t\t if (dot > maxA) { \n\t\t maxA = dot;\n\t\t } else if (dot < minA) { \n\t\t minA = dot;\n\t\t }\n\t\t }\n\n\t\t for (j = 1; j < verticesBLength; j += 1) {\n\t\t dot = verticesB[j].x * axisX + verticesB[j].y * axisY;\n\n\t\t if (dot > maxB) { \n\t\t maxB = dot;\n\t\t } else if (dot < minB) { \n\t\t minB = dot;\n\t\t }\n\t\t }\n\n\t\t overlapAB = maxA - minB;\n\t\t overlapBA = maxB - minA;\n\t\t overlap = overlapAB < overlapBA ? overlapAB : overlapBA;\n\n\t\t if (overlap < overlapMin) {\n\t\t overlapMin = overlap;\n\t\t overlapAxisNumber = i;\n\n\t\t if (overlap <= 0) {\n\t\t // can not be intersecting\n\t\t break;\n\t\t }\n\t\t } \n\t\t }\n\n\t\t result.axis = axes[overlapAxisNumber];\n\t\t result.overlap = overlapMin;\n\t\t };\n\n\t\t /**\n\t\t * Finds supporting vertices given two bodies along a given direction using hill-climbing.\n\t\t * @method _findSupports\n\t\t * @private\n\t\t * @param {body} bodyA\n\t\t * @param {body} bodyB\n\t\t * @param {vector} normal\n\t\t * @param {number} direction\n\t\t * @return [vector]\n\t\t */\n\t\t Collision._findSupports = function(bodyA, bodyB, normal, direction) {\n\t\t var vertices = bodyB.vertices,\n\t\t verticesLength = vertices.length,\n\t\t bodyAPositionX = bodyA.position.x,\n\t\t bodyAPositionY = bodyA.position.y,\n\t\t normalX = normal.x * direction,\n\t\t normalY = normal.y * direction,\n\t\t vertexA = vertices[0],\n\t\t vertexB = vertexA,\n\t\t nearestDistance = normalX * (bodyAPositionX - vertexB.x) + normalY * (bodyAPositionY - vertexB.y),\n\t\t vertexC,\n\t\t distance,\n\t\t j;\n\n\t\t // find deepest vertex relative to the axis\n\t\t for (j = 1; j < verticesLength; j += 1) {\n\t\t vertexB = vertices[j];\n\t\t distance = normalX * (bodyAPositionX - vertexB.x) + normalY * (bodyAPositionY - vertexB.y);\n\n\t\t // convex hill-climbing\n\t\t if (distance < nearestDistance) {\n\t\t nearestDistance = distance;\n\t\t vertexA = vertexB;\n\t\t }\n\t\t }\n\n\t\t // measure next vertex\n\t\t vertexC = vertices[(verticesLength + vertexA.index - 1) % verticesLength];\n\t\t nearestDistance = normalX * (bodyAPositionX - vertexC.x) + normalY * (bodyAPositionY - vertexC.y);\n\n\t\t // compare with previous vertex\n\t\t vertexB = vertices[(vertexA.index + 1) % verticesLength];\n\t\t if (normalX * (bodyAPositionX - vertexB.x) + normalY * (bodyAPositionY - vertexB.y) < nearestDistance) {\n\t\t _supports[0] = vertexA;\n\t\t _supports[1] = vertexB;\n\n\t\t return _supports;\n\t\t }\n\n\t\t _supports[0] = vertexA;\n\t\t _supports[1] = vertexC;\n\n\t\t return _supports;\n\t\t };\n\n\t\t /*\n\t\t *\n\t\t * Properties Documentation\n\t\t *\n\t\t */\n\n\t\t /**\n\t\t * A reference to the pair using this collision record, if there is one.\n\t\t *\n\t\t * @property pair\n\t\t * @type {pair|null}\n\t\t * @default null\n\t\t */\n\n\t\t /**\n\t\t * A flag that indicates if the bodies were colliding when the collision was last updated.\n\t\t * \n\t\t * @property collided\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\n\t\t /**\n\t\t * The first body part represented by the collision (see also `collision.parentA`).\n\t\t * \n\t\t * @property bodyA\n\t\t * @type body\n\t\t */\n\n\t\t /**\n\t\t * The second body part represented by the collision (see also `collision.parentB`).\n\t\t * \n\t\t * @property bodyB\n\t\t * @type body\n\t\t */\n\n\t\t /**\n\t\t * The first body represented by the collision (i.e. `collision.bodyA.parent`).\n\t\t * \n\t\t * @property parentA\n\t\t * @type body\n\t\t */\n\n\t\t /**\n\t\t * The second body represented by the collision (i.e. `collision.bodyB.parent`).\n\t\t * \n\t\t * @property parentB\n\t\t * @type body\n\t\t */\n\n\t\t /**\n\t\t * A `Number` that represents the minimum separating distance between the bodies along the collision normal.\n\t\t *\n\t\t * @readOnly\n\t\t * @property depth\n\t\t * @type number\n\t\t * @default 0\n\t\t */\n\n\t\t /**\n\t\t * A normalised `Vector` that represents the direction between the bodies that provides the minimum separating distance.\n\t\t *\n\t\t * @property normal\n\t\t * @type vector\n\t\t * @default { x: 0, y: 0 }\n\t\t */\n\n\t\t /**\n\t\t * A normalised `Vector` that is the tangent direction to the collision normal.\n\t\t *\n\t\t * @property tangent\n\t\t * @type vector\n\t\t * @default { x: 0, y: 0 }\n\t\t */\n\n\t\t /**\n\t\t * A `Vector` that represents the direction and depth of the collision.\n\t\t *\n\t\t * @property penetration\n\t\t * @type vector\n\t\t * @default { x: 0, y: 0 }\n\t\t */\n\n\t\t /**\n\t\t * An array of body vertices that represent the support points in the collision.\n\t\t * \n\t\t * _Note:_ Only the first `collision.supportCount` items of `collision.supports` are active.\n\t\t * Therefore use `collision.supportCount` instead of `collision.supports.length` when iterating the active supports.\n\t\t * \n\t\t * These are the deepest vertices (along the collision normal) of each body that are contained by the other body's vertices.\n\t\t *\n\t\t * @property supports\n\t\t * @type vector[]\n\t\t * @default []\n\t\t */\n\n\t\t /**\n\t\t * The number of active supports for this collision found in `collision.supports`.\n\t\t * \n\t\t * _Note:_ Only the first `collision.supportCount` items of `collision.supports` are active.\n\t\t * Therefore use `collision.supportCount` instead of `collision.supports.length` when iterating the active supports.\n\t\t *\n\t\t * @property supportCount\n\t\t * @type number\n\t\t * @default 0\n\t\t */\n\n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 9 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\n\t\t* The `Matter.Pair` module contains methods for creating and manipulating collision pairs.\n\t\t*\n\t\t* @class Pair\n\t\t*/\n\n\t\tvar Pair = {};\n\n\t\tmodule.exports = Pair;\n\n\t\tvar Contact = __webpack_require__(16);\n\n\t\t(function() {\n\t\t \n\t\t /**\n\t\t * Creates a pair.\n\t\t * @method create\n\t\t * @param {collision} collision\n\t\t * @param {number} timestamp\n\t\t * @return {pair} A new pair\n\t\t */\n\t\t Pair.create = function(collision, timestamp) {\n\t\t var bodyA = collision.bodyA,\n\t\t bodyB = collision.bodyB;\n\n\t\t var pair = {\n\t\t id: Pair.id(bodyA, bodyB),\n\t\t bodyA: bodyA,\n\t\t bodyB: bodyB,\n\t\t collision: collision,\n\t\t contacts: [Contact.create(), Contact.create()],\n\t\t contactCount: 0,\n\t\t separation: 0,\n\t\t isActive: true,\n\t\t isSensor: bodyA.isSensor || bodyB.isSensor,\n\t\t timeCreated: timestamp,\n\t\t timeUpdated: timestamp,\n\t\t inverseMass: 0,\n\t\t friction: 0,\n\t\t frictionStatic: 0,\n\t\t restitution: 0,\n\t\t slop: 0\n\t\t };\n\n\t\t Pair.update(pair, collision, timestamp);\n\n\t\t return pair;\n\t\t };\n\n\t\t /**\n\t\t * Updates a pair given a collision.\n\t\t * @method update\n\t\t * @param {pair} pair\n\t\t * @param {collision} collision\n\t\t * @param {number} timestamp\n\t\t */\n\t\t Pair.update = function(pair, collision, timestamp) {\n\t\t var supports = collision.supports,\n\t\t supportCount = collision.supportCount,\n\t\t contacts = pair.contacts,\n\t\t parentA = collision.parentA,\n\t\t parentB = collision.parentB;\n\t\t \n\t\t pair.isActive = true;\n\t\t pair.timeUpdated = timestamp;\n\t\t pair.collision = collision;\n\t\t pair.separation = collision.depth;\n\t\t pair.inverseMass = parentA.inverseMass + parentB.inverseMass;\n\t\t pair.friction = parentA.friction < parentB.friction ? parentA.friction : parentB.friction;\n\t\t pair.frictionStatic = parentA.frictionStatic > parentB.frictionStatic ? parentA.frictionStatic : parentB.frictionStatic;\n\t\t pair.restitution = parentA.restitution > parentB.restitution ? parentA.restitution : parentB.restitution;\n\t\t pair.slop = parentA.slop > parentB.slop ? parentA.slop : parentB.slop;\n\n\t\t pair.contactCount = supportCount;\n\t\t collision.pair = pair;\n\n\t\t var supportA = supports[0],\n\t\t contactA = contacts[0],\n\t\t supportB = supports[1],\n\t\t contactB = contacts[1];\n\n\t\t // match contacts to supports\n\t\t if (contactB.vertex === supportA || contactA.vertex === supportB) {\n\t\t contacts[1] = contactA;\n\t\t contacts[0] = contactA = contactB;\n\t\t contactB = contacts[1];\n\t\t }\n\n\t\t // update contacts\n\t\t contactA.vertex = supportA;\n\t\t contactB.vertex = supportB;\n\t\t };\n\t\t \n\t\t /**\n\t\t * Set a pair as active or inactive.\n\t\t * @method setActive\n\t\t * @param {pair} pair\n\t\t * @param {bool} isActive\n\t\t * @param {number} timestamp\n\t\t */\n\t\t Pair.setActive = function(pair, isActive, timestamp) {\n\t\t if (isActive) {\n\t\t pair.isActive = true;\n\t\t pair.timeUpdated = timestamp;\n\t\t } else {\n\t\t pair.isActive = false;\n\t\t pair.contactCount = 0;\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Get the id for the given pair.\n\t\t * @method id\n\t\t * @param {body} bodyA\n\t\t * @param {body} bodyB\n\t\t * @return {string} Unique pairId\n\t\t */\n\t\t Pair.id = function(bodyA, bodyB) {\n\t\t return bodyA.id < bodyB.id ? bodyA.id.toString(36) + ':' + bodyB.id.toString(36) \n\t\t : bodyB.id.toString(36) + ':' + bodyA.id.toString(36);\n\t\t };\n\n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 10 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\n\t\t* The `Matter.Constraint` module contains methods for creating and manipulating constraints.\n\t\t* Constraints are used for specifying that a fixed distance must be maintained between two bodies (or a body and a fixed world-space position).\n\t\t* The stiffness of constraints can be modified to create springs or elastic.\n\t\t*\n\t\t* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n\t\t*\n\t\t* @class Constraint\n\t\t*/\n\n\t\tvar Constraint = {};\n\n\t\tmodule.exports = Constraint;\n\n\t\tvar Vertices = __webpack_require__(3);\n\t\tvar Vector = __webpack_require__(2);\n\t\tvar Sleeping = __webpack_require__(7);\n\t\tvar Bounds = __webpack_require__(1);\n\t\tvar Axes = __webpack_require__(11);\n\t\tvar Common = __webpack_require__(0);\n\n\t\t(function() {\n\n\t\t Constraint._warming = 0.4;\n\t\t Constraint._torqueDampen = 1;\n\t\t Constraint._minLength = 0.000001;\n\n\t\t /**\n\t\t * Creates a new constraint.\n\t\t * All properties have default values, and many are pre-calculated automatically based on other properties.\n\t\t * To simulate a revolute constraint (or pin joint) set `length: 0` and a high `stiffness` value (e.g. `0.7` or above).\n\t\t * If the constraint is unstable, try lowering the `stiffness` value and / or increasing `engine.constraintIterations`.\n\t\t * For compound bodies, constraints must be applied to the parent body (not one of its parts).\n\t\t * See the properties section below for detailed information on what you can pass via the `options` object.\n\t\t * @method create\n\t\t * @param {} options\n\t\t * @return {constraint} constraint\n\t\t */\n\t\t Constraint.create = function(options) {\n\t\t var constraint = options;\n\n\t\t // if bodies defined but no points, use body centre\n\t\t if (constraint.bodyA && !constraint.pointA)\n\t\t constraint.pointA = { x: 0, y: 0 };\n\t\t if (constraint.bodyB && !constraint.pointB)\n\t\t constraint.pointB = { x: 0, y: 0 };\n\n\t\t // calculate static length using initial world space points\n\t\t var initialPointA = constraint.bodyA ? Vector.add(constraint.bodyA.position, constraint.pointA) : constraint.pointA,\n\t\t initialPointB = constraint.bodyB ? Vector.add(constraint.bodyB.position, constraint.pointB) : constraint.pointB,\n\t\t length = Vector.magnitude(Vector.sub(initialPointA, initialPointB));\n\t\t \n\t\t constraint.length = typeof constraint.length !== 'undefined' ? constraint.length : length;\n\n\t\t // option defaults\n\t\t constraint.id = constraint.id || Common.nextId();\n\t\t constraint.label = constraint.label || 'Constraint';\n\t\t constraint.type = 'constraint';\n\t\t constraint.stiffness = constraint.stiffness || (constraint.length > 0 ? 1 : 0.7);\n\t\t constraint.damping = constraint.damping || 0;\n\t\t constraint.angularStiffness = constraint.angularStiffness || 0;\n\t\t constraint.angleA = constraint.bodyA ? constraint.bodyA.angle : constraint.angleA;\n\t\t constraint.angleB = constraint.bodyB ? constraint.bodyB.angle : constraint.angleB;\n\t\t constraint.plugin = {};\n\n\t\t // render\n\t\t var render = {\n\t\t visible: true,\n\t\t lineWidth: 2,\n\t\t strokeStyle: '#ffffff',\n\t\t type: 'line',\n\t\t anchors: true\n\t\t };\n\n\t\t if (constraint.length === 0 && constraint.stiffness > 0.1) {\n\t\t render.type = 'pin';\n\t\t render.anchors = false;\n\t\t } else if (constraint.stiffness < 0.9) {\n\t\t render.type = 'spring';\n\t\t }\n\n\t\t constraint.render = Common.extend(render, constraint.render);\n\n\t\t return constraint;\n\t\t };\n\n\t\t /**\n\t\t * Prepares for solving by constraint warming.\n\t\t * @private\n\t\t * @method preSolveAll\n\t\t * @param {body[]} bodies\n\t\t */\n\t\t Constraint.preSolveAll = function(bodies) {\n\t\t for (var i = 0; i < bodies.length; i += 1) {\n\t\t var body = bodies[i],\n\t\t impulse = body.constraintImpulse;\n\n\t\t if (body.isStatic || (impulse.x === 0 && impulse.y === 0 && impulse.angle === 0)) {\n\t\t continue;\n\t\t }\n\n\t\t body.position.x += impulse.x;\n\t\t body.position.y += impulse.y;\n\t\t body.angle += impulse.angle;\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Solves all constraints in a list of collisions.\n\t\t * @private\n\t\t * @method solveAll\n\t\t * @param {constraint[]} constraints\n\t\t * @param {number} delta\n\t\t */\n\t\t Constraint.solveAll = function(constraints, delta) {\n\t\t var timeScale = Common.clamp(delta / Common._baseDelta, 0, 1);\n\n\t\t // Solve fixed constraints first.\n\t\t for (var i = 0; i < constraints.length; i += 1) {\n\t\t var constraint = constraints[i],\n\t\t fixedA = !constraint.bodyA || (constraint.bodyA && constraint.bodyA.isStatic),\n\t\t fixedB = !constraint.bodyB || (constraint.bodyB && constraint.bodyB.isStatic);\n\n\t\t if (fixedA || fixedB) {\n\t\t Constraint.solve(constraints[i], timeScale);\n\t\t }\n\t\t }\n\n\t\t // Solve free constraints last.\n\t\t for (i = 0; i < constraints.length; i += 1) {\n\t\t constraint = constraints[i];\n\t\t fixedA = !constraint.bodyA || (constraint.bodyA && constraint.bodyA.isStatic);\n\t\t fixedB = !constraint.bodyB || (constraint.bodyB && constraint.bodyB.isStatic);\n\n\t\t if (!fixedA && !fixedB) {\n\t\t Constraint.solve(constraints[i], timeScale);\n\t\t }\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Solves a distance constraint with Gauss-Siedel method.\n\t\t * @private\n\t\t * @method solve\n\t\t * @param {constraint} constraint\n\t\t * @param {number} timeScale\n\t\t */\n\t\t Constraint.solve = function(constraint, timeScale) {\n\t\t var bodyA = constraint.bodyA,\n\t\t bodyB = constraint.bodyB,\n\t\t pointA = constraint.pointA,\n\t\t pointB = constraint.pointB;\n\n\t\t if (!bodyA && !bodyB)\n\t\t return;\n\n\t\t // update reference angle\n\t\t if (bodyA && !bodyA.isStatic) {\n\t\t Vector.rotate(pointA, bodyA.angle - constraint.angleA, pointA);\n\t\t constraint.angleA = bodyA.angle;\n\t\t }\n\t\t \n\t\t // update reference angle\n\t\t if (bodyB && !bodyB.isStatic) {\n\t\t Vector.rotate(pointB, bodyB.angle - constraint.angleB, pointB);\n\t\t constraint.angleB = bodyB.angle;\n\t\t }\n\n\t\t var pointAWorld = pointA,\n\t\t pointBWorld = pointB;\n\n\t\t if (bodyA) pointAWorld = Vector.add(bodyA.position, pointA);\n\t\t if (bodyB) pointBWorld = Vector.add(bodyB.position, pointB);\n\n\t\t if (!pointAWorld || !pointBWorld)\n\t\t return;\n\n\t\t var delta = Vector.sub(pointAWorld, pointBWorld),\n\t\t currentLength = Vector.magnitude(delta);\n\n\t\t // prevent singularity\n\t\t if (currentLength < Constraint._minLength) {\n\t\t currentLength = Constraint._minLength;\n\t\t }\n\n\t\t // solve distance constraint with Gauss-Siedel method\n\t\t var difference = (currentLength - constraint.length) / currentLength,\n\t\t isRigid = constraint.stiffness >= 1 || constraint.length === 0,\n\t\t stiffness = isRigid ? constraint.stiffness * timeScale \n\t\t : constraint.stiffness * timeScale * timeScale,\n\t\t damping = constraint.damping * timeScale,\n\t\t force = Vector.mult(delta, difference * stiffness),\n\t\t massTotal = (bodyA ? bodyA.inverseMass : 0) + (bodyB ? bodyB.inverseMass : 0),\n\t\t inertiaTotal = (bodyA ? bodyA.inverseInertia : 0) + (bodyB ? bodyB.inverseInertia : 0),\n\t\t resistanceTotal = massTotal + inertiaTotal,\n\t\t torque,\n\t\t share,\n\t\t normal,\n\t\t normalVelocity,\n\t\t relativeVelocity;\n\t\t \n\t\t if (damping > 0) {\n\t\t var zero = Vector.create();\n\t\t normal = Vector.div(delta, currentLength);\n\n\t\t relativeVelocity = Vector.sub(\n\t\t bodyB && Vector.sub(bodyB.position, bodyB.positionPrev) || zero,\n\t\t bodyA && Vector.sub(bodyA.position, bodyA.positionPrev) || zero\n\t\t );\n\n\t\t normalVelocity = Vector.dot(normal, relativeVelocity);\n\t\t }\n\n\t\t if (bodyA && !bodyA.isStatic) {\n\t\t share = bodyA.inverseMass / massTotal;\n\n\t\t // keep track of applied impulses for post solving\n\t\t bodyA.constraintImpulse.x -= force.x * share;\n\t\t bodyA.constraintImpulse.y -= force.y * share;\n\n\t\t // apply forces\n\t\t bodyA.position.x -= force.x * share;\n\t\t bodyA.position.y -= force.y * share;\n\n\t\t // apply damping\n\t\t if (damping > 0) {\n\t\t bodyA.positionPrev.x -= damping * normal.x * normalVelocity * share;\n\t\t bodyA.positionPrev.y -= damping * normal.y * normalVelocity * share;\n\t\t }\n\n\t\t // apply torque\n\t\t torque = (Vector.cross(pointA, force) / resistanceTotal) * Constraint._torqueDampen * bodyA.inverseInertia * (1 - constraint.angularStiffness);\n\t\t bodyA.constraintImpulse.angle -= torque;\n\t\t bodyA.angle -= torque;\n\t\t }\n\n\t\t if (bodyB && !bodyB.isStatic) {\n\t\t share = bodyB.inverseMass / massTotal;\n\n\t\t // keep track of applied impulses for post solving\n\t\t bodyB.constraintImpulse.x += force.x * share;\n\t\t bodyB.constraintImpulse.y += force.y * share;\n\t\t \n\t\t // apply forces\n\t\t bodyB.position.x += force.x * share;\n\t\t bodyB.position.y += force.y * share;\n\n\t\t // apply damping\n\t\t if (damping > 0) {\n\t\t bodyB.positionPrev.x += damping * normal.x * normalVelocity * share;\n\t\t bodyB.positionPrev.y += damping * normal.y * normalVelocity * share;\n\t\t }\n\n\t\t // apply torque\n\t\t torque = (Vector.cross(pointB, force) / resistanceTotal) * Constraint._torqueDampen * bodyB.inverseInertia * (1 - constraint.angularStiffness);\n\t\t bodyB.constraintImpulse.angle += torque;\n\t\t bodyB.angle += torque;\n\t\t }\n\n\t\t };\n\n\t\t /**\n\t\t * Performs body updates required after solving constraints.\n\t\t * @private\n\t\t * @method postSolveAll\n\t\t * @param {body[]} bodies\n\t\t */\n\t\t Constraint.postSolveAll = function(bodies) {\n\t\t for (var i = 0; i < bodies.length; i++) {\n\t\t var body = bodies[i],\n\t\t impulse = body.constraintImpulse;\n\n\t\t if (body.isStatic || (impulse.x === 0 && impulse.y === 0 && impulse.angle === 0)) {\n\t\t continue;\n\t\t }\n\n\t\t Sleeping.set(body, false);\n\n\t\t // update geometry and reset\n\t\t for (var j = 0; j < body.parts.length; j++) {\n\t\t var part = body.parts[j];\n\t\t \n\t\t Vertices.translate(part.vertices, impulse);\n\n\t\t if (j > 0) {\n\t\t part.position.x += impulse.x;\n\t\t part.position.y += impulse.y;\n\t\t }\n\n\t\t if (impulse.angle !== 0) {\n\t\t Vertices.rotate(part.vertices, impulse.angle, body.position);\n\t\t Axes.rotate(part.axes, impulse.angle);\n\t\t if (j > 0) {\n\t\t Vector.rotateAbout(part.position, impulse.angle, body.position, part.position);\n\t\t }\n\t\t }\n\n\t\t Bounds.update(part.bounds, part.vertices, body.velocity);\n\t\t }\n\n\t\t // dampen the cached impulse for warming next step\n\t\t impulse.angle *= Constraint._warming;\n\t\t impulse.x *= Constraint._warming;\n\t\t impulse.y *= Constraint._warming;\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Returns the world-space position of `constraint.pointA`, accounting for `constraint.bodyA`.\n\t\t * @method pointAWorld\n\t\t * @param {constraint} constraint\n\t\t * @returns {vector} the world-space position\n\t\t */\n\t\t Constraint.pointAWorld = function(constraint) {\n\t\t return {\n\t\t x: (constraint.bodyA ? constraint.bodyA.position.x : 0) \n\t\t + (constraint.pointA ? constraint.pointA.x : 0),\n\t\t y: (constraint.bodyA ? constraint.bodyA.position.y : 0) \n\t\t + (constraint.pointA ? constraint.pointA.y : 0)\n\t\t };\n\t\t };\n\n\t\t /**\n\t\t * Returns the world-space position of `constraint.pointB`, accounting for `constraint.bodyB`.\n\t\t * @method pointBWorld\n\t\t * @param {constraint} constraint\n\t\t * @returns {vector} the world-space position\n\t\t */\n\t\t Constraint.pointBWorld = function(constraint) {\n\t\t return {\n\t\t x: (constraint.bodyB ? constraint.bodyB.position.x : 0) \n\t\t + (constraint.pointB ? constraint.pointB.x : 0),\n\t\t y: (constraint.bodyB ? constraint.bodyB.position.y : 0) \n\t\t + (constraint.pointB ? constraint.pointB.y : 0)\n\t\t };\n\t\t };\n\n\t\t /**\n\t\t * Returns the current length of the constraint. \n\t\t * This is the distance between both of the constraint's end points.\n\t\t * See `constraint.length` for the target rest length.\n\t\t * @method currentLength\n\t\t * @param {constraint} constraint\n\t\t * @returns {number} the current length\n\t\t */\n\t\t Constraint.currentLength = function(constraint) {\n\t\t var pointAX = (constraint.bodyA ? constraint.bodyA.position.x : 0) \n\t\t + (constraint.pointA ? constraint.pointA.x : 0);\n\n\t\t var pointAY = (constraint.bodyA ? constraint.bodyA.position.y : 0) \n\t\t + (constraint.pointA ? constraint.pointA.y : 0);\n\n\t\t var pointBX = (constraint.bodyB ? constraint.bodyB.position.x : 0) \n\t\t + (constraint.pointB ? constraint.pointB.x : 0);\n\t\t \n\t\t var pointBY = (constraint.bodyB ? constraint.bodyB.position.y : 0) \n\t\t + (constraint.pointB ? constraint.pointB.y : 0);\n\n\t\t var deltaX = pointAX - pointBX;\n\t\t var deltaY = pointAY - pointBY;\n\n\t\t return Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n\t\t };\n\n\t\t /*\n\t\t *\n\t\t * Properties Documentation\n\t\t *\n\t\t */\n\n\t\t /**\n\t\t * An integer `Number` uniquely identifying number generated in `Composite.create` by `Common.nextId`.\n\t\t *\n\t\t * @property id\n\t\t * @type number\n\t\t */\n\n\t\t /**\n\t\t * A `String` denoting the type of object.\n\t\t *\n\t\t * @property type\n\t\t * @type string\n\t\t * @default \"constraint\"\n\t\t * @readOnly\n\t\t */\n\n\t\t /**\n\t\t * An arbitrary `String` name to help the user identify and manage bodies.\n\t\t *\n\t\t * @property label\n\t\t * @type string\n\t\t * @default \"Constraint\"\n\t\t */\n\n\t\t /**\n\t\t * An `Object` that defines the rendering properties to be consumed by the module `Matter.Render`.\n\t\t *\n\t\t * @property render\n\t\t * @type object\n\t\t */\n\n\t\t /**\n\t\t * A flag that indicates if the constraint should be rendered.\n\t\t *\n\t\t * @property render.visible\n\t\t * @type boolean\n\t\t * @default true\n\t\t */\n\n\t\t /**\n\t\t * A `Number` that defines the line width to use when rendering the constraint outline.\n\t\t * A value of `0` means no outline will be rendered.\n\t\t *\n\t\t * @property render.lineWidth\n\t\t * @type number\n\t\t * @default 2\n\t\t */\n\n\t\t /**\n\t\t * A `String` that defines the stroke style to use when rendering the constraint outline.\n\t\t * It is the same as when using a canvas, so it accepts CSS style property values.\n\t\t *\n\t\t * @property render.strokeStyle\n\t\t * @type string\n\t\t * @default a random colour\n\t\t */\n\n\t\t /**\n\t\t * A `String` that defines the constraint rendering type. \n\t\t * The possible values are 'line', 'pin', 'spring'.\n\t\t * An appropriate render type will be automatically chosen unless one is given in options.\n\t\t *\n\t\t * @property render.type\n\t\t * @type string\n\t\t * @default 'line'\n\t\t */\n\n\t\t /**\n\t\t * A `Boolean` that defines if the constraint's anchor points should be rendered.\n\t\t *\n\t\t * @property render.anchors\n\t\t * @type boolean\n\t\t * @default true\n\t\t */\n\n\t\t /**\n\t\t * The first possible `Body` that this constraint is attached to.\n\t\t *\n\t\t * @property bodyA\n\t\t * @type body\n\t\t * @default null\n\t\t */\n\n\t\t /**\n\t\t * The second possible `Body` that this constraint is attached to.\n\t\t *\n\t\t * @property bodyB\n\t\t * @type body\n\t\t * @default null\n\t\t */\n\n\t\t /**\n\t\t * A `Vector` that specifies the offset of the constraint from center of the `constraint.bodyA` if defined, otherwise a world-space position.\n\t\t *\n\t\t * @property pointA\n\t\t * @type vector\n\t\t * @default { x: 0, y: 0 }\n\t\t */\n\n\t\t /**\n\t\t * A `Vector` that specifies the offset of the constraint from center of the `constraint.bodyB` if defined, otherwise a world-space position.\n\t\t *\n\t\t * @property pointB\n\t\t * @type vector\n\t\t * @default { x: 0, y: 0 }\n\t\t */\n\n\t\t /**\n\t\t * A `Number` that specifies the stiffness of the constraint, i.e. the rate at which it returns to its resting `constraint.length`.\n\t\t * A value of `1` means the constraint should be very stiff.\n\t\t * A value of `0.2` means the constraint acts like a soft spring.\n\t\t *\n\t\t * @property stiffness\n\t\t * @type number\n\t\t * @default 1\n\t\t */\n\n\t\t /**\n\t\t * A `Number` that specifies the damping of the constraint, \n\t\t * i.e. the amount of resistance applied to each body based on their velocities to limit the amount of oscillation.\n\t\t * Damping will only be apparent when the constraint also has a very low `stiffness`.\n\t\t * A value of `0.1` means the constraint will apply heavy damping, resulting in little to no oscillation.\n\t\t * A value of `0` means the constraint will apply no damping.\n\t\t *\n\t\t * @property damping\n\t\t * @type number\n\t\t * @default 0\n\t\t */\n\n\t\t /**\n\t\t * A `Number` that specifies the target resting length of the constraint. \n\t\t * It is calculated automatically in `Constraint.create` from initial positions of the `constraint.bodyA` and `constraint.bodyB`.\n\t\t *\n\t\t * @property length\n\t\t * @type number\n\t\t */\n\n\t\t /**\n\t\t * An object reserved for storing plugin-specific properties.\n\t\t *\n\t\t * @property plugin\n\t\t * @type {}\n\t\t */\n\n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 11 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\n\t\t* The `Matter.Axes` module contains methods for creating and manipulating sets of axes.\n\t\t*\n\t\t* @class Axes\n\t\t*/\n\n\t\tvar Axes = {};\n\n\t\tmodule.exports = Axes;\n\n\t\tvar Vector = __webpack_require__(2);\n\t\tvar Common = __webpack_require__(0);\n\n\t\t(function() {\n\n\t\t /**\n\t\t * Creates a new set of axes from the given vertices.\n\t\t * @method fromVertices\n\t\t * @param {vertices} vertices\n\t\t * @return {axes} A new axes from the given vertices\n\t\t */\n\t\t Axes.fromVertices = function(vertices) {\n\t\t var axes = {};\n\n\t\t // find the unique axes, using edge normal gradients\n\t\t for (var i = 0; i < vertices.length; i++) {\n\t\t var j = (i + 1) % vertices.length, \n\t\t normal = Vector.normalise({ \n\t\t x: vertices[j].y - vertices[i].y, \n\t\t y: vertices[i].x - vertices[j].x\n\t\t }),\n\t\t gradient = (normal.y === 0) ? Infinity : (normal.x / normal.y);\n\t\t \n\t\t // limit precision\n\t\t gradient = gradient.toFixed(3).toString();\n\t\t axes[gradient] = normal;\n\t\t }\n\n\t\t return Common.values(axes);\n\t\t };\n\n\t\t /**\n\t\t * Rotates a set of axes by the given angle.\n\t\t * @method rotate\n\t\t * @param {axes} axes\n\t\t * @param {number} angle\n\t\t */\n\t\t Axes.rotate = function(axes, angle) {\n\t\t if (angle === 0)\n\t\t return;\n\t\t \n\t\t var cos = Math.cos(angle),\n\t\t sin = Math.sin(angle);\n\n\t\t for (var i = 0; i < axes.length; i++) {\n\t\t var axis = axes[i],\n\t\t xx;\n\t\t xx = axis.x * cos - axis.y * sin;\n\t\t axis.y = axis.x * sin + axis.y * cos;\n\t\t axis.x = xx;\n\t\t }\n\t\t };\n\n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 12 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\n\t\t* The `Matter.Bodies` module contains factory methods for creating rigid body models \n\t\t* with commonly used body configurations (such as rectangles, circles and other polygons).\n\t\t*\n\t\t* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n\t\t*\n\t\t* @class Bodies\n\t\t*/\n\n\t\t// TODO: true circle bodies\n\n\t\tvar Bodies = {};\n\n\t\tmodule.exports = Bodies;\n\n\t\tvar Vertices = __webpack_require__(3);\n\t\tvar Common = __webpack_require__(0);\n\t\tvar Body = __webpack_require__(4);\n\t\tvar Bounds = __webpack_require__(1);\n\t\tvar Vector = __webpack_require__(2);\n\n\t\t(function() {\n\n\t\t /**\n\t\t * Creates a new rigid body model with a rectangle hull. \n\t\t * The options parameter is an object that specifies any properties you wish to override the defaults.\n\t\t * See the properties section of the `Matter.Body` module for detailed information on what you can pass via the `options` object.\n\t\t * @method rectangle\n\t\t * @param {number} x\n\t\t * @param {number} y\n\t\t * @param {number} width\n\t\t * @param {number} height\n\t\t * @param {object} [options]\n\t\t * @return {body} A new rectangle body\n\t\t */\n\t\t Bodies.rectangle = function(x, y, width, height, options) {\n\t\t options = options || {};\n\n\t\t var rectangle = { \n\t\t label: 'Rectangle Body',\n\t\t position: { x: x, y: y },\n\t\t vertices: Vertices.fromPath('L 0 0 L ' + width + ' 0 L ' + width + ' ' + height + ' L 0 ' + height)\n\t\t };\n\n\t\t if (options.chamfer) {\n\t\t var chamfer = options.chamfer;\n\t\t rectangle.vertices = Vertices.chamfer(rectangle.vertices, chamfer.radius, \n\t\t chamfer.quality, chamfer.qualityMin, chamfer.qualityMax);\n\t\t delete options.chamfer;\n\t\t }\n\n\t\t return Body.create(Common.extend({}, rectangle, options));\n\t\t };\n\t\t \n\t\t /**\n\t\t * Creates a new rigid body model with a trapezoid hull. \n\t\t * The `slope` is parameterised as a fraction of `width` and must be < 1 to form a valid trapezoid. \n\t\t * The options parameter is an object that specifies any properties you wish to override the defaults.\n\t\t * See the properties section of the `Matter.Body` module for detailed information on what you can pass via the `options` object.\n\t\t * @method trapezoid\n\t\t * @param {number} x\n\t\t * @param {number} y\n\t\t * @param {number} width\n\t\t * @param {number} height\n\t\t * @param {number} slope Must be a number < 1.\n\t\t * @param {object} [options]\n\t\t * @return {body} A new trapezoid body\n\t\t */\n\t\t Bodies.trapezoid = function(x, y, width, height, slope, options) {\n\t\t options = options || {};\n\n\t\t if (slope >= 1) {\n\t\t Common.warn('Bodies.trapezoid: slope parameter must be < 1.');\n\t\t }\n\n\t\t slope *= 0.5;\n\t\t var roof = (1 - (slope * 2)) * width;\n\t\t \n\t\t var x1 = width * slope,\n\t\t x2 = x1 + roof,\n\t\t x3 = x2 + x1,\n\t\t verticesPath;\n\n\t\t if (slope < 0.5) {\n\t\t verticesPath = 'L 0 0 L ' + x1 + ' ' + (-height) + ' L ' + x2 + ' ' + (-height) + ' L ' + x3 + ' 0';\n\t\t } else {\n\t\t verticesPath = 'L 0 0 L ' + x2 + ' ' + (-height) + ' L ' + x3 + ' 0';\n\t\t }\n\n\t\t var trapezoid = { \n\t\t label: 'Trapezoid Body',\n\t\t position: { x: x, y: y },\n\t\t vertices: Vertices.fromPath(verticesPath)\n\t\t };\n\n\t\t if (options.chamfer) {\n\t\t var chamfer = options.chamfer;\n\t\t trapezoid.vertices = Vertices.chamfer(trapezoid.vertices, chamfer.radius, \n\t\t chamfer.quality, chamfer.qualityMin, chamfer.qualityMax);\n\t\t delete options.chamfer;\n\t\t }\n\n\t\t return Body.create(Common.extend({}, trapezoid, options));\n\t\t };\n\n\t\t /**\n\t\t * Creates a new rigid body model with a circle hull. \n\t\t * The options parameter is an object that specifies any properties you wish to override the defaults.\n\t\t * See the properties section of the `Matter.Body` module for detailed information on what you can pass via the `options` object.\n\t\t * @method circle\n\t\t * @param {number} x\n\t\t * @param {number} y\n\t\t * @param {number} radius\n\t\t * @param {object} [options]\n\t\t * @param {number} [maxSides]\n\t\t * @return {body} A new circle body\n\t\t */\n\t\t Bodies.circle = function(x, y, radius, options, maxSides) {\n\t\t options = options || {};\n\n\t\t var circle = {\n\t\t label: 'Circle Body',\n\t\t circleRadius: radius\n\t\t };\n\t\t \n\t\t // approximate circles with polygons until true circles implemented in SAT\n\t\t maxSides = maxSides || 25;\n\t\t var sides = Math.ceil(Math.max(10, Math.min(maxSides, radius)));\n\n\t\t // optimisation: always use even number of sides (half the number of unique axes)\n\t\t if (sides % 2 === 1)\n\t\t sides += 1;\n\n\t\t return Bodies.polygon(x, y, sides, radius, Common.extend({}, circle, options));\n\t\t };\n\n\t\t /**\n\t\t * Creates a new rigid body model with a regular polygon hull with the given number of sides. \n\t\t * The options parameter is an object that specifies any properties you wish to override the defaults.\n\t\t * See the properties section of the `Matter.Body` module for detailed information on what you can pass via the `options` object.\n\t\t * @method polygon\n\t\t * @param {number} x\n\t\t * @param {number} y\n\t\t * @param {number} sides\n\t\t * @param {number} radius\n\t\t * @param {object} [options]\n\t\t * @return {body} A new regular polygon body\n\t\t */\n\t\t Bodies.polygon = function(x, y, sides, radius, options) {\n\t\t options = options || {};\n\n\t\t if (sides < 3)\n\t\t return Bodies.circle(x, y, radius, options);\n\n\t\t var theta = 2 * Math.PI / sides,\n\t\t path = '',\n\t\t offset = theta * 0.5;\n\n\t\t for (var i = 0; i < sides; i += 1) {\n\t\t var angle = offset + (i * theta),\n\t\t xx = Math.cos(angle) * radius,\n\t\t yy = Math.sin(angle) * radius;\n\n\t\t path += 'L ' + xx.toFixed(3) + ' ' + yy.toFixed(3) + ' ';\n\t\t }\n\n\t\t var polygon = { \n\t\t label: 'Polygon Body',\n\t\t position: { x: x, y: y },\n\t\t vertices: Vertices.fromPath(path)\n\t\t };\n\n\t\t if (options.chamfer) {\n\t\t var chamfer = options.chamfer;\n\t\t polygon.vertices = Vertices.chamfer(polygon.vertices, chamfer.radius, \n\t\t chamfer.quality, chamfer.qualityMin, chamfer.qualityMax);\n\t\t delete options.chamfer;\n\t\t }\n\n\t\t return Body.create(Common.extend({}, polygon, options));\n\t\t };\n\n\t\t /**\n\t\t * Utility to create a compound body based on set(s) of vertices.\n\t\t * \n\t\t * _Note:_ To optionally enable automatic concave vertices decomposition the [poly-decomp](https://github.com/schteppe/poly-decomp.js) \n\t\t * package must be first installed and provided see `Common.setDecomp`, otherwise the convex hull of each vertex set will be used.\n\t\t * \n\t\t * The resulting vertices are reorientated about their centre of mass,\n\t\t * and offset such that `body.position` corresponds to this point.\n\t\t * \n\t\t * The resulting offset may be found if needed by subtracting `body.bounds` from the original input bounds.\n\t\t * To later move the centre of mass see `Body.setCentre`.\n\t\t * \n\t\t * Note that automatic conconcave decomposition results are not always optimal. \n\t\t * For best results, simplify the input vertices as much as possible first.\n\t\t * By default this function applies some addtional simplification to help.\n\t\t * \n\t\t * Some outputs may also require further manual processing afterwards to be robust.\n\t\t * In particular some parts may need to be overlapped to avoid collision gaps.\n\t\t * Thin parts and sharp points should be avoided or removed where possible.\n\t\t *\n\t\t * The options parameter object specifies any `Matter.Body` properties you wish to override the defaults.\n\t\t * \n\t\t * See the properties section of the `Matter.Body` module for detailed information on what you can pass via the `options` object.\n\t\t * @method fromVertices\n\t\t * @param {number} x\n\t\t * @param {number} y\n\t\t * @param {array} vertexSets One or more arrays of vertex points e.g. `[[{ x: 0, y: 0 }...], ...]`.\n\t\t * @param {object} [options] The body options.\n\t\t * @param {bool} [flagInternal=false] Optionally marks internal edges with `isInternal`.\n\t\t * @param {number} [removeCollinear=0.01] Threshold when simplifying vertices along the same edge.\n\t\t * @param {number} [minimumArea=10] Threshold when removing small parts.\n\t\t * @param {number} [removeDuplicatePoints=0.01] Threshold when simplifying nearby vertices.\n\t\t * @return {body}\n\t\t */\n\t\t Bodies.fromVertices = function(x, y, vertexSets, options, flagInternal, removeCollinear, minimumArea, removeDuplicatePoints) {\n\t\t var decomp = Common.getDecomp(),\n\t\t canDecomp,\n\t\t body,\n\t\t parts,\n\t\t isConvex,\n\t\t isConcave,\n\t\t vertices,\n\t\t i,\n\t\t j,\n\t\t k,\n\t\t v,\n\t\t z;\n\n\t\t // check decomp is as expected\n\t\t canDecomp = Boolean(decomp && decomp.quickDecomp);\n\n\t\t options = options || {};\n\t\t parts = [];\n\n\t\t flagInternal = typeof flagInternal !== 'undefined' ? flagInternal : false;\n\t\t removeCollinear = typeof removeCollinear !== 'undefined' ? removeCollinear : 0.01;\n\t\t minimumArea = typeof minimumArea !== 'undefined' ? minimumArea : 10;\n\t\t removeDuplicatePoints = typeof removeDuplicatePoints !== 'undefined' ? removeDuplicatePoints : 0.01;\n\n\t\t // ensure vertexSets is an array of arrays\n\t\t if (!Common.isArray(vertexSets[0])) {\n\t\t vertexSets = [vertexSets];\n\t\t }\n\n\t\t for (v = 0; v < vertexSets.length; v += 1) {\n\t\t vertices = vertexSets[v];\n\t\t isConvex = Vertices.isConvex(vertices);\n\t\t isConcave = !isConvex;\n\n\t\t if (isConcave && !canDecomp) {\n\t\t Common.warnOnce(\n\t\t 'Bodies.fromVertices: Install the \\'poly-decomp\\' library and use Common.setDecomp or provide \\'decomp\\' as a global to decompose concave vertices.'\n\t\t );\n\t\t }\n\n\t\t if (isConvex || !canDecomp) {\n\t\t if (isConvex) {\n\t\t vertices = Vertices.clockwiseSort(vertices);\n\t\t } else {\n\t\t // fallback to convex hull when decomposition is not possible\n\t\t vertices = Vertices.hull(vertices);\n\t\t }\n\n\t\t parts.push({\n\t\t position: { x: x, y: y },\n\t\t vertices: vertices\n\t\t });\n\t\t } else {\n\t\t // initialise a decomposition\n\t\t var concave = vertices.map(function(vertex) {\n\t\t return [vertex.x, vertex.y];\n\t\t });\n\n\t\t // vertices are concave and simple, we can decompose into parts\n\t\t decomp.makeCCW(concave);\n\t\t if (removeCollinear !== false)\n\t\t decomp.removeCollinearPoints(concave, removeCollinear);\n\t\t if (removeDuplicatePoints !== false && decomp.removeDuplicatePoints)\n\t\t decomp.removeDuplicatePoints(concave, removeDuplicatePoints);\n\n\t\t // use the quick decomposition algorithm (Bayazit)\n\t\t var decomposed = decomp.quickDecomp(concave);\n\n\t\t // for each decomposed chunk\n\t\t for (i = 0; i < decomposed.length; i++) {\n\t\t var chunk = decomposed[i];\n\n\t\t // convert vertices into the correct structure\n\t\t var chunkVertices = chunk.map(function(vertices) {\n\t\t return {\n\t\t x: vertices[0],\n\t\t y: vertices[1]\n\t\t };\n\t\t });\n\n\t\t // skip small chunks\n\t\t if (minimumArea > 0 && Vertices.area(chunkVertices) < minimumArea)\n\t\t continue;\n\n\t\t // create a compound part\n\t\t parts.push({\n\t\t position: Vertices.centre(chunkVertices),\n\t\t vertices: chunkVertices\n\t\t });\n\t\t }\n\t\t }\n\t\t }\n\n\t\t // create body parts\n\t\t for (i = 0; i < parts.length; i++) {\n\t\t parts[i] = Body.create(Common.extend(parts[i], options));\n\t\t }\n\n\t\t // flag internal edges (coincident part edges)\n\t\t if (flagInternal) {\n\t\t var coincident_max_dist = 5;\n\n\t\t for (i = 0; i < parts.length; i++) {\n\t\t var partA = parts[i];\n\n\t\t for (j = i + 1; j < parts.length; j++) {\n\t\t var partB = parts[j];\n\n\t\t if (Bounds.overlaps(partA.bounds, partB.bounds)) {\n\t\t var pav = partA.vertices,\n\t\t pbv = partB.vertices;\n\n\t\t // iterate vertices of both parts\n\t\t for (k = 0; k < partA.vertices.length; k++) {\n\t\t for (z = 0; z < partB.vertices.length; z++) {\n\t\t // find distances between the vertices\n\t\t var da = Vector.magnitudeSquared(Vector.sub(pav[(k + 1) % pav.length], pbv[z])),\n\t\t db = Vector.magnitudeSquared(Vector.sub(pav[k], pbv[(z + 1) % pbv.length]));\n\n\t\t // if both vertices are very close, consider the edge concident (internal)\n\t\t if (da < coincident_max_dist && db < coincident_max_dist) {\n\t\t pav[k].isInternal = true;\n\t\t pbv[z].isInternal = true;\n\t\t }\n\t\t }\n\t\t }\n\n\t\t }\n\t\t }\n\t\t }\n\t\t }\n\n\t\t if (parts.length > 1) {\n\t\t // create the parent body to be returned, that contains generated compound parts\n\t\t body = Body.create(Common.extend({ parts: parts.slice(0) }, options));\n\n\t\t // offset such that body.position is at the centre off mass\n\t\t Body.setPosition(body, { x: x, y: y });\n\n\t\t return body;\n\t\t } else {\n\t\t return parts[0];\n\t\t }\n\t\t };\n\n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 13 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\n\t\t* The `Matter.Detector` module contains methods for efficiently detecting collisions between a list of bodies using a broadphase algorithm.\n\t\t*\n\t\t* @class Detector\n\t\t*/\n\n\t\tvar Detector = {};\n\n\t\tmodule.exports = Detector;\n\n\t\tvar Common = __webpack_require__(0);\n\t\tvar Collision = __webpack_require__(8);\n\n\t\t(function() {\n\n\t\t /**\n\t\t * Creates a new collision detector.\n\t\t * @method create\n\t\t * @param {} options\n\t\t * @return {detector} A new collision detector\n\t\t */\n\t\t Detector.create = function(options) {\n\t\t var defaults = {\n\t\t bodies: [],\n\t\t collisions: [],\n\t\t pairs: null\n\t\t };\n\n\t\t return Common.extend(defaults, options);\n\t\t };\n\n\t\t /**\n\t\t * Sets the list of bodies in the detector.\n\t\t * @method setBodies\n\t\t * @param {detector} detector\n\t\t * @param {body[]} bodies\n\t\t */\n\t\t Detector.setBodies = function(detector, bodies) {\n\t\t detector.bodies = bodies.slice(0);\n\t\t };\n\n\t\t /**\n\t\t * Clears the detector including its list of bodies.\n\t\t * @method clear\n\t\t * @param {detector} detector\n\t\t */\n\t\t Detector.clear = function(detector) {\n\t\t detector.bodies = [];\n\t\t detector.collisions = [];\n\t\t };\n\n\t\t /**\n\t\t * Efficiently finds all collisions among all the bodies in `detector.bodies` using a broadphase algorithm.\n\t\t * \n\t\t * _Note:_ The specific ordering of collisions returned is not guaranteed between releases and may change for performance reasons.\n\t\t * If a specific ordering is required then apply a sort to the resulting array.\n\t\t * @method collisions\n\t\t * @param {detector} detector\n\t\t * @return {collision[]} collisions\n\t\t */\n\t\t Detector.collisions = function(detector) {\n\t\t var pairs = detector.pairs,\n\t\t bodies = detector.bodies,\n\t\t bodiesLength = bodies.length,\n\t\t canCollide = Detector.canCollide,\n\t\t collides = Collision.collides,\n\t\t collisions = detector.collisions,\n\t\t collisionIndex = 0,\n\t\t i,\n\t\t j;\n\n\t\t bodies.sort(Detector._compareBoundsX);\n\n\t\t for (i = 0; i < bodiesLength; i++) {\n\t\t var bodyA = bodies[i],\n\t\t boundsA = bodyA.bounds,\n\t\t boundXMax = bodyA.bounds.max.x,\n\t\t boundYMax = bodyA.bounds.max.y,\n\t\t boundYMin = bodyA.bounds.min.y,\n\t\t bodyAStatic = bodyA.isStatic || bodyA.isSleeping,\n\t\t partsALength = bodyA.parts.length,\n\t\t partsASingle = partsALength === 1;\n\n\t\t for (j = i + 1; j < bodiesLength; j++) {\n\t\t var bodyB = bodies[j],\n\t\t boundsB = bodyB.bounds;\n\n\t\t if (boundsB.min.x > boundXMax) {\n\t\t break;\n\t\t }\n\n\t\t if (boundYMax < boundsB.min.y || boundYMin > boundsB.max.y) {\n\t\t continue;\n\t\t }\n\n\t\t if (bodyAStatic && (bodyB.isStatic || bodyB.isSleeping)) {\n\t\t continue;\n\t\t }\n\n\t\t if (!canCollide(bodyA.collisionFilter, bodyB.collisionFilter)) {\n\t\t continue;\n\t\t }\n\n\t\t var partsBLength = bodyB.parts.length;\n\n\t\t if (partsASingle && partsBLength === 1) {\n\t\t var collision = collides(bodyA, bodyB, pairs);\n\n\t\t if (collision) {\n\t\t collisions[collisionIndex++] = collision;\n\t\t }\n\t\t } else {\n\t\t var partsAStart = partsALength > 1 ? 1 : 0,\n\t\t partsBStart = partsBLength > 1 ? 1 : 0;\n\t\t \n\t\t for (var k = partsAStart; k < partsALength; k++) {\n\t\t var partA = bodyA.parts[k],\n\t\t boundsA = partA.bounds;\n\n\t\t for (var z = partsBStart; z < partsBLength; z++) {\n\t\t var partB = bodyB.parts[z],\n\t\t boundsB = partB.bounds;\n\n\t\t if (boundsA.min.x > boundsB.max.x || boundsA.max.x < boundsB.min.x\n\t\t || boundsA.max.y < boundsB.min.y || boundsA.min.y > boundsB.max.y) {\n\t\t continue;\n\t\t }\n\n\t\t var collision = collides(partA, partB, pairs);\n\n\t\t if (collision) {\n\t\t collisions[collisionIndex++] = collision;\n\t\t }\n\t\t }\n\t\t }\n\t\t }\n\t\t }\n\t\t }\n\n\t\t if (collisions.length !== collisionIndex) {\n\t\t collisions.length = collisionIndex;\n\t\t }\n\n\t\t return collisions;\n\t\t };\n\n\t\t /**\n\t\t * Returns `true` if both supplied collision filters will allow a collision to occur.\n\t\t * See `body.collisionFilter` for more information.\n\t\t * @method canCollide\n\t\t * @param {} filterA\n\t\t * @param {} filterB\n\t\t * @return {bool} `true` if collision can occur\n\t\t */\n\t\t Detector.canCollide = function(filterA, filterB) {\n\t\t if (filterA.group === filterB.group && filterA.group !== 0)\n\t\t return filterA.group > 0;\n\n\t\t return (filterA.mask & filterB.category) !== 0 && (filterB.mask & filterA.category) !== 0;\n\t\t };\n\n\t\t /**\n\t\t * The comparison function used in the broadphase algorithm.\n\t\t * Returns the signed delta of the bodies bounds on the x-axis.\n\t\t * @private\n\t\t * @method _sortCompare\n\t\t * @param {body} bodyA\n\t\t * @param {body} bodyB\n\t\t * @return {number} The signed delta used for sorting\n\t\t */\n\t\t Detector._compareBoundsX = function(bodyA, bodyB) {\n\t\t return bodyA.bounds.min.x - bodyB.bounds.min.x;\n\t\t };\n\n\t\t /*\n\t\t *\n\t\t * Properties Documentation\n\t\t *\n\t\t */\n\n\t\t /**\n\t\t * The array of `Matter.Body` between which the detector finds collisions.\n\t\t * \n\t\t * _Note:_ The order of bodies in this array _is not fixed_ and will be continually managed by the detector.\n\t\t * @property bodies\n\t\t * @type body[]\n\t\t * @default []\n\t\t */\n\n\t\t /**\n\t\t * The array of `Matter.Collision` found in the last call to `Detector.collisions` on this detector.\n\t\t * @property collisions\n\t\t * @type collision[]\n\t\t * @default []\n\t\t */\n\n\t\t /**\n\t\t * Optional. A `Matter.Pairs` object from which previous collision objects may be reused. Intended for internal `Matter.Engine` usage.\n\t\t * @property pairs\n\t\t * @type {pairs|null}\n\t\t * @default null\n\t\t */\n\n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 14 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\n\t\t* The `Matter.Mouse` module contains methods for creating and manipulating mouse inputs.\n\t\t*\n\t\t* @class Mouse\n\t\t*/\n\n\t\tvar Mouse = {};\n\n\t\tmodule.exports = Mouse;\n\n\t\tvar Common = __webpack_require__(0);\n\n\t\t(function() {\n\n\t\t /**\n\t\t * Creates a mouse input.\n\t\t * @method create\n\t\t * @param {HTMLElement} element\n\t\t * @return {mouse} A new mouse\n\t\t */\n\t\t Mouse.create = function(element) {\n\t\t var mouse = {};\n\n\t\t if (!element) {\n\t\t Common.log('Mouse.create: element was undefined, defaulting to document.body', 'warn');\n\t\t }\n\t\t \n\t\t mouse.element = element || document.body;\n\t\t mouse.absolute = { x: 0, y: 0 };\n\t\t mouse.position = { x: 0, y: 0 };\n\t\t mouse.mousedownPosition = { x: 0, y: 0 };\n\t\t mouse.mouseupPosition = { x: 0, y: 0 };\n\t\t mouse.offset = { x: 0, y: 0 };\n\t\t mouse.scale = { x: 1, y: 1 };\n\t\t mouse.wheelDelta = 0;\n\t\t mouse.button = -1;\n\t\t mouse.pixelRatio = parseInt(mouse.element.getAttribute('data-pixel-ratio'), 10) || 1;\n\n\t\t mouse.sourceEvents = {\n\t\t mousemove: null,\n\t\t mousedown: null,\n\t\t mouseup: null,\n\t\t mousewheel: null\n\t\t };\n\t\t \n\t\t mouse.mousemove = function(event) { \n\t\t var position = Mouse._getRelativeMousePosition(event, mouse.element, mouse.pixelRatio),\n\t\t touches = event.changedTouches;\n\n\t\t if (touches) {\n\t\t mouse.button = 0;\n\t\t event.preventDefault();\n\t\t }\n\n\t\t mouse.absolute.x = position.x;\n\t\t mouse.absolute.y = position.y;\n\t\t mouse.position.x = mouse.absolute.x * mouse.scale.x + mouse.offset.x;\n\t\t mouse.position.y = mouse.absolute.y * mouse.scale.y + mouse.offset.y;\n\t\t mouse.sourceEvents.mousemove = event;\n\t\t };\n\t\t \n\t\t mouse.mousedown = function(event) {\n\t\t var position = Mouse._getRelativeMousePosition(event, mouse.element, mouse.pixelRatio),\n\t\t touches = event.changedTouches;\n\n\t\t if (touches) {\n\t\t mouse.button = 0;\n\t\t event.preventDefault();\n\t\t } else {\n\t\t mouse.button = event.button;\n\t\t }\n\n\t\t mouse.absolute.x = position.x;\n\t\t mouse.absolute.y = position.y;\n\t\t mouse.position.x = mouse.absolute.x * mouse.scale.x + mouse.offset.x;\n\t\t mouse.position.y = mouse.absolute.y * mouse.scale.y + mouse.offset.y;\n\t\t mouse.mousedownPosition.x = mouse.position.x;\n\t\t mouse.mousedownPosition.y = mouse.position.y;\n\t\t mouse.sourceEvents.mousedown = event;\n\t\t };\n\t\t \n\t\t mouse.mouseup = function(event) {\n\t\t var position = Mouse._getRelativeMousePosition(event, mouse.element, mouse.pixelRatio),\n\t\t touches = event.changedTouches;\n\n\t\t if (touches) {\n\t\t event.preventDefault();\n\t\t }\n\t\t \n\t\t mouse.button = -1;\n\t\t mouse.absolute.x = position.x;\n\t\t mouse.absolute.y = position.y;\n\t\t mouse.position.x = mouse.absolute.x * mouse.scale.x + mouse.offset.x;\n\t\t mouse.position.y = mouse.absolute.y * mouse.scale.y + mouse.offset.y;\n\t\t mouse.mouseupPosition.x = mouse.position.x;\n\t\t mouse.mouseupPosition.y = mouse.position.y;\n\t\t mouse.sourceEvents.mouseup = event;\n\t\t };\n\n\t\t mouse.mousewheel = function(event) {\n\t\t mouse.wheelDelta = Math.max(-1, Math.min(1, event.wheelDelta || -event.detail));\n\t\t event.preventDefault();\n\t\t mouse.sourceEvents.mousewheel = event;\n\t\t };\n\n\t\t Mouse.setElement(mouse, mouse.element);\n\n\t\t return mouse;\n\t\t };\n\n\t\t /**\n\t\t * Sets the element the mouse is bound to (and relative to).\n\t\t * @method setElement\n\t\t * @param {mouse} mouse\n\t\t * @param {HTMLElement} element\n\t\t */\n\t\t Mouse.setElement = function(mouse, element) {\n\t\t mouse.element = element;\n\n\t\t element.addEventListener('mousemove', mouse.mousemove, { passive: true });\n\t\t element.addEventListener('mousedown', mouse.mousedown, { passive: true });\n\t\t element.addEventListener('mouseup', mouse.mouseup, { passive: true });\n\t\t \n\t\t element.addEventListener('wheel', mouse.mousewheel, { passive: false });\n\t\t \n\t\t element.addEventListener('touchmove', mouse.mousemove, { passive: false });\n\t\t element.addEventListener('touchstart', mouse.mousedown, { passive: false });\n\t\t element.addEventListener('touchend', mouse.mouseup, { passive: false });\n\t\t };\n\n\t\t /**\n\t\t * Clears all captured source events.\n\t\t * @method clearSourceEvents\n\t\t * @param {mouse} mouse\n\t\t */\n\t\t Mouse.clearSourceEvents = function(mouse) {\n\t\t mouse.sourceEvents.mousemove = null;\n\t\t mouse.sourceEvents.mousedown = null;\n\t\t mouse.sourceEvents.mouseup = null;\n\t\t mouse.sourceEvents.mousewheel = null;\n\t\t mouse.wheelDelta = 0;\n\t\t };\n\n\t\t /**\n\t\t * Sets the mouse position offset.\n\t\t * @method setOffset\n\t\t * @param {mouse} mouse\n\t\t * @param {vector} offset\n\t\t */\n\t\t Mouse.setOffset = function(mouse, offset) {\n\t\t mouse.offset.x = offset.x;\n\t\t mouse.offset.y = offset.y;\n\t\t mouse.position.x = mouse.absolute.x * mouse.scale.x + mouse.offset.x;\n\t\t mouse.position.y = mouse.absolute.y * mouse.scale.y + mouse.offset.y;\n\t\t };\n\n\t\t /**\n\t\t * Sets the mouse position scale.\n\t\t * @method setScale\n\t\t * @param {mouse} mouse\n\t\t * @param {vector} scale\n\t\t */\n\t\t Mouse.setScale = function(mouse, scale) {\n\t\t mouse.scale.x = scale.x;\n\t\t mouse.scale.y = scale.y;\n\t\t mouse.position.x = mouse.absolute.x * mouse.scale.x + mouse.offset.x;\n\t\t mouse.position.y = mouse.absolute.y * mouse.scale.y + mouse.offset.y;\n\t\t };\n\t\t \n\t\t /**\n\t\t * Gets the mouse position relative to an element given a screen pixel ratio.\n\t\t * @method _getRelativeMousePosition\n\t\t * @private\n\t\t * @param {} event\n\t\t * @param {} element\n\t\t * @param {number} pixelRatio\n\t\t * @return {}\n\t\t */\n\t\t Mouse._getRelativeMousePosition = function(event, element, pixelRatio) {\n\t\t var elementBounds = element.getBoundingClientRect(),\n\t\t rootNode = (document.documentElement || document.body.parentNode || document.body),\n\t\t scrollX = (window.pageXOffset !== undefined) ? window.pageXOffset : rootNode.scrollLeft,\n\t\t scrollY = (window.pageYOffset !== undefined) ? window.pageYOffset : rootNode.scrollTop,\n\t\t touches = event.changedTouches,\n\t\t x, y;\n\t\t \n\t\t if (touches) {\n\t\t x = touches[0].pageX - elementBounds.left - scrollX;\n\t\t y = touches[0].pageY - elementBounds.top - scrollY;\n\t\t } else {\n\t\t x = event.pageX - elementBounds.left - scrollX;\n\t\t y = event.pageY - elementBounds.top - scrollY;\n\t\t }\n\n\t\t return { \n\t\t x: x / (element.clientWidth / (element.width || element.clientWidth) * pixelRatio),\n\t\t y: y / (element.clientHeight / (element.height || element.clientHeight) * pixelRatio)\n\t\t };\n\t\t };\n\n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 15 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\n\t\t* The `Matter.Plugin` module contains functions for registering and installing plugins on modules.\n\t\t*\n\t\t* @class Plugin\n\t\t*/\n\n\t\tvar Plugin = {};\n\n\t\tmodule.exports = Plugin;\n\n\t\tvar Common = __webpack_require__(0);\n\n\t\t(function() {\n\n\t\t Plugin._registry = {};\n\n\t\t /**\n\t\t * Registers a plugin object so it can be resolved later by name.\n\t\t * @method register\n\t\t * @param plugin {} The plugin to register.\n\t\t * @return {object} The plugin.\n\t\t */\n\t\t Plugin.register = function(plugin) {\n\t\t if (!Plugin.isPlugin(plugin)) {\n\t\t Common.warn('Plugin.register:', Plugin.toString(plugin), 'does not implement all required fields.');\n\t\t }\n\n\t\t if (plugin.name in Plugin._registry) {\n\t\t var registered = Plugin._registry[plugin.name],\n\t\t pluginVersion = Plugin.versionParse(plugin.version).number,\n\t\t registeredVersion = Plugin.versionParse(registered.version).number;\n\n\t\t if (pluginVersion > registeredVersion) {\n\t\t Common.warn('Plugin.register:', Plugin.toString(registered), 'was upgraded to', Plugin.toString(plugin));\n\t\t Plugin._registry[plugin.name] = plugin;\n\t\t } else if (pluginVersion < registeredVersion) {\n\t\t Common.warn('Plugin.register:', Plugin.toString(registered), 'can not be downgraded to', Plugin.toString(plugin));\n\t\t } else if (plugin !== registered) {\n\t\t Common.warn('Plugin.register:', Plugin.toString(plugin), 'is already registered to different plugin object');\n\t\t }\n\t\t } else {\n\t\t Plugin._registry[plugin.name] = plugin;\n\t\t }\n\n\t\t return plugin;\n\t\t };\n\n\t\t /**\n\t\t * Resolves a dependency to a plugin object from the registry if it exists. \n\t\t * The `dependency` may contain a version, but only the name matters when resolving.\n\t\t * @method resolve\n\t\t * @param dependency {string} The dependency.\n\t\t * @return {object} The plugin if resolved, otherwise `undefined`.\n\t\t */\n\t\t Plugin.resolve = function(dependency) {\n\t\t return Plugin._registry[Plugin.dependencyParse(dependency).name];\n\t\t };\n\n\t\t /**\n\t\t * Returns a pretty printed plugin name and version.\n\t\t * @method toString\n\t\t * @param plugin {} The plugin.\n\t\t * @return {string} Pretty printed plugin name and version.\n\t\t */\n\t\t Plugin.toString = function(plugin) {\n\t\t return typeof plugin === 'string' ? plugin : (plugin.name || 'anonymous') + '@' + (plugin.version || plugin.range || '0.0.0');\n\t\t };\n\n\t\t /**\n\t\t * Returns `true` if the object meets the minimum standard to be considered a plugin.\n\t\t * This means it must define the following properties:\n\t\t * - `name`\n\t\t * - `version`\n\t\t * - `install`\n\t\t * @method isPlugin\n\t\t * @param obj {} The obj to test.\n\t\t * @return {boolean} `true` if the object can be considered a plugin otherwise `false`.\n\t\t */\n\t\t Plugin.isPlugin = function(obj) {\n\t\t return obj && obj.name && obj.version && obj.install;\n\t\t };\n\n\t\t /**\n\t\t * Returns `true` if a plugin with the given `name` been installed on `module`.\n\t\t * @method isUsed\n\t\t * @param module {} The module.\n\t\t * @param name {string} The plugin name.\n\t\t * @return {boolean} `true` if a plugin with the given `name` been installed on `module`, otherwise `false`.\n\t\t */\n\t\t Plugin.isUsed = function(module, name) {\n\t\t return module.used.indexOf(name) > -1;\n\t\t };\n\n\t\t /**\n\t\t * Returns `true` if `plugin.for` is applicable to `module` by comparing against `module.name` and `module.version`.\n\t\t * If `plugin.for` is not specified then it is assumed to be applicable.\n\t\t * The value of `plugin.for` is a string of the format `'module-name'` or `'module-name@version'`.\n\t\t * @method isFor\n\t\t * @param plugin {} The plugin.\n\t\t * @param module {} The module.\n\t\t * @return {boolean} `true` if `plugin.for` is applicable to `module`, otherwise `false`.\n\t\t */\n\t\t Plugin.isFor = function(plugin, module) {\n\t\t var parsed = plugin.for && Plugin.dependencyParse(plugin.for);\n\t\t return !plugin.for || (module.name === parsed.name && Plugin.versionSatisfies(module.version, parsed.range));\n\t\t };\n\n\t\t /**\n\t\t * Installs the plugins by calling `plugin.install` on each plugin specified in `plugins` if passed, otherwise `module.uses`.\n\t\t * For installing plugins on `Matter` see the convenience function `Matter.use`.\n\t\t * Plugins may be specified either by their name or a reference to the plugin object.\n\t\t * Plugins themselves may specify further dependencies, but each plugin is installed only once.\n\t\t * Order is important, a topological sort is performed to find the best resulting order of installation.\n\t\t * This sorting attempts to satisfy every dependency's requested ordering, but may not be exact in all cases.\n\t\t * This function logs the resulting status of each dependency in the console, along with any warnings.\n\t\t * - A green tick ✅ indicates a dependency was resolved and installed.\n\t\t * - An orange diamond 🔶 indicates a dependency was resolved but a warning was thrown for it or one if its dependencies.\n\t\t * - A red cross ❌ indicates a dependency could not be resolved.\n\t\t * Avoid calling this function multiple times on the same module unless you intend to manually control installation order.\n\t\t * @method use\n\t\t * @param module {} The module install plugins on.\n\t\t * @param [plugins=module.uses] {} The plugins to install on module (optional, defaults to `module.uses`).\n\t\t */\n\t\t Plugin.use = function(module, plugins) {\n\t\t module.uses = (module.uses || []).concat(plugins || []);\n\n\t\t if (module.uses.length === 0) {\n\t\t Common.warn('Plugin.use:', Plugin.toString(module), 'does not specify any dependencies to install.');\n\t\t return;\n\t\t }\n\n\t\t var dependencies = Plugin.dependencies(module),\n\t\t sortedDependencies = Common.topologicalSort(dependencies),\n\t\t status = [];\n\n\t\t for (var i = 0; i < sortedDependencies.length; i += 1) {\n\t\t if (sortedDependencies[i] === module.name) {\n\t\t continue;\n\t\t }\n\n\t\t var plugin = Plugin.resolve(sortedDependencies[i]);\n\n\t\t if (!plugin) {\n\t\t status.push('❌ ' + sortedDependencies[i]);\n\t\t continue;\n\t\t }\n\n\t\t if (Plugin.isUsed(module, plugin.name)) {\n\t\t continue;\n\t\t }\n\n\t\t if (!Plugin.isFor(plugin, module)) {\n\t\t Common.warn('Plugin.use:', Plugin.toString(plugin), 'is for', plugin.for, 'but installed on', Plugin.toString(module) + '.');\n\t\t plugin._warned = true;\n\t\t }\n\n\t\t if (plugin.install) {\n\t\t plugin.install(module);\n\t\t } else {\n\t\t Common.warn('Plugin.use:', Plugin.toString(plugin), 'does not specify an install function.');\n\t\t plugin._warned = true;\n\t\t }\n\n\t\t if (plugin._warned) {\n\t\t status.push('🔶 ' + Plugin.toString(plugin));\n\t\t delete plugin._warned;\n\t\t } else {\n\t\t status.push('✅ ' + Plugin.toString(plugin));\n\t\t }\n\n\t\t module.used.push(plugin.name);\n\t\t }\n\n\t\t if (status.length > 0) {\n\t\t Common.info(status.join(' '));\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Recursively finds all of a module's dependencies and returns a flat dependency graph.\n\t\t * @method dependencies\n\t\t * @param module {} The module.\n\t\t * @return {object} A dependency graph.\n\t\t */\n\t\t Plugin.dependencies = function(module, tracked) {\n\t\t var parsedBase = Plugin.dependencyParse(module),\n\t\t name = parsedBase.name;\n\n\t\t tracked = tracked || {};\n\n\t\t if (name in tracked) {\n\t\t return;\n\t\t }\n\n\t\t module = Plugin.resolve(module) || module;\n\n\t\t tracked[name] = Common.map(module.uses || [], function(dependency) {\n\t\t if (Plugin.isPlugin(dependency)) {\n\t\t Plugin.register(dependency);\n\t\t }\n\n\t\t var parsed = Plugin.dependencyParse(dependency),\n\t\t resolved = Plugin.resolve(dependency);\n\n\t\t if (resolved && !Plugin.versionSatisfies(resolved.version, parsed.range)) {\n\t\t Common.warn(\n\t\t 'Plugin.dependencies:', Plugin.toString(resolved), 'does not satisfy',\n\t\t Plugin.toString(parsed), 'used by', Plugin.toString(parsedBase) + '.'\n\t\t );\n\n\t\t resolved._warned = true;\n\t\t module._warned = true;\n\t\t } else if (!resolved) {\n\t\t Common.warn(\n\t\t 'Plugin.dependencies:', Plugin.toString(dependency), 'used by',\n\t\t Plugin.toString(parsedBase), 'could not be resolved.'\n\t\t );\n\n\t\t module._warned = true;\n\t\t }\n\n\t\t return parsed.name;\n\t\t });\n\n\t\t for (var i = 0; i < tracked[name].length; i += 1) {\n\t\t Plugin.dependencies(tracked[name][i], tracked);\n\t\t }\n\n\t\t return tracked;\n\t\t };\n\n\t\t /**\n\t\t * Parses a dependency string into its components.\n\t\t * The `dependency` is a string of the format `'module-name'` or `'module-name@version'`.\n\t\t * See documentation for `Plugin.versionParse` for a description of the format.\n\t\t * This function can also handle dependencies that are already resolved (e.g. a module object).\n\t\t * @method dependencyParse\n\t\t * @param dependency {string} The dependency of the format `'module-name'` or `'module-name@version'`.\n\t\t * @return {object} The dependency parsed into its components.\n\t\t */\n\t\t Plugin.dependencyParse = function(dependency) {\n\t\t if (Common.isString(dependency)) {\n\t\t var pattern = /^[\\w-]+(@(\\*|[\\^~]?\\d+\\.\\d+\\.\\d+(-[0-9A-Za-z-+]+)?))?$/;\n\n\t\t if (!pattern.test(dependency)) {\n\t\t Common.warn('Plugin.dependencyParse:', dependency, 'is not a valid dependency string.');\n\t\t }\n\n\t\t return {\n\t\t name: dependency.split('@')[0],\n\t\t range: dependency.split('@')[1] || '*'\n\t\t };\n\t\t }\n\n\t\t return {\n\t\t name: dependency.name,\n\t\t range: dependency.range || dependency.version\n\t\t };\n\t\t };\n\n\t\t /**\n\t\t * Parses a version string into its components. \n\t\t * Versions are strictly of the format `x.y.z` (as in [semver](http://semver.org/)).\n\t\t * Versions may optionally have a prerelease tag in the format `x.y.z-alpha`.\n\t\t * Ranges are a strict subset of [npm ranges](https://docs.npmjs.com/misc/semver#advanced-range-syntax).\n\t\t * Only the following range types are supported:\n\t\t * - Tilde ranges e.g. `~1.2.3`\n\t\t * - Caret ranges e.g. `^1.2.3`\n\t\t * - Greater than ranges e.g. `>1.2.3`\n\t\t * - Greater than or equal ranges e.g. `>=1.2.3`\n\t\t * - Exact version e.g. `1.2.3`\n\t\t * - Any version `*`\n\t\t * @method versionParse\n\t\t * @param range {string} The version string.\n\t\t * @return {object} The version range parsed into its components.\n\t\t */\n\t\t Plugin.versionParse = function(range) {\n\t\t var pattern = /^(\\*)|(\\^|~|>=|>)?\\s*((\\d+)\\.(\\d+)\\.(\\d+))(-[0-9A-Za-z-+]+)?$/;\n\n\t\t if (!pattern.test(range)) {\n\t\t Common.warn('Plugin.versionParse:', range, 'is not a valid version or range.');\n\t\t }\n\n\t\t var parts = pattern.exec(range);\n\t\t var major = Number(parts[4]);\n\t\t var minor = Number(parts[5]);\n\t\t var patch = Number(parts[6]);\n\n\t\t return {\n\t\t isRange: Boolean(parts[1] || parts[2]),\n\t\t version: parts[3],\n\t\t range: range,\n\t\t operator: parts[1] || parts[2] || '',\n\t\t major: major,\n\t\t minor: minor,\n\t\t patch: patch,\n\t\t parts: [major, minor, patch],\n\t\t prerelease: parts[7],\n\t\t number: major * 1e8 + minor * 1e4 + patch\n\t\t };\n\t\t };\n\n\t\t /**\n\t\t * Returns `true` if `version` satisfies the given `range`.\n\t\t * See documentation for `Plugin.versionParse` for a description of the format.\n\t\t * If a version or range is not specified, then any version (`*`) is assumed to satisfy.\n\t\t * @method versionSatisfies\n\t\t * @param version {string} The version string.\n\t\t * @param range {string} The range string.\n\t\t * @return {boolean} `true` if `version` satisfies `range`, otherwise `false`.\n\t\t */\n\t\t Plugin.versionSatisfies = function(version, range) {\n\t\t range = range || '*';\n\n\t\t var r = Plugin.versionParse(range),\n\t\t v = Plugin.versionParse(version);\n\n\t\t if (r.isRange) {\n\t\t if (r.operator === '*' || version === '*') {\n\t\t return true;\n\t\t }\n\n\t\t if (r.operator === '>') {\n\t\t return v.number > r.number;\n\t\t }\n\n\t\t if (r.operator === '>=') {\n\t\t return v.number >= r.number;\n\t\t }\n\n\t\t if (r.operator === '~') {\n\t\t return v.major === r.major && v.minor === r.minor && v.patch >= r.patch;\n\t\t }\n\n\t\t if (r.operator === '^') {\n\t\t if (r.major > 0) {\n\t\t return v.major === r.major && v.number >= r.number;\n\t\t }\n\n\t\t if (r.minor > 0) {\n\t\t return v.minor === r.minor && v.patch >= r.patch;\n\t\t }\n\n\t\t return v.patch === r.patch;\n\t\t }\n\t\t }\n\n\t\t return version === range || version === '*';\n\t\t };\n\n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 16 */\n\t\t/***/ (function(module, exports) {\n\n\t\t/**\n\t\t* The `Matter.Contact` module contains methods for creating and manipulating collision contacts.\n\t\t*\n\t\t* @class Contact\n\t\t*/\n\n\t\tvar Contact = {};\n\n\t\tmodule.exports = Contact;\n\n\t\t(function() {\n\n\t\t /**\n\t\t * Creates a new contact.\n\t\t * @method create\n\t\t * @param {vertex} [vertex]\n\t\t * @return {contact} A new contact\n\t\t */\n\t\t Contact.create = function(vertex) {\n\t\t return {\n\t\t vertex: vertex,\n\t\t normalImpulse: 0,\n\t\t tangentImpulse: 0\n\t\t };\n\t\t };\n\n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 17 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\n\t\t* The `Matter.Engine` module contains methods for creating and manipulating engines.\n\t\t* An engine is a controller that manages updating the simulation of the world.\n\t\t* See `Matter.Runner` for an optional game loop utility.\n\t\t*\n\t\t* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n\t\t*\n\t\t* @class Engine\n\t\t*/\n\n\t\tvar Engine = {};\n\n\t\tmodule.exports = Engine;\n\n\t\tvar Sleeping = __webpack_require__(7);\n\t\tvar Resolver = __webpack_require__(18);\n\t\tvar Detector = __webpack_require__(13);\n\t\tvar Pairs = __webpack_require__(19);\n\t\tvar Events = __webpack_require__(5);\n\t\tvar Composite = __webpack_require__(6);\n\t\tvar Constraint = __webpack_require__(10);\n\t\tvar Common = __webpack_require__(0);\n\t\tvar Body = __webpack_require__(4);\n\n\t\t(function() {\n\n\t\t Engine._deltaMax = 1000 / 60;\n\n\t\t /**\n\t\t * Creates a new engine. The options parameter is an object that specifies any properties you wish to override the defaults.\n\t\t * All properties have default values, and many are pre-calculated automatically based on other properties.\n\t\t * See the properties section below for detailed information on what you can pass via the `options` object.\n\t\t * @method create\n\t\t * @param {object} [options]\n\t\t * @return {engine} engine\n\t\t */\n\t\t Engine.create = function(options) {\n\t\t options = options || {};\n\n\t\t var defaults = {\n\t\t positionIterations: 6,\n\t\t velocityIterations: 4,\n\t\t constraintIterations: 2,\n\t\t enableSleeping: false,\n\t\t events: [],\n\t\t plugin: {},\n\t\t gravity: {\n\t\t x: 0,\n\t\t y: 1,\n\t\t scale: 0.001\n\t\t },\n\t\t timing: {\n\t\t timestamp: 0,\n\t\t timeScale: 1,\n\t\t lastDelta: 0,\n\t\t lastElapsed: 0,\n\t\t lastUpdatesPerFrame: 0\n\t\t }\n\t\t };\n\n\t\t var engine = Common.extend(defaults, options);\n\n\t\t engine.world = options.world || Composite.create({ label: 'World' });\n\t\t engine.pairs = options.pairs || Pairs.create();\n\t\t engine.detector = options.detector || Detector.create();\n\t\t engine.detector.pairs = engine.pairs;\n\n\t\t // for temporary back compatibility only\n\t\t engine.grid = { buckets: [] };\n\t\t engine.world.gravity = engine.gravity;\n\t\t engine.broadphase = engine.grid;\n\t\t engine.metrics = {};\n\t\t \n\t\t return engine;\n\t\t };\n\n\t\t /**\n\t\t * Moves the simulation forward in time by `delta` milliseconds.\n\t\t * Triggers `beforeUpdate`, `beforeSolve` and `afterUpdate` events.\n\t\t * Triggers `collisionStart`, `collisionActive` and `collisionEnd` events.\n\t\t * @method update\n\t\t * @param {engine} engine\n\t\t * @param {number} [delta=16.666]\n\t\t */\n\t\t Engine.update = function(engine, delta) {\n\t\t var startTime = Common.now();\n\n\t\t var world = engine.world,\n\t\t detector = engine.detector,\n\t\t pairs = engine.pairs,\n\t\t timing = engine.timing,\n\t\t timestamp = timing.timestamp,\n\t\t i;\n\n\t\t // warn if high delta\n\t\t if (delta > Engine._deltaMax) {\n\t\t Common.warnOnce(\n\t\t 'Matter.Engine.update: delta argument is recommended to be less than or equal to', Engine._deltaMax.toFixed(3), 'ms.'\n\t\t );\n\t\t }\n\n\t\t delta = typeof delta !== 'undefined' ? delta : Common._baseDelta;\n\t\t delta *= timing.timeScale;\n\n\t\t // increment timestamp\n\t\t timing.timestamp += delta;\n\t\t timing.lastDelta = delta;\n\n\t\t // create an event object\n\t\t var event = {\n\t\t timestamp: timing.timestamp,\n\t\t delta: delta\n\t\t };\n\n\t\t Events.trigger(engine, 'beforeUpdate', event);\n\n\t\t // get all bodies and all constraints in the world\n\t\t var allBodies = Composite.allBodies(world),\n\t\t allConstraints = Composite.allConstraints(world);\n\n\t\t // if the world has changed\n\t\t if (world.isModified) {\n\t\t // update the detector bodies\n\t\t Detector.setBodies(detector, allBodies);\n\n\t\t // reset all composite modified flags\n\t\t Composite.setModified(world, false, false, true);\n\t\t }\n\n\t\t // update sleeping if enabled\n\t\t if (engine.enableSleeping)\n\t\t Sleeping.update(allBodies, delta);\n\n\t\t // apply gravity to all bodies\n\t\t Engine._bodiesApplyGravity(allBodies, engine.gravity);\n\n\t\t // update all body position and rotation by integration\n\t\t if (delta > 0) {\n\t\t Engine._bodiesUpdate(allBodies, delta);\n\t\t }\n\n\t\t Events.trigger(engine, 'beforeSolve', event);\n\n\t\t // update all constraints (first pass)\n\t\t Constraint.preSolveAll(allBodies);\n\t\t for (i = 0; i < engine.constraintIterations; i++) {\n\t\t Constraint.solveAll(allConstraints, delta);\n\t\t }\n\t\t Constraint.postSolveAll(allBodies);\n\n\t\t // find all collisions\n\t\t var collisions = Detector.collisions(detector);\n\n\t\t // update collision pairs\n\t\t Pairs.update(pairs, collisions, timestamp);\n\n\t\t // wake up bodies involved in collisions\n\t\t if (engine.enableSleeping)\n\t\t Sleeping.afterCollisions(pairs.list);\n\n\t\t // trigger collision events\n\t\t if (pairs.collisionStart.length > 0) {\n\t\t Events.trigger(engine, 'collisionStart', { \n\t\t pairs: pairs.collisionStart,\n\t\t timestamp: timing.timestamp,\n\t\t delta: delta\n\t\t });\n\t\t }\n\n\t\t // iteratively resolve position between collisions\n\t\t var positionDamping = Common.clamp(20 / engine.positionIterations, 0, 1);\n\t\t \n\t\t Resolver.preSolvePosition(pairs.list);\n\t\t for (i = 0; i < engine.positionIterations; i++) {\n\t\t Resolver.solvePosition(pairs.list, delta, positionDamping);\n\t\t }\n\t\t Resolver.postSolvePosition(allBodies);\n\n\t\t // update all constraints (second pass)\n\t\t Constraint.preSolveAll(allBodies);\n\t\t for (i = 0; i < engine.constraintIterations; i++) {\n\t\t Constraint.solveAll(allConstraints, delta);\n\t\t }\n\t\t Constraint.postSolveAll(allBodies);\n\n\t\t // iteratively resolve velocity between collisions\n\t\t Resolver.preSolveVelocity(pairs.list);\n\t\t for (i = 0; i < engine.velocityIterations; i++) {\n\t\t Resolver.solveVelocity(pairs.list, delta);\n\t\t }\n\n\t\t // update body speed and velocity properties\n\t\t Engine._bodiesUpdateVelocities(allBodies);\n\n\t\t // trigger collision events\n\t\t if (pairs.collisionActive.length > 0) {\n\t\t Events.trigger(engine, 'collisionActive', { \n\t\t pairs: pairs.collisionActive, \n\t\t timestamp: timing.timestamp,\n\t\t delta: delta\n\t\t });\n\t\t }\n\n\t\t if (pairs.collisionEnd.length > 0) {\n\t\t Events.trigger(engine, 'collisionEnd', {\n\t\t pairs: pairs.collisionEnd,\n\t\t timestamp: timing.timestamp,\n\t\t delta: delta\n\t\t });\n\t\t }\n\n\t\t // clear force buffers\n\t\t Engine._bodiesClearForces(allBodies);\n\n\t\t Events.trigger(engine, 'afterUpdate', event);\n\n\t\t // log the time elapsed computing this update\n\t\t engine.timing.lastElapsed = Common.now() - startTime;\n\n\t\t return engine;\n\t\t };\n\t\t \n\t\t /**\n\t\t * Merges two engines by keeping the configuration of `engineA` but replacing the world with the one from `engineB`.\n\t\t * @method merge\n\t\t * @param {engine} engineA\n\t\t * @param {engine} engineB\n\t\t */\n\t\t Engine.merge = function(engineA, engineB) {\n\t\t Common.extend(engineA, engineB);\n\t\t \n\t\t if (engineB.world) {\n\t\t engineA.world = engineB.world;\n\n\t\t Engine.clear(engineA);\n\n\t\t var bodies = Composite.allBodies(engineA.world);\n\n\t\t for (var i = 0; i < bodies.length; i++) {\n\t\t var body = bodies[i];\n\t\t Sleeping.set(body, false);\n\t\t body.id = Common.nextId();\n\t\t }\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Clears the engine pairs and detector.\n\t\t * @method clear\n\t\t * @param {engine} engine\n\t\t */\n\t\t Engine.clear = function(engine) {\n\t\t Pairs.clear(engine.pairs);\n\t\t Detector.clear(engine.detector);\n\t\t };\n\n\t\t /**\n\t\t * Zeroes the `body.force` and `body.torque` force buffers.\n\t\t * @method _bodiesClearForces\n\t\t * @private\n\t\t * @param {body[]} bodies\n\t\t */\n\t\t Engine._bodiesClearForces = function(bodies) {\n\t\t var bodiesLength = bodies.length;\n\n\t\t for (var i = 0; i < bodiesLength; i++) {\n\t\t var body = bodies[i];\n\n\t\t // reset force buffers\n\t\t body.force.x = 0;\n\t\t body.force.y = 0;\n\t\t body.torque = 0;\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Applies gravitational acceleration to all `bodies`.\n\t\t * This models a [uniform gravitational field](https://en.wikipedia.org/wiki/Gravity_of_Earth), similar to near the surface of a planet.\n\t\t * \n\t\t * @method _bodiesApplyGravity\n\t\t * @private\n\t\t * @param {body[]} bodies\n\t\t * @param {vector} gravity\n\t\t */\n\t\t Engine._bodiesApplyGravity = function(bodies, gravity) {\n\t\t var gravityScale = typeof gravity.scale !== 'undefined' ? gravity.scale : 0.001,\n\t\t bodiesLength = bodies.length;\n\n\t\t if ((gravity.x === 0 && gravity.y === 0) || gravityScale === 0) {\n\t\t return;\n\t\t }\n\t\t \n\t\t for (var i = 0; i < bodiesLength; i++) {\n\t\t var body = bodies[i];\n\n\t\t if (body.isStatic || body.isSleeping)\n\t\t continue;\n\n\t\t // add the resultant force of gravity\n\t\t body.force.y += body.mass * gravity.y * gravityScale;\n\t\t body.force.x += body.mass * gravity.x * gravityScale;\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Applies `Body.update` to all given `bodies`.\n\t\t * @method _bodiesUpdate\n\t\t * @private\n\t\t * @param {body[]} bodies\n\t\t * @param {number} delta The amount of time elapsed between updates\n\t\t */\n\t\t Engine._bodiesUpdate = function(bodies, delta) {\n\t\t var bodiesLength = bodies.length;\n\n\t\t for (var i = 0; i < bodiesLength; i++) {\n\t\t var body = bodies[i];\n\n\t\t if (body.isStatic || body.isSleeping)\n\t\t continue;\n\n\t\t Body.update(body, delta);\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Applies `Body.updateVelocities` to all given `bodies`.\n\t\t * @method _bodiesUpdateVelocities\n\t\t * @private\n\t\t * @param {body[]} bodies\n\t\t */\n\t\t Engine._bodiesUpdateVelocities = function(bodies) {\n\t\t var bodiesLength = bodies.length;\n\n\t\t for (var i = 0; i < bodiesLength; i++) {\n\t\t Body.updateVelocities(bodies[i]);\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * A deprecated alias for `Runner.run`, use `Matter.Runner.run(engine)` instead and see `Matter.Runner` for more information.\n\t\t * @deprecated use Matter.Runner.run(engine) instead\n\t\t * @method run\n\t\t * @param {engine} engine\n\t\t */\n\n\t\t /**\n\t\t * Fired just before an update\n\t\t *\n\t\t * @event beforeUpdate\n\t\t * @param {object} event An event object\n\t\t * @param {number} event.timestamp The engine.timing.timestamp of the event\n\t\t * @param {number} event.delta The delta time in milliseconds value used in the update\n\t\t * @param {engine} event.source The source object of the event\n\t\t * @param {string} event.name The name of the event\n\t\t */\n\n\t\t /**\n\t\t * Fired after bodies updated based on their velocity and forces, but before any collision detection, constraints and resolving etc.\n\t\t *\n\t\t * @event beforeSolve\n\t\t * @param {object} event An event object\n\t\t * @param {number} event.timestamp The engine.timing.timestamp of the event\n\t\t * @param {number} event.delta The delta time in milliseconds value used in the update\n\t\t * @param {engine} event.source The source object of the event\n\t\t * @param {string} event.name The name of the event\n\t\t */\n\n\t\t /**\n\t\t * Fired after engine update and all collision events\n\t\t *\n\t\t * @event afterUpdate\n\t\t * @param {object} event An event object\n\t\t * @param {number} event.timestamp The engine.timing.timestamp of the event\n\t\t * @param {number} event.delta The delta time in milliseconds value used in the update\n\t\t * @param {engine} event.source The source object of the event\n\t\t * @param {string} event.name The name of the event\n\t\t */\n\n\t\t /**\n\t\t * Fired after engine update, provides a list of all pairs that have started to collide in the current tick (if any)\n\t\t *\n\t\t * @event collisionStart\n\t\t * @param {object} event An event object\n\t\t * @param {pair[]} event.pairs List of affected pairs\n\t\t * @param {number} event.timestamp The engine.timing.timestamp of the event\n\t\t * @param {number} event.delta The delta time in milliseconds value used in the update\n\t\t * @param {engine} event.source The source object of the event\n\t\t * @param {string} event.name The name of the event\n\t\t */\n\n\t\t /**\n\t\t * Fired after engine update, provides a list of all pairs that are colliding in the current tick (if any)\n\t\t *\n\t\t * @event collisionActive\n\t\t * @param {object} event An event object\n\t\t * @param {pair[]} event.pairs List of affected pairs\n\t\t * @param {number} event.timestamp The engine.timing.timestamp of the event\n\t\t * @param {number} event.delta The delta time in milliseconds value used in the update\n\t\t * @param {engine} event.source The source object of the event\n\t\t * @param {string} event.name The name of the event\n\t\t */\n\n\t\t /**\n\t\t * Fired after engine update, provides a list of all pairs that have ended collision in the current tick (if any)\n\t\t *\n\t\t * @event collisionEnd\n\t\t * @param {object} event An event object\n\t\t * @param {pair[]} event.pairs List of affected pairs\n\t\t * @param {number} event.timestamp The engine.timing.timestamp of the event\n\t\t * @param {number} event.delta The delta time in milliseconds value used in the update\n\t\t * @param {engine} event.source The source object of the event\n\t\t * @param {string} event.name The name of the event\n\t\t */\n\n\t\t /*\n\t\t *\n\t\t * Properties Documentation\n\t\t *\n\t\t */\n\n\t\t /**\n\t\t * An integer `Number` that specifies the number of position iterations to perform each update.\n\t\t * The higher the value, the higher quality the simulation will be at the expense of performance.\n\t\t *\n\t\t * @property positionIterations\n\t\t * @type number\n\t\t * @default 6\n\t\t */\n\n\t\t /**\n\t\t * An integer `Number` that specifies the number of velocity iterations to perform each update.\n\t\t * The higher the value, the higher quality the simulation will be at the expense of performance.\n\t\t *\n\t\t * @property velocityIterations\n\t\t * @type number\n\t\t * @default 4\n\t\t */\n\n\t\t /**\n\t\t * An integer `Number` that specifies the number of constraint iterations to perform each update.\n\t\t * The higher the value, the higher quality the simulation will be at the expense of performance.\n\t\t * The default value of `2` is usually very adequate.\n\t\t *\n\t\t * @property constraintIterations\n\t\t * @type number\n\t\t * @default 2\n\t\t */\n\n\t\t /**\n\t\t * A flag that specifies whether the engine should allow sleeping via the `Matter.Sleeping` module.\n\t\t * Sleeping can improve stability and performance, but often at the expense of accuracy.\n\t\t *\n\t\t * @property enableSleeping\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\n\t\t /**\n\t\t * An `Object` containing properties regarding the timing systems of the engine. \n\t\t *\n\t\t * @property timing\n\t\t * @type object\n\t\t */\n\n\t\t /**\n\t\t * A `Number` that specifies the global scaling factor of time for all bodies.\n\t\t * A value of `0` freezes the simulation.\n\t\t * A value of `0.1` gives a slow-motion effect.\n\t\t * A value of `1.2` gives a speed-up effect.\n\t\t *\n\t\t * @property timing.timeScale\n\t\t * @type number\n\t\t * @default 1\n\t\t */\n\n\t\t /**\n\t\t * A `Number` that specifies the current simulation-time in milliseconds starting from `0`. \n\t\t * It is incremented on every `Engine.update` by the given `delta` argument. \n\t\t * \n\t\t * @property timing.timestamp\n\t\t * @type number\n\t\t * @default 0\n\t\t */\n\n\t\t /**\n\t\t * A `Number` that represents the total execution time elapsed during the last `Engine.update` in milliseconds.\n\t\t * It is updated by timing from the start of the last `Engine.update` call until it ends.\n\t\t *\n\t\t * This value will also include the total execution time of all event handlers directly or indirectly triggered by the engine update.\n\t\t * \n\t\t * @property timing.lastElapsed\n\t\t * @type number\n\t\t * @default 0\n\t\t */\n\n\t\t /**\n\t\t * A `Number` that represents the `delta` value used in the last engine update.\n\t\t * \n\t\t * @property timing.lastDelta\n\t\t * @type number\n\t\t * @default 0\n\t\t */\n\n\t\t /**\n\t\t * A `Matter.Detector` instance.\n\t\t *\n\t\t * @property detector\n\t\t * @type detector\n\t\t * @default a Matter.Detector instance\n\t\t */\n\n\t\t /**\n\t\t * A `Matter.Grid` instance.\n\t\t *\n\t\t * @deprecated replaced by `engine.detector`\n\t\t * @property grid\n\t\t * @type grid\n\t\t * @default a Matter.Grid instance\n\t\t */\n\n\t\t /**\n\t\t * Replaced by and now alias for `engine.grid`.\n\t\t *\n\t\t * @deprecated replaced by `engine.detector`\n\t\t * @property broadphase\n\t\t * @type grid\n\t\t * @default a Matter.Grid instance\n\t\t */\n\n\t\t /**\n\t\t * The root `Matter.Composite` instance that will contain all bodies, constraints and other composites to be simulated by this engine.\n\t\t *\n\t\t * @property world\n\t\t * @type composite\n\t\t * @default a Matter.Composite instance\n\t\t */\n\n\t\t /**\n\t\t * An object reserved for storing plugin-specific properties.\n\t\t *\n\t\t * @property plugin\n\t\t * @type {}\n\t\t */\n\n\t\t /**\n\t\t * An optional gravitational acceleration applied to all bodies in `engine.world` on every update.\n\t\t * \n\t\t * This models a [uniform gravitational field](https://en.wikipedia.org/wiki/Gravity_of_Earth), similar to near the surface of a planet. For gravity in other contexts, disable this and apply forces as needed.\n\t\t * \n\t\t * To disable set the `scale` component to `0`.\n\t\t * \n\t\t * This is split into three components for ease of use: \n\t\t * a normalised direction (`x` and `y`) and magnitude (`scale`).\n\t\t *\n\t\t * @property gravity\n\t\t * @type object\n\t\t */\n\n\t\t /**\n\t\t * The gravitational direction normal `x` component, to be multiplied by `gravity.scale`.\n\t\t * \n\t\t * @property gravity.x\n\t\t * @type object\n\t\t * @default 0\n\t\t */\n\n\t\t /**\n\t\t * The gravitational direction normal `y` component, to be multiplied by `gravity.scale`.\n\t\t *\n\t\t * @property gravity.y\n\t\t * @type object\n\t\t * @default 1\n\t\t */\n\n\t\t /**\n\t\t * The magnitude of the gravitational acceleration.\n\t\t * \n\t\t * @property gravity.scale\n\t\t * @type object\n\t\t * @default 0.001\n\t\t */\n\n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 18 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\n\t\t* The `Matter.Resolver` module contains methods for resolving collision pairs.\n\t\t*\n\t\t* @class Resolver\n\t\t*/\n\n\t\tvar Resolver = {};\n\n\t\tmodule.exports = Resolver;\n\n\t\tvar Vertices = __webpack_require__(3);\n\t\tvar Common = __webpack_require__(0);\n\t\tvar Bounds = __webpack_require__(1);\n\n\t\t(function() {\n\n\t\t Resolver._restingThresh = 2;\n\t\t Resolver._restingThreshTangent = Math.sqrt(6);\n\t\t Resolver._positionDampen = 0.9;\n\t\t Resolver._positionWarming = 0.8;\n\t\t Resolver._frictionNormalMultiplier = 5;\n\t\t Resolver._frictionMaxStatic = Number.MAX_VALUE;\n\n\t\t /**\n\t\t * Prepare pairs for position solving.\n\t\t * @method preSolvePosition\n\t\t * @param {pair[]} pairs\n\t\t */\n\t\t Resolver.preSolvePosition = function(pairs) {\n\t\t var i,\n\t\t pair,\n\t\t contactCount,\n\t\t pairsLength = pairs.length;\n\n\t\t // find total contacts on each body\n\t\t for (i = 0; i < pairsLength; i++) {\n\t\t pair = pairs[i];\n\t\t \n\t\t if (!pair.isActive)\n\t\t continue;\n\t\t \n\t\t contactCount = pair.contactCount;\n\t\t pair.collision.parentA.totalContacts += contactCount;\n\t\t pair.collision.parentB.totalContacts += contactCount;\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Find a solution for pair positions.\n\t\t * @method solvePosition\n\t\t * @param {pair[]} pairs\n\t\t * @param {number} delta\n\t\t * @param {number} [damping=1]\n\t\t */\n\t\t Resolver.solvePosition = function(pairs, delta, damping) {\n\t\t var i,\n\t\t pair,\n\t\t collision,\n\t\t bodyA,\n\t\t bodyB,\n\t\t normal,\n\t\t contactShare,\n\t\t positionImpulse,\n\t\t positionDampen = Resolver._positionDampen * (damping || 1),\n\t\t slopDampen = Common.clamp(delta / Common._baseDelta, 0, 1),\n\t\t pairsLength = pairs.length;\n\n\t\t // find impulses required to resolve penetration\n\t\t for (i = 0; i < pairsLength; i++) {\n\t\t pair = pairs[i];\n\t\t \n\t\t if (!pair.isActive || pair.isSensor)\n\t\t continue;\n\n\t\t collision = pair.collision;\n\t\t bodyA = collision.parentA;\n\t\t bodyB = collision.parentB;\n\t\t normal = collision.normal;\n\n\t\t // get current separation between body edges involved in collision\n\t\t pair.separation = \n\t\t collision.depth + normal.x * (bodyB.positionImpulse.x - bodyA.positionImpulse.x)\n\t\t + normal.y * (bodyB.positionImpulse.y - bodyA.positionImpulse.y);\n\t\t }\n\t\t \n\t\t for (i = 0; i < pairsLength; i++) {\n\t\t pair = pairs[i];\n\n\t\t if (!pair.isActive || pair.isSensor)\n\t\t continue;\n\t\t \n\t\t collision = pair.collision;\n\t\t bodyA = collision.parentA;\n\t\t bodyB = collision.parentB;\n\t\t normal = collision.normal;\n\t\t positionImpulse = pair.separation - pair.slop * slopDampen;\n\n\t\t if (bodyA.isStatic || bodyB.isStatic)\n\t\t positionImpulse *= 2;\n\t\t \n\t\t if (!(bodyA.isStatic || bodyA.isSleeping)) {\n\t\t contactShare = positionDampen / bodyA.totalContacts;\n\t\t bodyA.positionImpulse.x += normal.x * positionImpulse * contactShare;\n\t\t bodyA.positionImpulse.y += normal.y * positionImpulse * contactShare;\n\t\t }\n\n\t\t if (!(bodyB.isStatic || bodyB.isSleeping)) {\n\t\t contactShare = positionDampen / bodyB.totalContacts;\n\t\t bodyB.positionImpulse.x -= normal.x * positionImpulse * contactShare;\n\t\t bodyB.positionImpulse.y -= normal.y * positionImpulse * contactShare;\n\t\t }\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Apply position resolution.\n\t\t * @method postSolvePosition\n\t\t * @param {body[]} bodies\n\t\t */\n\t\t Resolver.postSolvePosition = function(bodies) {\n\t\t var positionWarming = Resolver._positionWarming,\n\t\t bodiesLength = bodies.length,\n\t\t verticesTranslate = Vertices.translate,\n\t\t boundsUpdate = Bounds.update;\n\n\t\t for (var i = 0; i < bodiesLength; i++) {\n\t\t var body = bodies[i],\n\t\t positionImpulse = body.positionImpulse,\n\t\t positionImpulseX = positionImpulse.x,\n\t\t positionImpulseY = positionImpulse.y,\n\t\t velocity = body.velocity;\n\n\t\t // reset contact count\n\t\t body.totalContacts = 0;\n\n\t\t if (positionImpulseX !== 0 || positionImpulseY !== 0) {\n\t\t // update body geometry\n\t\t for (var j = 0; j < body.parts.length; j++) {\n\t\t var part = body.parts[j];\n\t\t verticesTranslate(part.vertices, positionImpulse);\n\t\t boundsUpdate(part.bounds, part.vertices, velocity);\n\t\t part.position.x += positionImpulseX;\n\t\t part.position.y += positionImpulseY;\n\t\t }\n\n\t\t // move the body without changing velocity\n\t\t body.positionPrev.x += positionImpulseX;\n\t\t body.positionPrev.y += positionImpulseY;\n\n\t\t if (positionImpulseX * velocity.x + positionImpulseY * velocity.y < 0) {\n\t\t // reset cached impulse if the body has velocity along it\n\t\t positionImpulse.x = 0;\n\t\t positionImpulse.y = 0;\n\t\t } else {\n\t\t // warm the next iteration\n\t\t positionImpulse.x *= positionWarming;\n\t\t positionImpulse.y *= positionWarming;\n\t\t }\n\t\t }\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Prepare pairs for velocity solving.\n\t\t * @method preSolveVelocity\n\t\t * @param {pair[]} pairs\n\t\t */\n\t\t Resolver.preSolveVelocity = function(pairs) {\n\t\t var pairsLength = pairs.length,\n\t\t i,\n\t\t j;\n\t\t \n\t\t for (i = 0; i < pairsLength; i++) {\n\t\t var pair = pairs[i];\n\t\t \n\t\t if (!pair.isActive || pair.isSensor)\n\t\t continue;\n\t\t \n\t\t var contacts = pair.contacts,\n\t\t contactCount = pair.contactCount,\n\t\t collision = pair.collision,\n\t\t bodyA = collision.parentA,\n\t\t bodyB = collision.parentB,\n\t\t normal = collision.normal,\n\t\t tangent = collision.tangent;\n\t\t \n\t\t // resolve each contact\n\t\t for (j = 0; j < contactCount; j++) {\n\t\t var contact = contacts[j],\n\t\t contactVertex = contact.vertex,\n\t\t normalImpulse = contact.normalImpulse,\n\t\t tangentImpulse = contact.tangentImpulse;\n\t\t \n\t\t if (normalImpulse !== 0 || tangentImpulse !== 0) {\n\t\t // total impulse from contact\n\t\t var impulseX = normal.x * normalImpulse + tangent.x * tangentImpulse,\n\t\t impulseY = normal.y * normalImpulse + tangent.y * tangentImpulse;\n\t\t \n\t\t // apply impulse from contact\n\t\t if (!(bodyA.isStatic || bodyA.isSleeping)) {\n\t\t bodyA.positionPrev.x += impulseX * bodyA.inverseMass;\n\t\t bodyA.positionPrev.y += impulseY * bodyA.inverseMass;\n\t\t bodyA.anglePrev += bodyA.inverseInertia * (\n\t\t (contactVertex.x - bodyA.position.x) * impulseY\n\t\t - (contactVertex.y - bodyA.position.y) * impulseX\n\t\t );\n\t\t }\n\t\t \n\t\t if (!(bodyB.isStatic || bodyB.isSleeping)) {\n\t\t bodyB.positionPrev.x -= impulseX * bodyB.inverseMass;\n\t\t bodyB.positionPrev.y -= impulseY * bodyB.inverseMass;\n\t\t bodyB.anglePrev -= bodyB.inverseInertia * (\n\t\t (contactVertex.x - bodyB.position.x) * impulseY \n\t\t - (contactVertex.y - bodyB.position.y) * impulseX\n\t\t );\n\t\t }\n\t\t }\n\t\t }\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Find a solution for pair velocities.\n\t\t * @method solveVelocity\n\t\t * @param {pair[]} pairs\n\t\t * @param {number} delta\n\t\t */\n\t\t Resolver.solveVelocity = function(pairs, delta) {\n\t\t var timeScale = delta / Common._baseDelta,\n\t\t timeScaleSquared = timeScale * timeScale,\n\t\t timeScaleCubed = timeScaleSquared * timeScale,\n\t\t restingThresh = -Resolver._restingThresh * timeScale,\n\t\t restingThreshTangent = Resolver._restingThreshTangent,\n\t\t frictionNormalMultiplier = Resolver._frictionNormalMultiplier * timeScale,\n\t\t frictionMaxStatic = Resolver._frictionMaxStatic,\n\t\t pairsLength = pairs.length,\n\t\t tangentImpulse,\n\t\t maxFriction,\n\t\t i,\n\t\t j;\n\n\t\t for (i = 0; i < pairsLength; i++) {\n\t\t var pair = pairs[i];\n\t\t \n\t\t if (!pair.isActive || pair.isSensor)\n\t\t continue;\n\t\t \n\t\t var collision = pair.collision,\n\t\t bodyA = collision.parentA,\n\t\t bodyB = collision.parentB,\n\t\t normalX = collision.normal.x,\n\t\t normalY = collision.normal.y,\n\t\t tangentX = collision.tangent.x,\n\t\t tangentY = collision.tangent.y,\n\t\t inverseMassTotal = pair.inverseMass,\n\t\t friction = pair.friction * pair.frictionStatic * frictionNormalMultiplier,\n\t\t contacts = pair.contacts,\n\t\t contactCount = pair.contactCount,\n\t\t contactShare = 1 / contactCount;\n\n\t\t // get body velocities\n\t\t var bodyAVelocityX = bodyA.position.x - bodyA.positionPrev.x,\n\t\t bodyAVelocityY = bodyA.position.y - bodyA.positionPrev.y,\n\t\t bodyAAngularVelocity = bodyA.angle - bodyA.anglePrev,\n\t\t bodyBVelocityX = bodyB.position.x - bodyB.positionPrev.x,\n\t\t bodyBVelocityY = bodyB.position.y - bodyB.positionPrev.y,\n\t\t bodyBAngularVelocity = bodyB.angle - bodyB.anglePrev;\n\n\t\t // resolve each contact\n\t\t for (j = 0; j < contactCount; j++) {\n\t\t var contact = contacts[j],\n\t\t contactVertex = contact.vertex;\n\n\t\t var offsetAX = contactVertex.x - bodyA.position.x,\n\t\t offsetAY = contactVertex.y - bodyA.position.y,\n\t\t offsetBX = contactVertex.x - bodyB.position.x,\n\t\t offsetBY = contactVertex.y - bodyB.position.y;\n\t\t \n\t\t var velocityPointAX = bodyAVelocityX - offsetAY * bodyAAngularVelocity,\n\t\t velocityPointAY = bodyAVelocityY + offsetAX * bodyAAngularVelocity,\n\t\t velocityPointBX = bodyBVelocityX - offsetBY * bodyBAngularVelocity,\n\t\t velocityPointBY = bodyBVelocityY + offsetBX * bodyBAngularVelocity;\n\n\t\t var relativeVelocityX = velocityPointAX - velocityPointBX,\n\t\t relativeVelocityY = velocityPointAY - velocityPointBY;\n\n\t\t var normalVelocity = normalX * relativeVelocityX + normalY * relativeVelocityY,\n\t\t tangentVelocity = tangentX * relativeVelocityX + tangentY * relativeVelocityY;\n\n\t\t // coulomb friction\n\t\t var normalOverlap = pair.separation + normalVelocity;\n\t\t var normalForce = Math.min(normalOverlap, 1);\n\t\t normalForce = normalOverlap < 0 ? 0 : normalForce;\n\n\t\t var frictionLimit = normalForce * friction;\n\n\t\t if (tangentVelocity < -frictionLimit || tangentVelocity > frictionLimit) {\n\t\t maxFriction = (tangentVelocity > 0 ? tangentVelocity : -tangentVelocity);\n\t\t tangentImpulse = pair.friction * (tangentVelocity > 0 ? 1 : -1) * timeScaleCubed;\n\t\t \n\t\t if (tangentImpulse < -maxFriction) {\n\t\t tangentImpulse = -maxFriction;\n\t\t } else if (tangentImpulse > maxFriction) {\n\t\t tangentImpulse = maxFriction;\n\t\t }\n\t\t } else {\n\t\t tangentImpulse = tangentVelocity;\n\t\t maxFriction = frictionMaxStatic;\n\t\t }\n\n\t\t // account for mass, inertia and contact offset\n\t\t var oAcN = offsetAX * normalY - offsetAY * normalX,\n\t\t oBcN = offsetBX * normalY - offsetBY * normalX,\n\t\t share = contactShare / (inverseMassTotal + bodyA.inverseInertia * oAcN * oAcN + bodyB.inverseInertia * oBcN * oBcN);\n\n\t\t // raw impulses\n\t\t var normalImpulse = (1 + pair.restitution) * normalVelocity * share;\n\t\t tangentImpulse *= share;\n\n\t\t // handle high velocity and resting collisions separately\n\t\t if (normalVelocity < restingThresh) {\n\t\t // high normal velocity so clear cached contact normal impulse\n\t\t contact.normalImpulse = 0;\n\t\t } else {\n\t\t // solve resting collision constraints using Erin Catto's method (GDC08)\n\t\t // impulse constraint tends to 0\n\t\t var contactNormalImpulse = contact.normalImpulse;\n\t\t contact.normalImpulse += normalImpulse;\n\t\t if (contact.normalImpulse > 0) contact.normalImpulse = 0;\n\t\t normalImpulse = contact.normalImpulse - contactNormalImpulse;\n\t\t }\n\n\t\t // handle high velocity and resting collisions separately\n\t\t if (tangentVelocity < -restingThreshTangent || tangentVelocity > restingThreshTangent) {\n\t\t // high tangent velocity so clear cached contact tangent impulse\n\t\t contact.tangentImpulse = 0;\n\t\t } else {\n\t\t // solve resting collision constraints using Erin Catto's method (GDC08)\n\t\t // tangent impulse tends to -tangentSpeed or +tangentSpeed\n\t\t var contactTangentImpulse = contact.tangentImpulse;\n\t\t contact.tangentImpulse += tangentImpulse;\n\t\t if (contact.tangentImpulse < -maxFriction) contact.tangentImpulse = -maxFriction;\n\t\t if (contact.tangentImpulse > maxFriction) contact.tangentImpulse = maxFriction;\n\t\t tangentImpulse = contact.tangentImpulse - contactTangentImpulse;\n\t\t }\n\n\t\t // total impulse from contact\n\t\t var impulseX = normalX * normalImpulse + tangentX * tangentImpulse,\n\t\t impulseY = normalY * normalImpulse + tangentY * tangentImpulse;\n\t\t \n\t\t // apply impulse from contact\n\t\t if (!(bodyA.isStatic || bodyA.isSleeping)) {\n\t\t bodyA.positionPrev.x += impulseX * bodyA.inverseMass;\n\t\t bodyA.positionPrev.y += impulseY * bodyA.inverseMass;\n\t\t bodyA.anglePrev += (offsetAX * impulseY - offsetAY * impulseX) * bodyA.inverseInertia;\n\t\t }\n\n\t\t if (!(bodyB.isStatic || bodyB.isSleeping)) {\n\t\t bodyB.positionPrev.x -= impulseX * bodyB.inverseMass;\n\t\t bodyB.positionPrev.y -= impulseY * bodyB.inverseMass;\n\t\t bodyB.anglePrev -= (offsetBX * impulseY - offsetBY * impulseX) * bodyB.inverseInertia;\n\t\t }\n\t\t }\n\t\t }\n\t\t };\n\n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 19 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\n\t\t* The `Matter.Pairs` module contains methods for creating and manipulating collision pair sets.\n\t\t*\n\t\t* @class Pairs\n\t\t*/\n\n\t\tvar Pairs = {};\n\n\t\tmodule.exports = Pairs;\n\n\t\tvar Pair = __webpack_require__(9);\n\t\tvar Common = __webpack_require__(0);\n\n\t\t(function() {\n\n\t\t /**\n\t\t * Creates a new pairs structure.\n\t\t * @method create\n\t\t * @param {object} options\n\t\t * @return {pairs} A new pairs structure\n\t\t */\n\t\t Pairs.create = function(options) {\n\t\t return Common.extend({ \n\t\t table: {},\n\t\t list: [],\n\t\t collisionStart: [],\n\t\t collisionActive: [],\n\t\t collisionEnd: []\n\t\t }, options);\n\t\t };\n\n\t\t /**\n\t\t * Updates pairs given a list of collisions.\n\t\t * @method update\n\t\t * @param {object} pairs\n\t\t * @param {collision[]} collisions\n\t\t * @param {number} timestamp\n\t\t */\n\t\t Pairs.update = function(pairs, collisions, timestamp) {\n\t\t var pairUpdate = Pair.update,\n\t\t pairCreate = Pair.create,\n\t\t pairSetActive = Pair.setActive,\n\t\t pairsTable = pairs.table,\n\t\t pairsList = pairs.list,\n\t\t pairsListLength = pairsList.length,\n\t\t pairsListIndex = pairsListLength,\n\t\t collisionStart = pairs.collisionStart,\n\t\t collisionEnd = pairs.collisionEnd,\n\t\t collisionActive = pairs.collisionActive,\n\t\t collisionsLength = collisions.length,\n\t\t collisionStartIndex = 0,\n\t\t collisionEndIndex = 0,\n\t\t collisionActiveIndex = 0,\n\t\t collision,\n\t\t pair,\n\t\t i;\n\n\t\t for (i = 0; i < collisionsLength; i++) {\n\t\t collision = collisions[i];\n\t\t pair = collision.pair;\n\n\t\t if (pair) {\n\t\t // pair already exists (but may or may not be active)\n\t\t if (pair.isActive) {\n\t\t // pair exists and is active\n\t\t collisionActive[collisionActiveIndex++] = pair;\n\t\t }\n\n\t\t // update the pair\n\t\t pairUpdate(pair, collision, timestamp);\n\t\t } else {\n\t\t // pair did not exist, create a new pair\n\t\t pair = pairCreate(collision, timestamp);\n\t\t pairsTable[pair.id] = pair;\n\n\t\t // add the new pair\n\t\t collisionStart[collisionStartIndex++] = pair;\n\t\t pairsList[pairsListIndex++] = pair;\n\t\t }\n\t\t }\n\n\t\t // find pairs that are no longer active\n\t\t pairsListIndex = 0;\n\t\t pairsListLength = pairsList.length;\n\n\t\t for (i = 0; i < pairsListLength; i++) {\n\t\t pair = pairsList[i];\n\t\t \n\t\t // pair is active if updated this timestep\n\t\t if (pair.timeUpdated >= timestamp) {\n\t\t // keep active pairs\n\t\t pairsList[pairsListIndex++] = pair;\n\t\t } else {\n\t\t pairSetActive(pair, false, timestamp);\n\n\t\t // keep inactive pairs if both bodies may be sleeping\n\t\t if (pair.collision.bodyA.sleepCounter > 0 && pair.collision.bodyB.sleepCounter > 0) {\n\t\t pairsList[pairsListIndex++] = pair;\n\t\t } else {\n\t\t // remove inactive pairs if either body awake\n\t\t collisionEnd[collisionEndIndex++] = pair;\n\t\t delete pairsTable[pair.id];\n\t\t }\n\t\t }\n\t\t }\n\n\t\t // update array lengths if changed\n\t\t if (pairsList.length !== pairsListIndex) {\n\t\t pairsList.length = pairsListIndex;\n\t\t }\n\n\t\t if (collisionStart.length !== collisionStartIndex) {\n\t\t collisionStart.length = collisionStartIndex;\n\t\t }\n\n\t\t if (collisionEnd.length !== collisionEndIndex) {\n\t\t collisionEnd.length = collisionEndIndex;\n\t\t }\n\n\t\t if (collisionActive.length !== collisionActiveIndex) {\n\t\t collisionActive.length = collisionActiveIndex;\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Clears the given pairs structure.\n\t\t * @method clear\n\t\t * @param {pairs} pairs\n\t\t * @return {pairs} pairs\n\t\t */\n\t\t Pairs.clear = function(pairs) {\n\t\t pairs.table = {};\n\t\t pairs.list.length = 0;\n\t\t pairs.collisionStart.length = 0;\n\t\t pairs.collisionActive.length = 0;\n\t\t pairs.collisionEnd.length = 0;\n\t\t return pairs;\n\t\t };\n\n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 20 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\tvar Matter = module.exports = __webpack_require__(21);\r\n\r\n\t\tMatter.Axes = __webpack_require__(11);\r\n\t\tMatter.Bodies = __webpack_require__(12);\r\n\t\tMatter.Body = __webpack_require__(4);\r\n\t\tMatter.Bounds = __webpack_require__(1);\r\n\t\tMatter.Collision = __webpack_require__(8);\r\n\t\tMatter.Common = __webpack_require__(0);\r\n\t\tMatter.Composite = __webpack_require__(6);\r\n\t\tMatter.Composites = __webpack_require__(22);\r\n\t\tMatter.Constraint = __webpack_require__(10);\r\n\t\tMatter.Contact = __webpack_require__(16);\r\n\t\tMatter.Detector = __webpack_require__(13);\r\n\t\tMatter.Engine = __webpack_require__(17);\r\n\t\tMatter.Events = __webpack_require__(5);\r\n\t\tMatter.Grid = __webpack_require__(23);\r\n\t\tMatter.Mouse = __webpack_require__(14);\r\n\t\tMatter.MouseConstraint = __webpack_require__(24);\r\n\t\tMatter.Pair = __webpack_require__(9);\r\n\t\tMatter.Pairs = __webpack_require__(19);\r\n\t\tMatter.Plugin = __webpack_require__(15);\r\n\t\tMatter.Query = __webpack_require__(25);\r\n\t\tMatter.Render = __webpack_require__(26);\r\n\t\tMatter.Resolver = __webpack_require__(18);\r\n\t\tMatter.Runner = __webpack_require__(27);\r\n\t\tMatter.SAT = __webpack_require__(28);\r\n\t\tMatter.Sleeping = __webpack_require__(7);\r\n\t\tMatter.Svg = __webpack_require__(29);\r\n\t\tMatter.Vector = __webpack_require__(2);\r\n\t\tMatter.Vertices = __webpack_require__(3);\r\n\t\tMatter.World = __webpack_require__(30);\r\n\r\n\t\t// temporary back compatibility\r\n\t\tMatter.Engine.run = Matter.Runner.run;\r\n\t\tMatter.Common.deprecated(Matter.Engine, 'run', 'Engine.run ➤ use Matter.Runner.run(engine) instead');\r\n\n\n\t\t/***/ }),\n\t\t/* 21 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\r\n\t\t* The `Matter` module is the top level namespace. It also includes a function for installing plugins on top of the library.\r\n\t\t*\r\n\t\t* @class Matter\r\n\t\t*/\r\n\r\n\t\tvar Matter = {};\r\n\r\n\t\tmodule.exports = Matter;\r\n\r\n\t\tvar Plugin = __webpack_require__(15);\r\n\t\tvar Common = __webpack_require__(0);\r\n\r\n\t\t(function() {\r\n\r\n\t\t /**\r\n\t\t * The library name.\r\n\t\t * @property name\r\n\t\t * @readOnly\r\n\t\t * @type {String}\r\n\t\t */\r\n\t\t Matter.name = 'matter-js';\r\n\r\n\t\t /**\r\n\t\t * The library version.\r\n\t\t * @property version\r\n\t\t * @readOnly\r\n\t\t * @type {String}\r\n\t\t */\r\n\t\t Matter.version = \"0.20.0\" ;\r\n\r\n\t\t /**\r\n\t\t * A list of plugin dependencies to be installed. These are normally set and installed through `Matter.use`.\r\n\t\t * Alternatively you may set `Matter.uses` manually and install them by calling `Plugin.use(Matter)`.\r\n\t\t * @property uses\r\n\t\t * @type {Array}\r\n\t\t */\r\n\t\t Matter.uses = [];\r\n\r\n\t\t /**\r\n\t\t * The plugins that have been installed through `Matter.Plugin.install`. Read only.\r\n\t\t * @property used\r\n\t\t * @readOnly\r\n\t\t * @type {Array}\r\n\t\t */\r\n\t\t Matter.used = [];\r\n\r\n\t\t /**\r\n\t\t * Installs the given plugins on the `Matter` namespace.\r\n\t\t * This is a short-hand for `Plugin.use`, see it for more information.\r\n\t\t * Call this function once at the start of your code, with all of the plugins you wish to install as arguments.\r\n\t\t * Avoid calling this function multiple times unless you intend to manually control installation order.\r\n\t\t * @method use\r\n\t\t * @param ...plugin {Function} The plugin(s) to install on `base` (multi-argument).\r\n\t\t */\r\n\t\t Matter.use = function() {\r\n\t\t Plugin.use(Matter, Array.prototype.slice.call(arguments));\r\n\t\t };\r\n\r\n\t\t /**\r\n\t\t * Chains a function to excute before the original function on the given `path` relative to `Matter`.\r\n\t\t * See also docs for `Common.chain`.\r\n\t\t * @method before\r\n\t\t * @param {string} path The path relative to `Matter`\r\n\t\t * @param {function} func The function to chain before the original\r\n\t\t * @return {function} The chained function that replaced the original\r\n\t\t */\r\n\t\t Matter.before = function(path, func) {\r\n\t\t path = path.replace(/^Matter./, '');\r\n\t\t return Common.chainPathBefore(Matter, path, func);\r\n\t\t };\r\n\r\n\t\t /**\r\n\t\t * Chains a function to excute after the original function on the given `path` relative to `Matter`.\r\n\t\t * See also docs for `Common.chain`.\r\n\t\t * @method after\r\n\t\t * @param {string} path The path relative to `Matter`\r\n\t\t * @param {function} func The function to chain after the original\r\n\t\t * @return {function} The chained function that replaced the original\r\n\t\t */\r\n\t\t Matter.after = function(path, func) {\r\n\t\t path = path.replace(/^Matter./, '');\r\n\t\t return Common.chainPathAfter(Matter, path, func);\r\n\t\t };\r\n\r\n\t\t})();\r\n\n\n\t\t/***/ }),\n\t\t/* 22 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\n\t\t* The `Matter.Composites` module contains factory methods for creating composite bodies\n\t\t* with commonly used configurations (such as stacks and chains).\n\t\t*\n\t\t* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n\t\t*\n\t\t* @class Composites\n\t\t*/\n\n\t\tvar Composites = {};\n\n\t\tmodule.exports = Composites;\n\n\t\tvar Composite = __webpack_require__(6);\n\t\tvar Constraint = __webpack_require__(10);\n\t\tvar Common = __webpack_require__(0);\n\t\tvar Body = __webpack_require__(4);\n\t\tvar Bodies = __webpack_require__(12);\n\t\tvar deprecated = Common.deprecated;\n\n\t\t(function() {\n\n\t\t /**\n\t\t * Create a new composite containing bodies created in the callback in a grid arrangement.\n\t\t * This function uses the body's bounds to prevent overlaps.\n\t\t * @method stack\n\t\t * @param {number} x Starting position in X.\n\t\t * @param {number} y Starting position in Y.\n\t\t * @param {number} columns\n\t\t * @param {number} rows\n\t\t * @param {number} columnGap\n\t\t * @param {number} rowGap\n\t\t * @param {function} callback\n\t\t * @return {composite} A new composite containing objects created in the callback\n\t\t */\n\t\t Composites.stack = function(x, y, columns, rows, columnGap, rowGap, callback) {\n\t\t var stack = Composite.create({ label: 'Stack' }),\n\t\t currentX = x,\n\t\t currentY = y,\n\t\t lastBody,\n\t\t i = 0;\n\n\t\t for (var row = 0; row < rows; row++) {\n\t\t var maxHeight = 0;\n\t\t \n\t\t for (var column = 0; column < columns; column++) {\n\t\t var body = callback(currentX, currentY, column, row, lastBody, i);\n\t\t \n\t\t if (body) {\n\t\t var bodyHeight = body.bounds.max.y - body.bounds.min.y,\n\t\t bodyWidth = body.bounds.max.x - body.bounds.min.x; \n\n\t\t if (bodyHeight > maxHeight)\n\t\t maxHeight = bodyHeight;\n\t\t \n\t\t Body.translate(body, { x: bodyWidth * 0.5, y: bodyHeight * 0.5 });\n\n\t\t currentX = body.bounds.max.x + columnGap;\n\n\t\t Composite.addBody(stack, body);\n\t\t \n\t\t lastBody = body;\n\t\t i += 1;\n\t\t } else {\n\t\t currentX += columnGap;\n\t\t }\n\t\t }\n\t\t \n\t\t currentY += maxHeight + rowGap;\n\t\t currentX = x;\n\t\t }\n\n\t\t return stack;\n\t\t };\n\t\t \n\t\t /**\n\t\t * Chains all bodies in the given composite together using constraints.\n\t\t * @method chain\n\t\t * @param {composite} composite\n\t\t * @param {number} xOffsetA\n\t\t * @param {number} yOffsetA\n\t\t * @param {number} xOffsetB\n\t\t * @param {number} yOffsetB\n\t\t * @param {object} options\n\t\t * @return {composite} A new composite containing objects chained together with constraints\n\t\t */\n\t\t Composites.chain = function(composite, xOffsetA, yOffsetA, xOffsetB, yOffsetB, options) {\n\t\t var bodies = composite.bodies;\n\t\t \n\t\t for (var i = 1; i < bodies.length; i++) {\n\t\t var bodyA = bodies[i - 1],\n\t\t bodyB = bodies[i],\n\t\t bodyAHeight = bodyA.bounds.max.y - bodyA.bounds.min.y,\n\t\t bodyAWidth = bodyA.bounds.max.x - bodyA.bounds.min.x, \n\t\t bodyBHeight = bodyB.bounds.max.y - bodyB.bounds.min.y,\n\t\t bodyBWidth = bodyB.bounds.max.x - bodyB.bounds.min.x;\n\t\t \n\t\t var defaults = {\n\t\t bodyA: bodyA,\n\t\t pointA: { x: bodyAWidth * xOffsetA, y: bodyAHeight * yOffsetA },\n\t\t bodyB: bodyB,\n\t\t pointB: { x: bodyBWidth * xOffsetB, y: bodyBHeight * yOffsetB }\n\t\t };\n\t\t \n\t\t var constraint = Common.extend(defaults, options);\n\t\t \n\t\t Composite.addConstraint(composite, Constraint.create(constraint));\n\t\t }\n\n\t\t composite.label += ' Chain';\n\t\t \n\t\t return composite;\n\t\t };\n\n\t\t /**\n\t\t * Connects bodies in the composite with constraints in a grid pattern, with optional cross braces.\n\t\t * @method mesh\n\t\t * @param {composite} composite\n\t\t * @param {number} columns\n\t\t * @param {number} rows\n\t\t * @param {boolean} crossBrace\n\t\t * @param {object} options\n\t\t * @return {composite} The composite containing objects meshed together with constraints\n\t\t */\n\t\t Composites.mesh = function(composite, columns, rows, crossBrace, options) {\n\t\t var bodies = composite.bodies,\n\t\t row,\n\t\t col,\n\t\t bodyA,\n\t\t bodyB,\n\t\t bodyC;\n\t\t \n\t\t for (row = 0; row < rows; row++) {\n\t\t for (col = 1; col < columns; col++) {\n\t\t bodyA = bodies[(col - 1) + (row * columns)];\n\t\t bodyB = bodies[col + (row * columns)];\n\t\t Composite.addConstraint(composite, Constraint.create(Common.extend({ bodyA: bodyA, bodyB: bodyB }, options)));\n\t\t }\n\n\t\t if (row > 0) {\n\t\t for (col = 0; col < columns; col++) {\n\t\t bodyA = bodies[col + ((row - 1) * columns)];\n\t\t bodyB = bodies[col + (row * columns)];\n\t\t Composite.addConstraint(composite, Constraint.create(Common.extend({ bodyA: bodyA, bodyB: bodyB }, options)));\n\n\t\t if (crossBrace && col > 0) {\n\t\t bodyC = bodies[(col - 1) + ((row - 1) * columns)];\n\t\t Composite.addConstraint(composite, Constraint.create(Common.extend({ bodyA: bodyC, bodyB: bodyB }, options)));\n\t\t }\n\n\t\t if (crossBrace && col < columns - 1) {\n\t\t bodyC = bodies[(col + 1) + ((row - 1) * columns)];\n\t\t Composite.addConstraint(composite, Constraint.create(Common.extend({ bodyA: bodyC, bodyB: bodyB }, options)));\n\t\t }\n\t\t }\n\t\t }\n\t\t }\n\n\t\t composite.label += ' Mesh';\n\t\t \n\t\t return composite;\n\t\t };\n\t\t \n\t\t /**\n\t\t * Create a new composite containing bodies created in the callback in a pyramid arrangement.\n\t\t * This function uses the body's bounds to prevent overlaps.\n\t\t * @method pyramid\n\t\t * @param {number} x Starting position in X.\n\t\t * @param {number} y Starting position in Y.\n\t\t * @param {number} columns\n\t\t * @param {number} rows\n\t\t * @param {number} columnGap\n\t\t * @param {number} rowGap\n\t\t * @param {function} callback\n\t\t * @return {composite} A new composite containing objects created in the callback\n\t\t */\n\t\t Composites.pyramid = function(x, y, columns, rows, columnGap, rowGap, callback) {\n\t\t return Composites.stack(x, y, columns, rows, columnGap, rowGap, function(stackX, stackY, column, row, lastBody, i) {\n\t\t var actualRows = Math.min(rows, Math.ceil(columns / 2)),\n\t\t lastBodyWidth = lastBody ? lastBody.bounds.max.x - lastBody.bounds.min.x : 0;\n\t\t \n\t\t if (row > actualRows)\n\t\t return;\n\t\t \n\t\t // reverse row order\n\t\t row = actualRows - row;\n\t\t \n\t\t var start = row,\n\t\t end = columns - 1 - row;\n\n\t\t if (column < start || column > end)\n\t\t return;\n\t\t \n\t\t // retroactively fix the first body's position, since width was unknown\n\t\t if (i === 1) {\n\t\t Body.translate(lastBody, { x: (column + (columns % 2 === 1 ? 1 : -1)) * lastBodyWidth, y: 0 });\n\t\t }\n\n\t\t var xOffset = lastBody ? column * lastBodyWidth : 0;\n\t\t \n\t\t return callback(x + xOffset + column * columnGap, stackY, column, row, lastBody, i);\n\t\t });\n\t\t };\n\n\t\t /**\n\t\t * This has now moved to the [newtonsCradle example](https://github.com/liabru/matter-js/blob/master/examples/newtonsCradle.js), follow that instead as this function is deprecated here.\n\t\t * @deprecated moved to newtonsCradle example\n\t\t * @method newtonsCradle\n\t\t * @param {number} x Starting position in X.\n\t\t * @param {number} y Starting position in Y.\n\t\t * @param {number} number\n\t\t * @param {number} size\n\t\t * @param {number} length\n\t\t * @return {composite} A new composite newtonsCradle body\n\t\t */\n\t\t Composites.newtonsCradle = function(x, y, number, size, length) {\n\t\t var newtonsCradle = Composite.create({ label: 'Newtons Cradle' });\n\n\t\t for (var i = 0; i < number; i++) {\n\t\t var separation = 1.9,\n\t\t circle = Bodies.circle(x + i * (size * separation), y + length, size, \n\t\t { inertia: Infinity, restitution: 1, friction: 0, frictionAir: 0.0001, slop: 1 }),\n\t\t constraint = Constraint.create({ pointA: { x: x + i * (size * separation), y: y }, bodyB: circle });\n\n\t\t Composite.addBody(newtonsCradle, circle);\n\t\t Composite.addConstraint(newtonsCradle, constraint);\n\t\t }\n\n\t\t return newtonsCradle;\n\t\t };\n\n\t\t deprecated(Composites, 'newtonsCradle', 'Composites.newtonsCradle ➤ moved to newtonsCradle example');\n\t\t \n\t\t /**\n\t\t * This has now moved to the [car example](https://github.com/liabru/matter-js/blob/master/examples/car.js), follow that instead as this function is deprecated here.\n\t\t * @deprecated moved to car example\n\t\t * @method car\n\t\t * @param {number} x Starting position in X.\n\t\t * @param {number} y Starting position in Y.\n\t\t * @param {number} width\n\t\t * @param {number} height\n\t\t * @param {number} wheelSize\n\t\t * @return {composite} A new composite car body\n\t\t */\n\t\t Composites.car = function(x, y, width, height, wheelSize) {\n\t\t var group = Body.nextGroup(true),\n\t\t wheelBase = 20,\n\t\t wheelAOffset = -width * 0.5 + wheelBase,\n\t\t wheelBOffset = width * 0.5 - wheelBase,\n\t\t wheelYOffset = 0;\n\t\t \n\t\t var car = Composite.create({ label: 'Car' }),\n\t\t body = Bodies.rectangle(x, y, width, height, { \n\t\t collisionFilter: {\n\t\t group: group\n\t\t },\n\t\t chamfer: {\n\t\t radius: height * 0.5\n\t\t },\n\t\t density: 0.0002\n\t\t });\n\t\t \n\t\t var wheelA = Bodies.circle(x + wheelAOffset, y + wheelYOffset, wheelSize, { \n\t\t collisionFilter: {\n\t\t group: group\n\t\t },\n\t\t friction: 0.8\n\t\t });\n\t\t \n\t\t var wheelB = Bodies.circle(x + wheelBOffset, y + wheelYOffset, wheelSize, { \n\t\t collisionFilter: {\n\t\t group: group\n\t\t },\n\t\t friction: 0.8\n\t\t });\n\t\t \n\t\t var axelA = Constraint.create({\n\t\t bodyB: body,\n\t\t pointB: { x: wheelAOffset, y: wheelYOffset },\n\t\t bodyA: wheelA,\n\t\t stiffness: 1,\n\t\t length: 0\n\t\t });\n\t\t \n\t\t var axelB = Constraint.create({\n\t\t bodyB: body,\n\t\t pointB: { x: wheelBOffset, y: wheelYOffset },\n\t\t bodyA: wheelB,\n\t\t stiffness: 1,\n\t\t length: 0\n\t\t });\n\t\t \n\t\t Composite.addBody(car, body);\n\t\t Composite.addBody(car, wheelA);\n\t\t Composite.addBody(car, wheelB);\n\t\t Composite.addConstraint(car, axelA);\n\t\t Composite.addConstraint(car, axelB);\n\n\t\t return car;\n\t\t };\n\n\t\t deprecated(Composites, 'car', 'Composites.car ➤ moved to car example');\n\n\t\t /**\n\t\t * This has now moved to the [softBody example](https://github.com/liabru/matter-js/blob/master/examples/softBody.js)\n\t\t * and the [cloth example](https://github.com/liabru/matter-js/blob/master/examples/cloth.js), follow those instead as this function is deprecated here.\n\t\t * @deprecated moved to softBody and cloth examples\n\t\t * @method softBody\n\t\t * @param {number} x Starting position in X.\n\t\t * @param {number} y Starting position in Y.\n\t\t * @param {number} columns\n\t\t * @param {number} rows\n\t\t * @param {number} columnGap\n\t\t * @param {number} rowGap\n\t\t * @param {boolean} crossBrace\n\t\t * @param {number} particleRadius\n\t\t * @param {} particleOptions\n\t\t * @param {} constraintOptions\n\t\t * @return {composite} A new composite softBody\n\t\t */\n\t\t Composites.softBody = function(x, y, columns, rows, columnGap, rowGap, crossBrace, particleRadius, particleOptions, constraintOptions) {\n\t\t particleOptions = Common.extend({ inertia: Infinity }, particleOptions);\n\t\t constraintOptions = Common.extend({ stiffness: 0.2, render: { type: 'line', anchors: false } }, constraintOptions);\n\n\t\t var softBody = Composites.stack(x, y, columns, rows, columnGap, rowGap, function(stackX, stackY) {\n\t\t return Bodies.circle(stackX, stackY, particleRadius, particleOptions);\n\t\t });\n\n\t\t Composites.mesh(softBody, columns, rows, crossBrace, constraintOptions);\n\n\t\t softBody.label = 'Soft Body';\n\n\t\t return softBody;\n\t\t };\n\n\t\t deprecated(Composites, 'softBody', 'Composites.softBody ➤ moved to softBody and cloth examples');\n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 23 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\n\t\t* This module has now been replaced by `Matter.Detector`.\n\t\t*\n\t\t* All usage should be migrated to `Matter.Detector` or another alternative.\n\t\t* For back-compatibility purposes this module will remain for a short term and then later removed in a future release.\n\t\t*\n\t\t* The `Matter.Grid` module contains methods for creating and manipulating collision broadphase grid structures.\n\t\t*\n\t\t* @class Grid\n\t\t* @deprecated\n\t\t*/\n\n\t\tvar Grid = {};\n\n\t\tmodule.exports = Grid;\n\n\t\tvar Pair = __webpack_require__(9);\n\t\tvar Common = __webpack_require__(0);\n\t\tvar deprecated = Common.deprecated;\n\n\t\t(function() {\n\n\t\t /**\n\t\t * Creates a new grid.\n\t\t * @deprecated replaced by Matter.Detector\n\t\t * @method create\n\t\t * @param {} options\n\t\t * @return {grid} A new grid\n\t\t */\n\t\t Grid.create = function(options) {\n\t\t var defaults = {\n\t\t buckets: {},\n\t\t pairs: {},\n\t\t pairsList: [],\n\t\t bucketWidth: 48,\n\t\t bucketHeight: 48\n\t\t };\n\n\t\t return Common.extend(defaults, options);\n\t\t };\n\n\t\t /**\n\t\t * The width of a single grid bucket.\n\t\t *\n\t\t * @property bucketWidth\n\t\t * @type number\n\t\t * @default 48\n\t\t */\n\n\t\t /**\n\t\t * The height of a single grid bucket.\n\t\t *\n\t\t * @property bucketHeight\n\t\t * @type number\n\t\t * @default 48\n\t\t */\n\n\t\t /**\n\t\t * Updates the grid.\n\t\t * @deprecated replaced by Matter.Detector\n\t\t * @method update\n\t\t * @param {grid} grid\n\t\t * @param {body[]} bodies\n\t\t * @param {engine} engine\n\t\t * @param {boolean} forceUpdate\n\t\t */\n\t\t Grid.update = function(grid, bodies, engine, forceUpdate) {\n\t\t var i, col, row,\n\t\t world = engine.world,\n\t\t buckets = grid.buckets,\n\t\t bucket,\n\t\t bucketId,\n\t\t gridChanged = false;\n\n\t\t for (i = 0; i < bodies.length; i++) {\n\t\t var body = bodies[i];\n\n\t\t if (body.isSleeping && !forceUpdate)\n\t\t continue;\n\n\t\t // temporary back compatibility bounds check\n\t\t if (world.bounds && (body.bounds.max.x < world.bounds.min.x || body.bounds.min.x > world.bounds.max.x\n\t\t || body.bounds.max.y < world.bounds.min.y || body.bounds.min.y > world.bounds.max.y))\n\t\t continue;\n\n\t\t var newRegion = Grid._getRegion(grid, body);\n\n\t\t // if the body has changed grid region\n\t\t if (!body.region || newRegion.id !== body.region.id || forceUpdate) {\n\n\t\t if (!body.region || forceUpdate)\n\t\t body.region = newRegion;\n\n\t\t var union = Grid._regionUnion(newRegion, body.region);\n\n\t\t // update grid buckets affected by region change\n\t\t // iterate over the union of both regions\n\t\t for (col = union.startCol; col <= union.endCol; col++) {\n\t\t for (row = union.startRow; row <= union.endRow; row++) {\n\t\t bucketId = Grid._getBucketId(col, row);\n\t\t bucket = buckets[bucketId];\n\n\t\t var isInsideNewRegion = (col >= newRegion.startCol && col <= newRegion.endCol\n\t\t && row >= newRegion.startRow && row <= newRegion.endRow);\n\n\t\t var isInsideOldRegion = (col >= body.region.startCol && col <= body.region.endCol\n\t\t && row >= body.region.startRow && row <= body.region.endRow);\n\n\t\t // remove from old region buckets\n\t\t if (!isInsideNewRegion && isInsideOldRegion) {\n\t\t if (isInsideOldRegion) {\n\t\t if (bucket)\n\t\t Grid._bucketRemoveBody(grid, bucket, body);\n\t\t }\n\t\t }\n\n\t\t // add to new region buckets\n\t\t if (body.region === newRegion || (isInsideNewRegion && !isInsideOldRegion) || forceUpdate) {\n\t\t if (!bucket)\n\t\t bucket = Grid._createBucket(buckets, bucketId);\n\t\t Grid._bucketAddBody(grid, bucket, body);\n\t\t }\n\t\t }\n\t\t }\n\n\t\t // set the new region\n\t\t body.region = newRegion;\n\n\t\t // flag changes so we can update pairs\n\t\t gridChanged = true;\n\t\t }\n\t\t }\n\n\t\t // update pairs list only if pairs changed (i.e. a body changed region)\n\t\t if (gridChanged)\n\t\t grid.pairsList = Grid._createActivePairsList(grid);\n\t\t };\n\n\t\t deprecated(Grid, 'update', 'Grid.update ➤ replaced by Matter.Detector');\n\n\t\t /**\n\t\t * Clears the grid.\n\t\t * @deprecated replaced by Matter.Detector\n\t\t * @method clear\n\t\t * @param {grid} grid\n\t\t */\n\t\t Grid.clear = function(grid) {\n\t\t grid.buckets = {};\n\t\t grid.pairs = {};\n\t\t grid.pairsList = [];\n\t\t };\n\n\t\t deprecated(Grid, 'clear', 'Grid.clear ➤ replaced by Matter.Detector');\n\n\t\t /**\n\t\t * Finds the union of two regions.\n\t\t * @method _regionUnion\n\t\t * @deprecated replaced by Matter.Detector\n\t\t * @private\n\t\t * @param {} regionA\n\t\t * @param {} regionB\n\t\t * @return {} region\n\t\t */\n\t\t Grid._regionUnion = function(regionA, regionB) {\n\t\t var startCol = Math.min(regionA.startCol, regionB.startCol),\n\t\t endCol = Math.max(regionA.endCol, regionB.endCol),\n\t\t startRow = Math.min(regionA.startRow, regionB.startRow),\n\t\t endRow = Math.max(regionA.endRow, regionB.endRow);\n\n\t\t return Grid._createRegion(startCol, endCol, startRow, endRow);\n\t\t };\n\n\t\t /**\n\t\t * Gets the region a given body falls in for a given grid.\n\t\t * @method _getRegion\n\t\t * @deprecated replaced by Matter.Detector\n\t\t * @private\n\t\t * @param {} grid\n\t\t * @param {} body\n\t\t * @return {} region\n\t\t */\n\t\t Grid._getRegion = function(grid, body) {\n\t\t var bounds = body.bounds,\n\t\t startCol = Math.floor(bounds.min.x / grid.bucketWidth),\n\t\t endCol = Math.floor(bounds.max.x / grid.bucketWidth),\n\t\t startRow = Math.floor(bounds.min.y / grid.bucketHeight),\n\t\t endRow = Math.floor(bounds.max.y / grid.bucketHeight);\n\n\t\t return Grid._createRegion(startCol, endCol, startRow, endRow);\n\t\t };\n\n\t\t /**\n\t\t * Creates a region.\n\t\t * @method _createRegion\n\t\t * @deprecated replaced by Matter.Detector\n\t\t * @private\n\t\t * @param {} startCol\n\t\t * @param {} endCol\n\t\t * @param {} startRow\n\t\t * @param {} endRow\n\t\t * @return {} region\n\t\t */\n\t\t Grid._createRegion = function(startCol, endCol, startRow, endRow) {\n\t\t return { \n\t\t id: startCol + ',' + endCol + ',' + startRow + ',' + endRow,\n\t\t startCol: startCol, \n\t\t endCol: endCol, \n\t\t startRow: startRow, \n\t\t endRow: endRow \n\t\t };\n\t\t };\n\n\t\t /**\n\t\t * Gets the bucket id at the given position.\n\t\t * @method _getBucketId\n\t\t * @deprecated replaced by Matter.Detector\n\t\t * @private\n\t\t * @param {} column\n\t\t * @param {} row\n\t\t * @return {string} bucket id\n\t\t */\n\t\t Grid._getBucketId = function(column, row) {\n\t\t return 'C' + column + 'R' + row;\n\t\t };\n\n\t\t /**\n\t\t * Creates a bucket.\n\t\t * @method _createBucket\n\t\t * @deprecated replaced by Matter.Detector\n\t\t * @private\n\t\t * @param {} buckets\n\t\t * @param {} bucketId\n\t\t * @return {} bucket\n\t\t */\n\t\t Grid._createBucket = function(buckets, bucketId) {\n\t\t var bucket = buckets[bucketId] = [];\n\t\t return bucket;\n\t\t };\n\n\t\t /**\n\t\t * Adds a body to a bucket.\n\t\t * @method _bucketAddBody\n\t\t * @deprecated replaced by Matter.Detector\n\t\t * @private\n\t\t * @param {} grid\n\t\t * @param {} bucket\n\t\t * @param {} body\n\t\t */\n\t\t Grid._bucketAddBody = function(grid, bucket, body) {\n\t\t var gridPairs = grid.pairs,\n\t\t pairId = Pair.id,\n\t\t bucketLength = bucket.length,\n\t\t i;\n\n\t\t // add new pairs\n\t\t for (i = 0; i < bucketLength; i++) {\n\t\t var bodyB = bucket[i];\n\n\t\t if (body.id === bodyB.id || (body.isStatic && bodyB.isStatic))\n\t\t continue;\n\n\t\t // keep track of the number of buckets the pair exists in\n\t\t // important for Grid.update to work\n\t\t var id = pairId(body, bodyB),\n\t\t pair = gridPairs[id];\n\n\t\t if (pair) {\n\t\t pair[2] += 1;\n\t\t } else {\n\t\t gridPairs[id] = [body, bodyB, 1];\n\t\t }\n\t\t }\n\n\t\t // add to bodies (after pairs, otherwise pairs with self)\n\t\t bucket.push(body);\n\t\t };\n\n\t\t /**\n\t\t * Removes a body from a bucket.\n\t\t * @method _bucketRemoveBody\n\t\t * @deprecated replaced by Matter.Detector\n\t\t * @private\n\t\t * @param {} grid\n\t\t * @param {} bucket\n\t\t * @param {} body\n\t\t */\n\t\t Grid._bucketRemoveBody = function(grid, bucket, body) {\n\t\t var gridPairs = grid.pairs,\n\t\t pairId = Pair.id,\n\t\t i;\n\n\t\t // remove from bucket\n\t\t bucket.splice(Common.indexOf(bucket, body), 1);\n\n\t\t var bucketLength = bucket.length;\n\n\t\t // update pair counts\n\t\t for (i = 0; i < bucketLength; i++) {\n\t\t // keep track of the number of buckets the pair exists in\n\t\t // important for _createActivePairsList to work\n\t\t var pair = gridPairs[pairId(body, bucket[i])];\n\n\t\t if (pair)\n\t\t pair[2] -= 1;\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Generates a list of the active pairs in the grid.\n\t\t * @method _createActivePairsList\n\t\t * @deprecated replaced by Matter.Detector\n\t\t * @private\n\t\t * @param {} grid\n\t\t * @return [] pairs\n\t\t */\n\t\t Grid._createActivePairsList = function(grid) {\n\t\t var pair,\n\t\t gridPairs = grid.pairs,\n\t\t pairKeys = Common.keys(gridPairs),\n\t\t pairKeysLength = pairKeys.length,\n\t\t pairs = [],\n\t\t k;\n\n\t\t // iterate over grid.pairs\n\t\t for (k = 0; k < pairKeysLength; k++) {\n\t\t pair = gridPairs[pairKeys[k]];\n\n\t\t // if pair exists in at least one bucket\n\t\t // it is a pair that needs further collision testing so push it\n\t\t if (pair[2] > 0) {\n\t\t pairs.push(pair);\n\t\t } else {\n\t\t delete gridPairs[pairKeys[k]];\n\t\t }\n\t\t }\n\n\t\t return pairs;\n\t\t };\n\t\t \n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 24 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\n\t\t* The `Matter.MouseConstraint` module contains methods for creating mouse constraints.\n\t\t* Mouse constraints are used for allowing user interaction, providing the ability to move bodies via the mouse or touch.\n\t\t*\n\t\t* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n\t\t*\n\t\t* @class MouseConstraint\n\t\t*/\n\n\t\tvar MouseConstraint = {};\n\n\t\tmodule.exports = MouseConstraint;\n\n\t\tvar Vertices = __webpack_require__(3);\n\t\tvar Sleeping = __webpack_require__(7);\n\t\tvar Mouse = __webpack_require__(14);\n\t\tvar Events = __webpack_require__(5);\n\t\tvar Detector = __webpack_require__(13);\n\t\tvar Constraint = __webpack_require__(10);\n\t\tvar Composite = __webpack_require__(6);\n\t\tvar Common = __webpack_require__(0);\n\t\tvar Bounds = __webpack_require__(1);\n\n\t\t(function() {\n\n\t\t /**\n\t\t * Creates a new mouse constraint.\n\t\t * All properties have default values, and many are pre-calculated automatically based on other properties.\n\t\t * See the properties section below for detailed information on what you can pass via the `options` object.\n\t\t * @method create\n\t\t * @param {engine} engine\n\t\t * @param {} options\n\t\t * @return {MouseConstraint} A new MouseConstraint\n\t\t */\n\t\t MouseConstraint.create = function(engine, options) {\n\t\t var mouse = (engine ? engine.mouse : null) || (options ? options.mouse : null);\n\n\t\t if (!mouse) {\n\t\t if (engine && engine.render && engine.render.canvas) {\n\t\t mouse = Mouse.create(engine.render.canvas);\n\t\t } else if (options && options.element) {\n\t\t mouse = Mouse.create(options.element);\n\t\t } else {\n\t\t mouse = Mouse.create();\n\t\t Common.warn('MouseConstraint.create: options.mouse was undefined, options.element was undefined, may not function as expected');\n\t\t }\n\t\t }\n\n\t\t var constraint = Constraint.create({ \n\t\t label: 'Mouse Constraint',\n\t\t pointA: mouse.position,\n\t\t pointB: { x: 0, y: 0 },\n\t\t length: 0.01, \n\t\t stiffness: 0.1,\n\t\t angularStiffness: 1,\n\t\t render: {\n\t\t strokeStyle: '#90EE90',\n\t\t lineWidth: 3\n\t\t }\n\t\t });\n\n\t\t var defaults = {\n\t\t type: 'mouseConstraint',\n\t\t mouse: mouse,\n\t\t element: null,\n\t\t body: null,\n\t\t constraint: constraint,\n\t\t collisionFilter: {\n\t\t category: 0x0001,\n\t\t mask: 0xFFFFFFFF,\n\t\t group: 0\n\t\t }\n\t\t };\n\n\t\t var mouseConstraint = Common.extend(defaults, options);\n\n\t\t Events.on(engine, 'beforeUpdate', function() {\n\t\t var allBodies = Composite.allBodies(engine.world);\n\t\t MouseConstraint.update(mouseConstraint, allBodies);\n\t\t MouseConstraint._triggerEvents(mouseConstraint);\n\t\t });\n\n\t\t return mouseConstraint;\n\t\t };\n\n\t\t /**\n\t\t * Updates the given mouse constraint.\n\t\t * @private\n\t\t * @method update\n\t\t * @param {MouseConstraint} mouseConstraint\n\t\t * @param {body[]} bodies\n\t\t */\n\t\t MouseConstraint.update = function(mouseConstraint, bodies) {\n\t\t var mouse = mouseConstraint.mouse,\n\t\t constraint = mouseConstraint.constraint,\n\t\t body = mouseConstraint.body;\n\n\t\t if (mouse.button === 0) {\n\t\t if (!constraint.bodyB) {\n\t\t for (var i = 0; i < bodies.length; i++) {\n\t\t body = bodies[i];\n\t\t if (Bounds.contains(body.bounds, mouse.position) \n\t\t && Detector.canCollide(body.collisionFilter, mouseConstraint.collisionFilter)) {\n\t\t for (var j = body.parts.length > 1 ? 1 : 0; j < body.parts.length; j++) {\n\t\t var part = body.parts[j];\n\t\t if (Vertices.contains(part.vertices, mouse.position)) {\n\t\t constraint.pointA = mouse.position;\n\t\t constraint.bodyB = mouseConstraint.body = body;\n\t\t constraint.pointB = { x: mouse.position.x - body.position.x, y: mouse.position.y - body.position.y };\n\t\t constraint.angleB = body.angle;\n\n\t\t Sleeping.set(body, false);\n\t\t Events.trigger(mouseConstraint, 'startdrag', { mouse: mouse, body: body });\n\n\t\t break;\n\t\t }\n\t\t }\n\t\t }\n\t\t }\n\t\t } else {\n\t\t Sleeping.set(constraint.bodyB, false);\n\t\t constraint.pointA = mouse.position;\n\t\t }\n\t\t } else {\n\t\t constraint.bodyB = mouseConstraint.body = null;\n\t\t constraint.pointB = null;\n\n\t\t if (body)\n\t\t Events.trigger(mouseConstraint, 'enddrag', { mouse: mouse, body: body });\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Triggers mouse constraint events.\n\t\t * @method _triggerEvents\n\t\t * @private\n\t\t * @param {mouse} mouseConstraint\n\t\t */\n\t\t MouseConstraint._triggerEvents = function(mouseConstraint) {\n\t\t var mouse = mouseConstraint.mouse,\n\t\t mouseEvents = mouse.sourceEvents;\n\n\t\t if (mouseEvents.mousemove)\n\t\t Events.trigger(mouseConstraint, 'mousemove', { mouse: mouse });\n\n\t\t if (mouseEvents.mousedown)\n\t\t Events.trigger(mouseConstraint, 'mousedown', { mouse: mouse });\n\n\t\t if (mouseEvents.mouseup)\n\t\t Events.trigger(mouseConstraint, 'mouseup', { mouse: mouse });\n\n\t\t // reset the mouse state ready for the next step\n\t\t Mouse.clearSourceEvents(mouse);\n\t\t };\n\n\t\t /*\n\t\t *\n\t\t * Events Documentation\n\t\t *\n\t\t */\n\n\t\t /**\n\t\t * Fired when the mouse has moved (or a touch moves) during the last step\n\t\t *\n\t\t * @event mousemove\n\t\t * @param {} event An event object\n\t\t * @param {mouse} event.mouse The engine's mouse instance\n\t\t * @param {} event.source The source object of the event\n\t\t * @param {} event.name The name of the event\n\t\t */\n\n\t\t /**\n\t\t * Fired when the mouse is down (or a touch has started) during the last step\n\t\t *\n\t\t * @event mousedown\n\t\t * @param {} event An event object\n\t\t * @param {mouse} event.mouse The engine's mouse instance\n\t\t * @param {} event.source The source object of the event\n\t\t * @param {} event.name The name of the event\n\t\t */\n\n\t\t /**\n\t\t * Fired when the mouse is up (or a touch has ended) during the last step\n\t\t *\n\t\t * @event mouseup\n\t\t * @param {} event An event object\n\t\t * @param {mouse} event.mouse The engine's mouse instance\n\t\t * @param {} event.source The source object of the event\n\t\t * @param {} event.name The name of the event\n\t\t */\n\n\t\t /**\n\t\t * Fired when the user starts dragging a body\n\t\t *\n\t\t * @event startdrag\n\t\t * @param {} event An event object\n\t\t * @param {mouse} event.mouse The engine's mouse instance\n\t\t * @param {body} event.body The body being dragged\n\t\t * @param {} event.source The source object of the event\n\t\t * @param {} event.name The name of the event\n\t\t */\n\n\t\t /**\n\t\t * Fired when the user ends dragging a body\n\t\t *\n\t\t * @event enddrag\n\t\t * @param {} event An event object\n\t\t * @param {mouse} event.mouse The engine's mouse instance\n\t\t * @param {body} event.body The body that has stopped being dragged\n\t\t * @param {} event.source The source object of the event\n\t\t * @param {} event.name The name of the event\n\t\t */\n\n\t\t /*\n\t\t *\n\t\t * Properties Documentation\n\t\t *\n\t\t */\n\n\t\t /**\n\t\t * A `String` denoting the type of object.\n\t\t *\n\t\t * @property type\n\t\t * @type string\n\t\t * @default \"constraint\"\n\t\t * @readOnly\n\t\t */\n\n\t\t /**\n\t\t * The `Mouse` instance in use. If not supplied in `MouseConstraint.create`, one will be created.\n\t\t *\n\t\t * @property mouse\n\t\t * @type mouse\n\t\t * @default mouse\n\t\t */\n\n\t\t /**\n\t\t * The `Body` that is currently being moved by the user, or `null` if no body.\n\t\t *\n\t\t * @property body\n\t\t * @type body\n\t\t * @default null\n\t\t */\n\n\t\t /**\n\t\t * The `Constraint` object that is used to move the body during interaction.\n\t\t *\n\t\t * @property constraint\n\t\t * @type constraint\n\t\t */\n\n\t\t /**\n\t\t * An `Object` that specifies the collision filter properties.\n\t\t * The collision filter allows the user to define which types of body this mouse constraint can interact with.\n\t\t * See `body.collisionFilter` for more information.\n\t\t *\n\t\t * @property collisionFilter\n\t\t * @type object\n\t\t */\n\n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 25 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\n\t\t* The `Matter.Query` module contains methods for performing collision queries.\n\t\t*\n\t\t* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n\t\t*\n\t\t* @class Query\n\t\t*/\n\n\t\tvar Query = {};\n\n\t\tmodule.exports = Query;\n\n\t\tvar Vector = __webpack_require__(2);\n\t\tvar Collision = __webpack_require__(8);\n\t\tvar Bounds = __webpack_require__(1);\n\t\tvar Bodies = __webpack_require__(12);\n\t\tvar Vertices = __webpack_require__(3);\n\n\t\t(function() {\n\n\t\t /**\n\t\t * Returns a list of collisions between `body` and `bodies`.\n\t\t * @method collides\n\t\t * @param {body} body\n\t\t * @param {body[]} bodies\n\t\t * @return {collision[]} Collisions\n\t\t */\n\t\t Query.collides = function(body, bodies) {\n\t\t var collisions = [],\n\t\t bodiesLength = bodies.length,\n\t\t bounds = body.bounds,\n\t\t collides = Collision.collides,\n\t\t overlaps = Bounds.overlaps;\n\n\t\t for (var i = 0; i < bodiesLength; i++) {\n\t\t var bodyA = bodies[i],\n\t\t partsALength = bodyA.parts.length,\n\t\t partsAStart = partsALength === 1 ? 0 : 1;\n\t\t \n\t\t if (overlaps(bodyA.bounds, bounds)) {\n\t\t for (var j = partsAStart; j < partsALength; j++) {\n\t\t var part = bodyA.parts[j];\n\n\t\t if (overlaps(part.bounds, bounds)) {\n\t\t var collision = collides(part, body);\n\n\t\t if (collision) {\n\t\t collisions.push(collision);\n\t\t break;\n\t\t }\n\t\t }\n\t\t }\n\t\t }\n\t\t }\n\n\t\t return collisions;\n\t\t };\n\n\t\t /**\n\t\t * Casts a ray segment against a set of bodies and returns all collisions, ray width is optional. Intersection points are not provided.\n\t\t * @method ray\n\t\t * @param {body[]} bodies\n\t\t * @param {vector} startPoint\n\t\t * @param {vector} endPoint\n\t\t * @param {number} [rayWidth]\n\t\t * @return {collision[]} Collisions\n\t\t */\n\t\t Query.ray = function(bodies, startPoint, endPoint, rayWidth) {\n\t\t rayWidth = rayWidth || 1e-100;\n\n\t\t var rayAngle = Vector.angle(startPoint, endPoint),\n\t\t rayLength = Vector.magnitude(Vector.sub(startPoint, endPoint)),\n\t\t rayX = (endPoint.x + startPoint.x) * 0.5,\n\t\t rayY = (endPoint.y + startPoint.y) * 0.5,\n\t\t ray = Bodies.rectangle(rayX, rayY, rayLength, rayWidth, { angle: rayAngle }),\n\t\t collisions = Query.collides(ray, bodies);\n\n\t\t for (var i = 0; i < collisions.length; i += 1) {\n\t\t var collision = collisions[i];\n\t\t collision.body = collision.bodyB = collision.bodyA; \n\t\t }\n\n\t\t return collisions;\n\t\t };\n\n\t\t /**\n\t\t * Returns all bodies whose bounds are inside (or outside if set) the given set of bounds, from the given set of bodies.\n\t\t * @method region\n\t\t * @param {body[]} bodies\n\t\t * @param {bounds} bounds\n\t\t * @param {bool} [outside=false]\n\t\t * @return {body[]} The bodies matching the query\n\t\t */\n\t\t Query.region = function(bodies, bounds, outside) {\n\t\t var result = [];\n\n\t\t for (var i = 0; i < bodies.length; i++) {\n\t\t var body = bodies[i],\n\t\t overlaps = Bounds.overlaps(body.bounds, bounds);\n\t\t if ((overlaps && !outside) || (!overlaps && outside))\n\t\t result.push(body);\n\t\t }\n\n\t\t return result;\n\t\t };\n\n\t\t /**\n\t\t * Returns all bodies whose vertices contain the given point, from the given set of bodies.\n\t\t * @method point\n\t\t * @param {body[]} bodies\n\t\t * @param {vector} point\n\t\t * @return {body[]} The bodies matching the query\n\t\t */\n\t\t Query.point = function(bodies, point) {\n\t\t var result = [];\n\n\t\t for (var i = 0; i < bodies.length; i++) {\n\t\t var body = bodies[i];\n\t\t \n\t\t if (Bounds.contains(body.bounds, point)) {\n\t\t for (var j = body.parts.length === 1 ? 0 : 1; j < body.parts.length; j++) {\n\t\t var part = body.parts[j];\n\n\t\t if (Bounds.contains(part.bounds, point)\n\t\t && Vertices.contains(part.vertices, point)) {\n\t\t result.push(body);\n\t\t break;\n\t\t }\n\t\t }\n\t\t }\n\t\t }\n\n\t\t return result;\n\t\t };\n\n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 26 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\n\t\t* The `Matter.Render` module is a lightweight, optional utility which provides a simple canvas based renderer for visualising instances of `Matter.Engine`.\n\t\t* It is intended for development and debugging purposes, but may also be suitable for simple games.\n\t\t* It includes a number of drawing options including wireframe, vector with support for sprites and viewports.\n\t\t*\n\t\t* @class Render\n\t\t*/\n\n\t\tvar Render = {};\n\n\t\tmodule.exports = Render;\n\n\t\tvar Body = __webpack_require__(4);\n\t\tvar Common = __webpack_require__(0);\n\t\tvar Composite = __webpack_require__(6);\n\t\tvar Bounds = __webpack_require__(1);\n\t\tvar Events = __webpack_require__(5);\n\t\tvar Vector = __webpack_require__(2);\n\t\tvar Mouse = __webpack_require__(14);\n\n\t\t(function() {\n\n\t\t var _requestAnimationFrame,\n\t\t _cancelAnimationFrame;\n\n\t\t if (typeof window !== 'undefined') {\n\t\t _requestAnimationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame\n\t\t || window.mozRequestAnimationFrame || window.msRequestAnimationFrame\n\t\t || function(callback){ window.setTimeout(function() { callback(Common.now()); }, 1000 / 60); };\n\n\t\t _cancelAnimationFrame = window.cancelAnimationFrame || window.mozCancelAnimationFrame\n\t\t || window.webkitCancelAnimationFrame || window.msCancelAnimationFrame;\n\t\t }\n\n\t\t Render._goodFps = 30;\n\t\t Render._goodDelta = 1000 / 60;\n\n\t\t /**\n\t\t * Creates a new renderer. The options parameter is an object that specifies any properties you wish to override the defaults.\n\t\t * All properties have default values, and many are pre-calculated automatically based on other properties.\n\t\t * See the properties section below for detailed information on what you can pass via the `options` object.\n\t\t * @method create\n\t\t * @param {object} [options]\n\t\t * @return {render} A new renderer\n\t\t */\n\t\t Render.create = function(options) {\n\t\t var defaults = {\n\t\t engine: null,\n\t\t element: null,\n\t\t canvas: null,\n\t\t mouse: null,\n\t\t frameRequestId: null,\n\t\t timing: {\n\t\t historySize: 60,\n\t\t delta: 0,\n\t\t deltaHistory: [],\n\t\t lastTime: 0,\n\t\t lastTimestamp: 0,\n\t\t lastElapsed: 0,\n\t\t timestampElapsed: 0,\n\t\t timestampElapsedHistory: [],\n\t\t engineDeltaHistory: [],\n\t\t engineElapsedHistory: [],\n\t\t engineUpdatesHistory: [],\n\t\t elapsedHistory: []\n\t\t },\n\t\t options: {\n\t\t width: 800,\n\t\t height: 600,\n\t\t pixelRatio: 1,\n\t\t background: '#14151f',\n\t\t wireframeBackground: '#14151f',\n\t\t wireframeStrokeStyle: '#bbb',\n\t\t hasBounds: !!options.bounds,\n\t\t enabled: true,\n\t\t wireframes: true,\n\t\t showSleeping: true,\n\t\t showDebug: false,\n\t\t showStats: false,\n\t\t showPerformance: false,\n\t\t showBounds: false,\n\t\t showVelocity: false,\n\t\t showCollisions: false,\n\t\t showSeparations: false,\n\t\t showAxes: false,\n\t\t showPositions: false,\n\t\t showAngleIndicator: false,\n\t\t showIds: false,\n\t\t showVertexNumbers: false,\n\t\t showConvexHulls: false,\n\t\t showInternalEdges: false,\n\t\t showMousePosition: false\n\t\t }\n\t\t };\n\n\t\t var render = Common.extend(defaults, options);\n\n\t\t if (render.canvas) {\n\t\t render.canvas.width = render.options.width || render.canvas.width;\n\t\t render.canvas.height = render.options.height || render.canvas.height;\n\t\t }\n\n\t\t render.mouse = options.mouse;\n\t\t render.engine = options.engine;\n\t\t render.canvas = render.canvas || _createCanvas(render.options.width, render.options.height);\n\t\t render.context = render.canvas.getContext('2d');\n\t\t render.textures = {};\n\n\t\t render.bounds = render.bounds || {\n\t\t min: {\n\t\t x: 0,\n\t\t y: 0\n\t\t },\n\t\t max: {\n\t\t x: render.canvas.width,\n\t\t y: render.canvas.height\n\t\t }\n\t\t };\n\n\t\t // for temporary back compatibility only\n\t\t render.controller = Render;\n\t\t render.options.showBroadphase = false;\n\n\t\t if (render.options.pixelRatio !== 1) {\n\t\t Render.setPixelRatio(render, render.options.pixelRatio);\n\t\t }\n\n\t\t if (Common.isElement(render.element)) {\n\t\t render.element.appendChild(render.canvas);\n\t\t }\n\n\t\t return render;\n\t\t };\n\n\t\t /**\n\t\t * Continuously updates the render canvas on the `requestAnimationFrame` event.\n\t\t * @method run\n\t\t * @param {render} render\n\t\t */\n\t\t Render.run = function(render) {\n\t\t (function loop(time){\n\t\t render.frameRequestId = _requestAnimationFrame(loop);\n\t\t \n\t\t _updateTiming(render, time);\n\n\t\t Render.world(render, time);\n\n\t\t render.context.setTransform(render.options.pixelRatio, 0, 0, render.options.pixelRatio, 0, 0);\n\n\t\t if (render.options.showStats || render.options.showDebug) {\n\t\t Render.stats(render, render.context, time);\n\t\t }\n\n\t\t if (render.options.showPerformance || render.options.showDebug) {\n\t\t Render.performance(render, render.context, time);\n\t\t }\n\n\t\t render.context.setTransform(1, 0, 0, 1, 0, 0);\n\t\t })();\n\t\t };\n\n\t\t /**\n\t\t * Ends execution of `Render.run` on the given `render`, by canceling the animation frame request event loop.\n\t\t * @method stop\n\t\t * @param {render} render\n\t\t */\n\t\t Render.stop = function(render) {\n\t\t _cancelAnimationFrame(render.frameRequestId);\n\t\t };\n\n\t\t /**\n\t\t * Sets the pixel ratio of the renderer and updates the canvas.\n\t\t * To automatically detect the correct ratio, pass the string `'auto'` for `pixelRatio`.\n\t\t * @method setPixelRatio\n\t\t * @param {render} render\n\t\t * @param {number} pixelRatio\n\t\t */\n\t\t Render.setPixelRatio = function(render, pixelRatio) {\n\t\t var options = render.options,\n\t\t canvas = render.canvas;\n\n\t\t if (pixelRatio === 'auto') {\n\t\t pixelRatio = _getPixelRatio(canvas);\n\t\t }\n\n\t\t options.pixelRatio = pixelRatio;\n\t\t canvas.setAttribute('data-pixel-ratio', pixelRatio);\n\t\t canvas.width = options.width * pixelRatio;\n\t\t canvas.height = options.height * pixelRatio;\n\t\t canvas.style.width = options.width + 'px';\n\t\t canvas.style.height = options.height + 'px';\n\t\t };\n\n\t\t /**\n\t\t * Sets the render `width` and `height`.\n\t\t * \n\t\t * Updates the canvas accounting for `render.options.pixelRatio`. \n\t\t * \n\t\t * Updates the bottom right render bound `render.bounds.max` relative to the provided `width` and `height`.\n\t\t * The top left render bound `render.bounds.min` isn't changed.\n\t\t * \n\t\t * Follow this call with `Render.lookAt` if you need to change the render bounds.\n\t\t * \n\t\t * See also `Render.setPixelRatio`.\n\t\t * @method setSize\n\t\t * @param {render} render\n\t\t * @param {number} width The width (in CSS pixels)\n\t\t * @param {number} height The height (in CSS pixels)\n\t\t */\n\t\t Render.setSize = function(render, width, height) {\n\t\t render.options.width = width;\n\t\t render.options.height = height;\n\t\t render.bounds.max.x = render.bounds.min.x + width;\n\t\t render.bounds.max.y = render.bounds.min.y + height;\n\n\t\t if (render.options.pixelRatio !== 1) {\n\t\t Render.setPixelRatio(render, render.options.pixelRatio);\n\t\t } else {\n\t\t render.canvas.width = width;\n\t\t render.canvas.height = height;\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Positions and sizes the viewport around the given object bounds.\n\t\t * Objects must have at least one of the following properties:\n\t\t * - `object.bounds`\n\t\t * - `object.position`\n\t\t * - `object.min` and `object.max`\n\t\t * - `object.x` and `object.y`\n\t\t * @method lookAt\n\t\t * @param {render} render\n\t\t * @param {object[]} objects\n\t\t * @param {vector} [padding]\n\t\t * @param {bool} [center=true]\n\t\t */\n\t\t Render.lookAt = function(render, objects, padding, center) {\n\t\t center = typeof center !== 'undefined' ? center : true;\n\t\t objects = Common.isArray(objects) ? objects : [objects];\n\t\t padding = padding || {\n\t\t x: 0,\n\t\t y: 0\n\t\t };\n\n\t\t // find bounds of all objects\n\t\t var bounds = {\n\t\t min: { x: Infinity, y: Infinity },\n\t\t max: { x: -Infinity, y: -Infinity }\n\t\t };\n\n\t\t for (var i = 0; i < objects.length; i += 1) {\n\t\t var object = objects[i],\n\t\t min = object.bounds ? object.bounds.min : (object.min || object.position || object),\n\t\t max = object.bounds ? object.bounds.max : (object.max || object.position || object);\n\n\t\t if (min && max) {\n\t\t if (min.x < bounds.min.x)\n\t\t bounds.min.x = min.x;\n\n\t\t if (max.x > bounds.max.x)\n\t\t bounds.max.x = max.x;\n\n\t\t if (min.y < bounds.min.y)\n\t\t bounds.min.y = min.y;\n\n\t\t if (max.y > bounds.max.y)\n\t\t bounds.max.y = max.y;\n\t\t }\n\t\t }\n\n\t\t // find ratios\n\t\t var width = (bounds.max.x - bounds.min.x) + 2 * padding.x,\n\t\t height = (bounds.max.y - bounds.min.y) + 2 * padding.y,\n\t\t viewHeight = render.canvas.height,\n\t\t viewWidth = render.canvas.width,\n\t\t outerRatio = viewWidth / viewHeight,\n\t\t innerRatio = width / height,\n\t\t scaleX = 1,\n\t\t scaleY = 1;\n\n\t\t // find scale factor\n\t\t if (innerRatio > outerRatio) {\n\t\t scaleY = innerRatio / outerRatio;\n\t\t } else {\n\t\t scaleX = outerRatio / innerRatio;\n\t\t }\n\n\t\t // enable bounds\n\t\t render.options.hasBounds = true;\n\n\t\t // position and size\n\t\t render.bounds.min.x = bounds.min.x;\n\t\t render.bounds.max.x = bounds.min.x + width * scaleX;\n\t\t render.bounds.min.y = bounds.min.y;\n\t\t render.bounds.max.y = bounds.min.y + height * scaleY;\n\n\t\t // center\n\t\t if (center) {\n\t\t render.bounds.min.x += width * 0.5 - (width * scaleX) * 0.5;\n\t\t render.bounds.max.x += width * 0.5 - (width * scaleX) * 0.5;\n\t\t render.bounds.min.y += height * 0.5 - (height * scaleY) * 0.5;\n\t\t render.bounds.max.y += height * 0.5 - (height * scaleY) * 0.5;\n\t\t }\n\n\t\t // padding\n\t\t render.bounds.min.x -= padding.x;\n\t\t render.bounds.max.x -= padding.x;\n\t\t render.bounds.min.y -= padding.y;\n\t\t render.bounds.max.y -= padding.y;\n\n\t\t // update mouse\n\t\t if (render.mouse) {\n\t\t Mouse.setScale(render.mouse, {\n\t\t x: (render.bounds.max.x - render.bounds.min.x) / render.canvas.width,\n\t\t y: (render.bounds.max.y - render.bounds.min.y) / render.canvas.height\n\t\t });\n\n\t\t Mouse.setOffset(render.mouse, render.bounds.min);\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Applies viewport transforms based on `render.bounds` to a render context.\n\t\t * @method startViewTransform\n\t\t * @param {render} render\n\t\t */\n\t\t Render.startViewTransform = function(render) {\n\t\t var boundsWidth = render.bounds.max.x - render.bounds.min.x,\n\t\t boundsHeight = render.bounds.max.y - render.bounds.min.y,\n\t\t boundsScaleX = boundsWidth / render.options.width,\n\t\t boundsScaleY = boundsHeight / render.options.height;\n\n\t\t render.context.setTransform(\n\t\t render.options.pixelRatio / boundsScaleX, 0, 0, \n\t\t render.options.pixelRatio / boundsScaleY, 0, 0\n\t\t );\n\t\t \n\t\t render.context.translate(-render.bounds.min.x, -render.bounds.min.y);\n\t\t };\n\n\t\t /**\n\t\t * Resets all transforms on the render context.\n\t\t * @method endViewTransform\n\t\t * @param {render} render\n\t\t */\n\t\t Render.endViewTransform = function(render) {\n\t\t render.context.setTransform(render.options.pixelRatio, 0, 0, render.options.pixelRatio, 0, 0);\n\t\t };\n\n\t\t /**\n\t\t * Renders the given `engine`'s `Matter.World` object.\n\t\t * This is the entry point for all rendering and should be called every time the scene changes.\n\t\t * @method world\n\t\t * @param {render} render\n\t\t */\n\t\t Render.world = function(render, time) {\n\t\t var startTime = Common.now(),\n\t\t engine = render.engine,\n\t\t world = engine.world,\n\t\t canvas = render.canvas,\n\t\t context = render.context,\n\t\t options = render.options,\n\t\t timing = render.timing;\n\n\t\t var allBodies = Composite.allBodies(world),\n\t\t allConstraints = Composite.allConstraints(world),\n\t\t background = options.wireframes ? options.wireframeBackground : options.background,\n\t\t bodies = [],\n\t\t constraints = [],\n\t\t i;\n\n\t\t var event = {\n\t\t timestamp: engine.timing.timestamp\n\t\t };\n\n\t\t Events.trigger(render, 'beforeRender', event);\n\n\t\t // apply background if it has changed\n\t\t if (render.currentBackground !== background)\n\t\t _applyBackground(render, background);\n\n\t\t // clear the canvas with a transparent fill, to allow the canvas background to show\n\t\t context.globalCompositeOperation = 'source-in';\n\t\t context.fillStyle = \"transparent\";\n\t\t context.fillRect(0, 0, canvas.width, canvas.height);\n\t\t context.globalCompositeOperation = 'source-over';\n\n\t\t // handle bounds\n\t\t if (options.hasBounds) {\n\t\t // filter out bodies that are not in view\n\t\t for (i = 0; i < allBodies.length; i++) {\n\t\t var body = allBodies[i];\n\t\t if (Bounds.overlaps(body.bounds, render.bounds))\n\t\t bodies.push(body);\n\t\t }\n\n\t\t // filter out constraints that are not in view\n\t\t for (i = 0; i < allConstraints.length; i++) {\n\t\t var constraint = allConstraints[i],\n\t\t bodyA = constraint.bodyA,\n\t\t bodyB = constraint.bodyB,\n\t\t pointAWorld = constraint.pointA,\n\t\t pointBWorld = constraint.pointB;\n\n\t\t if (bodyA) pointAWorld = Vector.add(bodyA.position, constraint.pointA);\n\t\t if (bodyB) pointBWorld = Vector.add(bodyB.position, constraint.pointB);\n\n\t\t if (!pointAWorld || !pointBWorld)\n\t\t continue;\n\n\t\t if (Bounds.contains(render.bounds, pointAWorld) || Bounds.contains(render.bounds, pointBWorld))\n\t\t constraints.push(constraint);\n\t\t }\n\n\t\t // transform the view\n\t\t Render.startViewTransform(render);\n\n\t\t // update mouse\n\t\t if (render.mouse) {\n\t\t Mouse.setScale(render.mouse, {\n\t\t x: (render.bounds.max.x - render.bounds.min.x) / render.options.width,\n\t\t y: (render.bounds.max.y - render.bounds.min.y) / render.options.height\n\t\t });\n\n\t\t Mouse.setOffset(render.mouse, render.bounds.min);\n\t\t }\n\t\t } else {\n\t\t constraints = allConstraints;\n\t\t bodies = allBodies;\n\n\t\t if (render.options.pixelRatio !== 1) {\n\t\t render.context.setTransform(render.options.pixelRatio, 0, 0, render.options.pixelRatio, 0, 0);\n\t\t }\n\t\t }\n\n\t\t if (!options.wireframes || (engine.enableSleeping && options.showSleeping)) {\n\t\t // fully featured rendering of bodies\n\t\t Render.bodies(render, bodies, context);\n\t\t } else {\n\t\t if (options.showConvexHulls)\n\t\t Render.bodyConvexHulls(render, bodies, context);\n\n\t\t // optimised method for wireframes only\n\t\t Render.bodyWireframes(render, bodies, context);\n\t\t }\n\n\t\t if (options.showBounds)\n\t\t Render.bodyBounds(render, bodies, context);\n\n\t\t if (options.showAxes || options.showAngleIndicator)\n\t\t Render.bodyAxes(render, bodies, context);\n\n\t\t if (options.showPositions)\n\t\t Render.bodyPositions(render, bodies, context);\n\n\t\t if (options.showVelocity)\n\t\t Render.bodyVelocity(render, bodies, context);\n\n\t\t if (options.showIds)\n\t\t Render.bodyIds(render, bodies, context);\n\n\t\t if (options.showSeparations)\n\t\t Render.separations(render, engine.pairs.list, context);\n\n\t\t if (options.showCollisions)\n\t\t Render.collisions(render, engine.pairs.list, context);\n\n\t\t if (options.showVertexNumbers)\n\t\t Render.vertexNumbers(render, bodies, context);\n\n\t\t if (options.showMousePosition)\n\t\t Render.mousePosition(render, render.mouse, context);\n\n\t\t Render.constraints(constraints, context);\n\n\t\t if (options.hasBounds) {\n\t\t // revert view transforms\n\t\t Render.endViewTransform(render);\n\t\t }\n\n\t\t Events.trigger(render, 'afterRender', event);\n\n\t\t // log the time elapsed computing this update\n\t\t timing.lastElapsed = Common.now() - startTime;\n\t\t };\n\n\t\t /**\n\t\t * Renders statistics about the engine and world useful for debugging.\n\t\t * @private\n\t\t * @method stats\n\t\t * @param {render} render\n\t\t * @param {RenderingContext} context\n\t\t * @param {Number} time\n\t\t */\n\t\t Render.stats = function(render, context, time) {\n\t\t var engine = render.engine,\n\t\t world = engine.world,\n\t\t bodies = Composite.allBodies(world),\n\t\t parts = 0,\n\t\t width = 55,\n\t\t height = 44,\n\t\t x = 0,\n\t\t y = 0;\n\t\t \n\t\t // count parts\n\t\t for (var i = 0; i < bodies.length; i += 1) {\n\t\t parts += bodies[i].parts.length;\n\t\t }\n\n\t\t // sections\n\t\t var sections = {\n\t\t 'Part': parts,\n\t\t 'Body': bodies.length,\n\t\t 'Cons': Composite.allConstraints(world).length,\n\t\t 'Comp': Composite.allComposites(world).length,\n\t\t 'Pair': engine.pairs.list.length\n\t\t };\n\n\t\t // background\n\t\t context.fillStyle = '#0e0f19';\n\t\t context.fillRect(x, y, width * 5.5, height);\n\n\t\t context.font = '12px Arial';\n\t\t context.textBaseline = 'top';\n\t\t context.textAlign = 'right';\n\n\t\t // sections\n\t\t for (var key in sections) {\n\t\t var section = sections[key];\n\t\t // label\n\t\t context.fillStyle = '#aaa';\n\t\t context.fillText(key, x + width, y + 8);\n\n\t\t // value\n\t\t context.fillStyle = '#eee';\n\t\t context.fillText(section, x + width, y + 26);\n\n\t\t x += width;\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Renders engine and render performance information.\n\t\t * @private\n\t\t * @method performance\n\t\t * @param {render} render\n\t\t * @param {RenderingContext} context\n\t\t */\n\t\t Render.performance = function(render, context) {\n\t\t var engine = render.engine,\n\t\t timing = render.timing,\n\t\t deltaHistory = timing.deltaHistory,\n\t\t elapsedHistory = timing.elapsedHistory,\n\t\t timestampElapsedHistory = timing.timestampElapsedHistory,\n\t\t engineDeltaHistory = timing.engineDeltaHistory,\n\t\t engineUpdatesHistory = timing.engineUpdatesHistory,\n\t\t engineElapsedHistory = timing.engineElapsedHistory,\n\t\t lastEngineUpdatesPerFrame = engine.timing.lastUpdatesPerFrame,\n\t\t lastEngineDelta = engine.timing.lastDelta;\n\t\t \n\t\t var deltaMean = _mean(deltaHistory),\n\t\t elapsedMean = _mean(elapsedHistory),\n\t\t engineDeltaMean = _mean(engineDeltaHistory),\n\t\t engineUpdatesMean = _mean(engineUpdatesHistory),\n\t\t engineElapsedMean = _mean(engineElapsedHistory),\n\t\t timestampElapsedMean = _mean(timestampElapsedHistory),\n\t\t rateMean = (timestampElapsedMean / deltaMean) || 0,\n\t\t neededUpdatesPerFrame = Math.round(deltaMean / lastEngineDelta),\n\t\t fps = (1000 / deltaMean) || 0;\n\n\t\t var graphHeight = 4,\n\t\t gap = 12,\n\t\t width = 60,\n\t\t height = 34,\n\t\t x = 10,\n\t\t y = 69;\n\n\t\t // background\n\t\t context.fillStyle = '#0e0f19';\n\t\t context.fillRect(0, 50, gap * 5 + width * 6 + 22, height);\n\n\t\t // show FPS\n\t\t Render.status(\n\t\t context, x, y, width, graphHeight, deltaHistory.length, \n\t\t Math.round(fps) + ' fps', \n\t\t fps / Render._goodFps,\n\t\t function(i) { return (deltaHistory[i] / deltaMean) - 1; }\n\t\t );\n\n\t\t // show engine delta\n\t\t Render.status(\n\t\t context, x + gap + width, y, width, graphHeight, engineDeltaHistory.length,\n\t\t lastEngineDelta.toFixed(2) + ' dt', \n\t\t Render._goodDelta / lastEngineDelta,\n\t\t function(i) { return (engineDeltaHistory[i] / engineDeltaMean) - 1; }\n\t\t );\n\n\t\t // show engine updates per frame\n\t\t Render.status(\n\t\t context, x + (gap + width) * 2, y, width, graphHeight, engineUpdatesHistory.length,\n\t\t lastEngineUpdatesPerFrame + ' upf', \n\t\t Math.pow(Common.clamp((engineUpdatesMean / neededUpdatesPerFrame) || 1, 0, 1), 4),\n\t\t function(i) { return (engineUpdatesHistory[i] / engineUpdatesMean) - 1; }\n\t\t );\n\n\t\t // show engine update time\n\t\t Render.status(\n\t\t context, x + (gap + width) * 3, y, width, graphHeight, engineElapsedHistory.length,\n\t\t engineElapsedMean.toFixed(2) + ' ut', \n\t\t 1 - (lastEngineUpdatesPerFrame * engineElapsedMean / Render._goodFps),\n\t\t function(i) { return (engineElapsedHistory[i] / engineElapsedMean) - 1; }\n\t\t );\n\n\t\t // show render time\n\t\t Render.status(\n\t\t context, x + (gap + width) * 4, y, width, graphHeight, elapsedHistory.length,\n\t\t elapsedMean.toFixed(2) + ' rt', \n\t\t 1 - (elapsedMean / Render._goodFps),\n\t\t function(i) { return (elapsedHistory[i] / elapsedMean) - 1; }\n\t\t );\n\n\t\t // show effective speed\n\t\t Render.status(\n\t\t context, x + (gap + width) * 5, y, width, graphHeight, timestampElapsedHistory.length, \n\t\t rateMean.toFixed(2) + ' x', \n\t\t rateMean * rateMean * rateMean,\n\t\t function(i) { return (((timestampElapsedHistory[i] / deltaHistory[i]) / rateMean) || 0) - 1; }\n\t\t );\n\t\t };\n\n\t\t /**\n\t\t * Renders a label, indicator and a chart.\n\t\t * @private\n\t\t * @method status\n\t\t * @param {RenderingContext} context\n\t\t * @param {number} x\n\t\t * @param {number} y\n\t\t * @param {number} width\n\t\t * @param {number} height\n\t\t * @param {number} count\n\t\t * @param {string} label\n\t\t * @param {string} indicator\n\t\t * @param {function} plotY\n\t\t */\n\t\t Render.status = function(context, x, y, width, height, count, label, indicator, plotY) {\n\t\t // background\n\t\t context.strokeStyle = '#888';\n\t\t context.fillStyle = '#444';\n\t\t context.lineWidth = 1;\n\t\t context.fillRect(x, y + 7, width, 1);\n\n\t\t // chart\n\t\t context.beginPath();\n\t\t context.moveTo(x, y + 7 - height * Common.clamp(0.4 * plotY(0), -2, 2));\n\t\t for (var i = 0; i < width; i += 1) {\n\t\t context.lineTo(x + i, y + 7 - (i < count ? height * Common.clamp(0.4 * plotY(i), -2, 2) : 0));\n\t\t }\n\t\t context.stroke();\n\n\t\t // indicator\n\t\t context.fillStyle = 'hsl(' + Common.clamp(25 + 95 * indicator, 0, 120) + ',100%,60%)';\n\t\t context.fillRect(x, y - 7, 4, 4);\n\n\t\t // label\n\t\t context.font = '12px Arial';\n\t\t context.textBaseline = 'middle';\n\t\t context.textAlign = 'right';\n\t\t context.fillStyle = '#eee';\n\t\t context.fillText(label, x + width, y - 5);\n\t\t };\n\n\t\t /**\n\t\t * Description\n\t\t * @private\n\t\t * @method constraints\n\t\t * @param {constraint[]} constraints\n\t\t * @param {RenderingContext} context\n\t\t */\n\t\t Render.constraints = function(constraints, context) {\n\t\t var c = context;\n\n\t\t for (var i = 0; i < constraints.length; i++) {\n\t\t var constraint = constraints[i];\n\n\t\t if (!constraint.render.visible || !constraint.pointA || !constraint.pointB)\n\t\t continue;\n\n\t\t var bodyA = constraint.bodyA,\n\t\t bodyB = constraint.bodyB,\n\t\t start,\n\t\t end;\n\n\t\t if (bodyA) {\n\t\t start = Vector.add(bodyA.position, constraint.pointA);\n\t\t } else {\n\t\t start = constraint.pointA;\n\t\t }\n\n\t\t if (constraint.render.type === 'pin') {\n\t\t c.beginPath();\n\t\t c.arc(start.x, start.y, 3, 0, 2 * Math.PI);\n\t\t c.closePath();\n\t\t } else {\n\t\t if (bodyB) {\n\t\t end = Vector.add(bodyB.position, constraint.pointB);\n\t\t } else {\n\t\t end = constraint.pointB;\n\t\t }\n\n\t\t c.beginPath();\n\t\t c.moveTo(start.x, start.y);\n\n\t\t if (constraint.render.type === 'spring') {\n\t\t var delta = Vector.sub(end, start),\n\t\t normal = Vector.perp(Vector.normalise(delta)),\n\t\t coils = Math.ceil(Common.clamp(constraint.length / 5, 12, 20)),\n\t\t offset;\n\n\t\t for (var j = 1; j < coils; j += 1) {\n\t\t offset = j % 2 === 0 ? 1 : -1;\n\n\t\t c.lineTo(\n\t\t start.x + delta.x * (j / coils) + normal.x * offset * 4,\n\t\t start.y + delta.y * (j / coils) + normal.y * offset * 4\n\t\t );\n\t\t }\n\t\t }\n\n\t\t c.lineTo(end.x, end.y);\n\t\t }\n\n\t\t if (constraint.render.lineWidth) {\n\t\t c.lineWidth = constraint.render.lineWidth;\n\t\t c.strokeStyle = constraint.render.strokeStyle;\n\t\t c.stroke();\n\t\t }\n\n\t\t if (constraint.render.anchors) {\n\t\t c.fillStyle = constraint.render.strokeStyle;\n\t\t c.beginPath();\n\t\t c.arc(start.x, start.y, 3, 0, 2 * Math.PI);\n\t\t c.arc(end.x, end.y, 3, 0, 2 * Math.PI);\n\t\t c.closePath();\n\t\t c.fill();\n\t\t }\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Description\n\t\t * @private\n\t\t * @method bodies\n\t\t * @param {render} render\n\t\t * @param {body[]} bodies\n\t\t * @param {RenderingContext} context\n\t\t */\n\t\t Render.bodies = function(render, bodies, context) {\n\t\t var c = context;\n\t\t render.engine;\n\t\t var options = render.options,\n\t\t showInternalEdges = options.showInternalEdges || !options.wireframes,\n\t\t body,\n\t\t part,\n\t\t i,\n\t\t k;\n\n\t\t for (i = 0; i < bodies.length; i++) {\n\t\t body = bodies[i];\n\n\t\t if (!body.render.visible)\n\t\t continue;\n\n\t\t // handle compound parts\n\t\t for (k = body.parts.length > 1 ? 1 : 0; k < body.parts.length; k++) {\n\t\t part = body.parts[k];\n\n\t\t if (!part.render.visible)\n\t\t continue;\n\n\t\t if (options.showSleeping && body.isSleeping) {\n\t\t c.globalAlpha = 0.5 * part.render.opacity;\n\t\t } else if (part.render.opacity !== 1) {\n\t\t c.globalAlpha = part.render.opacity;\n\t\t }\n\n\t\t if (part.render.sprite && part.render.sprite.texture && !options.wireframes) {\n\t\t // part sprite\n\t\t var sprite = part.render.sprite,\n\t\t texture = _getTexture(render, sprite.texture);\n\n\t\t c.translate(part.position.x, part.position.y);\n\t\t c.rotate(part.angle);\n\n\t\t c.drawImage(\n\t\t texture,\n\t\t texture.width * -sprite.xOffset * sprite.xScale,\n\t\t texture.height * -sprite.yOffset * sprite.yScale,\n\t\t texture.width * sprite.xScale,\n\t\t texture.height * sprite.yScale\n\t\t );\n\n\t\t // revert translation, hopefully faster than save / restore\n\t\t c.rotate(-part.angle);\n\t\t c.translate(-part.position.x, -part.position.y);\n\t\t } else {\n\t\t // part polygon\n\t\t if (part.circleRadius) {\n\t\t c.beginPath();\n\t\t c.arc(part.position.x, part.position.y, part.circleRadius, 0, 2 * Math.PI);\n\t\t } else {\n\t\t c.beginPath();\n\t\t c.moveTo(part.vertices[0].x, part.vertices[0].y);\n\n\t\t for (var j = 1; j < part.vertices.length; j++) {\n\t\t if (!part.vertices[j - 1].isInternal || showInternalEdges) {\n\t\t c.lineTo(part.vertices[j].x, part.vertices[j].y);\n\t\t } else {\n\t\t c.moveTo(part.vertices[j].x, part.vertices[j].y);\n\t\t }\n\n\t\t if (part.vertices[j].isInternal && !showInternalEdges) {\n\t\t c.moveTo(part.vertices[(j + 1) % part.vertices.length].x, part.vertices[(j + 1) % part.vertices.length].y);\n\t\t }\n\t\t }\n\n\t\t c.lineTo(part.vertices[0].x, part.vertices[0].y);\n\t\t c.closePath();\n\t\t }\n\n\t\t if (!options.wireframes) {\n\t\t c.fillStyle = part.render.fillStyle;\n\n\t\t if (part.render.lineWidth) {\n\t\t c.lineWidth = part.render.lineWidth;\n\t\t c.strokeStyle = part.render.strokeStyle;\n\t\t c.stroke();\n\t\t }\n\n\t\t c.fill();\n\t\t } else {\n\t\t c.lineWidth = 1;\n\t\t c.strokeStyle = render.options.wireframeStrokeStyle;\n\t\t c.stroke();\n\t\t }\n\t\t }\n\n\t\t c.globalAlpha = 1;\n\t\t }\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Optimised method for drawing body wireframes in one pass\n\t\t * @private\n\t\t * @method bodyWireframes\n\t\t * @param {render} render\n\t\t * @param {body[]} bodies\n\t\t * @param {RenderingContext} context\n\t\t */\n\t\t Render.bodyWireframes = function(render, bodies, context) {\n\t\t var c = context,\n\t\t showInternalEdges = render.options.showInternalEdges,\n\t\t body,\n\t\t part,\n\t\t i,\n\t\t j,\n\t\t k;\n\n\t\t c.beginPath();\n\n\t\t // render all bodies\n\t\t for (i = 0; i < bodies.length; i++) {\n\t\t body = bodies[i];\n\n\t\t if (!body.render.visible)\n\t\t continue;\n\n\t\t // handle compound parts\n\t\t for (k = body.parts.length > 1 ? 1 : 0; k < body.parts.length; k++) {\n\t\t part = body.parts[k];\n\n\t\t c.moveTo(part.vertices[0].x, part.vertices[0].y);\n\n\t\t for (j = 1; j < part.vertices.length; j++) {\n\t\t if (!part.vertices[j - 1].isInternal || showInternalEdges) {\n\t\t c.lineTo(part.vertices[j].x, part.vertices[j].y);\n\t\t } else {\n\t\t c.moveTo(part.vertices[j].x, part.vertices[j].y);\n\t\t }\n\n\t\t if (part.vertices[j].isInternal && !showInternalEdges) {\n\t\t c.moveTo(part.vertices[(j + 1) % part.vertices.length].x, part.vertices[(j + 1) % part.vertices.length].y);\n\t\t }\n\t\t }\n\n\t\t c.lineTo(part.vertices[0].x, part.vertices[0].y);\n\t\t }\n\t\t }\n\n\t\t c.lineWidth = 1;\n\t\t c.strokeStyle = render.options.wireframeStrokeStyle;\n\t\t c.stroke();\n\t\t };\n\n\t\t /**\n\t\t * Optimised method for drawing body convex hull wireframes in one pass\n\t\t * @private\n\t\t * @method bodyConvexHulls\n\t\t * @param {render} render\n\t\t * @param {body[]} bodies\n\t\t * @param {RenderingContext} context\n\t\t */\n\t\t Render.bodyConvexHulls = function(render, bodies, context) {\n\t\t var c = context,\n\t\t body,\n\t\t i,\n\t\t j;\n\n\t\t c.beginPath();\n\n\t\t // render convex hulls\n\t\t for (i = 0; i < bodies.length; i++) {\n\t\t body = bodies[i];\n\n\t\t if (!body.render.visible || body.parts.length === 1)\n\t\t continue;\n\n\t\t c.moveTo(body.vertices[0].x, body.vertices[0].y);\n\n\t\t for (j = 1; j < body.vertices.length; j++) {\n\t\t c.lineTo(body.vertices[j].x, body.vertices[j].y);\n\t\t }\n\n\t\t c.lineTo(body.vertices[0].x, body.vertices[0].y);\n\t\t }\n\n\t\t c.lineWidth = 1;\n\t\t c.strokeStyle = 'rgba(255,255,255,0.2)';\n\t\t c.stroke();\n\t\t };\n\n\t\t /**\n\t\t * Renders body vertex numbers.\n\t\t * @private\n\t\t * @method vertexNumbers\n\t\t * @param {render} render\n\t\t * @param {body[]} bodies\n\t\t * @param {RenderingContext} context\n\t\t */\n\t\t Render.vertexNumbers = function(render, bodies, context) {\n\t\t var c = context,\n\t\t i,\n\t\t j,\n\t\t k;\n\n\t\t for (i = 0; i < bodies.length; i++) {\n\t\t var parts = bodies[i].parts;\n\t\t for (k = parts.length > 1 ? 1 : 0; k < parts.length; k++) {\n\t\t var part = parts[k];\n\t\t for (j = 0; j < part.vertices.length; j++) {\n\t\t c.fillStyle = 'rgba(255,255,255,0.2)';\n\t\t c.fillText(i + '_' + j, part.position.x + (part.vertices[j].x - part.position.x) * 0.8, part.position.y + (part.vertices[j].y - part.position.y) * 0.8);\n\t\t }\n\t\t }\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Renders mouse position.\n\t\t * @private\n\t\t * @method mousePosition\n\t\t * @param {render} render\n\t\t * @param {mouse} mouse\n\t\t * @param {RenderingContext} context\n\t\t */\n\t\t Render.mousePosition = function(render, mouse, context) {\n\t\t var c = context;\n\t\t c.fillStyle = 'rgba(255,255,255,0.8)';\n\t\t c.fillText(mouse.position.x + ' ' + mouse.position.y, mouse.position.x + 5, mouse.position.y - 5);\n\t\t };\n\n\t\t /**\n\t\t * Draws body bounds\n\t\t * @private\n\t\t * @method bodyBounds\n\t\t * @param {render} render\n\t\t * @param {body[]} bodies\n\t\t * @param {RenderingContext} context\n\t\t */\n\t\t Render.bodyBounds = function(render, bodies, context) {\n\t\t var c = context;\n\t\t render.engine;\n\t\t var options = render.options;\n\n\t\t c.beginPath();\n\n\t\t for (var i = 0; i < bodies.length; i++) {\n\t\t var body = bodies[i];\n\n\t\t if (body.render.visible) {\n\t\t var parts = bodies[i].parts;\n\t\t for (var j = parts.length > 1 ? 1 : 0; j < parts.length; j++) {\n\t\t var part = parts[j];\n\t\t c.rect(part.bounds.min.x, part.bounds.min.y, part.bounds.max.x - part.bounds.min.x, part.bounds.max.y - part.bounds.min.y);\n\t\t }\n\t\t }\n\t\t }\n\n\t\t if (options.wireframes) {\n\t\t c.strokeStyle = 'rgba(255,255,255,0.08)';\n\t\t } else {\n\t\t c.strokeStyle = 'rgba(0,0,0,0.1)';\n\t\t }\n\n\t\t c.lineWidth = 1;\n\t\t c.stroke();\n\t\t };\n\n\t\t /**\n\t\t * Draws body angle indicators and axes\n\t\t * @private\n\t\t * @method bodyAxes\n\t\t * @param {render} render\n\t\t * @param {body[]} bodies\n\t\t * @param {RenderingContext} context\n\t\t */\n\t\t Render.bodyAxes = function(render, bodies, context) {\n\t\t var c = context;\n\t\t render.engine;\n\t\t var options = render.options,\n\t\t part,\n\t\t i,\n\t\t j,\n\t\t k;\n\n\t\t c.beginPath();\n\n\t\t for (i = 0; i < bodies.length; i++) {\n\t\t var body = bodies[i],\n\t\t parts = body.parts;\n\n\t\t if (!body.render.visible)\n\t\t continue;\n\n\t\t if (options.showAxes) {\n\t\t // render all axes\n\t\t for (j = parts.length > 1 ? 1 : 0; j < parts.length; j++) {\n\t\t part = parts[j];\n\t\t for (k = 0; k < part.axes.length; k++) {\n\t\t var axis = part.axes[k];\n\t\t c.moveTo(part.position.x, part.position.y);\n\t\t c.lineTo(part.position.x + axis.x * 20, part.position.y + axis.y * 20);\n\t\t }\n\t\t }\n\t\t } else {\n\t\t for (j = parts.length > 1 ? 1 : 0; j < parts.length; j++) {\n\t\t part = parts[j];\n\t\t for (k = 0; k < part.axes.length; k++) {\n\t\t // render a single axis indicator\n\t\t c.moveTo(part.position.x, part.position.y);\n\t\t c.lineTo((part.vertices[0].x + part.vertices[part.vertices.length-1].x) / 2,\n\t\t (part.vertices[0].y + part.vertices[part.vertices.length-1].y) / 2);\n\t\t }\n\t\t }\n\t\t }\n\t\t }\n\n\t\t if (options.wireframes) {\n\t\t c.strokeStyle = 'indianred';\n\t\t c.lineWidth = 1;\n\t\t } else {\n\t\t c.strokeStyle = 'rgba(255, 255, 255, 0.4)';\n\t\t c.globalCompositeOperation = 'overlay';\n\t\t c.lineWidth = 2;\n\t\t }\n\n\t\t c.stroke();\n\t\t c.globalCompositeOperation = 'source-over';\n\t\t };\n\n\t\t /**\n\t\t * Draws body positions\n\t\t * @private\n\t\t * @method bodyPositions\n\t\t * @param {render} render\n\t\t * @param {body[]} bodies\n\t\t * @param {RenderingContext} context\n\t\t */\n\t\t Render.bodyPositions = function(render, bodies, context) {\n\t\t var c = context;\n\t\t render.engine;\n\t\t var options = render.options,\n\t\t body,\n\t\t part,\n\t\t i,\n\t\t k;\n\n\t\t c.beginPath();\n\n\t\t // render current positions\n\t\t for (i = 0; i < bodies.length; i++) {\n\t\t body = bodies[i];\n\n\t\t if (!body.render.visible)\n\t\t continue;\n\n\t\t // handle compound parts\n\t\t for (k = 0; k < body.parts.length; k++) {\n\t\t part = body.parts[k];\n\t\t c.arc(part.position.x, part.position.y, 3, 0, 2 * Math.PI, false);\n\t\t c.closePath();\n\t\t }\n\t\t }\n\n\t\t if (options.wireframes) {\n\t\t c.fillStyle = 'indianred';\n\t\t } else {\n\t\t c.fillStyle = 'rgba(0,0,0,0.5)';\n\t\t }\n\t\t c.fill();\n\n\t\t c.beginPath();\n\n\t\t // render previous positions\n\t\t for (i = 0; i < bodies.length; i++) {\n\t\t body = bodies[i];\n\t\t if (body.render.visible) {\n\t\t c.arc(body.positionPrev.x, body.positionPrev.y, 2, 0, 2 * Math.PI, false);\n\t\t c.closePath();\n\t\t }\n\t\t }\n\n\t\t c.fillStyle = 'rgba(255,165,0,0.8)';\n\t\t c.fill();\n\t\t };\n\n\t\t /**\n\t\t * Draws body velocity\n\t\t * @private\n\t\t * @method bodyVelocity\n\t\t * @param {render} render\n\t\t * @param {body[]} bodies\n\t\t * @param {RenderingContext} context\n\t\t */\n\t\t Render.bodyVelocity = function(render, bodies, context) {\n\t\t var c = context;\n\n\t\t c.beginPath();\n\n\t\t for (var i = 0; i < bodies.length; i++) {\n\t\t var body = bodies[i];\n\n\t\t if (!body.render.visible)\n\t\t continue;\n\n\t\t var velocity = Body.getVelocity(body);\n\n\t\t c.moveTo(body.position.x, body.position.y);\n\t\t c.lineTo(body.position.x + velocity.x, body.position.y + velocity.y);\n\t\t }\n\n\t\t c.lineWidth = 3;\n\t\t c.strokeStyle = 'cornflowerblue';\n\t\t c.stroke();\n\t\t };\n\n\t\t /**\n\t\t * Draws body ids\n\t\t * @private\n\t\t * @method bodyIds\n\t\t * @param {render} render\n\t\t * @param {body[]} bodies\n\t\t * @param {RenderingContext} context\n\t\t */\n\t\t Render.bodyIds = function(render, bodies, context) {\n\t\t var c = context,\n\t\t i,\n\t\t j;\n\n\t\t for (i = 0; i < bodies.length; i++) {\n\t\t if (!bodies[i].render.visible)\n\t\t continue;\n\n\t\t var parts = bodies[i].parts;\n\t\t for (j = parts.length > 1 ? 1 : 0; j < parts.length; j++) {\n\t\t var part = parts[j];\n\t\t c.font = \"12px Arial\";\n\t\t c.fillStyle = 'rgba(255,255,255,0.5)';\n\t\t c.fillText(part.id, part.position.x + 10, part.position.y - 10);\n\t\t }\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Description\n\t\t * @private\n\t\t * @method collisions\n\t\t * @param {render} render\n\t\t * @param {pair[]} pairs\n\t\t * @param {RenderingContext} context\n\t\t */\n\t\t Render.collisions = function(render, pairs, context) {\n\t\t var c = context,\n\t\t options = render.options,\n\t\t pair,\n\t\t collision,\n\t\t i,\n\t\t j;\n\n\t\t c.beginPath();\n\n\t\t // render collision positions\n\t\t for (i = 0; i < pairs.length; i++) {\n\t\t pair = pairs[i];\n\n\t\t if (!pair.isActive)\n\t\t continue;\n\n\t\t collision = pair.collision;\n\t\t for (j = 0; j < pair.contactCount; j++) {\n\t\t var contact = pair.contacts[j],\n\t\t vertex = contact.vertex;\n\t\t c.rect(vertex.x - 1.5, vertex.y - 1.5, 3.5, 3.5);\n\t\t }\n\t\t }\n\n\t\t if (options.wireframes) {\n\t\t c.fillStyle = 'rgba(255,255,255,0.7)';\n\t\t } else {\n\t\t c.fillStyle = 'orange';\n\t\t }\n\t\t c.fill();\n\n\t\t c.beginPath();\n\n\t\t // render collision normals\n\t\t for (i = 0; i < pairs.length; i++) {\n\t\t pair = pairs[i];\n\n\t\t if (!pair.isActive)\n\t\t continue;\n\n\t\t collision = pair.collision;\n\n\t\t if (pair.contactCount > 0) {\n\t\t var normalPosX = pair.contacts[0].vertex.x,\n\t\t normalPosY = pair.contacts[0].vertex.y;\n\n\t\t if (pair.contactCount === 2) {\n\t\t normalPosX = (pair.contacts[0].vertex.x + pair.contacts[1].vertex.x) / 2;\n\t\t normalPosY = (pair.contacts[0].vertex.y + pair.contacts[1].vertex.y) / 2;\n\t\t }\n\n\t\t if (collision.bodyB === collision.supports[0].body || collision.bodyA.isStatic === true) {\n\t\t c.moveTo(normalPosX - collision.normal.x * 8, normalPosY - collision.normal.y * 8);\n\t\t } else {\n\t\t c.moveTo(normalPosX + collision.normal.x * 8, normalPosY + collision.normal.y * 8);\n\t\t }\n\n\t\t c.lineTo(normalPosX, normalPosY);\n\t\t }\n\t\t }\n\n\t\t if (options.wireframes) {\n\t\t c.strokeStyle = 'rgba(255,165,0,0.7)';\n\t\t } else {\n\t\t c.strokeStyle = 'orange';\n\t\t }\n\n\t\t c.lineWidth = 1;\n\t\t c.stroke();\n\t\t };\n\n\t\t /**\n\t\t * Description\n\t\t * @private\n\t\t * @method separations\n\t\t * @param {render} render\n\t\t * @param {pair[]} pairs\n\t\t * @param {RenderingContext} context\n\t\t */\n\t\t Render.separations = function(render, pairs, context) {\n\t\t var c = context,\n\t\t options = render.options,\n\t\t pair,\n\t\t collision,\n\t\t bodyA,\n\t\t bodyB,\n\t\t i;\n\n\t\t c.beginPath();\n\n\t\t // render separations\n\t\t for (i = 0; i < pairs.length; i++) {\n\t\t pair = pairs[i];\n\n\t\t if (!pair.isActive)\n\t\t continue;\n\n\t\t collision = pair.collision;\n\t\t bodyA = collision.bodyA;\n\t\t bodyB = collision.bodyB;\n\n\t\t var k = 1;\n\n\t\t if (!bodyB.isStatic && !bodyA.isStatic) k = 0.5;\n\t\t if (bodyB.isStatic) k = 0;\n\n\t\t c.moveTo(bodyB.position.x, bodyB.position.y);\n\t\t c.lineTo(bodyB.position.x - collision.penetration.x * k, bodyB.position.y - collision.penetration.y * k);\n\n\t\t k = 1;\n\n\t\t if (!bodyB.isStatic && !bodyA.isStatic) k = 0.5;\n\t\t if (bodyA.isStatic) k = 0;\n\n\t\t c.moveTo(bodyA.position.x, bodyA.position.y);\n\t\t c.lineTo(bodyA.position.x + collision.penetration.x * k, bodyA.position.y + collision.penetration.y * k);\n\t\t }\n\n\t\t if (options.wireframes) {\n\t\t c.strokeStyle = 'rgba(255,165,0,0.5)';\n\t\t } else {\n\t\t c.strokeStyle = 'orange';\n\t\t }\n\t\t c.stroke();\n\t\t };\n\n\t\t /**\n\t\t * Description\n\t\t * @private\n\t\t * @method inspector\n\t\t * @param {inspector} inspector\n\t\t * @param {RenderingContext} context\n\t\t */\n\t\t Render.inspector = function(inspector, context) {\n\t\t inspector.engine;\n\t\t var selected = inspector.selected,\n\t\t render = inspector.render,\n\t\t options = render.options,\n\t\t bounds;\n\n\t\t if (options.hasBounds) {\n\t\t var boundsWidth = render.bounds.max.x - render.bounds.min.x,\n\t\t boundsHeight = render.bounds.max.y - render.bounds.min.y,\n\t\t boundsScaleX = boundsWidth / render.options.width,\n\t\t boundsScaleY = boundsHeight / render.options.height;\n\n\t\t context.scale(1 / boundsScaleX, 1 / boundsScaleY);\n\t\t context.translate(-render.bounds.min.x, -render.bounds.min.y);\n\t\t }\n\n\t\t for (var i = 0; i < selected.length; i++) {\n\t\t var item = selected[i].data;\n\n\t\t context.translate(0.5, 0.5);\n\t\t context.lineWidth = 1;\n\t\t context.strokeStyle = 'rgba(255,165,0,0.9)';\n\t\t context.setLineDash([1,2]);\n\n\t\t switch (item.type) {\n\n\t\t case 'body':\n\n\t\t // render body selections\n\t\t bounds = item.bounds;\n\t\t context.beginPath();\n\t\t context.rect(Math.floor(bounds.min.x - 3), Math.floor(bounds.min.y - 3),\n\t\t Math.floor(bounds.max.x - bounds.min.x + 6), Math.floor(bounds.max.y - bounds.min.y + 6));\n\t\t context.closePath();\n\t\t context.stroke();\n\n\t\t break;\n\n\t\t case 'constraint':\n\n\t\t // render constraint selections\n\t\t var point = item.pointA;\n\t\t if (item.bodyA)\n\t\t point = item.pointB;\n\t\t context.beginPath();\n\t\t context.arc(point.x, point.y, 10, 0, 2 * Math.PI);\n\t\t context.closePath();\n\t\t context.stroke();\n\n\t\t break;\n\n\t\t }\n\n\t\t context.setLineDash([]);\n\t\t context.translate(-0.5, -0.5);\n\t\t }\n\n\t\t // render selection region\n\t\t if (inspector.selectStart !== null) {\n\t\t context.translate(0.5, 0.5);\n\t\t context.lineWidth = 1;\n\t\t context.strokeStyle = 'rgba(255,165,0,0.6)';\n\t\t context.fillStyle = 'rgba(255,165,0,0.1)';\n\t\t bounds = inspector.selectBounds;\n\t\t context.beginPath();\n\t\t context.rect(Math.floor(bounds.min.x), Math.floor(bounds.min.y),\n\t\t Math.floor(bounds.max.x - bounds.min.x), Math.floor(bounds.max.y - bounds.min.y));\n\t\t context.closePath();\n\t\t context.stroke();\n\t\t context.fill();\n\t\t context.translate(-0.5, -0.5);\n\t\t }\n\n\t\t if (options.hasBounds)\n\t\t context.setTransform(1, 0, 0, 1, 0, 0);\n\t\t };\n\n\t\t /**\n\t\t * Updates render timing.\n\t\t * @method _updateTiming\n\t\t * @private\n\t\t * @param {render} render\n\t\t * @param {number} time\n\t\t */\n\t\t var _updateTiming = function(render, time) {\n\t\t var engine = render.engine,\n\t\t timing = render.timing,\n\t\t historySize = timing.historySize,\n\t\t timestamp = engine.timing.timestamp;\n\n\t\t timing.delta = time - timing.lastTime || Render._goodDelta;\n\t\t timing.lastTime = time;\n\n\t\t timing.timestampElapsed = timestamp - timing.lastTimestamp || 0;\n\t\t timing.lastTimestamp = timestamp;\n\n\t\t timing.deltaHistory.unshift(timing.delta);\n\t\t timing.deltaHistory.length = Math.min(timing.deltaHistory.length, historySize);\n\n\t\t timing.engineDeltaHistory.unshift(engine.timing.lastDelta);\n\t\t timing.engineDeltaHistory.length = Math.min(timing.engineDeltaHistory.length, historySize);\n\n\t\t timing.timestampElapsedHistory.unshift(timing.timestampElapsed);\n\t\t timing.timestampElapsedHistory.length = Math.min(timing.timestampElapsedHistory.length, historySize);\n\n\t\t timing.engineUpdatesHistory.unshift(engine.timing.lastUpdatesPerFrame);\n\t\t timing.engineUpdatesHistory.length = Math.min(timing.engineUpdatesHistory.length, historySize);\n\n\t\t timing.engineElapsedHistory.unshift(engine.timing.lastElapsed);\n\t\t timing.engineElapsedHistory.length = Math.min(timing.engineElapsedHistory.length, historySize);\n\n\t\t timing.elapsedHistory.unshift(timing.lastElapsed);\n\t\t timing.elapsedHistory.length = Math.min(timing.elapsedHistory.length, historySize);\n\t\t };\n\n\t\t /**\n\t\t * Returns the mean value of the given numbers.\n\t\t * @method _mean\n\t\t * @private\n\t\t * @param {Number[]} values\n\t\t * @return {Number} the mean of given values\n\t\t */\n\t\t var _mean = function(values) {\n\t\t var result = 0;\n\t\t for (var i = 0; i < values.length; i += 1) {\n\t\t result += values[i];\n\t\t }\n\t\t return (result / values.length) || 0;\n\t\t };\n\n\t\t /**\n\t\t * @method _createCanvas\n\t\t * @private\n\t\t * @param {} width\n\t\t * @param {} height\n\t\t * @return canvas\n\t\t */\n\t\t var _createCanvas = function(width, height) {\n\t\t var canvas = document.createElement('canvas');\n\t\t canvas.width = width;\n\t\t canvas.height = height;\n\t\t canvas.oncontextmenu = function() { return false; };\n\t\t canvas.onselectstart = function() { return false; };\n\t\t return canvas;\n\t\t };\n\n\t\t /**\n\t\t * Gets the pixel ratio of the canvas.\n\t\t * @method _getPixelRatio\n\t\t * @private\n\t\t * @param {HTMLElement} canvas\n\t\t * @return {Number} pixel ratio\n\t\t */\n\t\t var _getPixelRatio = function(canvas) {\n\t\t var context = canvas.getContext('2d'),\n\t\t devicePixelRatio = window.devicePixelRatio || 1,\n\t\t backingStorePixelRatio = context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio\n\t\t || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio\n\t\t || context.backingStorePixelRatio || 1;\n\n\t\t return devicePixelRatio / backingStorePixelRatio;\n\t\t };\n\n\t\t /**\n\t\t * Gets the requested texture (an Image) via its path\n\t\t * @method _getTexture\n\t\t * @private\n\t\t * @param {render} render\n\t\t * @param {string} imagePath\n\t\t * @return {Image} texture\n\t\t */\n\t\t var _getTexture = function(render, imagePath) {\n\t\t var image = render.textures[imagePath];\n\n\t\t if (image)\n\t\t return image;\n\n\t\t image = render.textures[imagePath] = new Image();\n\t\t image.src = imagePath;\n\n\t\t return image;\n\t\t };\n\n\t\t /**\n\t\t * Applies the background to the canvas using CSS.\n\t\t * @method applyBackground\n\t\t * @private\n\t\t * @param {render} render\n\t\t * @param {string} background\n\t\t */\n\t\t var _applyBackground = function(render, background) {\n\t\t var cssBackground = background;\n\n\t\t if (/(jpg|gif|png)$/.test(background))\n\t\t cssBackground = 'url(' + background + ')';\n\n\t\t render.canvas.style.background = cssBackground;\n\t\t render.canvas.style.backgroundSize = \"contain\";\n\t\t render.currentBackground = background;\n\t\t };\n\n\t\t /*\n\t\t *\n\t\t * Events Documentation\n\t\t *\n\t\t */\n\n\t\t /**\n\t\t * Fired before rendering\n\t\t *\n\t\t * @event beforeRender\n\t\t * @param {} event An event object\n\t\t * @param {number} event.timestamp The engine.timing.timestamp of the event\n\t\t * @param {} event.source The source object of the event\n\t\t * @param {} event.name The name of the event\n\t\t */\n\n\t\t /**\n\t\t * Fired after rendering\n\t\t *\n\t\t * @event afterRender\n\t\t * @param {} event An event object\n\t\t * @param {number} event.timestamp The engine.timing.timestamp of the event\n\t\t * @param {} event.source The source object of the event\n\t\t * @param {} event.name The name of the event\n\t\t */\n\n\t\t /*\n\t\t *\n\t\t * Properties Documentation\n\t\t *\n\t\t */\n\n\t\t /**\n\t\t * A back-reference to the `Matter.Render` module.\n\t\t *\n\t\t * @deprecated\n\t\t * @property controller\n\t\t * @type render\n\t\t */\n\n\t\t /**\n\t\t * A reference to the `Matter.Engine` instance to be used.\n\t\t *\n\t\t * @property engine\n\t\t * @type engine\n\t\t */\n\n\t\t /**\n\t\t * A reference to the element where the canvas is to be inserted (if `render.canvas` has not been specified)\n\t\t *\n\t\t * @property element\n\t\t * @type HTMLElement\n\t\t * @default null\n\t\t */\n\n\t\t /**\n\t\t * The canvas element to render to. If not specified, one will be created if `render.element` has been specified.\n\t\t *\n\t\t * @property canvas\n\t\t * @type HTMLCanvasElement\n\t\t * @default null\n\t\t */\n\n\t\t /**\n\t\t * A `Bounds` object that specifies the drawing view region.\n\t\t * Rendering will be automatically transformed and scaled to fit within the canvas size (`render.options.width` and `render.options.height`).\n\t\t * This allows for creating views that can pan or zoom around the scene.\n\t\t * You must also set `render.options.hasBounds` to `true` to enable bounded rendering.\n\t\t *\n\t\t * @property bounds\n\t\t * @type bounds\n\t\t */\n\n\t\t /**\n\t\t * The 2d rendering context from the `render.canvas` element.\n\t\t *\n\t\t * @property context\n\t\t * @type CanvasRenderingContext2D\n\t\t */\n\n\t\t /**\n\t\t * The sprite texture cache.\n\t\t *\n\t\t * @property textures\n\t\t * @type {}\n\t\t */\n\n\t\t /**\n\t\t * The mouse to render if `render.options.showMousePosition` is enabled.\n\t\t *\n\t\t * @property mouse\n\t\t * @type mouse\n\t\t * @default null\n\t\t */\n\n\t\t /**\n\t\t * The configuration options of the renderer.\n\t\t *\n\t\t * @property options\n\t\t * @type {}\n\t\t */\n\n\t\t /**\n\t\t * The target width in pixels of the `render.canvas` to be created.\n\t\t * See also the `options.pixelRatio` property to change render quality.\n\t\t *\n\t\t * @property options.width\n\t\t * @type number\n\t\t * @default 800\n\t\t */\n\n\t\t /**\n\t\t * The target height in pixels of the `render.canvas` to be created.\n\t\t * See also the `options.pixelRatio` property to change render quality.\n\t\t *\n\t\t * @property options.height\n\t\t * @type number\n\t\t * @default 600\n\t\t */\n\n\t\t /**\n\t\t * The [pixel ratio](https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio) to use when rendering.\n\t\t *\n\t\t * @property options.pixelRatio\n\t\t * @type number\n\t\t * @default 1\n\t\t */\n\n\t\t /**\n\t\t * A CSS background color string to use when `render.options.wireframes` is disabled.\n\t\t * This may be also set to `'transparent'` or equivalent.\n\t\t *\n\t\t * @property options.background\n\t\t * @type string\n\t\t * @default '#14151f'\n\t\t */\n\n\t\t /**\n\t\t * A CSS color string to use for background when `render.options.wireframes` is enabled.\n\t\t * This may be also set to `'transparent'` or equivalent.\n\t\t *\n\t\t * @property options.wireframeBackground\n\t\t * @type string\n\t\t * @default '#14151f'\n\t\t */\n\n\t\t /**\n\t\t * A CSS color string to use for stroke when `render.options.wireframes` is enabled.\n\t\t * This may be also set to `'transparent'` or equivalent.\n\t\t *\n\t\t * @property options.wireframeStrokeStyle\n\t\t * @type string\n\t\t * @default '#bbb'\n\t\t */\n\n\t\t /**\n\t\t * A flag that specifies if `render.bounds` should be used when rendering.\n\t\t *\n\t\t * @property options.hasBounds\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\n\t\t /**\n\t\t * A flag to enable or disable all debug information overlays together. \n\t\t * This includes and has priority over the values of:\n\t\t *\n\t\t * - `render.options.showStats`\n\t\t * - `render.options.showPerformance`\n\t\t *\n\t\t * @property options.showDebug\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\n\t\t /**\n\t\t * A flag to enable or disable the engine stats info overlay. \n\t\t * From left to right, the values shown are:\n\t\t *\n\t\t * - body parts total\n\t\t * - body total\n\t\t * - constraints total\n\t\t * - composites total\n\t\t * - collision pairs total\n\t\t *\n\t\t * @property options.showStats\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\n\t\t /**\n\t\t * A flag to enable or disable performance charts. \n\t\t * From left to right, the values shown are:\n\t\t *\n\t\t * - average render frequency (e.g. 60 fps)\n\t\t * - exact engine delta time used for last update (e.g. 16.66ms)\n\t\t * - average updates per frame (e.g. 1)\n\t\t * - average engine execution duration (e.g. 5.00ms)\n\t\t * - average render execution duration (e.g. 0.40ms)\n\t\t * - average effective play speed (e.g. '1.00x' is 'real-time')\n\t\t *\n\t\t * Each value is recorded over a fixed sample of past frames (60 frames).\n\t\t *\n\t\t * A chart shown below each value indicates the variance from the average over the sample.\n\t\t * The more stable or fixed the value is the flatter the chart will appear.\n\t\t *\n\t\t * @property options.showPerformance\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\t\t \n\t\t /**\n\t\t * A flag to enable or disable rendering entirely.\n\t\t *\n\t\t * @property options.enabled\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\n\t\t /**\n\t\t * A flag to toggle wireframe rendering otherwise solid fill rendering is used.\n\t\t *\n\t\t * @property options.wireframes\n\t\t * @type boolean\n\t\t * @default true\n\t\t */\n\n\t\t /**\n\t\t * A flag to enable or disable sleeping bodies indicators.\n\t\t *\n\t\t * @property options.showSleeping\n\t\t * @type boolean\n\t\t * @default true\n\t\t */\n\n\t\t /**\n\t\t * A flag to enable or disable the debug information overlay.\n\t\t *\n\t\t * @property options.showDebug\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\n\t\t /**\n\t\t * A flag to enable or disable the collision broadphase debug overlay.\n\t\t *\n\t\t * @deprecated no longer implemented\n\t\t * @property options.showBroadphase\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\n\t\t /**\n\t\t * A flag to enable or disable the body bounds debug overlay.\n\t\t *\n\t\t * @property options.showBounds\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\n\t\t /**\n\t\t * A flag to enable or disable the body velocity debug overlay.\n\t\t *\n\t\t * @property options.showVelocity\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\n\t\t /**\n\t\t * A flag to enable or disable the body collisions debug overlay.\n\t\t *\n\t\t * @property options.showCollisions\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\n\t\t /**\n\t\t * A flag to enable or disable the collision resolver separations debug overlay.\n\t\t *\n\t\t * @property options.showSeparations\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\n\t\t /**\n\t\t * A flag to enable or disable the body axes debug overlay.\n\t\t *\n\t\t * @property options.showAxes\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\n\t\t /**\n\t\t * A flag to enable or disable the body positions debug overlay.\n\t\t *\n\t\t * @property options.showPositions\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\n\t\t /**\n\t\t * A flag to enable or disable the body angle debug overlay.\n\t\t *\n\t\t * @property options.showAngleIndicator\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\n\t\t /**\n\t\t * A flag to enable or disable the body and part ids debug overlay.\n\t\t *\n\t\t * @property options.showIds\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\n\t\t /**\n\t\t * A flag to enable or disable the body vertex numbers debug overlay.\n\t\t *\n\t\t * @property options.showVertexNumbers\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\n\t\t /**\n\t\t * A flag to enable or disable the body convex hulls debug overlay.\n\t\t *\n\t\t * @property options.showConvexHulls\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\n\t\t /**\n\t\t * A flag to enable or disable the body internal edges debug overlay.\n\t\t *\n\t\t * @property options.showInternalEdges\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\n\t\t /**\n\t\t * A flag to enable or disable the mouse position debug overlay.\n\t\t *\n\t\t * @property options.showMousePosition\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 27 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\n\t\t* The `Matter.Runner` module is an optional utility that provides a game loop for running a `Matter.Engine` inside a browser environment.\n\t\t* A runner will continuously update a `Matter.Engine` whilst synchronising engine updates with the browser frame rate.\n\t\t* This runner favours a smoother user experience over perfect time keeping.\n\t\t* This runner is optional and is used for development and debugging but could be useful as a starting point for implementing some games and experiences.\n\t\t* Alternatively see `Engine.update` to step the engine directly inside your own game loop implementation as may be needed inside other environments.\n\t\t*\n\t\t* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n\t\t*\n\t\t* @class Runner\n\t\t*/\n\n\t\tvar Runner = {};\n\n\t\tmodule.exports = Runner;\n\n\t\tvar Events = __webpack_require__(5);\n\t\tvar Engine = __webpack_require__(17);\n\t\tvar Common = __webpack_require__(0);\n\n\t\t(function() {\n\n\t\t Runner._maxFrameDelta = 1000 / 15;\n\t\t Runner._frameDeltaFallback = 1000 / 60;\n\t\t Runner._timeBufferMargin = 1.5;\n\t\t Runner._elapsedNextEstimate = 1;\n\t\t Runner._smoothingLowerBound = 0.1;\n\t\t Runner._smoothingUpperBound = 0.9;\n\n\t\t /**\n\t\t * Creates a new Runner. \n\t\t * See the properties section below for detailed information on what you can pass via the `options` object.\n\t\t * @method create\n\t\t * @param {} options\n\t\t */\n\t\t Runner.create = function(options) {\n\t\t var defaults = {\n\t\t delta: 1000 / 60,\n\t\t frameDelta: null,\n\t\t frameDeltaSmoothing: true,\n\t\t frameDeltaSnapping: true,\n\t\t frameDeltaHistory: [],\n\t\t frameDeltaHistorySize: 100,\n\t\t frameRequestId: null,\n\t\t timeBuffer: 0,\n\t\t timeLastTick: null,\n\t\t maxUpdates: null,\n\t\t maxFrameTime: 1000 / 30,\n\t\t lastUpdatesDeferred: 0,\n\t\t enabled: true\n\t\t };\n\n\t\t var runner = Common.extend(defaults, options);\n\n\t\t // for temporary back compatibility only\n\t\t runner.fps = 0;\n\n\t\t return runner;\n\t\t };\n\n\t\t /**\n\t\t * Runs a `Matter.Engine` whilst synchronising engine updates with the browser frame rate. \n\t\t * See module and properties descriptions for more information on this runner.\n\t\t * Alternatively see `Engine.update` to step the engine directly inside your own game loop implementation.\n\t\t * @method run\n\t\t * @param {runner} runner\n\t\t * @param {engine} [engine]\n\t\t * @return {runner} runner\n\t\t */\n\t\t Runner.run = function(runner, engine) {\n\t\t // initial time buffer for the first frame\n\t\t runner.timeBuffer = Runner._frameDeltaFallback;\n\n\t\t (function onFrame(time){\n\t\t runner.frameRequestId = Runner._onNextFrame(runner, onFrame);\n\n\t\t if (time && runner.enabled) {\n\t\t Runner.tick(runner, engine, time);\n\t\t }\n\t\t })();\n\n\t\t return runner;\n\t\t };\n\n\t\t /**\n\t\t * Performs a single runner tick as used inside `Runner.run`.\n\t\t * See module and properties descriptions for more information on this runner.\n\t\t * Alternatively see `Engine.update` to step the engine directly inside your own game loop implementation.\n\t\t * @method tick\n\t\t * @param {runner} runner\n\t\t * @param {engine} engine\n\t\t * @param {number} time\n\t\t */\n\t\t Runner.tick = function(runner, engine, time) {\n\t\t var tickStartTime = Common.now(),\n\t\t engineDelta = runner.delta,\n\t\t updateCount = 0;\n\n\t\t // find frame delta time since last call\n\t\t var frameDelta = time - runner.timeLastTick;\n\n\t\t // fallback for unusable frame delta values (e.g. 0, NaN, on first frame or long pauses)\n\t\t if (!frameDelta || !runner.timeLastTick || frameDelta > Math.max(Runner._maxFrameDelta, runner.maxFrameTime)) {\n\t\t // reuse last accepted frame delta else fallback\n\t\t frameDelta = runner.frameDelta || Runner._frameDeltaFallback;\n\t\t }\n\n\t\t if (runner.frameDeltaSmoothing) {\n\t\t // record frame delta over a number of frames\n\t\t runner.frameDeltaHistory.push(frameDelta);\n\t\t runner.frameDeltaHistory = runner.frameDeltaHistory.slice(-runner.frameDeltaHistorySize);\n\n\t\t // sort frame delta history\n\t\t var deltaHistorySorted = runner.frameDeltaHistory.slice(0).sort();\n\n\t\t // sample a central window to limit outliers\n\t\t var deltaHistoryWindow = runner.frameDeltaHistory.slice(\n\t\t deltaHistorySorted.length * Runner._smoothingLowerBound, \n\t\t deltaHistorySorted.length * Runner._smoothingUpperBound\n\t\t );\n\n\t\t // take the mean of the central window\n\t\t var frameDeltaSmoothed = _mean(deltaHistoryWindow);\n\t\t frameDelta = frameDeltaSmoothed || frameDelta;\n\t\t }\n\n\t\t if (runner.frameDeltaSnapping) {\n\t\t // snap frame delta to the nearest 1 Hz\n\t\t frameDelta = 1000 / Math.round(1000 / frameDelta);\n\t\t }\n\n\t\t // update runner values for next call\n\t\t runner.frameDelta = frameDelta;\n\t\t runner.timeLastTick = time;\n\n\t\t // accumulate elapsed time\n\t\t runner.timeBuffer += runner.frameDelta;\n\n\t\t // limit time buffer size to a single frame of updates\n\t\t runner.timeBuffer = Common.clamp(\n\t\t runner.timeBuffer, 0, runner.frameDelta + engineDelta * Runner._timeBufferMargin\n\t\t );\n\n\t\t // reset count of over budget updates\n\t\t runner.lastUpdatesDeferred = 0;\n\n\t\t // get max updates per frame\n\t\t var maxUpdates = runner.maxUpdates || Math.ceil(runner.maxFrameTime / engineDelta);\n\n\t\t // create event object\n\t\t var event = {\n\t\t timestamp: engine.timing.timestamp\n\t\t };\n\n\t\t // tick events before update\n\t\t Events.trigger(runner, 'beforeTick', event);\n\t\t Events.trigger(runner, 'tick', event);\n\n\t\t var updateStartTime = Common.now();\n\n\t\t // simulate time elapsed between calls\n\t\t while (engineDelta > 0 && runner.timeBuffer >= engineDelta * Runner._timeBufferMargin) {\n\t\t // update the engine\n\t\t Events.trigger(runner, 'beforeUpdate', event);\n\t\t Engine.update(engine, engineDelta);\n\t\t Events.trigger(runner, 'afterUpdate', event);\n\n\t\t // consume time simulated from buffer\n\t\t runner.timeBuffer -= engineDelta;\n\t\t updateCount += 1;\n\n\t\t // find elapsed time during this tick\n\t\t var elapsedTimeTotal = Common.now() - tickStartTime,\n\t\t elapsedTimeUpdates = Common.now() - updateStartTime,\n\t\t elapsedNextEstimate = elapsedTimeTotal + Runner._elapsedNextEstimate * elapsedTimeUpdates / updateCount;\n\n\t\t // defer updates if over performance budgets for this frame\n\t\t if (updateCount >= maxUpdates || elapsedNextEstimate > runner.maxFrameTime) {\n\t\t runner.lastUpdatesDeferred = Math.round(Math.max(0, (runner.timeBuffer / engineDelta) - Runner._timeBufferMargin));\n\t\t break;\n\t\t }\n\t\t }\n\n\t\t // track timing metrics\n\t\t engine.timing.lastUpdatesPerFrame = updateCount;\n\n\t\t // tick events after update\n\t\t Events.trigger(runner, 'afterTick', event);\n\n\t\t // show useful warnings if needed\n\t\t if (runner.frameDeltaHistory.length >= 100) {\n\t\t if (runner.lastUpdatesDeferred && Math.round(runner.frameDelta / engineDelta) > maxUpdates) {\n\t\t Common.warnOnce('Matter.Runner: runner reached runner.maxUpdates, see docs.');\n\t\t } else if (runner.lastUpdatesDeferred) {\n\t\t Common.warnOnce('Matter.Runner: runner reached runner.maxFrameTime, see docs.');\n\t\t }\n\n\t\t if (typeof runner.isFixed !== 'undefined') {\n\t\t Common.warnOnce('Matter.Runner: runner.isFixed is now redundant, see docs.');\n\t\t }\n\n\t\t if (runner.deltaMin || runner.deltaMax) {\n\t\t Common.warnOnce('Matter.Runner: runner.deltaMin and runner.deltaMax were removed, see docs.');\n\t\t }\n\n\t\t if (runner.fps !== 0) {\n\t\t Common.warnOnce('Matter.Runner: runner.fps was replaced by runner.delta, see docs.');\n\t\t }\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Ends execution of `Runner.run` on the given `runner` by canceling the frame loop.\n\t\t * Alternatively to temporarily pause the runner, see `runner.enabled`.\n\t\t * @method stop\n\t\t * @param {runner} runner\n\t\t */\n\t\t Runner.stop = function(runner) {\n\t\t Runner._cancelNextFrame(runner);\n\t\t };\n\n\t\t /**\n\t\t * Schedules the `callback` on this `runner` for the next animation frame.\n\t\t * @private\n\t\t * @method _onNextFrame\n\t\t * @param {runner} runner\n\t\t * @param {function} callback\n\t\t * @return {number} frameRequestId\n\t\t */\n\t\t Runner._onNextFrame = function(runner, callback) {\n\t\t if (typeof window !== 'undefined' && window.requestAnimationFrame) {\n\t\t runner.frameRequestId = window.requestAnimationFrame(callback);\n\t\t } else {\n\t\t throw new Error('Matter.Runner: missing required global window.requestAnimationFrame.');\n\t\t }\n\n\t\t return runner.frameRequestId;\n\t\t };\n\n\t\t /**\n\t\t * Cancels the last callback scheduled by `Runner._onNextFrame` on this `runner`.\n\t\t * @private\n\t\t * @method _cancelNextFrame\n\t\t * @param {runner} runner\n\t\t */\n\t\t Runner._cancelNextFrame = function(runner) {\n\t\t if (typeof window !== 'undefined' && window.cancelAnimationFrame) {\n\t\t window.cancelAnimationFrame(runner.frameRequestId);\n\t\t } else {\n\t\t throw new Error('Matter.Runner: missing required global window.cancelAnimationFrame.');\n\t\t }\n\t\t };\n\n\t\t /**\n\t\t * Returns the mean of the given numbers.\n\t\t * @method _mean\n\t\t * @private\n\t\t * @param {Number[]} values\n\t\t * @return {Number} the mean of given values.\n\t\t */\n\t\t var _mean = function(values) {\n\t\t var result = 0,\n\t\t valuesLength = values.length;\n\n\t\t for (var i = 0; i < valuesLength; i += 1) {\n\t\t result += values[i];\n\t\t }\n\n\t\t return (result / valuesLength) || 0;\n\t\t };\n\n\t\t /*\n\t\t *\n\t\t * Events Documentation\n\t\t *\n\t\t */\n\n\t\t /**\n\t\t * Fired once at the start of the browser frame, before any engine updates.\n\t\t *\n\t\t * @event beforeTick\n\t\t * @param {} event An event object\n\t\t * @param {number} event.timestamp The engine.timing.timestamp of the event\n\t\t * @param {} event.source The source object of the event\n\t\t * @param {} event.name The name of the event\n\t\t */\n\n\t\t /**\n\t\t * Fired once at the start of the browser frame, after `beforeTick`.\n\t\t *\n\t\t * @event tick\n\t\t * @param {} event An event object\n\t\t * @param {number} event.timestamp The engine.timing.timestamp of the event\n\t\t * @param {} event.source The source object of the event\n\t\t * @param {} event.name The name of the event\n\t\t */\n\n\t\t /**\n\t\t * Fired once at the end of the browser frame, after `beforeTick`, `tick` and after any engine updates.\n\t\t *\n\t\t * @event afterTick\n\t\t * @param {} event An event object\n\t\t * @param {number} event.timestamp The engine.timing.timestamp of the event\n\t\t * @param {} event.source The source object of the event\n\t\t * @param {} event.name The name of the event\n\t\t */\n\n\t\t /**\n\t\t * Fired before each and every engine update in this browser frame (if any). \n\t\t * There may be multiple engine update calls per browser frame (or none) depending on framerate and timestep delta.\n\t\t *\n\t\t * @event beforeUpdate\n\t\t * @param {} event An event object\n\t\t * @param {number} event.timestamp The engine.timing.timestamp of the event\n\t\t * @param {} event.source The source object of the event\n\t\t * @param {} event.name The name of the event\n\t\t */\n\n\t\t /**\n\t\t * Fired after each and every engine update in this browser frame (if any). \n\t\t * There may be multiple engine update calls per browser frame (or none) depending on framerate and timestep delta.\n\t\t *\n\t\t * @event afterUpdate\n\t\t * @param {} event An event object\n\t\t * @param {number} event.timestamp The engine.timing.timestamp of the event\n\t\t * @param {} event.source The source object of the event\n\t\t * @param {} event.name The name of the event\n\t\t */\n\n\t\t /*\n\t\t *\n\t\t * Properties Documentation\n\t\t *\n\t\t */\n\n\t\t /**\n\t\t * The fixed timestep size used for `Engine.update` calls in milliseconds, known as `delta`.\n\t\t * \n\t\t * This value is recommended to be `1000 / 60` ms or smaller (i.e. equivalent to at least 60hz).\n\t\t * \n\t\t * Smaller `delta` values provide higher quality results at the cost of performance.\n\t\t * \n\t\t * You should usually avoid changing `delta` during running, otherwise quality may be affected. \n\t\t * \n\t\t * For smoother frame pacing choose a `delta` that is an even multiple of each display FPS you target, i.e. `1000 / (n * fps)` as this helps distribute an equal number of updates over each display frame.\n\t\t * \n\t\t * For example with a 60 Hz `delta` i.e. `1000 / 60` the runner will on average perform one update per frame on displays running 60 FPS and one update every two frames on displays running 120 FPS, etc.\n\t\t * \n\t\t * Where as e.g. using a 240 Hz `delta` i.e. `1000 / 240` the runner will on average perform four updates per frame on displays running 60 FPS and two updates per frame on displays running 120 FPS, etc.\n\t\t * \n\t\t * Therefore `Runner.run` will call multiple engine updates (or none) as needed to simulate the time elapsed between browser frames. \n\t\t * \n\t\t * In practice the number of updates in any particular frame may be restricted to respect the runner's performance budgets. These are specified by `runner.maxFrameTime` and `runner.maxUpdates`, see those properties for details.\n\t\t * \n\t\t * @property delta\n\t\t * @type number\n\t\t * @default 1000 / 60\n\t\t */\n\n\t\t /**\n\t\t * A flag that can be toggled to enable or disable tick calls on this runner, therefore pausing engine updates and events while the runner loop remains running.\n\t\t *\n\t\t * @property enabled\n\t\t * @type boolean\n\t\t * @default true\n\t\t */\n\n\t\t /**\n\t\t * The accumulated time elapsed that has yet to be simulated in milliseconds.\n\t\t * This value is clamped within certain limits (see `Runner.tick` code).\n\t\t *\n\t\t * @private\n\t\t * @property timeBuffer\n\t\t * @type number\n\t\t * @default 0\n\t\t */\n\n\t\t /**\n\t\t * The measured time elapsed between the last two browser frames measured in milliseconds.\n\t\t * This is useful e.g. to estimate the current browser FPS using `1000 / runner.frameDelta`.\n\t\t *\n\t\t * @readonly\n\t\t * @property frameDelta\n\t\t * @type number\n\t\t */\n\n\t\t /**\n\t\t * Enables averaging to smooth frame rate measurements and therefore stabilise play rate.\n\t\t *\n\t\t * @property frameDeltaSmoothing\n\t\t * @type boolean\n\t\t * @default true\n\t\t */\n\n\t\t /**\n\t\t * Rounds measured browser frame delta to the nearest 1 Hz.\n\t\t * This option can help smooth frame rate measurements and simplify handling hardware timing differences e.g. 59.94Hz and 60Hz displays.\n\t\t * For best results you should also round your `runner.delta` equivalent to the nearest 1 Hz.\n\t\t *\n\t\t * @property frameDeltaSnapping\n\t\t * @type boolean\n\t\t * @default true\n\t\t */\n\n\t\t /**\n\t\t * A performance budget that limits execution time allowed for this runner per browser frame in milliseconds.\n\t\t * \n\t\t * To calculate the effective browser FPS at which this throttle is applied use `1000 / runner.maxFrameTime`.\n\t\t * \n\t\t * This performance budget is intended to help maintain browser interactivity and help improve framerate recovery during temporary high CPU usage.\n\t\t * \n\t\t * This budget only covers the measured time elapsed executing the functions called in the scope of the runner tick, including `Engine.update` and its related user event callbacks.\n\t\t * \n\t\t * You may also reduce this budget to allow for any significant additional processing you perform on the same thread outside the scope of this runner tick, e.g. rendering time.\n\t\t * \n\t\t * See also `runner.maxUpdates`.\n\t\t *\n\t\t * @property maxFrameTime\n\t\t * @type number\n\t\t * @default 1000 / 30\n\t\t */\n\n\t\t /**\n\t\t * An optional limit for maximum engine update count allowed per frame tick in addition to `runner.maxFrameTime`.\n\t\t * \n\t\t * Unless you set a value it is automatically chosen based on `runner.delta` and `runner.maxFrameTime`.\n\t\t * \n\t\t * See also `runner.maxFrameTime`.\n\t\t * \n\t\t * @property maxUpdates\n\t\t * @type number\n\t\t * @default null\n\t\t */\n\n\t\t /**\n\t\t * The timestamp of the last call to `Runner.tick` used to measure `frameDelta`.\n\t\t *\n\t\t * @private\n\t\t * @property timeLastTick\n\t\t * @type number\n\t\t * @default 0\n\t\t */\n\n\t\t /**\n\t\t * The id of the last call to `Runner._onNextFrame`.\n\t\t *\n\t\t * @private\n\t\t * @property frameRequestId\n\t\t * @type number\n\t\t * @default null\n\t\t */\n\n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 28 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\n\t\t* This module has now been replaced by `Matter.Collision`.\n\t\t*\n\t\t* All usage should be migrated to `Matter.Collision`.\n\t\t* For back-compatibility purposes this module will remain for a short term and then later removed in a future release.\n\t\t*\n\t\t* The `Matter.SAT` module contains methods for detecting collisions using the Separating Axis Theorem.\n\t\t*\n\t\t* @class SAT\n\t\t* @deprecated\n\t\t*/\n\n\t\tvar SAT = {};\n\n\t\tmodule.exports = SAT;\n\n\t\tvar Collision = __webpack_require__(8);\n\t\tvar Common = __webpack_require__(0);\n\t\tvar deprecated = Common.deprecated;\n\n\t\t(function() {\n\n\t\t /**\n\t\t * Detect collision between two bodies using the Separating Axis Theorem.\n\t\t * @deprecated replaced by Collision.collides\n\t\t * @method collides\n\t\t * @param {body} bodyA\n\t\t * @param {body} bodyB\n\t\t * @return {collision} collision\n\t\t */\n\t\t SAT.collides = function(bodyA, bodyB) {\n\t\t return Collision.collides(bodyA, bodyB);\n\t\t };\n\n\t\t deprecated(SAT, 'collides', 'SAT.collides ➤ replaced by Collision.collides');\n\n\t\t})();\n\n\n\t\t/***/ }),\n\t\t/* 29 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\n\t\t* The `Matter.Svg` module contains methods for converting SVG images into an array of vector points.\n\t\t*\n\t\t* To use this module you also need the SVGPathSeg polyfill: https://github.com/progers/pathseg\n\t\t*\n\t\t* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n\t\t*\n\t\t* @class Svg\n\t\t*/\n\n\t\tvar Svg = {};\n\n\t\tmodule.exports = Svg;\n\n\t\t__webpack_require__(1);\n\t\tvar Common = __webpack_require__(0);\n\n\t\t(function() {\n\n\t\t /**\n\t\t * Converts an SVG path into an array of vector points.\n\t\t * If the input path forms a concave shape, you must decompose the result into convex parts before use.\n\t\t * See `Bodies.fromVertices` which provides support for this.\n\t\t * Note that this function is not guaranteed to support complex paths (such as those with holes).\n\t\t * You must load the `pathseg.js` polyfill on newer browsers.\n\t\t * @method pathToVertices\n\t\t * @param {SVGPathElement} path\n\t\t * @param {Number} [sampleLength=15]\n\t\t * @return {Vector[]} points\n\t\t */\n\t\t Svg.pathToVertices = function(path, sampleLength) {\n\t\t if (typeof window !== 'undefined' && !('SVGPathSeg' in window)) {\n\t\t Common.warn('Svg.pathToVertices: SVGPathSeg not defined, a polyfill is required.');\n\t\t }\n\n\t\t // https://github.com/wout/svg.topoly.js/blob/master/svg.topoly.js\n\t\t var i, il, total, point, segment, segments, \n\t\t segmentsQueue, lastSegment, \n\t\t lastPoint, segmentIndex, points = [],\n\t\t lx, ly, length = 0, x = 0, y = 0;\n\n\t\t sampleLength = sampleLength || 15;\n\n\t\t var addPoint = function(px, py, pathSegType) {\n\t\t // all odd-numbered path types are relative except PATHSEG_CLOSEPATH (1)\n\t\t var isRelative = pathSegType % 2 === 1 && pathSegType > 1;\n\n\t\t // when the last point doesn't equal the current point add the current point\n\t\t if (!lastPoint || px != lastPoint.x || py != lastPoint.y) {\n\t\t if (lastPoint && isRelative) {\n\t\t lx = lastPoint.x;\n\t\t ly = lastPoint.y;\n\t\t } else {\n\t\t lx = 0;\n\t\t ly = 0;\n\t\t }\n\n\t\t var point = {\n\t\t x: lx + px,\n\t\t y: ly + py\n\t\t };\n\n\t\t // set last point\n\t\t if (isRelative || !lastPoint) {\n\t\t lastPoint = point;\n\t\t }\n\n\t\t points.push(point);\n\n\t\t x = lx + px;\n\t\t y = ly + py;\n\t\t }\n\t\t };\n\n\t\t var addSegmentPoint = function(segment) {\n\t\t var segType = segment.pathSegTypeAsLetter.toUpperCase();\n\n\t\t // skip path ends\n\t\t if (segType === 'Z') \n\t\t return;\n\n\t\t // map segment to x and y\n\t\t switch (segType) {\n\n\t\t case 'M':\n\t\t case 'L':\n\t\t case 'T':\n\t\t case 'C':\n\t\t case 'S':\n\t\t case 'Q':\n\t\t x = segment.x;\n\t\t y = segment.y;\n\t\t break;\n\t\t case 'H':\n\t\t x = segment.x;\n\t\t break;\n\t\t case 'V':\n\t\t y = segment.y;\n\t\t break;\n\t\t }\n\n\t\t addPoint(x, y, segment.pathSegType);\n\t\t };\n\n\t\t // ensure path is absolute\n\t\t Svg._svgPathToAbsolute(path);\n\n\t\t // get total length\n\t\t total = path.getTotalLength();\n\n\t\t // queue segments\n\t\t segments = [];\n\t\t for (i = 0; i < path.pathSegList.numberOfItems; i += 1)\n\t\t segments.push(path.pathSegList.getItem(i));\n\n\t\t segmentsQueue = segments.concat();\n\n\t\t // sample through path\n\t\t while (length < total) {\n\t\t // get segment at position\n\t\t segmentIndex = path.getPathSegAtLength(length);\n\t\t segment = segments[segmentIndex];\n\n\t\t // new segment\n\t\t if (segment != lastSegment) {\n\t\t while (segmentsQueue.length && segmentsQueue[0] != segment)\n\t\t addSegmentPoint(segmentsQueue.shift());\n\n\t\t lastSegment = segment;\n\t\t }\n\n\t\t // add points in between when curving\n\t\t // TODO: adaptive sampling\n\t\t switch (segment.pathSegTypeAsLetter.toUpperCase()) {\n\n\t\t case 'C':\n\t\t case 'T':\n\t\t case 'S':\n\t\t case 'Q':\n\t\t case 'A':\n\t\t point = path.getPointAtLength(length);\n\t\t addPoint(point.x, point.y, 0);\n\t\t break;\n\n\t\t }\n\n\t\t // increment by sample value\n\t\t length += sampleLength;\n\t\t }\n\n\t\t // add remaining segments not passed by sampling\n\t\t for (i = 0, il = segmentsQueue.length; i < il; ++i)\n\t\t addSegmentPoint(segmentsQueue[i]);\n\n\t\t return points;\n\t\t };\n\n\t\t Svg._svgPathToAbsolute = function(path) {\n\t\t // http://phrogz.net/convert-svg-path-to-all-absolute-commands\n\t\t // Copyright (c) Gavin Kistner\n\t\t // http://phrogz.net/js/_ReuseLicense.txt\n\t\t // Modifications: tidy formatting and naming\n\t\t var x0, y0, x1, y1, x2, y2, segs = path.pathSegList,\n\t\t x = 0, y = 0, len = segs.numberOfItems;\n\n\t\t for (var i = 0; i < len; ++i) {\n\t\t var seg = segs.getItem(i),\n\t\t segType = seg.pathSegTypeAsLetter;\n\n\t\t if (/[MLHVCSQTA]/.test(segType)) {\n\t\t if ('x' in seg) x = seg.x;\n\t\t if ('y' in seg) y = seg.y;\n\t\t } else {\n\t\t if ('x1' in seg) x1 = x + seg.x1;\n\t\t if ('x2' in seg) x2 = x + seg.x2;\n\t\t if ('y1' in seg) y1 = y + seg.y1;\n\t\t if ('y2' in seg) y2 = y + seg.y2;\n\t\t if ('x' in seg) x += seg.x;\n\t\t if ('y' in seg) y += seg.y;\n\n\t\t switch (segType) {\n\n\t\t case 'm':\n\t\t segs.replaceItem(path.createSVGPathSegMovetoAbs(x, y), i);\n\t\t break;\n\t\t case 'l':\n\t\t segs.replaceItem(path.createSVGPathSegLinetoAbs(x, y), i);\n\t\t break;\n\t\t case 'h':\n\t\t segs.replaceItem(path.createSVGPathSegLinetoHorizontalAbs(x), i);\n\t\t break;\n\t\t case 'v':\n\t\t segs.replaceItem(path.createSVGPathSegLinetoVerticalAbs(y), i);\n\t\t break;\n\t\t case 'c':\n\t\t segs.replaceItem(path.createSVGPathSegCurvetoCubicAbs(x, y, x1, y1, x2, y2), i);\n\t\t break;\n\t\t case 's':\n\t\t segs.replaceItem(path.createSVGPathSegCurvetoCubicSmoothAbs(x, y, x2, y2), i);\n\t\t break;\n\t\t case 'q':\n\t\t segs.replaceItem(path.createSVGPathSegCurvetoQuadraticAbs(x, y, x1, y1), i);\n\t\t break;\n\t\t case 't':\n\t\t segs.replaceItem(path.createSVGPathSegCurvetoQuadraticSmoothAbs(x, y), i);\n\t\t break;\n\t\t case 'a':\n\t\t segs.replaceItem(path.createSVGPathSegArcAbs(x, y, seg.r1, seg.r2, seg.angle, seg.largeArcFlag, seg.sweepFlag), i);\n\t\t break;\n\t\t case 'z':\n\t\t case 'Z':\n\t\t x = x0;\n\t\t y = y0;\n\t\t break;\n\n\t\t }\n\t\t }\n\n\t\t if (segType == 'M' || segType == 'm') {\n\t\t x0 = x;\n\t\t y0 = y;\n\t\t }\n\t\t }\n\t\t };\n\n\t\t})();\n\n\t\t/***/ }),\n\t\t/* 30 */\n\t\t/***/ (function(module, exports, __webpack_require__) {\n\n\t\t/**\n\t\t* This module has now been replaced by `Matter.Composite`.\n\t\t*\n\t\t* All usage should be migrated to the equivalent functions found on `Matter.Composite`.\n\t\t* For example `World.add(world, body)` now becomes `Composite.add(world, body)`.\n\t\t*\n\t\t* The property `world.gravity` has been moved to `engine.gravity`.\n\t\t*\n\t\t* For back-compatibility purposes this module will remain as a direct alias to `Matter.Composite` in the short term during migration.\n\t\t* Eventually this alias module will be marked as deprecated and then later removed in a future release.\n\t\t*\n\t\t* @class World\n\t\t*/\n\n\t\tvar World = {};\n\n\t\tmodule.exports = World;\n\n\t\tvar Composite = __webpack_require__(6);\n\t\t__webpack_require__(0);\n\n\t\t(function() {\n\n\t\t /**\n\t\t * See above, aliases for back compatibility only\n\t\t */\n\t\t World.create = Composite.create;\n\t\t World.add = Composite.add;\n\t\t World.remove = Composite.remove;\n\t\t World.clear = Composite.clear;\n\t\t World.addComposite = Composite.addComposite;\n\t\t World.addBody = Composite.addBody;\n\t\t World.addConstraint = Composite.addConstraint;\n\n\t\t})();\n\n\n\t\t/***/ })\n\t\t/******/ ]);\n\t\t}); \n\t} (matter$3));\n\treturn matter$3.exports;\n}\n\nvar matterExports = requireMatter();\nconst matter = /*@__PURE__*/getDefaultExportFromCjs(matterExports);\n\nconst matter$1 = /*#__PURE__*/_mergeNamespaces({\n __proto__: null,\n default: matter\n}, [matterExports]);\n\nclass RpgCommonPhysic {\n // Store collision analysis data\n /**\n * Initialize the physics engine with no gravity\n * \n * @example\n * ```ts\n * const physic = new RpgCommonPhysic();\n * ```\n */\n constructor() {\n this.hitboxes = /* @__PURE__ */ new Map();\n this.collisions = /* @__PURE__ */ new Map();\n this.collisionEvents = /* @__PURE__ */ new Map();\n // Add movement events map\n this.movementEvents = /* @__PURE__ */ new Map();\n // Nouvelles propriétés pour les zones\n this.zones = /* @__PURE__ */ new Map();\n this.zoneCollisions = /* @__PURE__ */ new Map();\n this.zoneEvents = /* @__PURE__ */ new Map();\n // Add sliding-related properties\n this.collisionNormals = /* @__PURE__ */ new Map();\n // Store collision normals for sliding\n this.lastVelocities = /* @__PURE__ */ new Map();\n // Store last frame velocities\n this.intendedMovements = /* @__PURE__ */ new Map();\n // Store intended movements for sliding\n this.collisionData = /* @__PURE__ */ new Map();\n this.engine = matterExports.Engine.create({\n gravity: { x: 0, y: 0 }\n });\n this.world = this.engine.world;\n matterExports.Events.on(this.engine, \"collisionStart\", (event) => this.handleCollisionStart(event));\n matterExports.Events.on(this.engine, \"collisionEnd\", (event) => this.handleCollisionEnd(event));\n }\n /**\n * Updates the physics simulation\n * \n * @param delta - Time delta in milliseconds\n * \n * @example\n * ```ts\n * // Update physics in game loop\n * physic.update(16); // 16ms = ~60fps\n * ```\n */\n update(delta) {\n matterExports.Engine.update(this.engine, delta);\n this.applySlidingCorrections();\n this.resolveMovableCollisions();\n this.syncBodies();\n this.syncLinkedZones();\n this.checkMovementChanges();\n this.intendedMovements.clear();\n }\n /**\n * Synchronize all physics bodies with their associated players\n * \n * Updates player positions based on their physics bodies after physics calculations\n * \n * @example\n * ```ts\n * // Called automatically in update()\n * physic.syncBodies();\n * ```\n */\n syncBodies() {\n for (const [id, hitboxData] of this.hitboxes.entries()) {\n const body = hitboxData.body;\n const player = body.label;\n if (player && typeof player === \"object\" && \"applyPhysic\" in player) {\n player.applyPhysic(body);\n }\n }\n }\n /**\n * Synchronize linked zones to follow their host hitboxes\n * \n * Updates zones that are linked to players or other movable hitboxes\n * \n * @example\n * ```ts\n * // Called automatically in update()\n * physic.syncLinkedZones();\n * ```\n */\n syncLinkedZones() {\n for (const [, zone] of this.zones) {\n if (zone.type === \"linked\" && zone.linkedTo) {\n const host = this.hitboxes.get(zone.linkedTo);\n if (!host) continue;\n matterExports.Body.setPosition(zone.body, {\n x: host.body.position.x,\n y: host.body.position.y\n });\n if (zone.aperture < Math.PI * 2) {\n const dir = host.body.label.direction ?? Direction.Down;\n const angle = this.directionToAngle(typeof dir === \"function\" ? dir() : dir);\n matterExports.Body.setAngle(zone.body, angle);\n }\n }\n }\n }\n /**\n * Convert a Direction enum value to radians\n * \n * @param dir - Direction enum value\n * @returns Angle in radians\n */\n directionToAngle(dir) {\n switch (dir) {\n case Direction.Up:\n return -Math.PI / 2;\n case Direction.Down:\n return Math.PI / 2;\n case Direction.Left:\n return Math.PI;\n case Direction.Right:\n default:\n return 0;\n }\n }\n /**\n * Convert a movement vector to a Direction enum value\n * \n * Determines the primary direction based on the larger component\n * of the movement vector. Returns null if no significant movement.\n * \n * @param dx - X displacement\n * @param dy - Y displacement\n * @returns Direction enum value or null if no movement\n */\n vectorToDirection(dx, dy) {\n const threshold = 0.1;\n if (Math.abs(dx) < threshold && Math.abs(dy) < threshold) {\n return null;\n }\n if (Math.abs(dx) > Math.abs(dy)) {\n return dx > 0 ? Direction.Right : Direction.Left;\n } else {\n return dy > 0 ? Direction.Down : Direction.Up;\n }\n }\n /**\n * Add a static hitbox (immovable objects like walls, obstacles)\n * \n * @param id - Unique identifier for the hitbox\n * @param x - X position\n * @param y - Y position\n * @param width - Width of hitbox\n * @param height - Height of hitbox\n * @returns The id of the created hitbox\n * \n * @example\n * ```ts\n * // Add a wall\n * physic.addStaticHitbox('wall1', 100, 50, 32, 128);\n * ```\n */\n addStaticHitbox(id, x, y, width, height) {\n if (this.hitboxes.has(id)) {\n throw new Error(`Hitbox with id ${id} already exists`);\n }\n const centerX = x + width / 2;\n const centerY = y + height / 2;\n const body = matterExports.Bodies.rectangle(centerX, centerY, width, height, {\n isStatic: true,\n label: id\n });\n matterExports.Composite.add(this.world, body);\n this.hitboxes.set(id, {\n id,\n type: \"static\",\n body\n });\n return id;\n }\n /**\n * Add a movable hitbox (players, NPCs, dynamic objects)\n * \n * @param player - Player object that owns this hitbox\n * @param x - X position\n * @param y - Y position\n * @param width - Width of hitbox\n * @param height - Height of hitbox\n * @param options - Additional body options\n * @param slidingOptions - Collision sliding configuration\n * @returns The id of the created hitbox\n * \n * @example\n * ```ts\n * // Add a player with sliding enabled (only against walls)\n * const player = new RpgCommonPlayer();\n * player.id = 'player1';\n * physic.addMovableHitbox(player, 200, 300, 24, 32, {}, {\n * enabled: true,\n * friction: 0.8,\n * minVelocity: 0.5\n * });\n * ```\n */\n addMovableHitbox(player, x, y, width, height, options = {}, slidingOptions) {\n const centerX = x + width / 2;\n const centerY = y + height / 2;\n const body = matterExports.Bodies.rectangle(centerX, centerY, width, height, {\n inertia: Infinity,\n // No rotation\n inverseInertia: 0,\n friction: 0,\n frictionAir: 0.1,\n restitution: 0,\n isStatic: false,\n ...options,\n label: player\n // Store reference to the player object\n });\n matterExports.Composite.add(this.world, body);\n this.hitboxes.set(player.id, {\n id: player.id,\n type: \"movable\",\n body,\n previousPosition: { ...body.position },\n // Initialize previousPosition\n enableSliding: slidingOptions?.enabled ?? false,\n slidingOptions\n });\n player.x.set(x);\n player.y.set(y);\n if (slidingOptions?.enabled) {\n this.intendedMovements.set(player.id, { x: 0, y: 0 });\n }\n return player.id;\n }\n /**\n * Update a hitbox's position and size\n * \n * @param id - ID of the hitbox to update\n * @param x - New X position\n * @param y - New Y position\n * @param width - New width (optional)\n * @param height - New height (optional)\n * @returns Boolean indicating success\n * \n * @example\n * ```ts\n * // Update player position\n * physic.updateHitbox('player1', newX, newY);\n * \n * // Update both position and size\n * physic.updateHitbox('player1', newX, newY, newWidth, newHeight);\n * ```\n */\n updateHitbox(id, x, y, width, height) {\n const hitbox = this.hitboxes.get(id);\n if (!hitbox) return false;\n const body = hitbox.body;\n const player = body.label;\n if (width !== void 0 && height !== void 0) {\n matterExports.Composite.remove(this.world, body);\n const newBody = matterExports.Bodies.rectangle(\n x + width / 2,\n y + height / 2,\n width,\n height,\n {\n isStatic: hitbox.type === \"static\",\n inertia: Infinity,\n friction: 0,\n frictionAir: 0,\n restitution: 0,\n label: player\n // Preserve the player reference\n }\n );\n matterExports.Composite.add(this.world, newBody);\n hitbox.body = newBody;\n } else {\n const width2 = body.bounds.max.x - body.bounds.min.x;\n const height2 = body.bounds.max.y - body.bounds.min.y;\n const centerX = x + width2 / 2;\n const centerY = y + height2 / 2;\n matterExports.Body.setPosition(body, { x: centerX, y: centerY });\n }\n if (player && typeof player === \"object\" && \"x\" in player && \"y\" in player) {\n const width2 = body.bounds.max.x - body.bounds.min.x;\n const height2 = body.bounds.max.y - body.bounds.min.y;\n const topLeftX = body.position.x - width2 / 2;\n const topLeftY = body.position.y - height2 / 2;\n player.x.set(topLeftX);\n player.y.set(topLeftY);\n }\n return true;\n }\n /**\n * Remove a hitbox from the world\n * \n * @param id - ID of the hitbox to remove\n * @returns Boolean indicating success\n * \n * @example\n * ```ts\n * // Remove an enemy\n * physic.removeHitbox('enemy1');\n * ```\n */\n removeHitbox(id) {\n const hitbox = this.hitboxes.get(id);\n if (!hitbox) return false;\n matterExports.Composite.remove(this.world, hitbox.body);\n this.hitboxes.delete(id);\n this.collisions.delete(id);\n this.collisionEvents.delete(id);\n this.movementEvents.delete(id);\n this.collisionNormals.delete(id);\n this.lastVelocities.delete(id);\n this.intendedMovements.delete(id);\n this.collisionData.delete(id);\n for (const [otherId, collisions] of this.collisions.entries()) {\n collisions.delete(id);\n }\n return true;\n }\n /**\n * Register collision event callbacks for a hitbox\n * \n * @param id - ID of the hitbox\n * @param onCollisionEnter - Callback when entering collision\n * @param onCollisionExit - Callback when exiting collision\n * \n * @example\n * ```ts\n * // Register collision events for player\n * physic.registerCollisionEvents('player1', \n * (hitboxIds) => console.log('Player hit:', hitboxIds),\n * (hitboxIds) => console.log('Player no longer hitting:', hitboxIds)\n * );\n * ```\n */\n registerCollisionEvents(id, onCollisionEnter, onCollisionExit) {\n this.collisionEvents.set(id, { onCollisionEnter, onCollisionExit });\n }\n /**\n * Get all hitbox IDs currently colliding with the specified hitbox\n * \n * @param id - ID of the hitbox to check collisions for\n * @returns Array of hitbox IDs or empty array if none found\n * \n * @example\n * ```ts\n * // Get all enemies colliding with player\n * const collidingEnemies = physic.getCollisions('player1');\n * ```\n */\n getCollisions(id) {\n const collisions = this.collisions.get(id);\n return collisions ? Array.from(collisions) : [];\n }\n /**\n * Check if two hitboxes are colliding\n * \n * @param id1 - First hitbox ID\n * @param id2 - Second hitbox ID\n * @returns Boolean indicating if they are colliding\n * \n * @example\n * ```ts\n * // Check if player is touching the door\n * if (physic.areColliding('player1', 'door')) {\n * // Open the door\n * }\n * ```\n */\n areColliding(id1, id2) {\n const collisions = this.collisions.get(id1);\n return collisions ? collisions.has(id2) : false;\n }\n /**\n * Handle collision start events from MatterJS\n */\n handleCollisionStart(event) {\n const pairs = event.pairs;\n for (const pair of pairs) {\n const bodyA = pair.bodyA;\n const bodyB = pair.bodyB;\n const a = this.extractId(bodyA);\n const b = this.extractId(bodyB);\n if (a.isZone !== b.isZone) {\n const zoneId = a.isZone ? a.id : b.id;\n const targetId = a.isZone ? b.id : a.id;\n this.processZoneEnter(zoneId, targetId);\n continue;\n }\n if (!a.isZone && !b.isZone) {\n const idA = a.id;\n const idB = b.id;\n const hitboxA = this.hitboxes.get(idA);\n const hitboxB = this.hitboxes.get(idB);\n if (hitboxA?.type === \"movable\" && hitboxB?.type === \"movable\") {\n continue;\n }\n this.storeCollisionNormals(pair, idA, idB);\n this.recordCollision(idA, idB);\n this.recordCollision(idB, idA);\n const eventsA = this.collisionEvents.get(idA);\n const eventsB = this.collisionEvents.get(idB);\n if (eventsA?.onCollisionEnter) {\n eventsA.onCollisionEnter([idB]);\n }\n if (eventsB?.onCollisionEnter) {\n eventsB.onCollisionEnter([idA]);\n }\n }\n }\n }\n /**\n * Handle collision end events from MatterJS\n */\n handleCollisionEnd(event) {\n const pairs = event.pairs;\n for (const pair of pairs) {\n const bodyA = pair.bodyA;\n const bodyB = pair.bodyB;\n const a = this.extractId(bodyA);\n const b = this.extractId(bodyB);\n if (a.isZone !== b.isZone) {\n const zoneId = a.isZone ? a.id : b.id;\n const targetId = a.isZone ? b.id : a.id;\n this.processZoneExit(zoneId, targetId);\n continue;\n }\n if (!a.isZone && !b.isZone) {\n const idA = a.id;\n const idB = b.id;\n const hitboxA = this.hitboxes.get(idA);\n const hitboxB = this.hitboxes.get(idB);\n if (hitboxA?.type === \"movable\" && hitboxB?.type === \"movable\") {\n continue;\n }\n this.removeCollision(idA, idB);\n this.removeCollision(idB, idA);\n this.collisionData.delete(idA);\n this.collisionData.delete(idB);\n const eventsA = this.collisionEvents.get(idA);\n const eventsB = this.collisionEvents.get(idB);\n if (eventsA?.onCollisionExit) {\n eventsA.onCollisionExit([idB]);\n }\n if (eventsB?.onCollisionExit) {\n eventsB.onCollisionExit([idA]);\n }\n }\n }\n }\n /**\n * Extract entity ID and zone status from a physics body\n * \n * @param body - Matter.js body\n * @returns Object containing ID and isZone flag\n */\n extractId(body) {\n const label = body.label;\n if (typeof label === \"string\" && label.startsWith(\"zone:\")) {\n return { id: label.slice(5), isZone: true };\n }\n const id = typeof label === \"object\" && \"id\" in label ? label.id : label;\n return { id, isZone: false };\n }\n /**\n * Process a zone enter event\n * \n * @param zoneId - ID of the zone\n * @param hitId - ID of the hitbox entering the zone\n */\n processZoneEnter(zoneId, hitId) {\n const zone = this.zones.get(zoneId);\n const hitbox = this.hitboxes.get(hitId);\n if (!zone || !hitbox) return;\n if (zone.limitedByWalls && !this.hasLineOfSight(zone.body.position, hitbox.body.position)) {\n return;\n }\n if (!this.zoneCollisions.has(zoneId)) this.zoneCollisions.set(zoneId, /* @__PURE__ */ new Set());\n const set = this.zoneCollisions.get(zoneId);\n if (set.has(hitId)) return;\n set.add(hitId);\n this.zoneEvents.get(zoneId)?.onEnter?.([hitId]);\n }\n /**\n * Process a zone exit event\n * \n * @param zoneId - ID of the zone\n * @param hitId - ID of the hitbox exiting the zone\n */\n processZoneExit(zoneId, hitId) {\n const set = this.zoneCollisions.get(zoneId);\n if (!set || !set.has(hitId)) return;\n set.delete(hitId);\n this.zoneEvents.get(zoneId)?.onExit?.([hitId]);\n }\n /**\n * Check if there is a clear line of sight between two points\n * \n * @param start - Starting point\n * @param end - Ending point\n * @returns True if no static hitbox blocks the line\n */\n hasLineOfSight(start, end) {\n const staticBodies = Array.from(this.hitboxes.values()).filter((h) => h.type === \"static\").map((h) => h.body);\n if (staticBodies.length === 0) return true;\n const collisions = matterExports.Query.ray(\n staticBodies,\n start,\n end,\n 1\n // Use width of 1 to make detection more reliable\n );\n return collisions.length === 0;\n }\n /**\n * Record a collision between two hitboxes\n */\n recordCollision(id1, id2) {\n if (!this.collisions.has(id1)) {\n this.collisions.set(id1, /* @__PURE__ */ new Set());\n }\n this.collisions.get(id1).add(id2);\n }\n /**\n * Remove a collision record between two hitboxes\n */\n removeCollision(id1, id2) {\n const collisions = this.collisions.get(id1);\n if (collisions) {\n collisions.delete(id2);\n }\n }\n /**\n * Move a body based on player movement data\n * \n * Applies velocity to a physics body based on the player's current speed\n * and automatically updates the player's position and intended direction\n * \n * @param player - The player object containing movement data\n * @param direction - The intended movement direction\n * @returns Boolean indicating success\n * \n * @example\n * ```ts\n * // Move a player's physics body\n * physic.moveBody(player, Direction.Right);\n * ```\n */\n moveBody(player, direction) {\n const hitbox = this.hitboxes.get(player.id);\n if (!hitbox) return false;\n const body = hitbox.body;\n const speedValue = player.speed();\n if (typeof player.setIntendedDirection === \"function\") {\n player.setIntendedDirection(direction);\n }\n let dx = 0;\n let dy = 0;\n switch (direction) {\n case Direction.Down:\n dy = speedValue;\n break;\n case Direction.Left:\n dx = -speedValue;\n break;\n case Direction.Right:\n dx = speedValue;\n break;\n case Direction.Up:\n dy = -speedValue;\n break;\n }\n if (hitbox.enableSliding) {\n this.intendedMovements.set(player.id, { x: dx, y: dy });\n }\n matterExports.Body.translate(body, { x: dx, y: dy });\n return true;\n }\n /**\n * Stop movement for a player\n * \n * Clears the intended direction and stops any ongoing movement.\n * This should be called when the player releases movement keys.\n * \n * @param player - The player object to stop\n * @returns Boolean indicating success\n * \n * @example\n * ```ts\n * // Player releases all movement keys\n * physic.stopMovement(player);\n * ```\n */\n stopMovement(player) {\n const hitbox = this.hitboxes.get(player.id);\n if (!hitbox) return false;\n if (typeof player.setIntendedDirection === \"function\") {\n player.setIntendedDirection(null);\n }\n this.intendedMovements.delete(player.id);\n const body = hitbox.body;\n matterExports.Body.setVelocity(body, { x: 0, y: 0 });\n return true;\n }\n /**\n * Synchronize a player's position to its physics body\n * \n * Updates the physics body position based on the player's current position\n * Useful when player position is changed outside of physics system\n * \n * @param playerId - ID of the player to synchronize\n * @returns Boolean indicating success\n * \n * @example\n * ```ts\n * // After teleporting a player\n * player.x.set(newX);\n * player.y.set(newY);\n * physic.syncPlayerToBody(player.id);\n * ```\n */\n syncPlayerToBody(playerId) {\n const hitbox = this.hitboxes.get(playerId);\n if (!hitbox) return false;\n const body = hitbox.body;\n const player = body.label;\n if (player && typeof player === \"object\" && \"x\" in player && \"y\" in player) {\n matterExports.Body.setPosition(body, {\n x: player.x(),\n y: player.y()\n });\n return true;\n }\n return false;\n }\n /**\n * Get a physics body by entity ID\n * \n * Used by the MovementManager to apply movement strategies\n * \n * @param id - Entity ID\n * @returns The Matter.js body or undefined if not found\n * \n * @example\n * ```ts\n * // Get a body to apply movement\n * const body = physic.getBody('player1');\n * if (body) Matter.Body.setVelocity(body, { x: 5, y: 0 });\n * ```\n */\n getBody(id) {\n return this.hitboxes.get(id)?.body;\n }\n /**\n * Apply a translation to a body directly\n * \n * Used as a clean interface for the movement system.\n * Automatically determines and sets the intended direction for players.\n * \n * @param id - Entity ID\n * @param dx - X displacement in pixels\n * @param dy - Y displacement in pixels\n * @returns Boolean indicating success\n * \n * @example\n * ```ts\n * // Move entity 5px right, 2px down\n * physic.applyTranslation('player1', 5, 2);\n * ```\n */\n applyTranslation(id, dx, dy) {\n const body = this.getBody(id);\n if (!body) return false;\n const hitbox = this.hitboxes.get(id);\n if (hitbox?.enableSliding) {\n this.intendedMovements.set(id, { x: dx, y: dy });\n }\n const player = body.label;\n if (player && typeof player === \"object\" && \"setIntendedDirection\" in player) {\n const direction = this.vectorToDirection(dx, dy);\n if (direction !== null && typeof player.setIntendedDirection === \"function\") {\n player.setIntendedDirection(direction);\n }\n }\n matterExports.Body.translate(body, { x: dx, y: dy });\n return true;\n }\n /**\n * Set the velocity of a body directly\n * \n * Used as a clean interface for the movement system\n * \n * @param id - Entity ID\n * @param vx - X velocity component\n * @param vy - Y velocity component\n * @returns Boolean indicating success\n * \n * @example\n * ```ts\n * // Set entity velocity to 5px/s right\n * physic.setVelocity('player1', 5, 0);\n * ```\n */\n setVelocity(id, vx, vy) {\n const body = this.getBody(id);\n if (!body) return false;\n matterExports.Body.setVelocity(body, { x: vx, y: vy });\n return true;\n }\n /**\n * Apply a force to a body\n * \n * Used as a clean interface for the movement system\n * \n * @param id - Entity ID\n * @param forceX - X force component\n * @param forceY - Y force component\n * @param position - Application point (optional, default is body center)\n * @returns Boolean indicating success\n * \n * @example\n * ```ts\n * // Apply force to push entity\n * physic.applyForce('player1', 0.05, 0);\n * ```\n */\n applyForce(id, forceX, forceY, position) {\n const body = this.getBody(id);\n if (!body) return false;\n matterExports.Body.applyForce(body, position || body.position, { x: forceX, y: forceY });\n return true;\n }\n /**\n * Get the Matter.js world object\n * \n * Useful for advanced manipulation and querying of the physics world\n * \n * @returns Matter.js World object\n * \n * @example\n * ```ts\n * // Query for all bodies in an area\n * const world = physic.getWorld();\n * const bodies = Matter.Query.region(world.bodies, area);\n * ```\n */\n getWorld() {\n return this.world;\n }\n /* ----------------------------------------------------------------------- */\n /* ZONES */\n /* ----------------------------------------------------------------------- */\n /**\n * Create a new Zone sensor. Never collides physically but triggers events.\n * \n * @param id - Unique identifier for the zone\n * @param opts - Zone options\n * @returns The id of the created zone\n * \n * @example\n * ```ts\n * // 90° cone vision in front of guard1 (120px range)\n * physic.addZone('guardVision', {\n * linkedTo: 'guard1',\n * radius: 120,\n * angle: 90,\n * direction: Direction.Right,\n * limitedByWalls: true\n * });\n * ```\n */\n addZone(id, opts) {\n if (this.zones.has(id)) throw new Error(`Zone with id ${id} already exists`);\n const radius = opts.radius;\n const fullCircle = !opts.angle || opts.angle >= 360;\n const aperture = (opts.angle ?? 360) * (Math.PI / 180);\n const createWedge = (angleRad, r) => {\n const step = Math.max(4, Math.ceil(angleRad / (Math.PI / 8)));\n const verts = [{ x: 0, y: 0 }];\n for (let i = 0; i <= step; i++) {\n const a = -angleRad / 2 + i / step * angleRad;\n verts.push({ x: Math.cos(a) * r, y: Math.sin(a) * r });\n }\n return matterExports.Bodies.fromVertices(0, 0, [verts], {\n isSensor: true,\n label: `zone:${id}`\n }, true);\n };\n let body;\n if (fullCircle) {\n body = matterExports.Bodies.circle(0, 0, radius, {\n isSensor: true,\n label: `zone:${id}`\n });\n } else {\n body = createWedge(aperture, radius);\n }\n if (!opts.linkedTo) {\n const x = opts.x ?? 0;\n const y = opts.y ?? 0;\n matterExports.Body.setPosition(body, { x, y });\n }\n matterExports.Composite.add(this.world, body);\n this.zones.set(id, {\n id,\n type: opts.linkedTo ? \"linked\" : \"static\",\n body,\n linkedTo: opts.linkedTo,\n aperture,\n limitedByWalls: !!opts.limitedByWalls\n });\n return id;\n }\n getZone(id) {\n return this.zones.get(id);\n }\n /**\n * Remove a zone from the world\n * \n * @param id - ID of the zone to remove\n * @returns Boolean indicating success\n * \n * @example\n * ```ts\n * // Remove a detection zone\n * physic.removeZone('guardVision');\n * ```\n */\n removeZone(id) {\n const zone = this.zones.get(id);\n if (!zone) return false;\n matterExports.Composite.remove(this.world, zone.body);\n this.zones.delete(id);\n this.zoneEvents.delete(id);\n this.zoneCollisions.delete(id);\n return true;\n }\n /**\n * Register zone enter/exit callbacks\n * \n * @param id - ID of the zone\n * @param onEnter - Callback when an entity enters the zone\n * @param onExit - Callback when an entity exits the zone\n * \n * @example\n * ```ts\n * // Register zone events\n * physic.registerZoneEvents('guardVision', \n * (hitIds) => console.log('Entities spotted:', hitIds),\n * (hitIds) => console.log('Entities lost:', hitIds)\n * );\n * ```\n */\n registerZoneEvents(id, onEnter, onExit) {\n this.zoneEvents.set(id, { onEnter, onExit });\n }\n /**\n * Get all entity IDs currently inside a zone\n * \n * @param id - ID of the zone to check\n * @returns Array of entity IDs or empty array if none found\n * \n * @example\n * ```ts\n * // Check which entities are in guard's vision\n * const spotted = physic.getEntitiesInZone('guardVision');\n * if (spotted.includes('player1')) {\n * // Guard saw the player!\n * }\n * ```\n */\n getEntitiesInZone(id) {\n return this.zoneCollisions.get(id) ? Array.from(this.zoneCollisions.get(id)) : [];\n }\n /**\n * Check for movement state changes on all movable hitboxes\n * \n * Detects when objects start or stop moving and triggers appropriate events\n * \n * @example\n * ```ts\n * // Called automatically in update()\n * physic.checkMovementChanges();\n * ```\n */\n checkMovementChanges() {\n const movementThreshold = 0.1;\n const positionChangeThreshold = 0.01;\n for (const [id, hitboxData] of this.hitboxes.entries()) {\n if (hitboxData.type === \"static\" || !hitboxData.previousPosition) continue;\n const body = hitboxData.body;\n const currentPosition = body.position;\n const velocity = Math.sqrt(body.velocity.x * body.velocity.x + body.velocity.y * body.velocity.y);\n const dx = currentPosition.x - hitboxData.previousPosition.x;\n const dy = currentPosition.y - hitboxData.previousPosition.y;\n const positionChanged = Math.sqrt(dx * dx + dy * dy) > positionChangeThreshold;\n const wasMoving = hitboxData.isMoving ?? false;\n const isCurrentlyMoving = velocity > movementThreshold || positionChanged;\n if (isCurrentlyMoving !== wasMoving) {\n hitboxData.isMoving = isCurrentlyMoving;\n const events = this.movementEvents.get(id);\n if (!events) continue;\n if (isCurrentlyMoving && events.onStartMoving) {\n events.onStartMoving();\n } else if (!isCurrentlyMoving && events.onStopMoving) {\n events.onStopMoving();\n }\n }\n hitboxData.previousPosition = { ...currentPosition };\n }\n }\n /**\n * Register movement event callbacks for a hitbox\n * \n * @param id - ID of the hitbox\n * @param onStartMoving - Callback when object starts moving\n * @param onStopMoving - Callback when object stops moving\n * \n * @example\n * ```ts\n * // Register movement events for player\n * physic.registerMovementEvents('player1', \n * () => console.log('Player started moving'),\n * () => console.log('Player stopped moving')\n * );\n * ```\n */\n registerMovementEvents(id, onStartMoving, onStopMoving) {\n this.movementEvents.set(id, { onStartMoving, onStopMoving });\n }\n /**\n * Check if a hitbox is currently moving\n * \n * @param id - ID of the hitbox to check\n * @returns Boolean indicating if the object is in motion\n * \n * @example\n * ```ts\n * // Check if player is moving\n * if (physic.isMoving('player1')) {\n * // Player is in motion\n * }\n * ```\n */\n isMoving(id) {\n const hitbox = this.hitboxes.get(id);\n return hitbox?.isMoving ?? false;\n }\n /**\n * Unregister movement events for a hitbox\n * \n * @param id - ID of the hitbox\n * @returns Boolean indicating success\n * \n * @example\n * ```ts\n * // Remove movement event listeners\n * physic.unregisterMovementEvents('player1');\n * ```\n */\n unregisterMovementEvents(id) {\n return this.movementEvents.delete(id);\n }\n /**\n * Enable or disable collision sliding for a hitbox\n * \n * @param id - ID of the hitbox\n * @param enabled - Whether to enable sliding\n * @param options - Sliding configuration options\n * @returns Boolean indicating success\n * \n * @example\n * ```ts\n * // Enable sliding for an existing player\n * physic.setSliding('player1', true, {\n * friction: 0.9,\n * minVelocity: 1.0\n * });\n * ```\n */\n setSliding(id, enabled, options) {\n const hitbox = this.hitboxes.get(id);\n if (!hitbox || hitbox.type !== \"movable\") return false;\n hitbox.enableSliding = enabled;\n if (enabled && options) {\n hitbox.slidingOptions = options;\n }\n if (enabled && !this.intendedMovements.has(id)) {\n this.intendedMovements.set(id, { x: 0, y: 0 });\n }\n return true;\n }\n /**\n * Check if sliding is enabled for a hitbox\n * \n * @param id - ID of the hitbox\n * @returns Boolean indicating if sliding is enabled\n * \n * @example\n * ```ts\n * // Check if player has sliding enabled\n * if (physic.isSlidingEnabled('player1')) {\n * // Player can slide along walls\n * }\n * ```\n */\n isSlidingEnabled(id) {\n const hitbox = this.hitboxes.get(id);\n return hitbox?.enableSliding ?? false;\n }\n /**\n * Get sliding options for a hitbox\n * \n * @param id - ID of the hitbox\n * @returns Sliding options or undefined if not found\n * \n * @example\n * ```ts\n * // Get current sliding configuration\n * const options = physic.getSlidingOptions('player1');\n * console.log('Friction:', options?.friction);\n * ```\n */\n getSlidingOptions(id) {\n const hitbox = this.hitboxes.get(id);\n return hitbox?.slidingOptions;\n }\n // Add new methods for sliding calculations and store velocities\n applySlidingCorrections() {\n for (const [id, hitboxData] of this.hitboxes.entries()) {\n if (hitboxData.type === \"movable\" && hitboxData.enableSliding) {\n const body = hitboxData.body;\n const intendedMovement = this.intendedMovements.get(id);\n const collisionData = this.collisionData.get(id);\n const slidingOptions = hitboxData.slidingOptions;\n if (!intendedMovement || !collisionData || collisionData.length === 0 || !slidingOptions) {\n continue;\n }\n const friction = slidingOptions.friction ?? 0.8;\n const minVelocity = slidingOptions.minVelocity ?? 0.5;\n const movementMagnitude = Math.sqrt(intendedMovement.x * intendedMovement.x + intendedMovement.y * intendedMovement.y);\n if (movementMagnitude < minVelocity) {\n continue;\n }\n let hasPartialCollision = false;\n let bestSlidingDirection = { x: 0, y: 0 };\n let totalOverlapRatio = 0;\n for (const collision of collisionData) {\n const analysis = collision.analysis;\n totalOverlapRatio += analysis.overlapRatio;\n if (analysis.isPartial) {\n hasPartialCollision = true;\n bestSlidingDirection.x += analysis.bestSlidingDirection.x;\n bestSlidingDirection.y += analysis.bestSlidingDirection.y;\n }\n }\n if (!hasPartialCollision) {\n continue;\n }\n if (collisionData.length > 1) {\n bestSlidingDirection.x /= collisionData.length;\n bestSlidingDirection.y /= collisionData.length;\n }\n const slidingMovement = matterExports.Vector.mult(bestSlidingDirection, friction);\n matterExports.Body.translate(body, slidingMovement);\n }\n }\n }\n storeCollisionNormals(pair, idA, idB) {\n const hitboxA = this.hitboxes.get(idA);\n const hitboxB = this.hitboxes.get(idB);\n if (hitboxA?.enableSliding && hitboxA.type === \"movable\" && hitboxB?.type === \"static\") {\n const intendedMovement = this.intendedMovements.get(idA);\n if (intendedMovement) {\n const analysis = this.analyzeCollision(pair.bodyA, pair.bodyB, intendedMovement);\n if (!this.collisionData.has(idA)) {\n this.collisionData.set(idA, []);\n }\n this.collisionData.get(idA).push({\n body: pair.bodyA,\n otherBody: pair.bodyB,\n analysis\n });\n }\n }\n if (hitboxB?.enableSliding && hitboxB.type === \"movable\" && hitboxA?.type === \"static\") {\n const intendedMovement = this.intendedMovements.get(idB);\n if (intendedMovement) {\n const analysis = this.analyzeCollision(pair.bodyB, pair.bodyA, intendedMovement);\n if (!this.collisionData.has(idB)) {\n this.collisionData.set(idB, []);\n }\n this.collisionData.get(idB).push({\n body: pair.bodyB,\n otherBody: pair.bodyA,\n analysis\n });\n }\n }\n }\n /**\n * Determine if a collision is partial (corner/edge) or full frontal\n * \n * @param bodyA - First collision body\n * @param bodyB - Second collision body\n * @param intendedMovement - The intended movement vector\n * @returns Object with collision analysis\n */\n analyzeCollision(bodyA, bodyB, intendedMovement) {\n const boundsA = bodyA.bounds;\n const boundsB = bodyB.bounds;\n const overlapLeft = Math.max(boundsA.min.x, boundsB.min.x);\n const overlapRight = Math.min(boundsA.max.x, boundsB.max.x);\n const overlapTop = Math.max(boundsA.min.y, boundsB.min.y);\n const overlapBottom = Math.min(boundsA.max.y, boundsB.max.y);\n const overlapWidth = Math.max(0, overlapRight - overlapLeft);\n const overlapHeight = Math.max(0, overlapBottom - overlapTop);\n const overlapArea = overlapWidth * overlapHeight;\n const bodyAWidth = boundsA.max.x - boundsA.min.x;\n const bodyAHeight = boundsA.max.y - boundsA.min.y;\n const bodyAArea = bodyAWidth * bodyAHeight;\n const overlapRatio = overlapArea / bodyAArea;\n const isPartial = overlapRatio < 0.3;\n let bestSlidingDirection = { x: 0, y: 0 };\n if (isPartial) {\n const centerA = { x: (boundsA.min.x + boundsA.max.x) / 2, y: (boundsA.min.y + boundsA.max.y) / 2 };\n const centerB = { x: (boundsB.min.x + boundsB.max.x) / 2, y: (boundsB.min.y + boundsB.max.y) / 2 };\n const toPlayer = matterExports.Vector.sub(centerA, centerB);\n if (Math.abs(intendedMovement.x) > Math.abs(intendedMovement.y)) {\n bestSlidingDirection.y = toPlayer.y > 0 ? Math.abs(intendedMovement.x) : -Math.abs(intendedMovement.x);\n bestSlidingDirection.x = 0;\n } else {\n bestSlidingDirection.x = toPlayer.x > 0 ? Math.abs(intendedMovement.y) : -Math.abs(intendedMovement.y);\n bestSlidingDirection.y = 0;\n }\n const magnitude = Math.sqrt(bestSlidingDirection.x * bestSlidingDirection.x + bestSlidingDirection.y * bestSlidingDirection.y);\n if (magnitude > 0) {\n bestSlidingDirection.x /= magnitude;\n bestSlidingDirection.y /= magnitude;\n const intendedMagnitude = Math.sqrt(intendedMovement.x * intendedMovement.x + intendedMovement.y * intendedMovement.y);\n bestSlidingDirection.x *= intendedMagnitude;\n bestSlidingDirection.y *= intendedMagnitude;\n }\n }\n return {\n isPartial,\n overlapRatio,\n bestSlidingDirection\n };\n }\n resolveMovableCollisions() {\n const processedPairs = /* @__PURE__ */ new Set();\n const movableHitboxes = Array.from(this.hitboxes.values()).filter((h) => h.type === \"movable\");\n for (let i = 0; i < movableHitboxes.length; i++) {\n for (let j = i + 1; j < movableHitboxes.length; j++) {\n const hitboxA = movableHitboxes[i];\n const hitboxB = movableHitboxes[j];\n const bodyA = hitboxA.body;\n const bodyB = hitboxB.body;\n const isOverlapping = this.areBodiesTouching(bodyA, bodyB);\n const wasColliding = this.areColliding(hitboxA.id, hitboxB.id);\n if (isOverlapping && !wasColliding) {\n this.recordCollision(hitboxA.id, hitboxB.id);\n this.recordCollision(hitboxB.id, hitboxA.id);\n const eventsA = this.collisionEvents.get(hitboxA.id);\n const eventsB = this.collisionEvents.get(hitboxB.id);\n if (eventsA?.onCollisionEnter) {\n eventsA.onCollisionEnter([hitboxB.id]);\n }\n if (eventsB?.onCollisionEnter) {\n eventsB.onCollisionEnter([hitboxA.id]);\n }\n } else if (!isOverlapping && wasColliding) {\n const isOverlapping2 = this.areBodiesTouching(bodyA, bodyB, 10);\n if (isOverlapping2) continue;\n this.removeCollision(hitboxA.id, hitboxB.id);\n this.removeCollision(hitboxB.id, hitboxA.id);\n const eventsA = this.collisionEvents.get(hitboxA.id);\n const eventsB = this.collisionEvents.get(hitboxB.id);\n if (eventsA?.onCollisionExit) {\n eventsA.onCollisionExit([hitboxB.id]);\n }\n if (eventsB?.onCollisionExit) {\n eventsB.onCollisionExit([hitboxA.id]);\n }\n }\n }\n }\n for (const [id, collisions] of this.collisions.entries()) {\n const hitbox = this.hitboxes.get(id);\n if (!hitbox || hitbox.type !== \"movable\") continue;\n for (const otherId of collisions) {\n const otherHitbox = this.hitboxes.get(otherId);\n if (!otherHitbox || otherHitbox.type !== \"movable\") continue;\n const pairId = id < otherId ? `${id}-${otherId}` : `${otherId}-${id}`;\n if (processedPairs.has(pairId)) continue;\n processedPairs.add(pairId);\n const body = hitbox.body;\n const otherBody = otherHitbox.body;\n const intendedMovement = this.intendedMovements.get(id);\n const otherIntendedMovement = this.intendedMovements.get(otherId);\n const shouldRevertA = intendedMovement && this.isMovingTowards(body, otherBody, intendedMovement);\n const shouldRevertB = otherIntendedMovement && this.isMovingTowards(otherBody, body, otherIntendedMovement);\n if (shouldRevertA) {\n matterExports.Body.translate(body, { x: -intendedMovement.x, y: -intendedMovement.y });\n matterExports.Body.setVelocity(body, { x: 0, y: 0 });\n }\n if (shouldRevertB) {\n matterExports.Body.translate(otherBody, { x: -otherIntendedMovement.x, y: -otherIntendedMovement.y });\n matterExports.Body.setVelocity(otherBody, { x: 0, y: 0 });\n }\n }\n }\n }\n /**\n * Check if two bodies are actually touching/overlapping\n */\n areBodiesTouching(bodyA, bodyB, tolerance = 0) {\n const boundsA = bodyA.bounds;\n const boundsB = bodyB.bounds;\n return !(boundsA.max.x < boundsB.min.x - tolerance || boundsA.min.x > boundsB.max.x + tolerance || boundsA.max.y < boundsB.min.y - tolerance || boundsA.min.y > boundsB.max.y + tolerance);\n }\n /**\n * Check if a body is moving towards another body\n */\n isMovingTowards(bodyA, bodyB, movement) {\n const directionToB = {\n x: bodyB.position.x - bodyA.position.x,\n y: bodyB.position.y - bodyA.position.y\n };\n const dotProduct = movement.x * directionToB.x + movement.y * directionToB.y;\n return dotProduct > 0;\n }\n}\n\nclass MovementManager {\n constructor() {\n /** Map of entity IDs to their active movement strategies */\n this.strategies = /* @__PURE__ */ new Map();\n }\n /**\n * Add a movement strategy to an entity\n * \n * @param id - Entity ID\n * @param strategy - Movement strategy to apply\n */\n add(id, strategy) {\n if (!this.strategies.has(id)) {\n this.strategies.set(id, []);\n }\n this.strategies.get(id).push(strategy);\n }\n /**\n * Remove a specific movement strategy from an entity\n * \n * @param id - Entity ID\n * @param strategy - The strategy instance to remove\n * @returns True if the strategy was found and removed\n */\n remove(id, strategy) {\n const entityStrategies = this.strategies.get(id);\n if (!entityStrategies) return false;\n const index = entityStrategies.indexOf(strategy);\n if (index === -1) return false;\n entityStrategies.splice(index, 1);\n return true;\n }\n /**\n * Remove all movement strategies from an entity\n * \n * @param id - Entity ID\n */\n clear(id) {\n this.strategies.delete(id);\n }\n /**\n * Check if an entity has any active movement strategies\n * \n * @param id - Entity ID\n * @returns True if entity has active strategies\n * \n * @example\n * ```ts\n * // Check if player has active movements\n * if (movementManager.hasActiveStrategies('player1')) {\n * // Don't accept input while movements are active\n * }\n * ```\n */\n hasActiveStrategies(id) {\n const entityStrategies = this.strategies.get(id);\n return Boolean(entityStrategies && entityStrategies.length > 0);\n }\n /**\n * Get all active movement strategies for an entity\n * \n * @param id - Entity ID\n * @returns Array of active strategies or empty array if none\n * \n * @example\n * ```ts\n * // Get all player movements\n * const movements = movementManager.getStrategies('player1');\n * ```\n */\n getStrategies(id) {\n return this.strategies.get(id) || [];\n }\n /**\n * Update all movement strategies\n * Must be called BEFORE physics.update()\n * \n * @param dt - Time delta in milliseconds\n * @param physic - Physics system to get bodies from\n */\n update(dt, physic) {\n for (const [id, strategies] of this.strategies.entries()) {\n if (strategies.length === 0) {\n this.strategies.delete(id);\n continue;\n }\n const body = physic.getBody(id);\n if (!body) continue;\n for (let i = strategies.length - 1; i >= 0; i--) {\n const strategy = strategies[i];\n strategy.update(body, dt);\n if (strategy.isFinished?.()) {\n strategies.splice(i, 1);\n strategy.onFinished?.();\n }\n }\n }\n }\n}\n\nclass LinearMove {\n /**\n * Create a linear movement\n * \n * @param vx - X velocity component\n * @param vy - Y velocity component\n * @param duration - Optional duration in milliseconds (if not set, movement continues indefinitely)\n */\n constructor(vx, vy, duration) {\n this.vx = vx;\n this.vy = vy;\n this.duration = duration;\n this.elapsed = 0;\n }\n /**\n * Apply velocity to the body\n * \n * @param body - Matter.js body to move\n * @param dt - Time delta in milliseconds\n */\n update(body, dt) {\n if (this.duration !== void 0) {\n this.elapsed += dt;\n }\n matterExports.Body.setVelocity(body, { x: this.vx, y: this.vy });\n }\n /**\n * Check if movement duration has elapsed\n * \n * @returns True if movement should stop\n */\n isFinished() {\n return this.duration !== void 0 && this.elapsed >= this.duration;\n }\n}\n\nclass Dash {\n /**\n * Create a dash movement\n * \n * @param speed - Movement speed (pixels per frame)\n * @param direction - Normalized direction vector { x, y }\n * @param duration - Duration in milliseconds\n */\n constructor(speed, direction, duration) {\n this.speed = speed;\n this.direction = direction;\n this.duration = duration;\n this.elapsed = 0;\n this.finished = false;\n const magnitude = Math.sqrt(direction.x * direction.x + direction.y * direction.y);\n if (magnitude !== 0 && magnitude !== 1) {\n this.direction = {\n x: direction.x / magnitude,\n y: direction.y / magnitude\n };\n }\n }\n /**\n * Apply dash movement to the body\n * \n * @param body - Matter.js body to move\n * @param dt - Time delta in milliseconds\n */\n update(body, dt) {\n this.elapsed += dt;\n if (this.elapsed <= this.duration) {\n matterExports.Body.setVelocity(body, {\n x: this.direction.x * this.speed,\n y: this.direction.y * this.speed\n });\n } else {\n matterExports.Body.setVelocity(body, { x: 0, y: 0 });\n this.finished = true;\n }\n }\n /**\n * Check if dash duration has elapsed\n * \n * @returns True if dash is complete\n */\n isFinished() {\n return this.finished;\n }\n /**\n * Optional callback for when dash completes\n * Can be used to chain into another movement\n */\n onFinished() {\n }\n}\n\nclass Knockback {\n /**\n * Create a knockback movement\n * \n * @param direction - Normalized direction vector { x, y }\n * @param force - Initial force of the knockback\n * @param duration - Duration in milliseconds\n * @param decayFactor - Speed decay multiplier per frame (0.8-0.95 typical)\n */\n constructor(direction, force, duration, decayFactor = 0.9) {\n this.direction = direction;\n this.force = force;\n this.duration = duration;\n this.decayFactor = decayFactor;\n this.elapsed = 0;\n this.currentSpeed = force;\n const magnitude = Math.sqrt(direction.x * direction.x + direction.y * direction.y);\n if (magnitude !== 0 && magnitude !== 1) {\n this.direction = {\n x: direction.x / magnitude,\n y: direction.y / magnitude\n };\n }\n }\n /**\n * Apply knockback movement with decreasing force\n * \n * @param body - Matter.js body to move\n * @param dt - Time delta in milliseconds\n */\n update(body, dt) {\n this.elapsed += dt;\n if (this.elapsed <= this.duration) {\n matterExports.Body.setVelocity(body, {\n x: this.direction.x * this.currentSpeed,\n y: this.direction.y * this.currentSpeed\n });\n this.currentSpeed *= this.decayFactor;\n } else {\n matterExports.Body.setVelocity(body, { x: 0, y: 0 });\n }\n }\n /**\n * Check if knockback duration has elapsed\n * \n * @returns True if knockback is complete\n */\n isFinished() {\n return this.elapsed >= this.duration;\n }\n}\n\nclass PathFollow {\n // Distance threshold to consider waypoint reached\n /**\n * Create a path following movement\n * \n * @param waypoints - Array of x,y positions to follow\n * @param speed - Movement speed in pixels per frame\n * @param loop - Whether to loop back to start after reaching final waypoint\n * @param pauseAtWaypoints - Optional time in ms to pause at each waypoint\n */\n constructor(waypoints, speed, loop = false, pauseAtWaypoints = 0) {\n this.waypoints = waypoints;\n this.speed = speed;\n this.loop = loop;\n this.pauseAtWaypoints = pauseAtWaypoints;\n this.currentWaypoint = 0;\n this.finished = false;\n this.direction = { x: 0, y: 0 };\n this.waypointThreshold = 5;\n this.pauseTimer = 0;\n this.isPaused = false;\n if (waypoints.length === 0) {\n this.finished = true;\n }\n }\n /**\n * Update path following logic\n * \n * @param body - Matter.js body to move\n * @param dt - Time delta in milliseconds\n */\n update(body, dt) {\n if (this.finished || this.waypoints.length === 0) {\n matterExports.Body.setVelocity(body, { x: 0, y: 0 });\n return;\n }\n if (this.isPaused) {\n matterExports.Body.setVelocity(body, { x: 0, y: 0 });\n this.pauseTimer += dt;\n if (this.pauseTimer >= this.pauseAtWaypoints) {\n this.isPaused = false;\n this.pauseTimer = 0;\n }\n return;\n }\n const currentTarget = this.waypoints[this.currentWaypoint];\n const distanceX = currentTarget.x - body.position.x;\n const distanceY = currentTarget.y - body.position.y;\n const distance = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\n if (distance <= this.waypointThreshold) {\n this.currentWaypoint++;\n if (this.currentWaypoint >= this.waypoints.length) {\n if (this.loop) {\n this.currentWaypoint = 0;\n } else {\n this.finished = true;\n matterExports.Body.setVelocity(body, { x: 0, y: 0 });\n return;\n }\n }\n if (this.pauseAtWaypoints > 0) {\n this.isPaused = true;\n this.pauseTimer = 0;\n return;\n }\n }\n if (distance > 0) {\n this.direction = {\n x: distanceX / distance,\n y: distanceY / distance\n };\n }\n matterExports.Body.setVelocity(body, {\n x: this.direction.x * this.speed,\n y: this.direction.y * this.speed\n });\n }\n /**\n * Check if path has been fully traversed\n * \n * @returns True if path following is complete\n */\n isFinished() {\n return this.finished;\n }\n /**\n * Get current waypoint index\n * \n * @returns The index of the current target waypoint\n */\n getCurrentWaypoint() {\n return this.currentWaypoint;\n }\n /**\n * Set a new path of waypoints\n * \n * @param waypoints - New waypoints to follow\n * @param resetProgress - Whether to start from the first waypoint\n */\n setWaypoints(waypoints, resetProgress = true) {\n this.waypoints = waypoints;\n if (resetProgress) {\n this.currentWaypoint = 0;\n }\n this.finished = waypoints.length === 0;\n }\n}\n\nclass Oscillate {\n /**\n * Create an oscillating movement\n * \n * @param direction - Primary axis of oscillation (normalized)\n * @param amplitude - Maximum distance from center position\n * @param period - Time in ms for a complete cycle\n * @param type - Oscillation pattern type ('linear', 'sine', 'circular')\n * @param duration - Optional total duration in ms (undefined for infinite)\n */\n constructor(direction, amplitude, period, type = \"sine\", duration) {\n this.direction = direction;\n this.amplitude = amplitude;\n this.period = period;\n this.type = type;\n this.duration = duration;\n this.elapsed = 0;\n this.startPosition = { x: 0, y: 0 };\n this.positionSet = false;\n const magnitude = Math.sqrt(direction.x * direction.x + direction.y * direction.y);\n if (magnitude !== 0 && magnitude !== 1) {\n this.direction = {\n x: direction.x / magnitude,\n y: direction.y / magnitude\n };\n }\n }\n /**\n * Apply oscillating movement\n * \n * @param body - Matter.js body to move\n * @param dt - Time delta in milliseconds\n */\n update(body, dt) {\n if (!this.positionSet) {\n this.startPosition = { ...body.position };\n this.positionSet = true;\n }\n this.elapsed += dt;\n let factor;\n let perpFactor = 0;\n const cycleProgress = this.elapsed % this.period / this.period;\n switch (this.type) {\n case \"linear\":\n factor = cycleProgress < 0.5 ? cycleProgress * 2 : (1 - cycleProgress) * 2;\n break;\n case \"sine\":\n factor = Math.sin(cycleProgress * Math.PI * 2) * 0.5 + 0.5;\n break;\n case \"circular\":\n factor = Math.sin(cycleProgress * Math.PI * 2);\n perpFactor = Math.cos(cycleProgress * Math.PI * 2);\n break;\n default:\n factor = Math.sin(cycleProgress * Math.PI * 2) * 0.5 + 0.5;\n }\n let newX, newY;\n if (this.type === \"circular\") {\n const perpDirection = { x: -this.direction.y, y: this.direction.x };\n newX = this.startPosition.x + this.direction.x * factor * this.amplitude + perpDirection.x * perpFactor * this.amplitude;\n newY = this.startPosition.y + this.direction.y * factor * this.amplitude + perpDirection.y * perpFactor * this.amplitude;\n } else {\n const mappedFactor = factor * 2 - 1;\n newX = this.startPosition.x + this.direction.x * mappedFactor * this.amplitude;\n newY = this.startPosition.y + this.direction.y * mappedFactor * this.amplitude;\n }\n const vx = (newX - body.position.x) / (dt / 1e3);\n const vy = (newY - body.position.y) / (dt / 1e3);\n matterExports.Body.setVelocity(body, { x: vx, y: vy });\n }\n /**\n * Check if oscillation duration has elapsed\n * \n * @returns True if movement is finished\n */\n isFinished() {\n return this.duration !== void 0 && this.elapsed >= this.duration;\n }\n /**\n * Reset the oscillation to start from the current position\n */\n reset() {\n this.elapsed = 0;\n this.positionSet = false;\n }\n}\n\nclass CompositeMovement {\n /**\n * Create a composite movement\n * \n * @param mode - How to combine strategies ('parallel' or 'sequence')\n * @param strategies - Array of movement strategies to combine\n */\n constructor(mode, strategies) {\n this.mode = mode;\n this.strategies = strategies;\n this.currentStrategyIndex = 0;\n }\n /**\n * Apply the composite movement\n * \n * @param body - Matter.js body to move\n * @param dt - Time delta in milliseconds\n */\n update(body, dt) {\n if (this.strategies.length === 0) return;\n if (this.mode === \"parallel\") {\n this.updateParallel(body, dt);\n } else {\n this.updateSequence(body, dt);\n }\n }\n /**\n * Update all strategies in parallel\n */\n updateParallel(body, dt) {\n const currentStrategies = [...this.strategies];\n const originalVelocity = { x: body.velocity.x, y: body.velocity.y };\n let velocitiesApplied = 0;\n for (let i = currentStrategies.length - 1; i >= 0; i--) {\n const strategy = currentStrategies[i];\n const beforeVx = body.velocity.x;\n const beforeVy = body.velocity.y;\n strategy.update(body, dt);\n if (beforeVx !== body.velocity.x || beforeVy !== body.velocity.y) {\n velocitiesApplied++;\n }\n if (strategy.isFinished?.()) {\n this.strategies.splice(this.strategies.indexOf(strategy), 1);\n strategy.onFinished?.();\n }\n }\n if (velocitiesApplied > 1) {\n matterExports.Body.setVelocity(body, {\n x: (body.velocity.x + originalVelocity.x) / 2,\n y: (body.velocity.y + originalVelocity.y) / 2\n });\n }\n }\n /**\n * Update strategies in sequence\n */\n updateSequence(body, dt) {\n if (this.currentStrategyIndex >= this.strategies.length) {\n return;\n }\n const currentStrategy = this.strategies[this.currentStrategyIndex];\n currentStrategy.update(body, dt);\n if (currentStrategy.isFinished?.()) {\n currentStrategy.onFinished?.();\n this.currentStrategyIndex++;\n }\n }\n /**\n * Check if all strategies have finished\n * \n * @returns True if all strategies are completed\n */\n isFinished() {\n if (this.strategies.length === 0) return true;\n if (this.mode === \"parallel\") {\n return this.strategies.length === 0;\n } else {\n return this.currentStrategyIndex >= this.strategies.length;\n }\n }\n /**\n * Add a new strategy to the composite\n * \n * @param strategy - Movement strategy to add\n */\n add(strategy) {\n this.strategies.push(strategy);\n }\n /**\n * Remove a strategy from the composite\n * \n * @param strategy - Movement strategy to remove\n * @returns True if the strategy was found and removed\n */\n remove(strategy) {\n const index = this.strategies.indexOf(strategy);\n if (index === -1) return false;\n this.strategies.splice(index, 1);\n return true;\n }\n /**\n * Reset the composite to start from the beginning\n */\n reset() {\n this.currentStrategyIndex = 0;\n }\n}\n\nconst vTmp1$1 = matterExports.Vector.create();\nconst vTmp2$1 = matterExports.Vector.create();\nclass SeekAvoid {\n /**\n * @param phys Monde physique\n * @param target Fonction → position à suivre\n * @param maxSpeed Vitesse max (px / ms)\n * @param repulseRadius Rayon de répulsion\n * @param repulseWeight Intensité de la répulsion\n * @param arriveRadius Rayon dans lequel on “arrive” (≃ taille hitbox)\n * @param getTargetBody (optionnel) fonction → body de la cible pour l’ignorer\n */\n constructor(phys, targetBody, maxSpeed = 2.5, repulseRadius = 32, repulseWeight = 4, arriveRadius = 16) {\n this.phys = phys;\n this.targetBody = targetBody;\n this.maxSpeed = maxSpeed;\n this.repulseRadius = repulseRadius;\n this.repulseWeight = repulseWeight;\n this.arriveRadius = arriveRadius;\n /** (4 px)² : plancher pour éviter les divisions par 0 */\n this.EPS2 = 16;\n this.repulseRadius2 = repulseRadius * repulseRadius;\n this.arriveRadius2 = arriveRadius * arriveRadius;\n }\n /* ------------------------------------------------------------------ */\n update(body, dt) {\n const targetPos = this.targetBody.position;\n matterExports.Vector.sub(targetPos, body.position, vTmp1$1);\n const dist2 = matterExports.Vector.magnitudeSquared(vTmp1$1);\n let arrived = false;\n if (this.targetBody) {\n arrived = matterExports.Bounds.overlaps(body.bounds, this.targetBody.bounds);\n }\n if (arrived) {\n vTmp1$1.x = 0;\n vTmp1$1.y = 0;\n } else {\n const invLen = 1 / Math.sqrt(dist2);\n vTmp1$1.x *= invLen;\n vTmp1$1.y *= invLen;\n }\n const area = {\n min: {\n x: body.position.x - this.repulseRadius,\n y: body.position.y - this.repulseRadius\n },\n max: {\n x: body.position.x + this.repulseRadius,\n y: body.position.y + this.repulseRadius\n }\n };\n const nearby = matterExports.Query.region(this.phys.getWorld().bodies, area);\n const targetBody = this.targetBody;\n let pushX = 0, pushY = 0;\n if (!arrived) {\n for (const b of nearby) {\n if (b === body || b === targetBody || b.isSensor) continue;\n matterExports.Vector.sub(body.position, b.position, vTmp2$1);\n let d2 = matterExports.Vector.magnitudeSquared(vTmp2$1);\n if (d2 > this.repulseRadius2) continue;\n if (d2 < this.EPS2) d2 = this.EPS2;\n const w = this.repulseWeight / d2;\n pushX += vTmp2$1.x * w;\n pushY += vTmp2$1.y * w;\n }\n }\n const pushLen = Math.hypot(pushX, pushY);\n const maxPush = this.maxSpeed * 4;\n if (pushLen > maxPush) {\n const k = maxPush / pushLen;\n pushX *= k;\n pushY *= k;\n }\n let vx = vTmp1$1.x * this.maxSpeed + pushX;\n let vy = vTmp1$1.y * this.maxSpeed + pushY;\n const vLen = Math.hypot(vx, vy);\n if (vLen > this.maxSpeed) {\n const k = this.maxSpeed / vLen;\n vx *= k;\n vy *= k;\n }\n if (!Number.isFinite(vx) || !Number.isFinite(vy)) {\n console.warn(\"[SeekAvoid] vitesse invalide – reset\", { vx, vy });\n vx = 0;\n vy = 0;\n }\n matterExports.Body.setVelocity(body, { x: vx, y: vy });\n }\n setParameters(max, repR, repW, arrR) {\n if (max !== void 0) this.maxSpeed = max;\n if (repR !== void 0) {\n this.repulseRadius = repR;\n this.repulseRadius2 = repR * repR;\n }\n if (repW !== void 0) this.repulseWeight = repW;\n if (arrR !== void 0) {\n this.arriveRadius = arrR;\n this.arriveRadius2 = arrR * arrR;\n }\n }\n}\n\nconst vTmp1 = matterExports.Vector.create();\nconst vTmp2 = matterExports.Vector.create();\nclass LinearRepulsion {\n /**\n * Create a seeking movement with linear obstacle avoidance\n * \n * @param phys - Physics system to query for nearby obstacles\n * @param target - Function returning the current target position\n * @param maxSpeed - Maximum movement speed\n * @param repulseRadius - Radius around entity to check for obstacles\n * @param repulseWeight - Strength of repulsion from obstacles\n */\n constructor(phys, target, maxSpeed = 2.5, repulseRadius = 32, repulseWeight = 4) {\n this.phys = phys;\n this.target = target;\n this.maxSpeed = maxSpeed;\n this.repulseRadius = repulseRadius;\n this.repulseWeight = repulseWeight;\n this.repulseRadius2 = this.repulseRadius * this.repulseRadius;\n }\n /**\n * Update seek and avoid behavior with linear repulsion\n * \n * @param body - Matter.js body to move\n * @param dt - Time delta in milliseconds\n */\n update(body, dt) {\n matterExports.Vector.sub(this.target(), body.position, vTmp1);\n const distance = matterExports.Vector.magnitude(vTmp1);\n if (distance > 1e-4) matterExports.Vector.mult(vTmp1, 1 / distance, vTmp1);\n const area = {\n min: {\n x: body.position.x - this.repulseRadius,\n y: body.position.y - this.repulseRadius\n },\n max: {\n x: body.position.x + this.repulseRadius,\n y: body.position.y + this.repulseRadius\n }\n };\n const nearby = matterExports.Query.region(this.phys.getWorld().bodies, area);\n let pushX = 0, pushY = 0;\n for (const b of nearby) {\n if (b === body || b.isSensor) continue;\n matterExports.Vector.sub(body.position, b.position, vTmp2);\n const d2 = matterExports.Vector.magnitudeSquared(vTmp2);\n if (d2 > this.repulseRadius2) continue;\n const d = Math.sqrt(d2);\n const w = this.repulseWeight * (this.repulseRadius - d) / this.repulseRadius;\n if (d > 1e-4) {\n pushX += vTmp2.x * w / d;\n pushY += vTmp2.y * w / d;\n }\n }\n const MAX_PUSH_LEN = this.maxSpeed * 3;\n let pushLen = Math.hypot(pushX, pushY);\n if (pushLen > MAX_PUSH_LEN) {\n pushX = pushX * MAX_PUSH_LEN / pushLen;\n pushY = pushY * MAX_PUSH_LEN / pushLen;\n }\n const desired = matterExports.Vector.create(\n vTmp1.x * this.maxSpeed + pushX,\n vTmp1.y * this.maxSpeed + pushY\n );\n const len = matterExports.Vector.magnitude(desired);\n if (len > this.maxSpeed) matterExports.Vector.mult(desired, this.maxSpeed / len, desired);\n matterExports.Body.setVelocity(body, desired);\n }\n /**\n * Update the target to follow\n * \n * @param newTarget - Function returning the new target position\n */\n setTarget(newTarget) {\n this.target = newTarget;\n }\n /**\n * Update movement parameters\n * \n * @param maxSpeed - New maximum speed\n * @param repulseRadius - New repulsion radius\n * @param repulseWeight - New repulsion weight\n */\n setParameters(maxSpeed, repulseRadius, repulseWeight) {\n if (maxSpeed !== void 0) this.maxSpeed = maxSpeed;\n if (repulseRadius !== void 0) {\n this.repulseRadius = repulseRadius;\n this.repulseRadius2 = this.repulseRadius * this.repulseRadius;\n }\n if (repulseWeight !== void 0) this.repulseWeight = repulseWeight;\n }\n}\n\nclass IceMovement {\n /**\n * Create an ice movement behavior\n * \n * @param targetDirection - Desired movement direction (normalized vector)\n * @param maxSpeed - Maximum speed when fully accelerated\n * @param acceleration - Acceleration rate (0-1, lower = more slippery start)\n * @param friction - Friction rate (0-1, lower = more slippery stop)\n * @param duration - Optional duration limit for the movement\n */\n constructor(targetDirection, maxSpeed = 4, acceleration = 0.15, friction = 0.05, duration) {\n this.targetDirection = targetDirection;\n this.maxSpeed = maxSpeed;\n this.acceleration = acceleration;\n this.friction = friction;\n this.duration = duration;\n // Current velocity components\n this.currentVx = 0;\n this.currentVy = 0;\n // Flags\n this.stopped = false;\n this.elapsed = 0;\n this.normalizeDirection();\n }\n /**\n * Update the ice movement physics\n * \n * @param body - Matter.js body to move\n * @param dt - Time delta in milliseconds\n */\n update(body, dt) {\n if (this.duration !== void 0) {\n this.elapsed += dt;\n if (this.elapsed >= this.duration) {\n this.stopped = true;\n }\n }\n if (!this.stopped) {\n this.currentVx += (this.targetDirection.x * this.maxSpeed - this.currentVx) * this.acceleration;\n this.currentVy += (this.targetDirection.y * this.maxSpeed - this.currentVy) * this.acceleration;\n } else {\n this.currentVx *= 1 - this.friction;\n this.currentVy *= 1 - this.friction;\n }\n matterExports.Body.setVelocity(body, {\n x: this.currentVx,\n y: this.currentVy\n });\n }\n /**\n * Check if movement is finished\n * (movement is considered finished when almost stopped)\n * \n * @returns True if movement is effectively stopped\n */\n isFinished() {\n const speed = Math.hypot(this.currentVx, this.currentVy);\n return this.stopped && speed < 0.05;\n }\n /**\n * Stop the movement (will start applying friction)\n */\n stop() {\n this.stopped = true;\n }\n /**\n * Resume movement in the current direction\n */\n resume() {\n this.stopped = false;\n }\n /**\n * Set a new target direction\n * The actual movement will gradually change toward this direction\n * \n * @param direction - New target direction\n */\n setTargetDirection(direction) {\n this.targetDirection = direction;\n this.normalizeDirection();\n this.stopped = false;\n }\n /**\n * Set movement parameters\n * \n * @param maxSpeed - New maximum speed\n * @param acceleration - New acceleration rate\n * @param friction - New friction rate\n */\n setParameters(maxSpeed, acceleration, friction) {\n if (maxSpeed !== void 0) this.maxSpeed = maxSpeed;\n if (acceleration !== void 0) this.acceleration = acceleration;\n if (friction !== void 0) this.friction = friction;\n }\n /**\n * Normalize the direction vector\n */\n normalizeDirection() {\n const magnitude = Math.sqrt(\n this.targetDirection.x * this.targetDirection.x + this.targetDirection.y * this.targetDirection.y\n );\n if (magnitude > 0) {\n this.targetDirection = {\n x: this.targetDirection.x / magnitude,\n y: this.targetDirection.y / magnitude\n };\n } else {\n this.targetDirection = { x: 0, y: 0 };\n }\n }\n}\n\nvar ProjectileType = /* @__PURE__ */ ((ProjectileType2) => {\n ProjectileType2[\"Straight\"] = \"straight\";\n ProjectileType2[\"Arc\"] = \"arc\";\n ProjectileType2[\"Bounce\"] = \"bounce\";\n return ProjectileType2;\n})(ProjectileType || {});\nclass ProjectileMovement {\n /**\n * Create a projectile movement\n * \n * @param type - Type of projectile trajectory\n * @param options - Projectile configuration\n */\n constructor(type, options) {\n this.type = type;\n this.options = options;\n this.elapsed = 0;\n this.distanceTraveled = 0;\n this.startPosition = { x: 0, y: 0 };\n this.bounceCount = 0;\n this.stage = 0 /* Flying */;\n this.finished = false;\n // Trajectory calculation variables\n this.currentHeight = 0;\n this.verticalVelocity = 0;\n // Default options\n this.defaultOptions = {\n initialHeight: 0,\n maxHeight: 50,\n gravity: 500,\n maxBounces: 0,\n bounciness: 0.6,\n drag: 0.01\n };\n this.options = { ...this.defaultOptions, ...options };\n const dirMagnitude = Math.sqrt(\n options.direction.x * options.direction.x + options.direction.y * options.direction.y\n );\n this.normalizedDirection = dirMagnitude > 0 ? {\n x: options.direction.x / dirMagnitude,\n y: options.direction.y / dirMagnitude\n } : { x: 1, y: 0 };\n this.currentHeight = options.initialHeight || 0;\n if (type === \"arc\" /* Arc */ || type === \"bounce\" /* Bounce */) {\n const maxHeight = options.maxHeight || 50;\n const gravity = options.gravity || 500;\n this.verticalVelocity = Math.sqrt(2 * gravity * maxHeight);\n }\n }\n /**\n * Update projectile movement\n * \n * @param body - Matter.js body to move\n * @param dt - Time delta in milliseconds\n */\n update(body, dt) {\n if (this.elapsed === 0) {\n this.startPosition = { ...body.position };\n }\n this.elapsed += dt;\n const dtSeconds = dt / 1e3;\n if (this.options.lifetime !== void 0 && this.elapsed >= this.options.lifetime) {\n this.finished = true;\n matterExports.Body.setVelocity(body, { x: 0, y: 0 });\n return;\n }\n if (this.stage === 0 /* Flying */) {\n this.updateFlying(body, dtSeconds);\n } else if (this.stage === 1 /* Bouncing */) {\n this.updateBouncing(body, dtSeconds);\n }\n const dx = body.position.x - this.startPosition.x;\n const dy = body.position.y - this.startPosition.y;\n this.distanceTraveled = Math.sqrt(dx * dx + dy * dy);\n if (this.options.maxRange !== void 0 && this.distanceTraveled >= this.options.maxRange) {\n this.finished = true;\n matterExports.Body.setVelocity(body, { x: 0, y: 0 });\n }\n }\n /**\n * Update projectile while in flying stage\n */\n updateFlying(body, dtSeconds) {\n let vx = this.normalizedDirection.x * this.options.speed;\n let vy = this.normalizedDirection.y * this.options.speed;\n if (this.options.drag && this.options.drag > 0) {\n vx *= 1 - this.options.drag * dtSeconds;\n vy *= 1 - this.options.drag * dtSeconds;\n }\n if (this.type === \"arc\" /* Arc */ || this.type === \"bounce\" /* Bounce */) {\n this.verticalVelocity -= (this.options.gravity || 500) * dtSeconds;\n this.currentHeight += this.verticalVelocity * dtSeconds;\n if (this.currentHeight <= 0) {\n this.currentHeight = 0;\n if (this.type === \"bounce\" /* Bounce */) {\n if (this.bounceCount < (this.options.maxBounces || 0)) {\n this.verticalVelocity = -this.verticalVelocity * (this.options.bounciness || 0.6);\n this.bounceCount++;\n vx *= this.options.bounciness || 0.6;\n vy *= this.options.bounciness || 0.6;\n } else {\n this.stage = 1 /* Bouncing */;\n }\n } else {\n this.finished = true;\n matterExports.Body.setVelocity(body, { x: 0, y: 0 });\n return;\n }\n }\n }\n matterExports.Body.setVelocity(body, { x: vx, y: vy });\n const renderHeightEvent = new CustomEvent(\"projectile:height\", {\n detail: {\n id: body.id,\n height: this.currentHeight\n }\n });\n window.dispatchEvent(renderHeightEvent);\n }\n /**\n * Update projectile while in bouncing stage (rolling/sliding)\n */\n updateBouncing(body, dtSeconds) {\n const friction = 0.95;\n let vx = body.velocity.x * friction;\n let vy = body.velocity.y * friction;\n matterExports.Body.setVelocity(body, { x: vx, y: vy });\n if (Math.abs(vx) < 0.5 && Math.abs(vy) < 0.5) {\n this.finished = true;\n matterExports.Body.setVelocity(body, { x: 0, y: 0 });\n }\n }\n /**\n * Check if projectile has completed its trajectory\n */\n isFinished() {\n return this.finished;\n }\n /**\n * Get current height of projectile above ground\n */\n getHeight() {\n return this.currentHeight;\n }\n /**\n * Get position along trajectory (0 to 1)\n * Useful for animation progress\n */\n getProgress() {\n if (this.options.maxRange) {\n return Math.min(1, this.distanceTraveled / this.options.maxRange);\n } else if (this.options.lifetime) {\n return Math.min(1, this.elapsed / this.options.lifetime);\n }\n return 0;\n }\n}\n\nclass RpgCommonMap {\n constructor() {\n this.data = signal(null);\n this.physic = new RpgCommonPhysic();\n this.moveManager = new MovementManager();\n /**\n * Observable representing the game loop tick\n * \n * This observable emits the current timestamp every 16ms (approximately 60fps).\n * It's shared using the share() operator, meaning that all subscribers will receive\n * events from a single interval rather than creating multiple intervals.\n * \n * @example\n * ```ts\n * // Subscribe to the game tick to update entity positions\n * map.tick$.subscribe(timestamp => {\n * // Update game entities based on elapsed time\n * this.updateEntities(timestamp);\n * });\n * ```\n */\n this.tick$ = new Observable((observer) => {\n const interval = setInterval(() => {\n observer.next({\n delta: 16,\n timestamp: Date.now()\n });\n }, 16);\n return () => clearInterval(interval);\n }).pipe(\n share()\n );\n }\n loadPhysic() {\n const hitboxes = this.data().hitboxes ?? [];\n const gap = 100;\n this.physic.addStaticHitbox(\"map-width-left\", -100, 0, gap, this.data().height);\n this.physic.addStaticHitbox(\"map-width-right\", this.data().width, 0, gap, this.data().height);\n this.physic.addStaticHitbox(\"map-height-top\", 0, -100, this.data().width, gap);\n this.physic.addStaticHitbox(\"map-height-bottom\", 0, this.data().height, this.data().width, gap);\n for (let staticHitbox of hitboxes) {\n this.physic.addStaticHitbox(staticHitbox.id ?? generateShortUUID(), staticHitbox.x, staticHitbox.y, staticHitbox.width, staticHitbox.height);\n }\n this.events.observable.subscribe(({ value: event, type }) => {\n if (type == \"add\") {\n this.physic.addMovableHitbox(event, event.x(), event.y(), event.hitbox().w, event.hitbox().h, {\n isSensor: true\n });\n this.physic.registerMovementEvents(event.id, () => {\n event.animationName.set(\"walk\");\n }, () => {\n event.animationName.set(\"stand\");\n });\n } else if (type == \"remove\") {\n this.physic.removeHitbox(event.id);\n }\n });\n this.tick$.subscribe(({ delta }) => {\n this.physic.update(delta);\n this.moveManager.update(delta, this.physic);\n });\n }\n movePlayer(player, direction) {\n this.physic.moveBody(player, direction);\n }\n /**\n * Register movement events for a player or event\n * \n * Attaches event listeners to detect when an entity starts or stops moving\n * \n * @param id - ID of the entity (player or event)\n * @param onStartMoving - Callback when entity starts moving\n * @param onStopMoving - Callback when entity stops moving\n * @returns Boolean indicating success\n * \n * @example\n * ```ts\n * // Register movement events for the player\n * map.registerMovementEvents('player1', \n * () => console.log('Player started moving'),\n * () => console.log('Player stopped moving')\n * );\n * ```\n */\n registerMovementEvents(id, onStartMoving, onStopMoving) {\n const object = this.getObjectById(id);\n if (!object) return false;\n this.physic.registerMovementEvents(id, onStartMoving, onStopMoving);\n return true;\n }\n /**\n * Check if an entity is currently moving\n * \n * @param id - ID of the entity to check\n * @returns Boolean indicating if the entity is in motion\n * \n * @example\n * ```ts\n * // Check if player is moving\n * if (map.isMoving('player1')) {\n * // Player is in motion\n * }\n * ```\n */\n isMoving(id) {\n return this.physic.isMoving(id);\n }\n getObjectById(id) {\n return this.players()[id] ?? this.events()[id];\n }\n /**\n * Create a temporary and moving hitbox on the map\n * \n * Allows to create a temporary hitbox that moves through multiple positions sequentially.\n * For example, you can use it to explode a bomb and find all the affected players, \n * or during a sword strike, you can create a moving hitbox and find the affected players.\n * \n * The method creates a zone sensor that moves through the specified hitbox positions\n * at the given speed, detecting collisions with players and events at each step.\n * \n * @param hitboxes - Array of hitbox positions to move through sequentially\n * @param options - Configuration options for the movement\n * @returns Observable that emits arrays of hit entities and completes when movement is finished\n * \n * @example\n * ```ts\n * // Create a sword slash effect that moves through two positions\n * map.createMovingHitbox([\n * { x: 100, y: 100, width: 50, height: 50 },\n * { x: 120, y: 100, width: 50, height: 50 }\n * ], { speed: 2 }).subscribe({\n * next(hits) {\n * // hits contains RpgPlayer or RpgEvent objects that were hit\n * console.log('Hit entities:', hits);\n * },\n * complete() {\n * console.log('Movement finished');\n * }\n * });\n * ```\n */\n createMovingHitbox(hitboxes, options = {}) {\n const { speed = 1 } = options;\n const zoneId = `moving_hitbox_${generateShortUUID()}`;\n return new Observable((observer) => {\n if (hitboxes.length === 0) {\n observer.complete();\n return;\n }\n let currentIndex = 0;\n let frameCounter = 0;\n const hitEntities = /* @__PURE__ */ new Set();\n const firstHitbox = hitboxes[0];\n const radius = Math.max(firstHitbox.width, firstHitbox.height) / 2;\n this.physic.addZone(zoneId, {\n x: firstHitbox.x + firstHitbox.width / 2,\n y: firstHitbox.y + firstHitbox.height / 2,\n radius\n });\n this.physic.registerZoneEvents(\n zoneId,\n (hitIds) => {\n const hitObjects = hitIds.map((id) => this.getObjectById(id)).filter((obj) => obj !== void 0);\n if (hitObjects.length > 0) {\n hitIds.forEach((id) => hitEntities.add(id));\n observer.next(hitObjects);\n }\n }\n );\n const tickSubscription = this.tick$.subscribe(() => {\n frameCounter++;\n if (frameCounter >= speed) {\n frameCounter = 0;\n currentIndex++;\n if (currentIndex >= hitboxes.length) {\n this.physic.removeZone(zoneId);\n tickSubscription.unsubscribe();\n observer.complete();\n return;\n }\n const nextHitbox = hitboxes[currentIndex];\n const zone = this.physic.getZone(zoneId);\n if (zone) {\n this.physic.removeZone(zoneId);\n const newRadius = Math.max(nextHitbox.width, nextHitbox.height) / 2;\n this.physic.addZone(zoneId, {\n x: nextHitbox.x + nextHitbox.width / 2,\n y: nextHitbox.y + nextHitbox.height / 2,\n radius: newRadius\n });\n this.physic.registerZoneEvents(\n zoneId,\n (hitIds) => {\n const hitObjects = hitIds.map((id) => this.getObjectById(id)).filter((obj) => obj !== void 0);\n if (hitObjects.length > 0) {\n hitIds.forEach((id) => hitEntities.add(id));\n observer.next(hitObjects);\n }\n }\n );\n }\n }\n });\n return () => {\n tickSubscription.unsubscribe();\n this.physic.removeZone(zoneId);\n };\n });\n }\n}\n\nconst ModulesToken = \"ModulesToken\";\nclass Hooks {\n constructor(modules, namespace) {\n this.modules = modules;\n this.namespace = namespace;\n /**\n * Store of all module hooks by ID\n */\n this.moduleHooks = {};\n /**\n * Store of all hook functions by ID\n */\n this.hookFunctions = {};\n this.init();\n }\n init() {\n for (const module of this.modules) {\n for (const type in module) {\n const hookObject = module[type];\n for (const hook in hookObject) {\n const hookFunction = hookObject[hook];\n if (hookFunction) {\n const hookId = `${this.namespace}-${type}-${hook}`;\n if (!this.moduleHooks[hookId]) {\n this.moduleHooks[hookId] = new Subject();\n }\n if (!this.hookFunctions[hookId]) {\n this.hookFunctions[hookId] = [];\n }\n if (!this.hookFunctions[hookId].includes(hookFunction)) {\n this.hookFunctions[hookId].push(hookFunction);\n }\n }\n }\n }\n }\n return this.moduleHooks;\n }\n /**\n * Call hooks for a specific ID, passing arguments to all subscribed hooks\n *\n * @param hookId - The unique identifier of the module hook\n * @param args - Arguments to pass to the hook functions\n * @returns An Observable that emits an array with all hook results when subscribed\n * @example\n * ```ts\n * // Call all hook functions for the ID 'my-namespace-type-hook'\n * callHooks('my-namespace-type-hook', { x: 10, y: 20 }).subscribe(results => {\n * console.log('Hook results:', results); // Array of all hook function results\n * });\n * \n * // Hook functions are only executed when you subscribe to the returned Observable\n * const observable = callHooks('my-namespace-type-hook', player);\n * // ... later ...\n * observable.subscribe(results => {\n * // Process results array\n * });\n * ```\n */\n callHooks(hookId, ...args) {\n if (!this.moduleHooks[hookId]) {\n this.moduleHooks[hookId] = new Subject();\n }\n return new Observable((subscriber) => {\n if (this.hookFunctions[hookId] && this.hookFunctions[hookId].length > 0) {\n const hookResults$ = from(this.hookFunctions[hookId]).pipe(\n mergeMap((hookFunction) => {\n let result;\n try {\n result = hookFunction(...args);\n return from(Promise.resolve(result));\n } catch (error) {\n subscriber.error(error);\n return [];\n }\n }),\n toArray()\n // Collect all results into an array\n );\n const subscription = hookResults$.subscribe({\n next: (results) => {\n this.moduleHooks[hookId].next(results);\n subscriber.next(results);\n subscriber.complete();\n },\n error: (err) => {\n subscriber.error(err);\n }\n });\n return () => {\n subscription.unsubscribe();\n };\n } else {\n subscriber.next([]);\n subscriber.complete();\n return () => {\n };\n }\n });\n }\n}\nfunction provideModules(modules, namespace, transform) {\n return {\n provide: ModulesToken,\n useFactory: (context) => {\n modules = transform ? transform(modules, context) : modules;\n return new Hooks(modules, namespace);\n }\n };\n}\nfunction findModules(context, namespace) {\n let modules = [];\n for (let key in context[\"values\"]) {\n if (key.endsWith(\"Module\" + namespace)) {\n modules.push(context[\"values\"][key]);\n }\n }\n return modules;\n}\nfunction createModule(tokenName, providers) {\n const results = providers.map((provider) => {\n const results2 = [];\n if (!provider) {\n return [];\n }\n if (\"server\" in provider) {\n results2.push({\n provide: tokenName + \"ModuleServer\",\n useValue: provider,\n meta: {\n server: true,\n isModule: true\n }\n });\n }\n if (\"client\" in provider) {\n results2.push({\n provide: tokenName + \"ModuleClient\",\n useValue: provider,\n meta: {\n client: true,\n isModule: true\n }\n });\n }\n if (!(\"server\" in provider) && !(\"client\" in provider)) {\n results2.push(provider);\n }\n return results2;\n }).flat();\n return results.flat();\n}\nfunction defineModule(options) {\n return options;\n}\n\nconst UpdateMapToken = \"UpdateMapToken\";\nclass UpdateMapService {\n constructor(context) {\n this.context = context;\n }\n}\n\nfunction random(min, max) {\n return Math.floor(Math.random() * (max - min + 1) + min);\n}\nfunction isBrowser() {\n return typeof window !== \"undefined\";\n}\nfunction isFunction(val) {\n return {}.toString.call(val) === \"[object Function]\";\n}\nfunction isClass(func) {\n return typeof func === \"function\";\n}\nfunction isPromise(val) {\n return isInstanceOf(val, Promise);\n}\nfunction isArray(val) {\n return isInstanceOf(val, Array);\n}\nfunction isObject(val) {\n return typeof val == \"object\" && val != null && !isArray(val);\n}\nfunction isString(val) {\n return typeof val == \"string\";\n}\nfunction isInstanceOf(val, _class) {\n return val instanceof _class;\n}\nfunction arrayUniq(array) {\n return [...new Set(array)];\n}\nfunction arrayFlat(array) {\n return array.reduce((acc, val) => acc.concat(val), []);\n}\nfunction intersection([start1, end1], [start2, end2]) {\n return start1 >= start2 && start1 <= end2 || start2 >= start1 && start2 < end1;\n}\nfunction capitalize(s) {\n if (typeof s !== \"string\") return \"\";\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\nfunction camelToKebab(str) {\n return str.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n}\nfunction arrayEquals(a, b) {\n return a.length === b.length && a.every((v, i) => v === b[i]);\n}\nfunction combineMixins(mixins) {\n return (Base) => mixins.reduce((ExtendedClass, mixin) => mixin(ExtendedClass), Base);\n}\nfunction applyMixins(derivedCtor, baseCtors) {\n baseCtors.forEach((baseCtor) => {\n Object.getOwnPropertyNames(baseCtor.prototype).forEach((name) => {\n const baseCtorName = Object.getOwnPropertyDescriptor(\n baseCtor.prototype,\n name\n );\n if (!baseCtorName) {\n return;\n }\n Object.defineProperty(derivedCtor.prototype, name, baseCtorName);\n });\n });\n}\nfunction generateUID() {\n let firstPart = Math.random() * 46656 | 0;\n let secondPart = Math.random() * 46656 | 0;\n firstPart = (\"000\" + firstPart.toString(36)).slice(-3);\n secondPart = (\"000\" + secondPart.toString(36)).slice(-3);\n return firstPart + secondPart;\n}\nfunction createConstructor(...propNames) {\n return class {\n constructor(...propValues) {\n propNames.forEach((name, idx) => {\n this[name] = propValues[idx];\n });\n }\n };\n}\nfunction sharedArrayBuffer() {\n let buffer;\n if (typeof SharedArrayBuffer != \"undefined\") {\n buffer = SharedArrayBuffer;\n } else {\n buffer = ArrayBuffer;\n }\n return buffer;\n}\nfunction toRadians(angle) {\n return angle * (Math.PI / 180);\n}\nfunction hexaToNumber(hexa) {\n let val = hexa.replace(\"#\", \"\");\n let alpha = 1;\n if (val.length === 3) {\n val = val.split(\"\").map((v) => v + v).join(\"\");\n }\n if (val.length === 8) {\n alpha = parseInt(val.substring(0, 2), 16) / 255;\n val = val.substring(2);\n }\n return {\n value: parseInt(val, 16),\n alpha\n };\n}\nfunction extractId(path) {\n const id = path.match(/([a-zA-Z0-9-_$!]+)\\.[a-z0-9]+$/i);\n if (!id) return null;\n return id[1];\n}\nfunction basename(path) {\n return path.substring(path.lastIndexOf(\"/\") + 1);\n}\nfunction fps2ms(fps) {\n return 1e3 / fps;\n}\nfunction preciseNow() {\n return typeof performance !== \"undefined\" ? performance.now() : Date.now();\n}\nfunction round(num, decimals = 100) {\n return Math.round(num * decimals) / decimals;\n}\nfunction set(obj, path, value, onlyPlainObject = false) {\n if (Object(obj) !== obj) return obj;\n if (!Array.isArray(path)) path = path.toString().match(/[^.[\\]]+/g) || [];\n path.slice(0, -1).reduce(\n (a, c, i) => Object(a[c]) === a[c] ? (\n // Yes: then follow that path\n a[c]\n ) : (\n // No: create the key. Is the next key a potential array-index?\n a[c] = Math.abs(path[i + 1]) >> 0 === +path[i + 1] ? onlyPlainObject ? {} : [] : {}\n ),\n // No: assign a new plain object\n obj\n )[path[path.length - 1]] = value;\n return obj;\n}\nfunction elementToPositionAbsolute(element) {\n element.style.position = \"absolute\";\n element.style.top = \"0\";\n element.style.left = \"0\";\n element.style.right = \"0\";\n element.style.bottom = \"0\";\n element.style.width = \"100%\";\n element.style.height = \"100%\";\n}\nfunction mergeObjectWithMethods(target, source) {\n const propertyNames = Object.getOwnPropertyNames(source);\n for (const name of propertyNames) {\n if (name !== \"constructor\") {\n const descriptor = Object.getOwnPropertyDescriptor(source, name);\n if (descriptor) {\n Object.defineProperty(target, name, descriptor);\n }\n }\n }\n const sourceProto = Object.getPrototypeOf(source);\n if (sourceProto && sourceProto !== Object.prototype) {\n Object.setPrototypeOf(target, sourceProto);\n }\n return target;\n}\n\nvar PrebuiltGui = /* @__PURE__ */ ((PrebuiltGui2) => {\n PrebuiltGui2[\"Dialog\"] = \"rpg-dialog\";\n PrebuiltGui2[\"MainMenu\"] = \"rpg-main-menu\";\n PrebuiltGui2[\"Shop\"] = \"rpg-shop\";\n PrebuiltGui2[\"Disconnect\"] = \"rpg-disconnect\";\n PrebuiltGui2[\"Gameover\"] = \"rpg-gameover\";\n PrebuiltGui2[\"Save\"] = \"rpg-save\";\n PrebuiltGui2[\"Controls\"] = \"rpg-controls\";\n PrebuiltGui2[\"Notification\"] = \"rpg-notification\";\n return PrebuiltGui2;\n})(PrebuiltGui || {});\n\nexport { Animation, CompositeMovement, Dash, Direction, Hooks, IceMovement, Item, Knockback, LinearMove, LinearRepulsion, matter$1 as Matter, ModulesToken, MovementManager, Oscillate, PathFollow, PrebuiltGui, ProjectileMovement, ProjectileType, RpgCommonMap, RpgCommonPlayer, SeekAvoid, UpdateMapService, UpdateMapToken, applyMixins, arrayEquals, arrayFlat, arrayUniq, basename, camelToKebab, capitalize, combineMixins, createConstructor, createModule, defineModule, elementToPositionAbsolute, extractId, findModules, fps2ms, generateUID, hexaToNumber, intersection, isArray, isBrowser, isClass, isFunction, isInstanceOf, isObject, isPromise, isString, mergeObjectWithMethods, preciseNow, provideModules, random, round, set, sharedArrayBuffer, toRadians };\n//# sourceMappingURL=index.js.map\n","import { type Constructor } from \"@rpgjs/common\";\nimport { RpgCommonPlayer } from \"@rpgjs/common\";\n\n/**\n * Interface defining what ComponentManager adds to a class\n */\nexport interface IComponentManager {\n setGraphic(graphic: string | string[]): void;\n}\n\n/**\n * Component Manager mixin\n * \n * Adds methods to manage player graphics\n * \n * @param Base - The base class to extend\n * @returns A new class with component management capabilities\n */\nexport function WithComponentManager<TBase extends Constructor<RpgCommonPlayer>>(Base: TBase) {\n return class extends Base implements IComponentManager {\n setGraphic(graphic: string | string[]) {\n if (Array.isArray(graphic)) {\n this.graphics.set(graphic);\n } else {\n this.graphics.set([graphic]);\n }\n }\n };\n}\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/inject.ts\nfunction provide(context, name, value) {\n context.set(\"inject:\" + name, value);\n return value;\n}\n__name(provide, \"provide\");\nfunction isInjected(context, name) {\n return context.get(\"injected:\" + name) === true;\n}\n__name(isInjected, \"isInjected\");\nfunction isProvided(context, name) {\n return context.get(\"inject:\" + name) !== void 0;\n}\n__name(isProvided, \"isProvided\");\nfunction inject(context, service, args = []) {\n const isClass = typeof service === \"function\";\n const name = isClass ? service.name : service;\n const value = context.get(\"inject:\" + name);\n if (value) {\n context.set(\"injected:\" + name, true);\n return value;\n }\n throw new Error(`Injection provider ${name} not found`);\n}\n__name(inject, \"inject\");\nfunction override(providers, newProvider, options) {\n let { upsert = false, key } = options ?? {};\n if (!key) {\n key = typeof newProvider === \"function\" ? newProvider.name : newProvider.provide;\n }\n const flatProviders = providers.flat();\n const exists = flatProviders.some((provider) => {\n if (typeof provider === \"function\") {\n return provider.name === key;\n } else if (typeof provider === \"object\") {\n return provider.provide === key;\n }\n return false;\n });\n const mappedProviders = flatProviders.map((provider) => {\n if (typeof provider === \"function\" && provider.name === key) {\n return newProvider;\n } else if (typeof provider === \"object\" && provider.provide === key) {\n return newProvider;\n }\n return provider;\n });\n if (upsert && !exists) {\n mappedProviders.push(newProvider);\n }\n return mappedProviders;\n}\n__name(override, \"override\");\nfunction findProviders(providers, name) {\n const results = [];\n for (const provider of providers) {\n if (Array.isArray(provider)) {\n results.push(...findProviders(provider, name));\n } else if (findProvider(provider, name)) {\n results.push(provider);\n }\n }\n return results;\n}\n__name(findProviders, \"findProviders\");\nfunction findProvider(providers, name) {\n if (!Array.isArray(providers)) {\n if (typeof providers === \"object\" && \"provide\" in providers) {\n const provider = providers;\n const providerName = typeof provider.provide === \"function\" ? provider.provide.name : provider.provide;\n if (name instanceof RegExp) {\n if (name.test(providerName)) return providers;\n } else {\n if (providerName === name) return providers;\n }\n }\n return null;\n }\n for (const provider of providers) {\n if (Array.isArray(provider)) {\n const found = findProvider(provider, name);\n if (found) return found;\n continue;\n }\n if (typeof provider === \"object\" && \"provide\" in provider) {\n const providerName = typeof provider.provide === \"function\" ? provider.provide.name : provider.provide;\n if (name instanceof RegExp) {\n if (name.test(providerName)) return provider;\n } else {\n if (providerName === name) return provider;\n }\n }\n }\n return null;\n}\n__name(findProvider, \"findProvider\");\n\n// src/merge-config.ts\nfunction processProvider(mergedConfig, baseConfig, provider) {\n if (Array.isArray(provider)) {\n for (const nestedProvider of provider) {\n processProvider(mergedConfig, baseConfig, nestedProvider);\n }\n return;\n }\n const existingProvider = findProvider(baseConfig.providers, provider.provide);\n if (existingProvider) {\n mergedConfig.providers = override(mergedConfig.providers, provider);\n } else {\n mergedConfig.providers.push(provider);\n }\n}\n__name(processProvider, \"processProvider\");\nfunction mergeConfig(baseConfig, config) {\n const mergedConfig = {\n ...baseConfig,\n ...config,\n providers: [\n ...baseConfig.providers\n ]\n // Start with a copy of base providers\n };\n for (const provider of config.providers) {\n processProvider(mergedConfig, baseConfig, provider);\n }\n return mergedConfig;\n}\n__name(mergeConfig, \"mergeConfig\");\n\n// src/provider.ts\nasync function injector(context, providers) {\n providers = providers.flat();\n for (const provider of providers) {\n let token;\n let instance;\n if (typeof provider === \"function\") {\n token = provider;\n instance = new provider(context);\n } else {\n token = provider.provide;\n const provideUserClass = provider.useClass;\n const isClass = typeof provideUserClass === \"function\";\n if (isClass) {\n instance = new provideUserClass(context);\n } else if (\"useValue\" in provider) {\n instance = provider.useValue;\n } else if (\"useFactory\" in provider) {\n instance = provider.useFactory?.(context);\n if (instance instanceof Promise) {\n instance = await instance;\n }\n } else if (\"useExisting\" in provider) {\n instance = inject(context, provider.useExisting);\n }\n }\n const name = typeof token === \"function\" ? token.name : token;\n provide(context, name, instance);\n }\n}\n__name(injector, \"injector\");\n\n// src/context.ts\nvar Context = class {\n static {\n __name(this, \"Context\");\n }\n /** Internal storage for injected values */\n values = {};\n /**\n * Sets a value in the context\n * @param key - Unique identifier for the value\n * @param value - Value to store\n */\n set(key, value) {\n this.values[key] = value;\n }\n /**\n * Retrieves a value from the context\n * @param key - Unique identifier for the value\n * @returns The stored value or undefined if not found\n */\n get(key) {\n return this.values[key];\n }\n};\nexport {\n Context,\n findProvider,\n findProviders,\n inject,\n injector,\n isInjected,\n isProvided,\n mergeConfig,\n override,\n provide\n};\n//# sourceMappingURL=index.js.map","import { RpgPlayer } from '../Player/Player'\n\nexport class Gui {\n\n private _close: Function = () => {}\n private _blockPlayerInput: boolean = false\n\n constructor(\n public id: string,\n protected player: RpgPlayer,\n ) {\n \n }\n\n open(data?, {\n waitingAction = false,\n blockPlayerInput = false\n } = {}): Promise<any> {\n return new Promise((resolve) => {\n this.player.emit('gui.open', {\n guiId: this.id,\n data\n })\n this._blockPlayerInput = blockPlayerInput\n if (blockPlayerInput) {\n this.player.canMove.set(false)\n }\n if (!waitingAction) {\n resolve(null)\n }\n else {\n this._close = resolve\n }\n })\n }\n\n close(data?) {\n this.player.emit('gui.exit', this.id)\n if (this._blockPlayerInput) {\n this.player.canMove.set(true)\n }\n this._close(data)\n }\n}","import { type Constructor } from \"@rpgjs/common\";\nimport { RpgCommonPlayer, Matter, Direction } from \"@rpgjs/common\";\nimport { \n MovementManager, \n MovementStrategy,\n LinearMove,\n Dash,\n Knockback,\n PathFollow,\n Oscillate,\n CompositeMovement,\n SeekAvoid,\n LinearRepulsion,\n IceMovement,\n ProjectileMovement,\n ProjectileType,\n random,\n isFunction,\n capitalize\n} from \"@rpgjs/common\";\nimport { RpgMap } from \"../rooms/map\";\nimport { Observable, Subscription, takeUntil, Subject, tap, switchMap, of, from } from 'rxjs';\nimport { RpgPlayer } from \"./Player\";\n\n\ninterface PlayerWithMixins extends RpgCommonPlayer {\n getCurrentMap(): RpgMap;\n id: string;\n server: any;\n _destroy$: Subject<void>;\n frequency: number;\n nbPixelInTile: number;\n moveByDirection: (direction: Direction, deltaTimeInt: number) => Promise<boolean>;\n changeDirection: (direction: Direction) => boolean;\n}\n\nexport interface IMoveManager {\n addMovement(strategy: MovementStrategy): void;\n removeMovement(strategy: MovementStrategy): boolean;\n clearMovements(): void;\n hasActiveMovements(): boolean;\n getActiveMovements(): MovementStrategy[];\n \n moveTo(target: RpgCommonPlayer | { x: number, y: number }): void;\n stopMoveTo(): void;\n dash(direction: { x: number, y: number }, speed?: number, duration?: number): void;\n knockback(direction: { x: number, y: number }, force?: number, duration?: number): void;\n followPath(waypoints: Array<{ x: number, y: number }>, speed?: number, loop?: boolean): void;\n oscillate(direction: { x: number, y: number }, amplitude?: number, period?: number): void;\n applyIceMovement(direction: { x: number, y: number }, maxSpeed?: number): void;\n shootProjectile(type: ProjectileType, direction: { x: number, y: number }, speed?: number): void;\n moveRoutes(routes: Routes): Promise<boolean>;\n infiniteMoveRoute(routes: Routes): void;\n breakRoutes(force?: boolean): void;\n replayRoutes(): void;\n}\n\n\nfunction wait(sec: number) {\n return new Promise((resolve) => {\n setTimeout(resolve, sec * 1000)\n })\n}\n\ntype CallbackTileMove = (player: RpgPlayer, map) => Direction[]\ntype CallbackTurnMove = (player: RpgPlayer, map) => string\ntype Routes = (string | Promise<any> | Direction | Direction[] | Function)[]\n\nexport enum Frequency {\n Lowest = 600,\n Lower = 400,\n Low = 200,\n High = 100,\n Higher = 50,\n Highest = 25,\n None = 0\n}\n\nexport enum Speed {\n Slowest = 0.2,\n Slower = 0.5,\n Slow = 1,\n Normal = 3,\n Fast = 5,\n Faster = 7,\n Fastest = 10\n}\n\n/** \n* @title Move\n* @enum {Object}\n* \n* Move.right(repeat=1) | Movement of a number of pixels on the right\n* Move.left(repeat=1) | Movement of a number of pixels on the left \n* Move.up(repeat=1) | Movement of a number of pixels on the up\n* Move.down(repeat=1) | Movement of a number of pixels on the down\n* Move.random(repeat=1) | Movement of a number of pixels in a random direction\n* Move.towardPlayer(player, repeat=1) | Moves a number of pixels in the direction of the designated player\n* Move.awayFromPlayer(player, repeat=1) | Moves a number of pixels in the opposite direction of the designated player\n* Move.tileRight(repeat=1) | Movement of a number of tiles on the right\n* Move.tileLeft(repeat=1) | Movement of a number of tiles on the left\n* Move.tileUp(repeat=1) | Movement of a number of tiles on the up\n* Move.tileDown(repeat=1) | Movement of a number of tiles on the down\n* Move.tileRandom(repeat=1) | Movement of a number of tiles in a random direction\n* Move.tileTowardPlayer(player, repeat=1) | Moves a number of tiles in the direction of the designated player\n* Move.tileAwayFromPlayer(player, repeat=1) | Moves a number of tiles in the opposite direction of the designated player\n* Move.turnRight() | Turn to the right\n* Move.turnLeft() | Turn to the left\n* Move.turnUp() | Turn to the up\n* Move.turnDown() | Turn to the down\n* Move.turnRandom() | Turn to random direction\n* Move.turnAwayFromPlayer(player) | Turns in the opposite direction of the designated player\n* Move.turnTowardPlayer(player) | Turns in the direction of the designated player\n* @memberof Move\n* */\nclass MoveList {\n\n repeatMove(direction: Direction, repeat: number): Direction[] {\n // Safety check for valid repeat value\n if (!Number.isFinite(repeat) || repeat < 0 || repeat > 10000) {\n console.warn('Invalid repeat value:', repeat, 'using default value 1');\n repeat = 1;\n }\n \n // Ensure repeat is an integer\n repeat = Math.floor(repeat);\n \n // Additional safety check - ensure repeat is a safe integer\n if (repeat < 0 || repeat > Number.MAX_SAFE_INTEGER || !Number.isSafeInteger(repeat)) {\n console.warn('Unsafe repeat value:', repeat, 'using default value 1');\n repeat = 1;\n }\n \n try {\n return new Array(repeat).fill(direction);\n } catch (error) {\n console.error('Error creating array with repeat:', repeat, error);\n return [direction]; // Return single direction as fallback\n }\n }\n\n private repeatTileMove(direction: string, repeat: number, propMap: string): CallbackTileMove {\n return (player: RpgPlayer, map): Direction[] => {\n const playerSpeed = typeof player.speed === 'function' ? player.speed() : player.speed;\n \n // Safety checks\n if (!playerSpeed || playerSpeed <= 0) {\n console.warn('Invalid player speed:', playerSpeed, 'using default speed 3');\n return this[direction](repeat);\n }\n \n const repeatTile = Math.floor((map[propMap] || 32) / playerSpeed) * repeat;\n \n // Additional safety check for the calculated repeat value\n if (!Number.isFinite(repeatTile) || repeatTile < 0 || repeatTile > 10000) {\n console.warn('Calculated repeatTile is invalid:', repeatTile, 'using original repeat:', repeat);\n return this[direction](repeat);\n }\n \n // Final safety check before calling the method\n if (!Number.isSafeInteger(repeatTile)) {\n console.warn('repeatTile is not a safe integer:', repeatTile, 'using original repeat:', repeat);\n return this[direction](repeat);\n }\n \n try {\n return this[direction](repeatTile);\n } catch (error) {\n console.error('Error calling direction method with repeatTile:', repeatTile, error);\n return this[direction](repeat); // Fallback to original repeat\n }\n }\n }\n\n right(repeat: number = 1): Direction[] {\n return this.repeatMove(Direction.Right, repeat)\n }\n\n left(repeat: number = 1): Direction[] {\n return this.repeatMove(Direction.Left, repeat)\n }\n\n up(repeat: number = 1): Direction[] {\n return this.repeatMove(Direction.Up, repeat)\n }\n\n down(repeat: number = 1): Direction[] {\n return this.repeatMove(Direction.Down, repeat)\n }\n\n wait(sec: number): Promise<unknown> {\n return wait(sec)\n }\n\n random(repeat: number = 1): Direction[] {\n // Safety check for valid repeat value\n if (!Number.isFinite(repeat) || repeat < 0 || repeat > 10000) {\n console.warn('Invalid repeat value in random:', repeat, 'using default value 1');\n repeat = 1;\n }\n \n // Ensure repeat is an integer\n repeat = Math.floor(repeat);\n \n // Additional safety check - ensure repeat is a safe integer\n if (repeat < 0 || repeat > Number.MAX_SAFE_INTEGER || !Number.isSafeInteger(repeat)) {\n console.warn('Unsafe repeat value in random:', repeat, 'using default value 1');\n repeat = 1;\n }\n \n try {\n return new Array(repeat).fill(null).map(() => [\n Direction.Right,\n Direction.Left,\n Direction.Up,\n Direction.Down\n ][random(0, 3)]);\n } catch (error) {\n console.error('Error creating random array with repeat:', repeat, error);\n return [Direction.Down]; // Return single direction as fallback\n }\n }\n\n tileRight(repeat: number = 1): CallbackTileMove {\n return this.repeatTileMove('right', repeat, 'tileWidth')\n }\n\n tileLeft(repeat: number = 1): CallbackTileMove {\n return this.repeatTileMove('left', repeat, 'tileWidth')\n }\n\n tileUp(repeat: number = 1): CallbackTileMove {\n return this.repeatTileMove('up', repeat, 'tileHeight')\n }\n\n tileDown(repeat: number = 1): CallbackTileMove {\n return this.repeatTileMove('down', repeat, 'tileHeight')\n }\n\n tileRandom(repeat: number = 1): CallbackTileMove {\n return (player: RpgPlayer, map): Direction[] => {\n // Safety check for valid repeat value\n if (!Number.isFinite(repeat) || repeat < 0 || repeat > 1000) {\n console.warn('Invalid repeat value in tileRandom:', repeat, 'using default value 1');\n repeat = 1;\n }\n \n // Ensure repeat is an integer\n repeat = Math.floor(repeat);\n \n let directions: Direction[] = []\n for (let i = 0; i < repeat; i++) {\n const randFn: CallbackTileMove = [\n this.tileRight(),\n this.tileLeft(),\n this.tileUp(),\n this.tileDown()\n ][random(0, 3)]\n \n try {\n const newDirections = randFn(player, map);\n if (Array.isArray(newDirections)) {\n directions = [...directions, ...newDirections];\n }\n } catch (error) {\n console.warn('Error in tileRandom iteration:', error);\n // Continue with next iteration instead of breaking\n }\n \n // Safety check to prevent excessive array growth\n if (directions.length > 10000) {\n console.warn('tileRandom generated too many directions, truncating');\n break;\n }\n }\n return directions\n }\n }\n\n private _awayFromPlayerDirection(player: RpgPlayer, otherPlayer: RpgPlayer): Direction {\n const directionOtherPlayer = otherPlayer.getDirection()\n let newDirection: Direction = Direction.Down\n\n switch (directionOtherPlayer) {\n case Direction.Left:\n case Direction.Right:\n if (otherPlayer.x() > player.x()) {\n newDirection = Direction.Left\n }\n else {\n newDirection = Direction.Right\n }\n break\n case Direction.Up:\n case Direction.Down:\n if (otherPlayer.y() > player.y()) {\n newDirection = Direction.Up\n }\n else {\n newDirection = Direction.Down\n }\n break\n }\n return newDirection\n }\n\n private _towardPlayerDirection(player: RpgPlayer, otherPlayer: RpgPlayer): Direction {\n const directionOtherPlayer = otherPlayer.getDirection()\n let newDirection: Direction = Direction.Down\n \n switch (directionOtherPlayer) {\n case Direction.Left:\n case Direction.Right:\n if (otherPlayer.x() > player.x()) {\n newDirection = Direction.Right\n }\n else {\n newDirection = Direction.Left\n }\n break\n case Direction.Up:\n case Direction.Down:\n if (otherPlayer.y() > player.y()) {\n newDirection = Direction.Down\n }\n else {\n newDirection = Direction.Up\n }\n break\n }\n return newDirection\n }\n\n private _awayFromPlayer({ isTile, typeMov }: { isTile: boolean, typeMov: string }, otherPlayer: RpgPlayer, repeat: number = 1) {\n const method = (dir: Direction) => {\n const direction: string = DirectionNames[dir as any] || 'down'\n return this[isTile ? 'tile' + capitalize(direction) : direction](repeat)\n }\n return (player: RpgPlayer, map) => {\n let newDirection: Direction = Direction.Down\n switch (typeMov) {\n case 'away':\n newDirection = this._awayFromPlayerDirection(player, otherPlayer)\n break;\n case 'toward':\n newDirection = this._towardPlayerDirection(player, otherPlayer)\n break\n }\n let direction: any = method(newDirection)\n if (isFunction(direction)) {\n direction = direction(player, map)\n }\n return direction\n }\n }\n\n towardPlayer(player: RpgPlayer, repeat: number = 1) {\n return this._awayFromPlayer({ isTile: false, typeMov: 'toward' }, player, repeat)\n }\n\n tileTowardPlayer(player: RpgPlayer, repeat: number = 1) {\n return this._awayFromPlayer({ isTile: true, typeMov: 'toward' }, player, repeat)\n }\n\n awayFromPlayer(player: RpgPlayer, repeat: number = 1): CallbackTileMove {\n return this._awayFromPlayer({ isTile: false, typeMov: 'away' }, player, repeat)\n }\n\n tileAwayFromPlayer(player: RpgPlayer, repeat: number = 1): CallbackTileMove {\n return this._awayFromPlayer({ isTile: true, typeMov: 'away' }, player, repeat)\n }\n\n turnLeft(): string {\n return 'turn-' + Direction.Left\n }\n\n turnRight(): string {\n return 'turn-' + Direction.Right\n }\n\n turnUp(): string {\n return 'turn-' + Direction.Up\n }\n\n turnDown(): string {\n return 'turn-' + Direction.Down\n }\n\n turnRandom(): string {\n return [\n this.turnRight(),\n this.turnLeft(),\n this.turnUp(),\n this.turnDown()\n ][random(0, 3)]\n }\n\n turnAwayFromPlayer(otherPlayer: RpgPlayer): CallbackTurnMove {\n return (player: RpgPlayer) => {\n const direction = this._awayFromPlayerDirection(player, otherPlayer)\n return 'turn-' + direction\n }\n }\n\n turnTowardPlayer(otherPlayer: RpgPlayer): CallbackTurnMove {\n return (player: RpgPlayer) => {\n const direction = this._towardPlayerDirection(player, otherPlayer)\n return 'turn-' + direction\n }\n }\n}\n\n// Direction mapping for string conversion\nconst DirectionNames: { [key: string]: string } = {\n [Direction.Up]: 'up',\n [Direction.Down]: 'down',\n [Direction.Left]: 'left',\n [Direction.Right]: 'right'\n};\n\nexport const Move = new MoveList();\n\n/**\n * Move Manager mixin\n * \n * Adds comprehensive movement management capabilities to a player class.\n * Provides access to all available movement strategies and utility methods\n * for common movement patterns.\n * \n * ## Features\n * - **Strategy Management**: Add, remove, and query movement strategies\n * - **Predefined Movements**: Quick access to common movement patterns\n * - **Composite Movements**: Combine multiple strategies\n * - **Physics Integration**: Seamless integration with Matter.js physics\n * \n * ## Available Movement Strategies\n * - `LinearMove`: Constant velocity movement\n * - `Dash`: Quick burst movement\n * - `Knockback`: Push effect with decay\n * - `PathFollow`: Follow waypoint sequences\n * - `Oscillate`: Back-and-forth patterns\n * - `SeekAvoid`: AI pathfinding with obstacle avoidance\n * - `LinearRepulsion`: Smoother obstacle avoidance\n * - `IceMovement`: Slippery surface physics\n * - `ProjectileMovement`: Ballistic trajectories\n * - `CompositeMovement`: Combine multiple strategies\n * \n * @param Base - The base class to extend\n * @returns A new class with comprehensive movement management capabilities\n * \n * @example\n * ```ts\n * // Basic usage\n * class MyPlayer extends WithMoveManager(RpgCommonPlayer) {\n * onInput(direction: { x: number, y: number }) {\n * // Apply dash movement on input\n * this.dash(direction, 8, 200);\n * }\n * \n * onIceTerrain() {\n * // Switch to ice physics\n * this.clearMovements();\n * this.applyIceMovement({ x: 1, y: 0 }, 4);\n * }\n * \n * createPatrol() {\n * // Create patrol path\n * const waypoints = [\n * { x: 100, y: 100 },\n * { x: 300, y: 100 },\n * { x: 300, y: 300 }\n * ];\n * this.followPath(waypoints, 2, true);\n * }\n * }\n * ```\n */\nexport function WithMoveManager<TBase extends Constructor<RpgCommonPlayer>>(\n Base: TBase\n): Constructor<IMoveManager> & TBase {\n return class extends Base implements IMoveManager {\n \n // Private properties for infinite route management\n private _infiniteRoutes: Routes | null = null;\n private _finishRoute: ((value: boolean) => void) | null = null;\n private _isInfiniteRouteActive: boolean = false;\n\n /** \n * The player passes through the other players (or vice versa). But the player does not go through the events.\n * \n * ```ts\n * player.throughOtherPlayer = true\n * ```\n * \n * @title Go through to other player\n * @prop {boolean} player.throughOtherPlayer\n * @default true\n * @memberof MoveManager\n * */\n set throughOtherPlayer(value: boolean) {\n this._throughOtherPlayer.set(value);\n }\n\n get throughOtherPlayer(): boolean {\n return this._throughOtherPlayer();\n }\n\n /** \n * The player goes through the event or the other players (or vice versa)\n * \n * ```ts\n * player.through = true\n * ```\n * \n * @title Go through the player\n * @prop {boolean} player.through\n * @default false\n * @memberof MoveManager\n * */\n set through(value: boolean) {\n this._through.set(value);\n }\n \n get through(): boolean {\n return this._through();\n }\n\n /** \n * The frequency allows to put a stop time between each movement in the array of the moveRoutes() method.\n * The value represents a dwell time in milliseconds. The higher the value, the slower the frequency.\n * \n * ```ts\n * player.frequency = 400\n * ```\n * \n * You can use Frequency enum\n * \n * ```ts\n * import { Frequency } from '@rpgjs/server'\n * player.frequency = Frequency.Low\n * ```\n * \n * @title Change Frequency\n * @prop {number} player.speed\n * @enum {number}\n * \n * Frequency.Lowest | 600\n * Frequency.Lower | 400\n * Frequency.Low | 200\n * Frequency.High | 100\n * Frequency.Higher | 50\n * Frequency.Highest | 25\n * Frequency.None | 0\n * @default 0\n * @memberof MoveManager\n * */\n set frequency(value: number) {\n this._frequency.set(value);\n }\n\n get frequency(): number {\n return this._frequency();\n }\n \n /**\n * Add a custom movement strategy to this entity\n * \n * Allows adding any custom MovementStrategy implementation.\n * Multiple strategies can be active simultaneously.\n * \n * @param strategy - The movement strategy to add\n * \n * @example\n * ```ts\n * // Add custom movement\n * const customMove = new LinearMove(5, 0, 1000);\n * player.addMovement(customMove);\n * \n * // Add multiple movements\n * player.addMovement(new Dash(8, { x: 1, y: 0 }, 200));\n * player.addMovement(new Oscillate({ x: 0, y: 1 }, 10, 1000));\n * ```\n */\n addMovement(strategy: MovementStrategy): void {\n const map = (this as unknown as PlayerWithMixins).getCurrentMap();\n if (!map) return;\n \n map.moveManager.add((this as unknown as PlayerWithMixins).id, strategy);\n }\n\n /**\n * Remove a specific movement strategy from this entity\n * \n * @param strategy - The strategy instance to remove\n * @returns True if the strategy was found and removed\n * \n * @example\n * ```ts\n * const dashMove = new Dash(8, { x: 1, y: 0 }, 200);\n * player.addMovement(dashMove);\n * \n * // Later, remove the specific movement\n * const removed = player.removeMovement(dashMove);\n * console.log('Movement removed:', removed);\n * ```\n */\n removeMovement(strategy: MovementStrategy): boolean {\n const map = (this as unknown as PlayerWithMixins).getCurrentMap();\n if (!map) return false;\n \n return map.moveManager.remove((this as unknown as PlayerWithMixins).id, strategy);\n }\n\n /**\n * Remove all active movement strategies from this entity\n * \n * Stops all current movements immediately.\n * \n * @example\n * ```ts\n * // Stop all movements when player dies\n * player.clearMovements();\n * \n * // Clear movements before applying new ones\n * player.clearMovements();\n * player.dash({ x: 1, y: 0 });\n * ```\n */\n clearMovements(): void {\n const map = (this as unknown as PlayerWithMixins).getCurrentMap();\n if (!map) return;\n \n map.moveManager.clear((this as unknown as PlayerWithMixins).id);\n }\n\n /**\n * Check if this entity has any active movement strategies\n * \n * @returns True if entity has active movements\n * \n * @example\n * ```ts\n * // Don't accept input while movements are active\n * if (!player.hasActiveMovements()) {\n * player.dash(inputDirection);\n * }\n * \n * // Check before adding new movement\n * if (player.hasActiveMovements()) {\n * player.clearMovements();\n * }\n * ```\n */\n hasActiveMovements(): boolean {\n const map = (this as unknown as PlayerWithMixins).getCurrentMap();\n if (!map) return false;\n \n return map.moveManager.hasActiveStrategies((this as unknown as PlayerWithMixins).id);\n }\n\n /**\n * Get all active movement strategies for this entity\n * \n * @returns Array of active movement strategies\n * \n * @example\n * ```ts\n * // Check what movements are currently active\n * const movements = player.getActiveMovements();\n * console.log(`Player has ${movements.length} active movements`);\n * \n * // Find specific movement type\n * const hasDash = movements.some(m => m instanceof Dash);\n * ```\n */\n getActiveMovements(): MovementStrategy[] {\n const map = (this as unknown as PlayerWithMixins).getCurrentMap();\n if (!map) return [];\n \n return map.moveManager.getStrategies((this as unknown as PlayerWithMixins).id);\n }\n\n /**\n * Move toward a target player or position using AI pathfinding\n * \n * Uses SeekAvoid strategy for intelligent pathfinding with obstacle avoidance.\n * The entity will seek toward the target while avoiding obstacles.\n * \n * @param target - Target player or position to move toward\n * \n * @example\n * ```ts\n * // Move toward another player\n * const targetPlayer = game.getPlayer('player2');\n * player.moveTo(targetPlayer);\n * \n * // Move toward a specific position\n * player.moveTo({ x: 300, y: 200 });\n * \n * // Stop the movement later\n * player.stopMoveTo();\n * ```\n */\n moveTo(target: RpgCommonPlayer | { x: number, y: number }): void {\n const map = (this as unknown as PlayerWithMixins).getCurrentMap();\n if (!map) return;\n \n let targetBody: Matter.Body | null = null;\n \n if ('id' in target) {\n // Target is a player\n targetBody = map.physic.getBody(target.id);\n } else {\n // Target is a position - create a temporary target function\n const getTargetPos = () => Matter.Vector.create(target.x, target.y);\n map.moveManager.add(\n (this as unknown as PlayerWithMixins).id, \n new SeekAvoid(map.physic, getTargetPos, 3, 50, 5)\n );\n return;\n }\n \n if (targetBody) {\n map.moveManager.add(\n (this as unknown as PlayerWithMixins).id, \n new SeekAvoid(map.physic, targetBody, 3, 50, 5)\n );\n }\n }\n\n /**\n * Stop the current moveTo behavior\n * \n * Removes any active SeekAvoid strategies.\n * \n * @example\n * ```ts\n * // Start following a target\n * player.moveTo(targetPlayer);\n * \n * // Stop following when target is reached\n * if (distanceToTarget < 10) {\n * player.stopMoveTo();\n * }\n * ```\n */\n stopMoveTo(): void {\n const map = (this as unknown as PlayerWithMixins).getCurrentMap();\n if (!map) return;\n \n const strategies = this.getActiveMovements();\n strategies.forEach(strategy => {\n if (strategy instanceof SeekAvoid || strategy instanceof LinearRepulsion) {\n this.removeMovement(strategy);\n }\n });\n }\n\n /**\n * Perform a dash movement in the specified direction\n * \n * Applies high-speed movement for a short duration.\n * \n * @param direction - Normalized direction vector\n * @param speed - Movement speed (default: 8)\n * @param duration - Duration in milliseconds (default: 200)\n * \n * @example\n * ```ts\n * // Dash right\n * player.dash({ x: 1, y: 0 });\n * \n * // Dash diagonally with custom speed and duration\n * player.dash({ x: 0.7, y: 0.7 }, 12, 300);\n * \n * // Dash in input direction\n * player.dash(inputDirection, 10, 150);\n * ```\n */\n dash(direction: { x: number, y: number }, speed: number = 8, duration: number = 200): void {\n this.addMovement(new Dash(speed, direction, duration));\n }\n\n /**\n * Apply knockback effect in the specified direction\n * \n * Creates a push effect that gradually decreases over time.\n * \n * @param direction - Normalized direction vector\n * @param force - Initial knockback force (default: 5)\n * @param duration - Duration in milliseconds (default: 300)\n * \n * @example\n * ```ts\n * // Knockback from explosion\n * const explosionDir = { x: -1, y: 0 };\n * player.knockback(explosionDir, 8, 400);\n * \n * // Light knockback from attack\n * player.knockback(attackDirection, 3, 200);\n * ```\n */\n knockback(direction: { x: number, y: number }, force: number = 5, duration: number = 300): void {\n this.addMovement(new Knockback(direction, force, duration));\n }\n\n /**\n * Follow a sequence of waypoints\n * \n * Entity will move through each waypoint in order.\n * \n * @param waypoints - Array of x,y positions to follow\n * @param speed - Movement speed (default: 2)\n * @param loop - Whether to loop back to start (default: false)\n * \n * @example\n * ```ts\n * // Create a patrol route\n * const patrolPoints = [\n * { x: 100, y: 100 },\n * { x: 300, y: 100 },\n * { x: 300, y: 300 },\n * { x: 100, y: 300 }\n * ];\n * player.followPath(patrolPoints, 3, true);\n * \n * // One-time path to destination\n * player.followPath([{ x: 500, y: 200 }], 4);\n * ```\n */\n followPath(waypoints: Array<{ x: number, y: number }>, speed: number = 2, loop: boolean = false): void {\n this.addMovement(new PathFollow(waypoints, speed, loop));\n }\n\n /**\n * Apply oscillating movement pattern\n * \n * Entity moves back and forth along the specified axis.\n * \n * @param direction - Primary oscillation axis (normalized)\n * @param amplitude - Maximum distance from center (default: 50)\n * @param period - Time for complete cycle in ms (default: 2000)\n * \n * @example\n * ```ts\n * // Horizontal oscillation\n * player.oscillate({ x: 1, y: 0 }, 100, 3000);\n * \n * // Vertical oscillation\n * player.oscillate({ x: 0, y: 1 }, 30, 1500);\n * \n * // Diagonal oscillation\n * player.oscillate({ x: 0.7, y: 0.7 }, 75, 2500);\n * ```\n */\n oscillate(direction: { x: number, y: number }, amplitude: number = 50, period: number = 2000): void {\n this.addMovement(new Oscillate(direction, amplitude, period));\n }\n\n /**\n * Apply ice movement physics\n * \n * Creates slippery movement with gradual acceleration and inertia.\n * Perfect for ice terrains or slippery surfaces.\n * \n * @param direction - Target movement direction\n * @param maxSpeed - Maximum speed when fully accelerated (default: 4)\n * \n * @example\n * ```ts\n * // Apply ice physics when on ice terrain\n * if (onIceTerrain) {\n * player.applyIceMovement(inputDirection, 5);\n * }\n * \n * // Update direction when input changes\n * iceMovement.setTargetDirection(newDirection);\n * ```\n */\n applyIceMovement(direction: { x: number, y: number }, maxSpeed: number = 4): void {\n this.addMovement(new IceMovement(direction, maxSpeed));\n }\n\n /**\n * Shoot a projectile in the specified direction\n * \n * Creates projectile movement with various trajectory types.\n * \n * @param type - Type of projectile trajectory\n * @param direction - Normalized direction vector\n * @param speed - Projectile speed (default: 200)\n * \n * @example\n * ```ts\n * // Shoot arrow\n * player.shootProjectile(ProjectileType.Straight, { x: 1, y: 0 }, 300);\n * \n * // Throw grenade with arc\n * player.shootProjectile(ProjectileType.Arc, { x: 0.7, y: 0.7 }, 150);\n * \n * // Bouncing projectile\n * player.shootProjectile(ProjectileType.Bounce, { x: 1, y: 0 }, 100);\n * ```\n */\n shootProjectile(type: ProjectileType, direction: { x: number, y: number }, speed: number = 200): void {\n const config = {\n speed,\n direction,\n maxRange: type === ProjectileType.Straight ? 500 : undefined,\n maxHeight: type === ProjectileType.Arc ? 100 : undefined,\n gravity: type !== ProjectileType.Straight ? 400 : undefined,\n maxBounces: type === ProjectileType.Bounce ? 3 : undefined,\n bounciness: type === ProjectileType.Bounce ? 0.6 : undefined\n };\n \n this.addMovement(new ProjectileMovement(type, config));\n }\n\n /**\n * Give an itinerary to follow using movement strategies\n * \n * Executes a sequence of movements and actions in order. Each route can be:\n * - A Direction enum value for basic movement\n * - A string starting with \"turn-\" for direction changes\n * - A function that returns directions or actions\n * - A Promise for async operations\n * \n * The method processes routes sequentially, respecting the entity's frequency\n * setting for timing between movements.\n * \n * @param routes - Array of movement instructions to execute\n * @returns Promise that resolves when all routes are completed\n * \n * @example\n * ```ts\n * // Basic directional movements\n * await player.moveRoutes([\n * Direction.Right,\n * Direction.Up,\n * Direction.Left\n * ]);\n * \n * // Mix of movements and turns\n * await player.moveRoutes([\n * Direction.Right,\n * 'turn-' + Direction.Up,\n * Direction.Up\n * ]);\n * \n * // Using functions for dynamic behavior\n * const customMove = (player, map) => [Direction.Right, Direction.Down];\n * await player.moveRoutes([customMove]);\n * \n * // With async operations\n * await player.moveRoutes([\n * Direction.Right,\n * new Promise(resolve => setTimeout(resolve, 1000)), // Wait 1 second\n * Direction.Left\n * ]);\n * ```\n */\n moveRoutes(routes: Routes): Promise<boolean> {\n let count = 0;\n let frequence = 0;\n const player = this as unknown as PlayerWithMixins;\n \n // Break any existing route movement\n this.clearMovements();\n \n return new Promise(async (resolve) => {\n // Store the resolve function for potential breaking\n this._finishRoute = resolve;\n \n // Process function routes first\n const processedRoutes = routes.map((route: any) => {\n if (typeof route === 'function') {\n const map = player.getCurrentMap();\n if (!map) {\n return undefined;\n }\n return route.apply(route, [player, map]);\n }\n return route;\n });\n \n // Flatten nested arrays\n const flatRoutes = this.flattenRoutes(processedRoutes);\n let routeIndex = 0;\n \n const executeNextRoute = async (): Promise<void> => {\n // Check if player still exists and is on a map\n if (!player || !player.getCurrentMap()) {\n this._finishRoute = null;\n resolve(false);\n return;\n }\n \n // Handle frequency timing\n if (count >= (player.nbPixelInTile || 32)) {\n if (frequence < (player.frequency || 0)) {\n frequence++;\n setTimeout(executeNextRoute, 16); // ~60fps timing\n return;\n }\n }\n \n frequence = 0;\n count++;\n \n // Check if we've completed all routes\n if (routeIndex >= flatRoutes.length) {\n this._finishRoute = null;\n resolve(true);\n return;\n }\n \n const currentRoute = flatRoutes[routeIndex];\n routeIndex++;\n \n if (currentRoute === undefined) {\n executeNextRoute();\n return;\n }\n \n try {\n // Handle different route types\n if (typeof currentRoute === 'object' && 'then' in currentRoute) {\n // Handle Promise\n await currentRoute;\n executeNextRoute();\n } else if (typeof currentRoute === 'string' && currentRoute.startsWith('turn-')) {\n // Handle turn commands\n const directionStr = currentRoute.replace('turn-', '');\n let direction: Direction = Direction.Down;\n \n // Convert string direction to Direction enum\n switch (directionStr) {\n case 'up':\n case Direction.Up:\n direction = Direction.Up;\n break;\n case 'down':\n case Direction.Down:\n direction = Direction.Down;\n break;\n case 'left':\n case Direction.Left:\n direction = Direction.Left;\n break;\n case 'right':\n case Direction.Right:\n direction = Direction.Right;\n break;\n }\n \n if (player.changeDirection) {\n player.changeDirection(direction);\n }\n executeNextRoute();\n } else if (typeof currentRoute === 'number') {\n // Handle Direction enum values\n if (player.moveByDirection) {\n await player.moveByDirection(currentRoute as unknown as Direction, 1);\n } else {\n // Fallback to movement strategy - use direction as velocity components\n let vx = 0, vy = 0;\n const direction = currentRoute as unknown as Direction;\n switch (direction) {\n case Direction.Right: vx = 1; break;\n case Direction.Left: vx = -1; break;\n case Direction.Down: vy = 1; break;\n case Direction.Up: vy = -1; break;\n }\n this.addMovement(new LinearMove(vx * (player.speed?.() || 3), vy * (player.speed?.() || 3), 100));\n setTimeout(executeNextRoute, 100);\n return;\n }\n executeNextRoute();\n } else {\n // Unknown route type, skip\n executeNextRoute();\n }\n } catch (error) {\n console.warn('Error executing route:', error);\n executeNextRoute();\n }\n };\n \n executeNextRoute();\n });\n }\n \n /**\n * Utility method to flatten nested route arrays\n * \n * @private\n * @param routes - Routes array that may contain nested arrays\n * @returns Flattened array of routes\n */\n private flattenRoutes(routes: any[]): any[] {\n const result: any[] = [];\n \n for (const route of routes) {\n if (Array.isArray(route)) {\n result.push(...this.flattenRoutes(route));\n } else {\n result.push(route);\n }\n }\n \n return result;\n }\n\n /**\n * Give a path that repeats itself in a loop to a character\n * \n * Creates an infinite movement pattern that continues until manually stopped.\n * The routes will repeat in a continuous loop, making it perfect for patrol\n * patterns, ambient movements, or any repetitive behavior.\n * \n * You can stop the movement at any time with `breakRoutes()` and replay it \n * with `replayRoutes()`.\n * \n * @param routes - Array of movement instructions to repeat infinitely\n * \n * @example\n * ```ts\n * // Create an infinite random movement pattern\n * player.infiniteMoveRoute([Move.random()]);\n * \n * // Create a patrol route\n * player.infiniteMoveRoute([\n * Direction.Right,\n * Direction.Right,\n * Direction.Down,\n * Direction.Left,\n * Direction.Left,\n * Direction.Up\n * ]);\n * \n * // Mix movements and rotations\n * player.infiniteMoveRoute([\n * Move.turnRight(),\n * Direction.Right,\n * Move.wait(1),\n * Move.turnLeft(),\n * Direction.Left\n * ]);\n * ```\n */\n infiniteMoveRoute(routes: Routes): void {\n this._infiniteRoutes = routes;\n this._isInfiniteRouteActive = true;\n\n const executeInfiniteRoute = (isBreaking: boolean = false) => {\n if (isBreaking || !this._isInfiniteRouteActive) return;\n \n this.moveRoutes(routes).then((completed) => {\n // Only continue if the route completed successfully and we're still active\n if (completed && this._isInfiniteRouteActive) {\n executeInfiniteRoute();\n }\n }).catch((error) => {\n console.warn('Error in infinite route execution:', error);\n // Try to continue even if there was an error\n if (this._isInfiniteRouteActive) {\n setTimeout(() => executeInfiniteRoute(), 100);\n }\n });\n };\n\n executeInfiniteRoute();\n }\n\n /**\n * Stop an infinite movement\n * \n * Works only for infinite movements created with `infiniteMoveRoute()`.\n * This method stops the current route execution and prevents the next\n * iteration from starting.\n * \n * @param force - Forces the stop of the infinite movement immediately\n * \n * @example\n * ```ts\n * // Start infinite movement\n * player.infiniteMoveRoute([Move.random()]);\n * \n * // Stop it when player enters combat\n * if (inCombat) {\n * player.breakRoutes(true);\n * }\n * \n * // Gentle stop (completes current route first)\n * player.breakRoutes();\n * ```\n */\n breakRoutes(force: boolean = false): void {\n this._isInfiniteRouteActive = false;\n \n if (force) {\n // Force stop by clearing all movements immediately\n this.clearMovements();\n }\n \n // If there's an active route promise, resolve it\n if (this._finishRoute) {\n this._finishRoute(force);\n this._finishRoute = null;\n }\n }\n\n /**\n * Replay an infinite movement\n * \n * Works only for infinite movements that were previously created with \n * `infiniteMoveRoute()`. If the route was stopped with `breakRoutes()`, \n * you can restart it with this method using the same route configuration.\n * \n * @example\n * ```ts\n * // Create infinite movement\n * player.infiniteMoveRoute([Move.random()]);\n * \n * // Stop it temporarily\n * player.breakRoutes(true);\n * \n * // Resume the same movement pattern\n * player.replayRoutes();\n * \n * // Stop and start with different conditions\n * if (playerNearby) {\n * player.breakRoutes();\n * } else {\n * player.replayRoutes();\n * }\n * ```\n */\n replayRoutes(): void {\n if (this._infiniteRoutes && !this._isInfiniteRouteActive) {\n this.infiniteMoveRoute(this._infiniteRoutes);\n }\n }\n };\n}\n","import { PrebuiltGui } from '@rpgjs/common'\nimport { Gui } from './Gui'\nimport { RpgPlayer } from '../Player/Player'\nimport { Move } from '../Player/MoveManager'\n\nexport enum DialogPosition {\n Top = 'top',\n Bottom = 'bottom',\n Middle = 'middle'\n}\n\nexport type Choice = { text: string, value: any }\n\nexport interface DialogOptions {\n choices?: Choice[],\n position?: DialogPosition,\n fullWidth?: boolean,\n autoClose?: boolean,\n tranparent?: boolean,\n typewriterEffect?: boolean,\n talkWith?: RpgPlayer\n}\n\nexport class DialogGui extends Gui {\n constructor(player: RpgPlayer) {\n super(PrebuiltGui.Dialog, player)\n }\n\n openDialog(message: string, options: DialogOptions): Promise<any> {\n if (!options.choices) options.choices = []\n if (options.autoClose == undefined) options.autoClose = false\n if (!options.position) options.position = DialogPosition.Bottom\n if (options.fullWidth == undefined) options.fullWidth = true\n if (options.typewriterEffect == undefined) options.typewriterEffect = true\n const event = options.talkWith\n let memoryDir\n if (event) {\n memoryDir = event.direction()\n event.breakRoutes(true)\n event.moveRoutes([ Move.turnTowardPlayer(this.player) ])\n }\n const data = {\n autoClose: options.autoClose,\n position: options.position,\n fullWidth: options.fullWidth,\n typewriterEffect: options.typewriterEffect,\n // remove value property. It is not useful to know this on the client side.\n choices: options.choices.map(choice => ({\n text: choice.text\n }))\n }\n return super.open({\n message,\n ...data\n }, {\n waitingAction: true,\n blockPlayerInput: true\n }).then((val: any) => {\n if (event) {\n event.replayRoutes()\n event.changeDirection(memoryDir)\n }\n return val\n })\n }\n}","import { PrebuiltGui } from '@rpgjs/common'\nimport { Gui } from './Gui'\nimport { RpgPlayer } from '../Player/Player'\nimport { IGui } from '../Interfaces/Gui'\n\nexport class MenuGui extends Gui implements IGui {\n constructor(player: RpgPlayer) {\n super(PrebuiltGui.MainMenu, player)\n }\n\n open() {\n this.on('useItem', (id) => {\n try {\n this.player.useItem(id)\n this.player.syncChanges()\n }\n catch (err: any) {\n this.player.showNotification(err.msg)\n }\n })\n return super.open('', {\n waitingAction: true,\n blockPlayerInput: true\n })\n }\n}","import { PrebuiltGui } from '@rpgjs/common'\nimport { Gui } from './Gui'\nimport { RpgPlayer } from '../Player/Player'\nimport { IGui } from '../Interfaces/Gui'\n\nexport class ShopGui extends Gui implements IGui {\n constructor(player: RpgPlayer) {\n super(PrebuiltGui.Shop, player)\n }\n\n open(items: any[]) {\n items = items.map(item => {\n const it = new item()\n return {\n price: it.price,\n name: it.name,\n description: it.description,\n id: it.id,\n type: item.type\n }\n })\n this.on('buyItem', ({ id, nb }) => {\n try {\n this.player.buyItem(id, nb)\n }\n catch (err) {\n console.log(err)\n }\n })\n this.on('sellItem', ({ id, nb }) => {\n try {\n this.player.sellItem(id, nb)\n }\n catch (err) {\n console.log(err)\n }\n })\n return super.open({ items }, {\n waitingAction: true,\n blockPlayerInput: true\n })\n }\n}","import { PrebuiltGui } from '@rpgjs/common'\nimport { Gui } from './Gui'\nimport { RpgPlayer } from '../Player/Player'\nimport { IGui } from '../Interfaces/Gui'\n\nexport class NotificationGui extends Gui implements IGui {\n constructor(player: RpgPlayer) {\n super(PrebuiltGui.Notification, player)\n }\n}","import { RpgPlayer } from \"./Player\";\nimport { Gui, DialogGui, MenuGui, ShopGui, NotificationGui } from \"../Gui\";\nimport { DialogOptions, Choice } from \"../Gui/DialogGui\";\nimport { Constructor, RpgCommonPlayer } from \"@rpgjs/common\";\n\nexport interface IGuiManager {\n emit: any;\n removeGui: (guiId: string, data?: any) => void;\n }\n\nexport function WithGuiManager<TBase extends Constructor<RpgCommonPlayer>>(\n Base: TBase\n) {\n return class extends Base implements IGuiManager {\n _gui: { [id: string]: Gui } = {};\n\n /**\n * Show a text. This is a graphical interface already built. Opens the GUI named `rpg-dialog`\n *\n * ```ts\n * player.showText('Hello World')\n * ```\n *\n * The method returns a promise. It is resolved when the dialog box is closed.\n *\n * ```ts\n * await player.showText('Hello World')\n * // dialog box is closed, then ...\n * ```\n *\n * **Option: position**\n *\n * You can define how the dialog box is displayed:\n * - top\n * - middle\n * - bottom\n *\n * (bottom by default)\n *\n * ```ts\n * player.showText('Hello World', {\n * position: 'top'\n * })\n * ```\n *\n * **Option: fullWidth**\n *\n * `boolean` (true by default)\n *\n * Indicate that the dialog box will take the full width of the screen.\n *\n * ```ts\n * player.showText('Hello World', {\n * fullWidth: true\n * })\n * ```\n *\n * **Option: autoClose**\n *\n * `boolean` (false by default)\n *\n * If false, the user will have to press Enter to close the dialog box.\n *\n * ```ts\n * player.showText('Hello World', {\n * autoClose: true\n * })\n * ```\n *\n * **Option: typewriterEffect**\n *\n * `boolean` (true by default)\n *\n * Performs a typewriter effect\n *\n * ```ts\n * player.showText('Hello World', {\n * typewriterEffect: false\n * })\n * ```\n *\n * **Option: talkWith**\n *\n * `RpgPlayer` (nothing by default)\n *\n * If you specify the event or another player, the other player will stop his or her movement and look in the player's direction.\n *\n * ```ts\n * // Code in an event\n * player.showText('Hello World', {\n * talkWith: this\n * })\n * ```\n *\n * @title Show Text\n * @method player.showText(text,options)\n * @param {string} text\n * @param {object} [options] the different options, see usage below\n * @returns {Promise}\n * @memberof GuiManager\n */\n showText(msg: string, options: DialogOptions = {}): Promise<any> {\n const gui = new DialogGui(<any>this);\n this._gui[gui.id] = gui;\n return gui.openDialog(msg, options);\n }\n\n /**\n * Shows a dialog box with a choice. Opens the GUI named `rpg-dialog`\n *\n * ```ts\n * const choice = await player.showChoices('What color do you prefer?', [\n * { text: 'Black', value: 'black' },\n * { text: 'Rather the blue', value: 'blue' },\n * { text: 'I don\\'t have a preference!', value: 'none' }\n * ])\n *\n * // If the player selects the first\n * console.log(choice) // { text: 'Black', value: 'black' }\n * ```\n *\n * @title Show Choices\n * @method player.showChoices(text,choices)\n * @param {string} text\n * @param {Array<{ text: string, value: any }>} choices\n * @param {object} [options] Same options as the openDialog method\n * @returns {Promise<Choice | null>}\n * @memberof GuiManager\n */\n showChoices(\n msg: string,\n choices: Choice[],\n options?: DialogOptions\n ): Promise<Choice | null> {\n return this.showText(msg, {\n choices,\n ...options,\n }).then((indexSelected: number) => {\n if (!choices[indexSelected]) return null;\n return choices[indexSelected];\n });\n }\n\n /**\n * Displays a notification . Opens the GUI named `rpg-notification`\n *\n * @title Displays a notification\n * @method player.showNotification()\n * @param {string} message - The message to display in the notification\n * @param {object} options - An object containing options for the notification\n * @param {number} options.time - The time to display the notification for (in ms). Default: 2000ms\n * @param {string} options.icon - The icon to display in the notification. Put the identifier of the spritesheet (defined on the client side)\n * @param {string} options.sound - The sound to play when the notification is shown. Set the sound ID (defined on the client side)\n * @returns {void}\n * @memberof GuiManager\n */\n showNotification(\n message: string,\n options: { time?: number; icon?: string; sound?: string } = {}\n ): Promise<any> {\n const gui = new NotificationGui(<any>this);\n this._gui[gui.id] = gui;\n const data = {\n message,\n ...options,\n };\n return gui.open(data);\n }\n\n /**\n * Calls main menu. Opens the GUI named `rpg-main-menu`\n *\n * @title Call Main Menu\n * @method player.callMainMenu()\n * @returns {void}\n * @memberof GuiManager\n */\n callMainMenu() {\n const gui = new MenuGui(<any>this);\n this._gui[gui.id] = gui;\n return gui.open();\n }\n\n /**\n * Calls shop menu. Opens the GUI named `rpg-shop`\n *\n * @title Call Shop Menu\n * @method player.callShop()\n * @returns {void}\n * @memberof GuiManager\n */\n callShop(items: any[]) {\n const gui = new ShopGui(<any>this);\n this._gui[gui.id] = gui;\n return gui.open(items);\n }\n\n /**\n * Call a custom Gui\n\n * ```ts\n * // Calls a client-side component, created with VueJS, named \"inn\".\n * const gui = player.gui('inn')\n * \n * // You can wait for actions on the menu. It only works if the menu is open.\n * gui.on('accept', () => {\n * player.allRecovery()\n * })\n * \n * // The GUI is opened by passing recoverable data on the client side.\n * gui.open({ hello: 'world' })\n * ```\n * \n * When opening the GUI, one can give options\n * \n * ```ts\n * await gui.open({ hello: 'world' }, {\n * waitingAction: true,\n * blockPlayerInput: true\n * })\n * // After the GUI is closed\n * ```\n * \n * - `blockPlayerInput`: while the GUI is open, the player can not move on the map\n * - `waitingAction`: We explicitly wait until the GUI is closed for the promise to be resolved.\n * \n * @title Call custom GUI\n * @method player.gui(guiId)\n * @param {string} guiId\n * @returns {Gui}\n * @memberof GuiManager\n */\n gui(guiId: string) {\n const gui = new Gui(guiId, <any>this);\n this._gui[guiId] = gui;\n return gui;\n }\n\n /**\n * Closes the GUI and removes it from memory\n *\n * @title Close custom GUI\n * @method player.removeGui(guiId,data)\n * @param {string} guiId\n * @param {object} [data] Passing data if you close the GUI\n * @returns {Gui}\n * @memberof GuiManager\n */\n removeGui(guiId: string, data?: any) {\n if (this._gui[guiId]) {\n this._gui[guiId].close(data);\n delete this._gui[guiId];\n }\n }\n\n private _attachedGui(players: RpgPlayer[] | RpgPlayer, display: boolean) {\n if (!Array.isArray(players)) {\n players = [players] as RpgPlayer[];\n }\n this.emit(\"gui.tooltip\", {\n players: (players as RpgPlayer[]).map((player) => player.id),\n display,\n });\n }\n\n /**\n * Display the GUI attached to the players\n *\n * If you don't specify the players as parameters, it will display the GUI of the instance\n * But you can specify which GUIs to display by specifying the players as the first parameter\n *\n * @title View to GUI attached\n * @method player.showAttachedGui(players?)\n * @param {RpgPlayer[] | RpgPlayer} [players] The GUIs attached to the players to display\n * @since 3.0.0-beta.5\n * @example\n * ```ts\n * player.showAttachedGui()\n * ```\n * ```ts\n * player.showAttachedGui(aPlayer)\n * ```\n * ```ts\n * player.showAttachedGui([player1, player2])\n * ```\n * @memberof GuiManager\n * */\n showAttachedGui(players?: RpgPlayer[] | RpgPlayer) {\n const _players = players || this;\n this._attachedGui(_players as RpgPlayer[], true);\n }\n\n /**\n * Hide the GUI attached to the players\n *\n * @title Hide to GUI attached\n * @method player.hideAttachedGui(players?)\n * @param {RpgPlayer[] | RpgPlayer} [players] The GUIs attached to the players to hide\n * @since 3.0.0-beta.5\n * @example\n * ```ts\n * player.hideAttachedGui()\n * ```\n * ```ts\n * player.hideAttachedGui(aPlayer)\n * ```\n * ```ts\n * player.hideAttachedGui([player1, player2])\n * ```\n * @memberof GuiManager\n * */\n hideAttachedGui(players?: RpgPlayer[] | RpgPlayer) {\n const _players = players || this;\n this._attachedGui(_players as RpgPlayer[], false);\n }\n };\n}\n","import { type Constructor } from \"@rpgjs/common\";\nimport { RpgCommonPlayer } from \"@rpgjs/common\";\n\n/**\n * Interface defining what MoveManager adds to a class\n */\nexport interface IGoldManager {\n \n}\n\n/**\n * Move Manager mixin\n * \n * Adds methods to manage player gold\n * \n * @param Base - The base class to extend\n * @returns A new class with gold management capabilities\n */\nexport function WithGoldManager<TBase extends Constructor<RpgCommonPlayer>>(Base: TBase) {\n return class extends Base implements IGoldManager {\n /** \n * You can change the game money\n * \n * ```ts\n * player.gold += 100\n * ```\n * \n * @title Change Gold\n * @prop {number} player.gold\n * @default 0\n * @memberof GoldManager\n * */\n set gold(val: number) {\n if (val < 0) {\n val = 0\n }\n this._gold.set(val)\n }\n\n get gold(): number {\n return this._gold()\n }\n };\n}\n","import { type Constructor } from \"@rpgjs/common\";\nimport { RpgCommonPlayer } from \"@rpgjs/common\";\n\n/**\n * Interface defining what MoveManager adds to a class\n */\nexport interface IWithVariableManager {\n variables: Map<string, any>\n}\n\n/**\n * Move Manager mixin\n * \n * Adds methods to manage player movement\n * \n * @param Base - The base class to extend\n * @returns A new class with move management capabilities\n */\nexport function WithVariableManager<TBase extends Constructor<RpgCommonPlayer>>(Base: TBase) {\n return class extends Base implements IWithVariableManager {\n variables: Map<string, any> = new Map()\n\n /** \n * Assign a variable to the player\n * \n * ```ts\n * player.setVariable('OPEN_CHEST', true)\n * ```\n * \n * @title Set variable\n * @method player.setVariable(key,val)\n * @param {string} key\n * @param {any} val\n * @returns {void}\n * @memberof VariableManager\n * */\n setVariable(key: string, val) {\n this.variables.set(key, val)\n }\n\n /** \n * Get a variable\n * \n * ```ts\n * const val = player.getVariable('OPEN_CHEST')\n * ```\n * \n * @title Get variable\n * @method player.setVariable(key,val)\n * @param {string} key\n * @returns {any} \n * @memberof VariableManager\n * */\n getVariable(key: string) {\n return this.variables.get(key)\n }\n\n /** \n * Remove a variable\n * \n * ```ts\n * player.removeVariable('OPEN_CHEST')\n * ```\n * \n * @title Remove variable\n * @method player.removeVariable(key)\n * @param {string} key\n * @returns {boolean} true if a variable existed and has been removed, or false if the variable does not exist.\n * @memberof VariableManager\n * */\n removeVariable(key: string) {\n return this.variables.delete(key)\n }\n };\n}\n","import { random } from \"@rpgjs/common\"\n\nexport const MAXHP: string = 'maxHp'\nexport const MAXSP: string = 'maxSp'\nexport const ATK: string = 'atk'\nexport const PDEF: string = 'pdef'\nexport const SDEF: string = 'sdef'\nexport const STR: string = 'str'\nexport const AGI: string = 'agi'\nexport const INT: string = 'int'\nexport const DEX: string = 'dex'\n\nexport const MAXHP_CURVE = {\n start: 741,\n end: 7467\n}\nexport const MAXSP_CURVE = {\n start: 534,\n end: 5500\n}\nexport const STR_CURVE = {\n start: 67,\n end: 635\n}\nexport const AGI_CURVE = {\n start: 58,\n end: 582\n}\nexport const INT_CURVE = {\n start: 36,\n end: 7318\n}\nexport const DEX_CURVE = {\n start: 54,\n end: 564\n}\n\nexport const DAMAGE_CRITICAL = function(damage, a, b) {\n if (random(0, 100) < 4 * a[DEX] / b[AGI]) {\n damage *= 2\n }\n return damage\n}\n\nexport const DAMAGE_PHYSIC = function(a, b) {\n let damage = Math.round((a[ATK] - b[PDEF] / 2) * ((20 + a[STR]) / 20))\n if (damage < 0) damage = 0\n return damage\n}\n\nexport const DAMAGE_GUARD = function(damage) {\n return damage / 2\n}\n\nexport const COEFFICIENT_ELEMENTS = function(a, b, bDef) {\n return ((a.rate + 1) * (b.rate + 1)) / (bDef.rate == 0 ? bDef.rate * 4 : 1)\n}\n\nexport const DAMAGE_SKILL = function(a, b, skill) {\n let power = skill.power + (a[ATK] * (skill.coefficient[ATK] || 0))\n if (power > 0) {\n power -= b[PDEF] * (skill.coefficient[PDEF] || 0) / 2\n power -= b[SDEF] * (skill.coefficient[SDEF] || 0) / 2\n power = Math.max(power, 0)\n }\n let rate = 20;\n [STR, DEX, AGI, INT].forEach(val => rate += a[val] * (skill.coefficient[val] || 0))\n return Math.round(power * rate / 20)\n}","import { Constructor, isString, RpgCommonPlayer } from \"@rpgjs/common\";\nimport { MAXHP, MAXSP } from \"../presets\";\n\nexport interface IWithParameterManager {\n parameters: Map<string, any>\n hp: number\n sp: number\n exp: number\n level: number\n expForNextlevel: number\n param: { [key: string]: number }\n paramsModifier: { [key: string]: { value?: number, rate?: number } }\n}\n\ninterface PlayerWithMixins extends RpgCommonPlayer {\n databaseById?(id: string): any; \n}\n\n/**\n * Mixin that adds parameter management functionality to a player class.\n * \n * This mixin provides comprehensive parameter management including:\n * - Health Points (HP) and Skill Points (SP) management\n * - Experience and level progression system\n * - Custom parameter creation and modification\n * - Parameter modifiers for temporary stat changes\n * \n * @template TBase - The base class constructor type\n * @param Base - The base class to extend\n * @returns A new class that extends the base with parameter management capabilities\n * \n * @example\n * ```ts\n * class MyPlayer extends WithParameterManager(BasePlayer) {\n * constructor() {\n * super();\n * this.addParameter('strength', { start: 10, end: 100 });\n * }\n * }\n * ```\n */\nexport function WithParameterManager<TBase extends Constructor<RpgCommonPlayer>>(\n Base: TBase\n): TBase & Constructor<IWithParameterManager> {\n return class extends Base implements IWithParameterManager {\n private _paramsModifier: {\n [key: string]: {\n value?: number,\n rate?: number\n }\n } = {}\n\n private _parameters: Map<string, {\n start: number,\n end: number\n }> = new Map()\n\n /** \n * ```ts\n * player.initialLevel = 5\n * ``` \n * \n * @title Set initial level\n * @prop {number} player.initialLevel\n * @default 1\n * @memberof ParameterManager\n * */\n public initialLevel:number = 1\n\n /** \n * ```ts\n * player.finalLevel = 50\n * ``` \n * \n * @title Set final level\n * @prop {number} player.finalLevel\n * @default 99\n * @memberof ParameterManager\n * */\n public finalLevel:number = 99\n\n /** \n * With Object-based syntax, you can use following options:\n * - `basis: number`\n * - `extra: number`\n * - `accelerationA: number`\n * - `accelerationB: number`\n * @title Change Experience Curve\n * @prop {object} player.expCurve\n * @default \n * ```ts\n * {\n * basis: 30,\n * extra: 20,\n * accelerationA: 30,\n * accelerationB: 30\n * }\n * ```\n * @memberof ParameterManager\n * */\n public expCurve: { \n basis: number,\n extra: number,\n accelerationA: number\n accelerationB: number\n }\n \n /** \n * Changes the health points\n * - Cannot exceed the MaxHP parameter\n * - Cannot have a negative value\n * - If the value is 0, a hook named `onDead()` is called in the RpgPlayer class.\n * \n * ```ts\n * player.hp = 100\n * ``` \n * @title Change HP\n * @prop {number} player.hp\n * @default MaxHPValue\n * @memberof ParameterManager\n * */\n set hp(val: number) {\n if (val > this.param[MAXHP]) {\n val = this.param[MAXHP]\n }\n else if (val <= 0) {\n this['execMethod']('onDead') \n val = 0\n }\n this._hp.set(val)\n }\n\n get hp(): number {\n return this._hp()\n }\n\n /** \n * Changes the skill points\n * - Cannot exceed the MaxSP parameter\n * - Cannot have a negative value\n * \n * ```ts\n * player.sp = 200\n * ``` \n * @title Change SP\n * @prop {number} player.sp\n * @default MaxSPValue\n * @memberof ParameterManager\n * */\n set sp(val: number) {\n if (val > this.param[MAXSP]) {\n val = this.param[MAXSP]\n }\n this._sp.set(val)\n }\n\n get sp(): number {\n return this._sp()\n }\n\n /** \n * Changing the player's experience. \n * ```ts\n * player.exp += 100\n * ```\n * \n * Levels are based on the experience curve.\n * \n * ```ts\n * console.log(player.level) // 1\n * console.log(player.expForNextlevel) // 150\n * player.exp += 160\n * console.log(player.level) // 2\n * ```\n * \n * @title Change Experience\n * @prop {number} player.exp\n * @default 0\n * @memberof ParameterManager\n * */\n set exp(val: number) {\n this._exp.set(val)\n const lastLevel = this.level\n while (this.expForNextlevel < this._exp()) {\n this.level += 1\n }\n //const hasNewLevel = player.level - lastLevel\n }\n\n get exp(): number {\n return this._exp()\n }\n\n /** \n * Changing the player's level. \n * \n * ```ts\n * player.level += 1\n * ``` \n * \n * The level will be between the initial level given by the `initialLevel` and final level given by `finalLevel`\n * \n * ```ts\n * player.finalLevel = 50\n * player.level = 60 \n * console.log(player.level) // 50\n * ```\n * \n * @title Change Level\n * @prop {number} player.level\n * @default 1\n * @memberof ParameterManager\n * */\n set level(val: number) {\n const lastLevel = this._level()\n if (this.finalLevel && val > this.finalLevel) {\n val = this.finalLevel\n }\n const currentClass = this._class && this._class()\n if (currentClass && 'skillsToLearn' in currentClass && Array.isArray(currentClass.skillsToLearn)) {\n for (let i = this._level() ; i <= val; i++) {\n for (let skill of currentClass.skillsToLearn as any[]) {\n if (skill.level == i) {\n this['learnSkill'](skill.skill)\n }\n }\n }\n }\n const hasNewLevel = val - lastLevel\n if (hasNewLevel > 0) {\n this['execMethod']('onLevelUp', <any>[hasNewLevel]) \n }\n this._level.set(val)\n }\n\n get level(): number {\n return this._level()\n }\n\n /** \n * ```ts\n * console.log(player.expForNextlevel) // 150\n * ```\n * @title Experience for next level ?\n * @prop {number} player.expForNextlevel\n * @readonly\n * @memberof ParameterManager\n * */\n get expForNextlevel(): number {\n return this._expForLevel(this.level + 1)\n }\n\n /** \n * Read the value of a parameter. Put the name of the parameter.\n * \n * ```ts\n * import { Presets } from '@rpgjs/server'\n * \n * const { MAXHP } = Presets \n * \n * console.log(player.param[MAXHP])\n * ```\n * \n * > Possible to use the `player.getParamValue(name)` method instead\n * @title Get Param Value\n * @prop {object} player.param\n * @readonly\n * @memberof ParameterManager\n * */\n get param() {\n const obj = {}\n this._parameters.forEach((val, name) => {\n obj[name] = this.getParamValue(name)\n })\n return obj\n }\n\n get paramsModifier() {\n const params = {}\n const paramsAvg = {}\n const changeParam = (paramsModifier) => {\n for (let key in paramsModifier) {\n const { rate, value } = paramsModifier[key]\n if (!params[key]) params[key] = { rate: 0, value: 0 }\n if (!paramsAvg[key]) paramsAvg[key] = 0\n if (value) params[key].value += value\n if (rate !== undefined) params[key].rate += rate\n paramsAvg[key]++\n }\n }\n const getModifier = (prop) => {\n if (!isString(prop)) {\n changeParam(prop)\n return\n }\n for (let el of this[prop]()) {\n if (!el.paramsModifier) continue\n changeParam(el.paramsModifier)\n }\n }\n getModifier(this._paramsModifier)\n getModifier('states')\n getModifier('equipments')\n for (let key in params) {\n params[key].rate /= paramsAvg[key]\n }\n return params\n }\n\n /** \n * Changes the values of some parameters\n * \n * > It is important that these parameters have been created beforehand with the `addParameter()` method.\n * > By default, the following settings have been created: \n * - maxhp\n * - maxsp\n * - str\n * - int\n * - dex\n * - agi\n * \n * **Object Key**\n * \n * The key of the object is the name of the parameter\n * \n * > The good practice is to retrieve the name coming from a constant\n * \n * **Object Value**\n * \n * The value of the key is an object containing: \n * ``` \n * {\n * value: number,\n * rate: number\n * }\n * ```\n * \n * - value: Adds a number to the parameter\n * - rate: Adds a rate to the parameter\n * \n * > Note that you can put both (value and rate)\n * \n * In the case of a state or the equipment of a weapon or armor, the parameters will be changed but if the state disappears or the armor/weapon is de-equipped, then the parameters will return to the initial state.\n * \n * @prop {Object} [paramsModifier]\n * @example\n * \n * ```ts\n * import { Presets } from '@rpgjs/server'\n * \n * const { MAXHP } = Presets\n * \n * player.paramsModifier = {\n * [MAXHP]: {\n * value: 100\n * }\n * }\n * ```\n * \n * 1. Player has 741 MaxHp\n * 2. After changing the parameter, he will have 841 MaxHp\n * \n * @title Set Parameters Modifier\n * @prop {number} paramsModifier\n * @memberof ParameterManager\n * */\n set paramsModifier(val: { \n [key: string]: {\n value?: number,\n rate?: number\n }\n }) {\n this._paramsModifier = val\n }\n\n get parameters() {\n return this._parameters\n }\n\n set parameters(val) {\n this._parameters = val\n }\n\n private _expForLevel(level: number): number {\n const {\n basis,\n extra,\n accelerationA,\n accelerationB\n } = this.expCurve\n return Math.round(basis * (Math.pow(level - 1, 0.9 + accelerationA / 250)) * level * (level + 1) / (6 + Math.pow(level, 2) / 50 / accelerationB) + (level - 1) * extra)\n }\n\n private getParam(name: string) {\n const features = this._parameters.get(name)\n if (!features) {\n throw `Parameter ${name} not exists. Please use addParameter() before`\n }\n return features\n }\n\n getParamValue(name: string): number | never {\n const features = this.getParam(name)\n let curveVal = Math.floor((features.end - features.start) * ((this.level-1) / (this.finalLevel - this.initialLevel))) + features.start\n const modifier = this.paramsModifier[name]\n if (modifier) {\n if (modifier.rate) curveVal *= modifier.rate\n if (modifier.value) curveVal += modifier.value\n }\n return curveVal\n }\n\n /** \n * Give a new parameter. Give a start value and an end value. \n * The start value will be set to the level set at `player.initialLevel` and the end value will be linked to the level set at `player.finalLevel`.\n * \n * ```ts\n * const SPEED = 'speed'\n * \n * player.addParameter(SPEED, {\n * start: 10,\n * end: 100\n * })\n * \n * player.param[SPEED] // 10\n * player.level += 5\n * player.param[SPEED] // 14\n * ```\n * \n * @title Add custom parameters\n * @method player.addParameter(name,curve)\n * @param {name} name \n * @param {object} curve Scheme of the object: { start: number, end: number }\n * @returns {void}\n * @memberof ParameterManager\n * */\n addParameter(name: string, { start, end }: { start: number, end: number }): void {\n this._parameters.set(name, {\n start,\n end\n })\n const maxHp = this.param[MAXHP]\n const maxSp = this.param[MAXSP]\n if (name == MAXHP && this.hp > maxHp) {\n this.hp = maxHp // forcing hp not to exceed maxp \n }\n else if (name == MAXSP && this.sp > maxSp) {\n this.sp = maxSp\n }\n }\n\n /** \n * Gives back in percentage of health points to skill points\n * \n * ```ts\n * import { Presets } from '@rpgjs/server'\n * \n * const { MAXHP } = Presets \n * \n * console.log(player.param[MAXHP]) // 800\n * player.hp = 100\n * player.recovery({ hp: 0.5 }) // = 800 * 0.5\n * console.log(player.hp) // 400\n * ```\n * \n * @title Recovery HP and/or SP\n * @method player.recovery(params)\n * @param {object} params Scheme of the object: { hp: number, sp: number }. The values of the numbers must be in 0 and 1\n * @returns {void}\n * @memberof ParameterManager\n * */\n recovery({ hp, sp }: { hp?: number, sp?: number }) {\n if (hp) this.hp = this.param[MAXHP] * hp\n if (sp) this.sp = this.param[MAXSP] * sp\n }\n\n /** \n * restores all HP and SP\n * \n * ```ts\n * import { Presets } from '@rpgjs/server'\n * \n * const { MAXHP, MAXSP } = Presets \n * \n * console.log(player.param[MAXHP], player.param[MAXSP]) // 800, 230\n * player.hp = 100\n * player.sp = 0\n * player.allRecovery()\n * console.log(player.hp, player.sp) // 800, 230\n * ```\n * \n * @title All Recovery\n * @method player.allRecovery()\n * @returns {void}\n * @memberof ParameterManager\n * */\n allRecovery(): void {\n this.recovery({ hp: 1, sp: 1 })\n }\n }\n}","import { ItemInstance } from \"@rpgjs/database\";\nimport { RpgCommonPlayer, type Constructor } from \"@rpgjs/common\";\nexport class ItemFixture {}\n\nexport function WithItemFixture<TBase extends Constructor<RpgCommonPlayer>>(\n Base: TBase\n) {\n return class extends Base implements IItemFixture {\n protected getFeature(name, prop): any {\n const array = {};\n for (let item of this.equipments()) {\n if (item[name]) {\n for (let feature of item[name]) {\n const { rate } = feature;\n const instance = feature[prop];\n const cache = array[instance.id];\n if (cache && cache.rate >= rate) continue;\n array[instance.id] = feature;\n }\n }\n }\n return Object.values(array);\n }\n };\n}\n\nexport interface ItemFixture {\n equipments: ItemInstance[];\n}\n","export class Log {\n constructor(private id: string, private msg: string) {}\n}","import { Log } from './log'\n\nexport class ItemLog {\n static notInInventory(itemClass) {\n return new Log('ITEM_NOT_INVENTORY', `The item ${itemClass.name} is not in inventory`)\n }\n static notUseItem(itemClass) {\n return new Log('NOT_USE_ITEM', `The player cannot use the ${itemClass.name} item.`)\n }\n static chanceToUseFailed(itemClass) {\n return new Log('USE_CHANCE_ITEM_FAILED', `Chance to use the ${itemClass.name} item has failed`)\n }\n static invalidToEquiped(itemClass) {\n return new Log('INVALID_ITEM_TO_EQUIP', `The item ${itemClass.name} is not a weapon or armor`)\n }\n static canNotEquip(itemClass) {\n return new Log('CANNOT_EQUIP', `The item ${itemClass.name} cannot be equiped`)\n }\n static isAlreadyEquiped(itemClass) {\n return new Log('ITEM_ALREADY_EQUIPED', `The item ${itemClass.name} is already equiped`)\n }\n static haveNotPrice(itemClass) {\n return new Log('NOT_PRICE', `Define a price > 0 to buy ${itemClass.name}`)\n }\n static notEnoughGold(itemClass, nb) {\n return new Log('NOT_ENOUGH_GOLD', `not enough gold to buy ${nb} ${itemClass.name}`)\n }\n static tooManyToSell(itemClass, nbToSell, nb) {\n return new Log('TOO_MANY_ITEM_TO_SELL', `Too many items to sell: ${nbToSell} ${itemClass.name}, only ${nb} in inventory`)\n }\n static restriction(itemClass) {\n return new Log('RESTRICTION_ITEM', `A state blocks the use of the ${itemClass.name} skill`)\n }\n}","import { Log } from './log'\n\nexport class SkillLog {\n static notLearned(skillClass) {\n return new Log('SKILL_NOT_LEARNED', `the skill ${skillClass.name} is not learned`)\n }\n static notEnoughSp(skillClass, skillSp, playerSp) {\n return new Log('NOT_ENOUGH_SP', `not enough SP to use ${skillClass.name} skill. ${skillSp} Skill'SP is is greater than ${playerSp} Player'SP`)\n }\n static chanceToUseFailed(skillClass) {\n return new Log('USE_CHANCE_SKILL_FAILED', `Chance to use the ${skillClass.name} skill has failed`)\n }\n static restriction(skillClass) {\n return new Log('RESTRICTION_SKILL', `A state blocks the use of the ${skillClass.name} skill`)\n }\n static alreadyLearned(skillClass) {\n return new Log('SKILL_ALREADY_LEARNED', `The ${skillClass.name} skill is already learned`)\n }\n}","import { Log } from './log'\n\nexport class StateLog {\n static addFailed(stateClass) {\n return new Log('ADD_STATE_FAILED', `Adding the ${stateClass.name} state has failed`)\n }\n static removeFailed(stateClass) {\n return new Log('REMOVE_STATE_FAILED', `Removing the ${stateClass.name} state has failed`)\n }\n static notApplied(stateClass) {\n return new Log('STATE_NOT_APPLIED', `State ${stateClass.name} does not exist`)\n }\n}","import { isInstanceOf, isString, type Constructor } from \"@rpgjs/common\";\nimport { RpgCommonPlayer, Matter, SeekAvoid } from \"@rpgjs/common\";\nimport { signal, type WritableArraySignal } from \"@signe/reactive\";\nimport { ATK, PDEF, SDEF } from \"../presets\";\nimport { ItemLog, StateLog } from \"../logs\";\nimport { persist } from \"@signe/sync\";\nimport { RpgPlayer } from \"./Player\";\n\ninterface StateManagerDependencies {\n equipments(): any[];\n databaseById(id: string | StateClass): any;\n addState(stateClass: StateClass | string, chance?: number): object | null;\n removeState(stateClass: StateClass | string, chance?: number): void;\n}\n\n/**\n * Interface defining what MoveManager adds to a class\n */\nexport interface IStateManager {\n statesDefense: { rate: number; state: any }[];\n statesEfficiency: WritableArraySignal<any[]>;\n applyStates(\n player: RpgPlayer,\n states: { addStates?: any[]; removeStates?: any[] }\n ): void;\n getState(stateClass: StateClass | string): any;\n addState(stateClass: StateClass | string, chance?: number): object | null;\n removeState(stateClass: StateClass | string, chance?: number): void;\n}\n\ntype StateClass = { new (...args: any[]) };\n\n/**\n * Move Manager mixin\n *\n * Adds methods to manage player movement\n *\n * @param Base - The base class to extend\n * @returns A new class with move management capabilities\n */\nexport function WithStateManager<\n TBase extends Constructor<RpgCommonPlayer & StateManagerDependencies>\n>(Base: TBase): Constructor<IStateManager> & TBase {\n return class extends Base implements IStateManager {\n _statesEfficiency = signal<any[]>([]);\n\n /**\n * Recovers the player's states defense on inventory. This list is generated from the `statesDefense` property defined on the weapons or armors equipped.\n * If several items have the same element, only the highest rate will be taken into account.\n *\n * ```ts\n * import { Armor, State } from '@rpgjs/server'\n *\n * @State({\n * name: 'Paralyze'\n * })\n * class Paralyze {}\n *\n * @Armor({\n * name: 'Shield',\n * statesDefense: [{ rate: 1, state: Paralyze }]\n * })\n * class Shield {}\n *\n * @Armor({\n * name: 'FireShield',\n * statesDefense: [{ rate: 0.5, state: Paralyze }]\n * })\n * class FireShield {}\n *\n * player.addItem(Shield)\n * player.addItem(FireShield)\n * player.equip(Shield)\n * player.equip(FireShield)\n *\n * console.log(player.statesDefense) // [{ rate: 1, state: instance of Paralyze }]\n * ```\n * @title Get States Defense\n * @prop {Array<{ rate: number, state: StateClass}>} player.statesDefense\n * @readonly\n * @memberof StateManager\n * */\n get statesDefense(): { rate: number; state: any }[] {\n return this.getFeature(\"statesDefense\", \"state\");\n }\n\n /**\n * Set or retrieves all the states where the player is vulnerable or not.\n *\n * ```ts\n * import { Class, State } from '@rpgjs/server'\n *\n * @State({\n * name: 'Paralyze'\n * })\n * class Paralyze {}\n *\n * @State({\n * name: 'Sleep'\n * })\n * class Sleep {}\n *\n * @Class({\n * name: 'Fighter',\n * statesEfficiency: [{ rate: 1, state: Paralyze }]\n * })\n * class Hero {}\n *\n * player.setClass(Hero)\n *\n * console.log(player.statesEfficiency) // [{ rate: 1, instance of Paralyze }]\n *\n * player.statesEfficiency = [{ rate: 2, state: Sleep }]\n *\n * console.log(player.statesEfficiency) // [{ rate: 1, state: instance of Paralyze }, { rate: 2, state: instance of Sleep }]\n * ```\n * @title Set/Get States Efficiency\n * @prop {Array<{ rate: number, state: StateClass}>} player.statesEfficiency\n * @memberof StateManager\n * */\n get statesEfficiency() {\n return this._statesEfficiency;\n }\n\n set statesEfficiency(val) {\n this._statesEfficiency = val;\n }\n\n applyStates(\n player: RpgPlayer & IStateManager,\n { addStates, removeStates }\n ) {\n if (addStates) {\n for (let { state, rate } of addStates) {\n player.addState(state, rate);\n }\n }\n if (removeStates) {\n for (let { state, rate } of removeStates) {\n player.removeState(state, rate);\n }\n }\n }\n\n /**\n * Get a state to the player. Returns `null` if the state is not present on the player\n * ```ts\n * import Paralyze from 'your-database/states/paralyze'\n *\n * player.getState(Paralyze)\n * ```\n *\n * @title Get State\n * @method player.getState(stateClass)\n * @param {StateClass | string} stateClass or state id\n * @returns {instance of StateClass | null}\n * @memberof StateManager\n */\n getState(stateClass: StateClass | string) {\n if (isString(stateClass)) stateClass = this.databaseById(stateClass);\n return this.states().find((state) => {\n if (isString(stateClass)) {\n return state.id == stateClass;\n }\n return isInstanceOf(state, stateClass);\n });\n }\n\n /**\n * Adds a state to the player. Set the chance between 0 and 1 that the state can apply\n * ```ts\n * import Paralyze from 'your-database/states/paralyze'\n *\n * try {\n * player.addState(Paralyze)\n * }\n * catch (err) {\n * console.log(err)\n * }\n * ```\n *\n * @title Add State\n * @method player.addState(stateClass,chance=1)\n * @param {StateClass | string} stateClass state class or state id\n * @param {number} [chance] 1 by default\n * @throws {StateLog} addFailed\n * If the chance to add the state has failed (defined with the `chance` param)\n * ```\n * {\n * id: ADD_STATE_FAILED,\n * msg: '...'\n * }\n * ```\n * @returns {instance of StateClass}\n * @memberof StateManager\n * @todo\n */\n addState(stateClass: StateClass | string, chance = 1): object | null {\n const state = this.getState(stateClass);\n if (isString(stateClass)) {\n stateClass = this.databaseById(stateClass);\n }\n if (!state) {\n if (Math.random() > chance) {\n throw StateLog.addFailed(stateClass);\n }\n //const efficiency = this.findStateEfficiency(stateClass)\n const instance = new (stateClass as StateClass)();\n this.states().push(instance);\n this.applyStates(<any>this, instance);\n return instance;\n }\n return null;\n }\n\n /**\n * Remove a state to the player. Set the chance between 0 and 1 that the state can be removed\n * ```ts\n * import Paralyze from 'your-database/states/paralyze'\n *\n * try {\n * player.removeState(Paralyze)\n * }\n * catch (err) {\n * console.log(err)\n * }\n * ```\n *\n * @title Remove State\n * @method player.removeState(stateClass,chance=1)\n * @param {StateClass|string} stateClass class state or state id\n * @param {number} [chance] 1 by default\n * @throws {StateLog} removeFailed\n * If the chance to remove the state has failed (defined with the `chance` param)\n * ```\n * {\n * id: REMOVE_STATE_FAILED,\n * msg: '...'\n * }\n * ```\n * @throws {StateLog} notApplied\n * If the status does not exist\n * ```\n * {\n * id: STATE_NOT_APPLIED,\n * msg: '...'\n * }\n * ```\n * @returns {instance of StateClass}\n * @memberof StateManager\n */\n removeState(stateClass: StateClass | string, chance = 1) {\n const index = this.states().findIndex((state) => {\n if (isString(stateClass)) {\n return state.id == stateClass;\n }\n return isInstanceOf(state, stateClass);\n });\n if (index != -1) {\n if (Math.random() > chance) {\n throw StateLog.removeFailed(stateClass);\n }\n this.states().splice(index, 1);\n } else {\n throw StateLog.notApplied(stateClass);\n }\n }\n\n private findStateEfficiency(stateClass) {\n return this.statesEfficiency().find((state) =>\n isInstanceOf(state.state, stateClass)\n );\n }\n };\n}\n","import { isInstanceOf, isString, Item, type Constructor } from \"@rpgjs/common\";\nimport { RpgCommonPlayer, Matter } from \"@rpgjs/common\";\nimport { ATK, PDEF, SDEF } from \"../presets\";\nimport { ItemLog } from \"../logs\";\nimport { ArmorInstance, ItemClass, ItemInstance, WeaponInstance } from \"@rpgjs/database\";\n\n// Ajout des enums manquants\nenum Effect {\n CAN_NOT_ITEM = 'CAN_NOT_ITEM'\n}\n\nenum ClassHooks {\n canEquip = 'canEquip'\n}\n\n/**\n * Interface defining what MoveManager adds to a class\n */\nexport interface IItemManager {\n databaseById(id: string): ItemClass;\n}\n\ntype Inventory = { nb: number; item: ItemInstance };\n\n/**\n * Move Manager mixin\n *\n * Adds methods to manage player movement\n *\n * @param Base - The base class to extend\n * @returns A new class with move management capabilities\n */\nexport function WithItemManager<TBase extends Constructor<RpgCommonPlayer>>(\n Base: TBase\n): Constructor<IItemManager> & TBase {\n return class extends Base implements IItemManager {\n\n /**\n * Retrieves the information of an object: the number and the instance\n * @title Get Item\n * @method player.getItem(itemClass)\n * @param {ItemClass | string} itemClass Identifier of the object if the parameter is a string\n * @returns {{ nb: number, item: instance of ItemClass }}\n * @memberof ItemManager\n * @example\n *\n * ```ts\n * import Potion from 'your-database/potion'\n *\n * player.addItem(Potion, 5)\n * const inventory = player.getItem(Potion)\n * console.log(inventory) // { nb: 5, item: <instance of Potion> }\n * ```\n */\n getItem(itemClass: ItemClass | string): Item {\n const index: number = this._getItemIndex(itemClass);\n return this.items()[index];\n }\n\n /**\n * Check if the player has the item in his inventory.\n * @title Has Item\n * @method player.hasItem(itemClass)\n * @param {ItemClass | string} itemClass Identifier of the object if the parameter is a string\n * @returns {boolean}\n * @memberof ItemManager\n * @example\n *\n * ```ts\n * import Potion from 'your-database/potion'\n *\n * player.hasItem(Potion) // false\n * ```\n */\n hasItem(itemClass: ItemClass | string): boolean {\n return !!this.getItem(itemClass);\n }\n\n _getItemIndex(itemClass: ItemClass | string): number {\n return this.items().findIndex((it: Item): boolean => {\n if (isString(itemClass)) {\n return it.id() == itemClass;\n }\n return isInstanceOf(it, itemClass);\n });\n }\n /**\n * Add an item in the player's inventory. You can give more than one by specifying `nb`\n *\n * `onAdd()` method is called on the ItemClass\n *\n * @title Add Item\n * @method player.addItem(item,nb=1)\n * @param {ItemClass} itemClass\n * @param {number} [nb] Default 1\n * @returns {{ nb: number, item: instance of ItemClass }}\n * @memberof ItemManager\n * @example\n *\n * ```ts\n * import Potion from 'your-database/potion'\n * player.addItem(Potion, 5)\n * ```\n */\n addItem(itemId: string, nb: number = 1): Item {\n const data = this.databaseById(itemId);\n const item = this.items().find((it) => it.id() == itemId);\n let instance: Item;\n if (item) {\n instance = item;\n instance.quantity.update((it) => it + nb);\n } else {\n instance = new Item(data);\n instance.id.set(itemId);\n this.items().push(instance);\n }\n this[\"execMethod\"](\"onAdd\", [this], instance);\n return instance;\n }\n\n /**\n * Deletes an item. Decreases the value `nb`. If the number falls to 0, then the item is removed from the inventory. The method then returns `undefined`\n *\n * `onRemove()` method is called on the ItemClass\n *\n * @title Remove Item\n * @method player.removeItem(item,nb=1)\n * @param {ItemClass | string} itemClass string is item id\n * @param {number} [nb] Default 1\n * @returns {{ nb: number, item: instance of ItemClass } | undefined}\n * @throws {ItemLog} notInInventory\n * If the object is not in the inventory, an exception is raised\n * ```\n * {\n * id: ITEM_NOT_INVENTORY,\n * msg: '...'\n * }\n * ```\n * @memberof ItemManager\n * @example\n *\n * ```ts\n * import Potion from 'your-database/potion'\n *\n * try {\n * player.removeItem(Potion, 5)\n * }\n * catch (err) {\n * console.log(err)\n * }\n * ```\n */\n removeItem(\n itemClass: ItemClass | string,\n nb: number = 1\n ): Item | undefined {\n const itemIndex: number = this._getItemIndex(itemClass);\n if (itemIndex == -1) {\n throw ItemLog.notInInventory(itemClass);\n }\n const currentNb: number = this.items()[itemIndex].quantity();\n const item = this.items()[itemIndex];\n if (currentNb - nb <= 0) {\n this.items().splice(itemIndex, 1);\n } else {\n this.items()[itemIndex].quantity.update((it) => it - nb);\n }\n this[\"execMethod\"](\"onRemove\", [this], item);\n return this.items()[itemIndex];\n }\n\n /**\n * Purchases an item and reduces the amount of gold\n *\n * `onAdd()` method is called on the ItemClass\n *\n * @title Buy Item\n * @method player.buyItem(item,nb=1)\n * @param {ItemClass | string} itemClass string is item id\n * @param {number} [nb] Default 1\n * @returns {{ nb: number, item: instance of ItemClass }}\n * @throws {ItemLog} haveNotPrice\n * If you have not set a price on the item\n * ```\n * {\n * id: NOT_PRICE,\n * msg: '...'\n * }\n * ```\n * @throws {ItemLog} notEnoughGold\n * If the player does not have enough money\n * ```\n * {\n * id: NOT_ENOUGH_GOLD,\n * msg: '...'\n * }\n * ```\n * @memberof ItemManager\n * @example\n *\n * ```ts\n * import Potion from 'your-database/potion'\n *\n * try {\n * player.buyItem(Potion)\n * }\n * catch (err) {\n * console.log(err)\n * }\n * ```\n */\n buyItem(itemId: string, nb = 1): Item {\n const data = this.databaseById(itemId);\n if (!data.price) {\n throw ItemLog.haveNotPrice(itemId);\n }\n const totalPrice = nb * data.price;\n if (this._gold() < totalPrice) {\n throw ItemLog.notEnoughGold(itemId, nb);\n }\n this._gold.update((gold) => gold - totalPrice);\n return this.addItem(itemId, nb);\n }\n\n /**\n * Sell an item and the player wins the amount of the item divided by 2\n *\n * `onRemove()` method is called on the ItemClass\n *\n * @title Sell Item\n * @method player.sellItem(item,nb=1)\n * @param {ItemClass | string} itemClass string is item id\n * @param {number} [nbToSell] Default 1\n * @returns {{ nb: number, item: instance of ItemClass }}\n * @throws {ItemLog} haveNotPrice\n * If you have not set a price on the item\n * ```\n * {\n * id: NOT_PRICE,\n * msg: '...'\n * }\n * ```\n * @throws {ItemLog} notInInventory\n * If the object is not in the inventory, an exception is raised\n * ```\n * {\n * id: ITEM_NOT_INVENTORY,\n * msg: '...'\n * }\n * ```\n * @throws {ItemLog} tooManyToSell\n * If the number of items for sale exceeds the number of actual items in the inventory\n * ```\n * {\n * id: TOO_MANY_ITEM_TO_SELL,\n * msg: '...'\n * }\n * ```\n * @memberof ItemManager\n * @example\n *\n * ```ts\n * import Potion from 'your-database/potion'\n *\n * try {\n * player.addItem(Potion)\n * player.sellItem(Potion)\n * }\n * catch (err) {\n * console.log(err)\n * }\n * ```\n */\n sellItem(itemId: string, nbToSell = 1): Item {\n const data = this.databaseById(itemId);\n const inventory = this.getItem(itemId);\n if (!inventory) {\n throw ItemLog.notInInventory(itemId);\n }\n const quantity = inventory.quantity();\n if (quantity - nbToSell < 0) {\n throw ItemLog.tooManyToSell(itemId, nbToSell, quantity);\n }\n if (!data.price) {\n throw ItemLog.haveNotPrice(itemId);\n }\n this._gold.update((gold) => gold + (data.price / 2) * nbToSell);\n this.removeItem(itemId, nbToSell);\n return inventory;\n }\n\n getParamItem(name: string): number {\n let nb = 0;\n for (let item of this.equipments()) {\n nb += item[name] || 0;\n }\n const modifier = (this as any).paramsModifier?.[name];\n if (modifier) {\n if (modifier.value) nb += modifier.value;\n if (modifier.rate) nb *= modifier.rate;\n }\n return nb;\n }\n\n /**\n * recover the attack sum of items equipped on the player.\n *\n * @title Get the player's attack\n * @prop {number} player.atk\n * @memberof ItemManager\n */\n get atk(): number {\n return this.getParamItem(ATK);\n }\n\n /**\n * recover the physic defense sum of items equipped on the player.\n *\n * @title Get the player's pdef\n * @prop {number} player.pdef\n * @memberof ItemManager\n */\n get pdef(): number {\n return this.getParamItem(PDEF);\n }\n\n /**\n * recover the skill defense sum of items equipped on the player.\n *\n * @title Get the player's sdef\n * @prop {number} player.sdef\n * @memberof ItemManager\n */\n get sdef(): number {\n return this.getParamItem(SDEF);\n }\n\n /**\n * Use an object. Applies effects and states. Removes the object from the inventory then\n *\n * `onUse()` method is called on the ItemClass (If the use has worked)\n * `onRemove()` method is called on the ItemClass\n *\n * @title Use an Item\n * @method player.useItem(item,nb=1)\n * @param {ItemClass | string} itemClass string is item id\n * @returns {{ nb: number, item: instance of ItemClass }}\n * @throws {ItemLog} restriction\n * If the player has the `Effect.CAN_NOT_ITEM` effect\n * ```\n * {\n * id: RESTRICTION_ITEM,\n * msg: '...'\n * }\n * ```\n * @throws {ItemLog} notInInventory\n * If the object is not in the inventory, an exception is raised\n * ```\n * {\n * id: ITEM_NOT_INVENTORY,\n * msg: '...'\n * }\n * ```\n * @throws {ItemLog} notUseItem\n * If the `consumable` property is on false\n * ```\n * {\n * id: NOT_USE_ITEM,\n * msg: '...'\n * }\n * ```\n * @throws {ItemLog} chanceToUseFailed\n * Chance to use the item has failed. Chances of use is defined with `ItemClass.hitRate`\n * ```\n * {\n * id: USE_CHANCE_ITEM_FAILED,\n * msg: '...'\n * }\n * ```\n * > the item is still deleted from the inventory\n *\n * `onUseFailed()` method is called on the ItemClass\n *\n * @memberof ItemManager\n * @example\n *\n * ```ts\n * import Potion from 'your-database/potion'\n *\n * try {\n * player.addItem(Potion)\n * player.useItem(Potion)\n * }\n * catch (err) {\n * console.log(err)\n * }\n * ```\n */\n useItem(itemId: string): Item {\n const inventory = this.getItem(itemId);\n if ((this as any).hasEffect?.(Effect.CAN_NOT_ITEM)) {\n throw ItemLog.restriction(itemId);\n }\n if (!inventory) {\n throw ItemLog.notInInventory(itemId);\n }\n const item = inventory;\n if ((item as any).consumable === false) {\n throw ItemLog.notUseItem(itemId);\n }\n const hitRate = (item as any).hitRate ?? 1;\n if (Math.random() > hitRate) {\n this.removeItem(itemId);\n this[\"execMethod\"](\"onUseFailed\", [this], item);\n throw ItemLog.chanceToUseFailed(itemId);\n }\n (this as any).applyEffect?.(item);\n (this as any).applyStates?.(this, item);\n this[\"execMethod\"](\"onUse\", [this], item);\n this.removeItem(itemId);\n return inventory;\n }\n\n /**\n * Equips a weapon or armor on a player. Think first to add the item in the inventory with the `addItem()` method before equipping the item.\n * \n * `onEquip()` method is called on the ItemClass\n * \n * @title Equip Weapon or Armor\n * @method player.equip(itemClass,equip=true)\n * @param {ItemClass | string} itemClass string is item id\n * @param {number} [equip] Equip the object if true or un-equipped if false\n * @returns {void}\n * @throws {ItemLog} notInInventory \n * If the item is not in the inventory\n * ```\n {\n id: ITEM_NOT_INVENTORY,\n msg: '...'\n }\n ```\n * @throws {ItemLog} invalidToEquiped \n If the item is not by a weapon or armor\n ```\n {\n id: INVALID_ITEM_TO_EQUIP,\n msg: '...'\n }\n ```\n * @throws {ItemLog} isAlreadyEquiped \n If the item Is already equipped\n ```\n {\n id: ITEM_ALREADY_EQUIPED,\n msg: '...'\n }\n ```\n * @memberof ItemManager\n * @example\n * \n * ```ts\n * import Sword from 'your-database/sword'\n * \n * try {\n * player.addItem(Sword)\n * player.equip(Sword)\n * }\n * catch (err) {\n * console.log(err)\n * }\n * ```\n */\n equip(\n itemId: string,\n equip: boolean = true\n ): void {\n const inventory: Item = this.getItem(itemId);\n if (!inventory) {\n throw ItemLog.notInInventory(itemId);\n }\n const data = this.databaseById(itemId);\n if (data._type == \"item\") {\n throw ItemLog.invalidToEquiped(itemId);\n }\n\n if (this._class && this._class()[ClassHooks.canEquip]) {\n const canEquip = this[\"execMethodSync\"](\n ClassHooks.canEquip,\n [inventory, this],\n this._class()\n );\n if (!canEquip) {\n throw ItemLog.canNotEquip(itemId);\n }\n }\n\n const item = inventory;\n\n if ((item as any).equipped && equip) {\n throw ItemLog.isAlreadyEquiped(itemId);\n }\n (item as any).equipped = equip;\n if (!equip) {\n const index = this.equipments().findIndex((it) => it.id() == item.id());\n this.equipments().splice(index, 1);\n } else {\n this.equipments().push(item);\n }\n this[\"execMethod\"](\"onEquip\", [this, equip], item);\n }\n };\n}\n","import {\n arrayFlat,\n arrayUniq,\n Constructor,\n RpgCommonPlayer,\n} from \"@rpgjs/common\";\n\nexport interface IWithEffectManager {\n effects: any[];\n}\n\nexport enum Effect {\n CAN_NOT_SKILL = 'CAN_NOT_SKILL',\n CAN_NOT_ITEM = 'CAN_NOT_ITEM',\n CAN_NOT_STATE = 'CAN_NOT_STATE',\n CAN_NOT_EQUIPMENT = 'CAN_NOT_EQUIPMENT',\n HALF_SP_COST = 'HALF_SP_COST',\n GUARD = 'GUARD',\n SUPER_GUARD = 'SUPER_GUARD'\n}\n\nexport function WithEffectManager<TBase extends Constructor<RpgCommonPlayer>>(\n Base: TBase\n) {\n return class extends Base implements IWithEffectManager {\n /**\n * ```ts\n * import { Effect } from '@rpgjs/database'\n *\n * const bool = player.hasEffect(Effect.CAN_NOT_SKILL)\n * ```\n *\n * @title Has Effect\n * @method player.hasEffect(effect)\n * @param {string} effect\n * @returns {boolean}\n * @memberof EffectManager\n * */\n hasEffect(effect: string): boolean {\n return this.effects.includes(effect);\n }\n\n /**\n * Retrieves a array of effects assigned to the player, state effects and effects of weapons and armors equipped with the player's own weapons.\n *\n * ```ts\n * console.log(player.effects)\n * ```\n * @title Get Effects\n * @prop {Array<Effect>} player.effects\n * @memberof EffectManager\n * */\n get effects(): any[] {\n const getEffects = (prop) => {\n return arrayFlat(this[prop]().map((el) => el.effects || []));\n };\n return arrayUniq([\n ...this._effects(),\n ...getEffects(\"states\"),\n ...getEffects(\"equipments\"),\n ]);\n }\n\n /**\n * Assigns effects to the player. If you give a array, it does not change the effects of the player's states and armor/weapons equipped.\n *\n * ```ts\n * import { Effect } from '@rpgjs/database'\n *\n * player.effects = [Effect.CAN_NOT_SKILL]\n * ```\n * @title Set Effects\n * @prop {Array<Effect>} player.effects\n * @memberof EffectManager\n * */\n set effects(val) {\n this._effects.set(val);\n }\n };\n}\n","import { Constructor, RpgCommonPlayer } from \"@rpgjs/common\";\nimport { RpgPlayer } from \"./Player\";\nimport { ATK, PDEF, SDEF } from \"../presets\";\nimport { Effect } from \"./EffectManager\";\n\ninterface PlayerWithMixins extends RpgCommonPlayer {\n parameters: any[];\n getFormulas(name: string): any;\n hasEffect(effect: string): boolean;\n coefficientElements(attackerPlayer: RpgPlayer): number;\n hp: number;\n getFormulas(name: string): any;\n hasEffect(effect: string): boolean; \n}\n\nexport interface IBattleManager {\n applyDamage(attackerPlayer: RpgPlayer, skill?: any): {\n damage: number;\n critical: boolean;\n elementVulnerable: boolean;\n guard: boolean;\n superGuard: boolean;\n };\n}\n\nexport function WithBattleManager<TBase extends Constructor<PlayerWithMixins>>(\n Base: TBase\n): Constructor<IBattleManager> & TBase {\n return class extends Base implements IBattleManager {\n /**\n * Apply damage. Player will lose HP. the `attackerPlayer` parameter is the other player, the one who attacks.\n *\n * If you don't set the skill parameter, it will be a physical attack.\n * The attack formula is already defined but you can customize it in the server options\n *\n * ```ts\n * player.applyDamage(attackerPlayer) // returns { damage: number }\n * ```\n *\n * @title Apply Damage\n * @method player.applyDamage(attackerPlayer,skill)\n * @param {RpgPlayer} attackerPlayer The attacking player\n * @param {any} [skill]\n * @returns {object}\n * @memberof BattleManager\n * */\n applyDamage(\n attackerPlayer: RpgPlayer,\n skill?: any\n ): {\n damage: number;\n critical: boolean;\n elementVulnerable: boolean;\n guard: boolean;\n superGuard: boolean;\n } {\n const getParam = (player: RpgPlayer) => {\n const params = {};\n this.parameters.forEach((val, key) => {\n params[key] = player.param[key];\n });\n return {\n [ATK]: player.atk,\n [PDEF]: player.pdef,\n [SDEF]: player.sdef,\n ...params,\n };\n };\n let damage = 0,\n fn;\n let critical = false;\n let guard = false;\n let superGuard = false;\n let elementVulnerable = false;\n const paramA = getParam(attackerPlayer);\n const paramB = getParam(<any>this);\n console.log(paramA, paramB)\n if (skill) {\n fn = this.getFormulas(\"damageSkill\");\n if (!fn) {\n throw new Error(\"Skill Formulas not exists\");\n }\n damage = fn(paramA, paramB, skill);\n } else {\n fn = this.getFormulas(\"damagePhysic\");\n if (!fn) {\n throw new Error(\"Physic Formulas not exists\");\n }\n damage = fn(paramA, paramB);\n const coef = this.coefficientElements(attackerPlayer);\n if (coef >= 2) {\n elementVulnerable = true;\n }\n damage *= coef;\n fn = this.getFormulas(\"damageCritical\");\n if (fn) {\n let newDamage = fn(damage, paramA, paramB);\n if (damage != newDamage) {\n critical = true;\n }\n damage = newDamage;\n }\n }\n if (this.hasEffect(Effect.GUARD)) {\n fn = this.getFormulas(\"damageGuard\");\n if (fn) {\n let newDamage = fn(damage, paramA, paramB);\n if (damage != newDamage) {\n guard = true;\n }\n damage = newDamage;\n }\n }\n if (this.hasEffect(Effect.SUPER_GUARD)) {\n damage /= 4;\n superGuard = true;\n }\n this.hp -= damage;\n return {\n damage,\n critical,\n elementVulnerable,\n guard,\n superGuard,\n };\n }\n\n getFormulas(name: string) {\n const map = this.getCurrentMap(); \n return map.damageFormulas[name];\n }\n };\n}\n","import {\n Constructor,\n isArray,\n isInstanceOf,\n isString,\n RpgCommonPlayer,\n} from \"@rpgjs/common\";\nimport { SkillLog } from \"../logs\";\nimport { RpgPlayer } from \"./Player\";\nimport { Effect } from \"./EffectManager\";\n\n/**\n * Interface defining dependencies from other mixins that SkillManager needs\n */\ninterface SkillManagerDependencies {\n sp: number;\n skills(): any[];\n hasEffect(effect: string): boolean;\n databaseById(id: string): any;\n applyStates(player: RpgPlayer, skill: any): void;\n}\n\n/**\n * Interface defining what SkillManager adds to a class\n */\nexport interface IWithSkillManager {\n getSkill(skillClass: any | string): any;\n learnSkill(skillId: any | string): any;\n forgetSkill(skillId: any | string): any;\n useSkill(skillId: any | string, otherPlayer?: RpgPlayer | RpgPlayer[]): any;\n}\n\nexport function WithSkillManager<TBase extends Constructor<RpgCommonPlayer & SkillManagerDependencies>>(\n Base: TBase\n): Constructor<IWithSkillManager> & TBase {\n return class extends Base implements IWithSkillManager {\n private _getSkillIndex(skillClass: any | string) {\n return this.skills().findIndex((skill) => {\n if (isString(skill)) {\n return skill.id == skillClass;\n }\n if (isString(skillClass)) {\n return skillClass == (skill.id || skill);\n }\n return isInstanceOf(skill, skillClass);\n });\n }\n\n /**\n * Retrieves a learned skill. Returns null, if not found\n * ```ts\n * import Fire from 'your-database/skills/fire'\n *\n * player.getSkill(Fire)\n * ```\n *\n * @title Get Skill\n * @method player.getSkill(skillClass)\n * @param {SkillClass | string} skillClass or data id\n * @returns {instance of SkillClass | null}\n * @memberof SkillManager\n */\n getSkill(skillClass: any | string) {\n const index = this._getSkillIndex(skillClass);\n return this.skills()[index] ?? null;\n }\n\n /**\n * Learn a skill. Attributes the coefficient 1 to the parameter INT (intelligence) if cd is not present on the class.\n * \n * `onLearn()` method is called on the SkillClass\n * \n * ```ts\n * import Fire from 'your-database/skills/fire'\n * \n * player.learnSkill(Fire)\n * ```\n * \n * @title Learn Skill\n * @method player.learnSkill(skillClass)\n * @param {SkillClass | string} skillId or data id\n * @throws {SkillLog} alreadyLearned\n * If the player already knows the skill\n * ```\n {\n id: SKILL_ALREADY_LEARNED,\n msg: '...'\n }\n ```\n * @returns {instance of SkillClass}\n * @memberof SkillManager\n */\n learnSkill(skillId: any | string) {\n if (this.getSkill(skillId)) {\n throw SkillLog.alreadyLearned(skillId);\n }\n const instance = this.databaseById(skillId);\n this.skills().push(instance);\n this[\"execMethod\"](\"onLearn\", [this], instance);\n return instance;\n }\n\n /**\n * Forget a skill\n *\n * `onForget()` method is called on the SkillClass\n *\n * ```ts\n * import Fire from 'your-database/skills/fire'\n *\n * try {\n * player.forgetSkill(Fire)\n * }\n * catch (err) {\n * console.log(err)\n * }\n * ```\n *\n * @title Forget Skill\n * @method player.learnSkill(skillClass)\n * @param {SkillClass | string} skillId or data id\n * @throws {SkillLog} notLearned\n * If trying to forget a skill not learned\n * ```\n * {\n * id: SKILL_NOT_LEARNED,\n * msg: '...'\n * }\n * ```\n * @returns {instance of SkillClass}\n * @memberof SkillManager\n */\n forgetSkill(skillId: any | string) {\n if (isString(skillId)) skillId = this.databaseById(skillId);\n const index = this._getSkillIndex(skillId);\n if (index == -1) {\n throw SkillLog.notLearned(skillId);\n }\n const instance = this.skills()[index];\n this.skills().splice(index, 1);\n this[\"execMethod\"](\"onForget\", [this], instance);\n return instance;\n }\n\n /**\n * Using a skill\n *\n * `onUse()` method is called on the SkillClass\n *\n * If other players are indicated then damage will be done to these other players. The method `applyDamage()` will be executed\n *\n * ```ts\n * import Fire from 'your-database/skills/fire'\n *\n * try {\n * player.useSkill(Fire)\n * }\n * catch (err) {\n * console.log(err)\n * }\n * ```\n *\n * or\n *\n *\n * * ```ts\n * import Fire from 'your-database/skills/fire'\n *\n * try {\n * player.useSkill(Fire, otherPlayer)\n * }\n * catch (err) {\n * console.log(err)\n * }\n * ```\n *\n * @title Use Skill\n * @method player.useSkill(skillClass,otherPlayer)\n * @param {SkillClass | string} skillId or data id\n * @param {Array<RpgPlayer> | RpgPlayer} [otherPlayer]\n * @throws {SkillLog} restriction\n * If the player has the `Effect.CAN_NOT_SKILL` effect\n * ```\n * {\n * id: RESTRICTION_SKILL,\n * msg: '...'\n * }\n * ```\n * @throws {SkillLog} notLearned\n * If the player tries to use an unlearned skill\n * ```\n * {\n * id: SKILL_NOT_LEARNED,\n * msg: '...'\n * }\n * ```\n * @throws {SkillLog} notEnoughSp\n * If the player does not have enough SP to use the skill\n * ```\n * {\n * id: NOT_ENOUGH_SP,\n * msg: '...'\n * }\n * ```\n * @throws {SkillLog} chanceToUseFailed\n * If the chance to use the skill has failed (defined with the `hitRate` property)\n * ```\n * {\n * id: USE_CHANCE_SKILL_FAILED,\n * msg: '...'\n * }\n * ```\n *\n * `onUseFailed()` method is called on the SkillClass\n *\n * @returns {instance of SkillClass}\n * @memberof SkillManager\n * @todo\n */\n useSkill(skillId: any | string, otherPlayer?: RpgPlayer | RpgPlayer[]) {\n const skill = this.getSkill(skillId);\n if (this.hasEffect(Effect.CAN_NOT_SKILL)) {\n throw SkillLog.restriction(skillId);\n }\n if (!skill) {\n throw SkillLog.notLearned(skillId);\n }\n if (skill.spCost > this.sp) {\n throw SkillLog.notEnoughSp(skillId, skill.spCost, this.sp);\n }\n this.sp -= skill.spCost / (this.hasEffect(Effect.HALF_SP_COST) ? 2 : 1);\n const hitRate = skill.hitRate ?? 1;\n if (Math.random() > hitRate) {\n this[\"execMethod\"](\"onUseFailed\", [this, otherPlayer], skill);\n throw SkillLog.chanceToUseFailed(skillId);\n }\n if (otherPlayer) {\n let players: any = otherPlayer;\n if (!isArray(players)) {\n players = [otherPlayer];\n }\n for (let player of players) {\n this.applyStates(player, skill);\n player.applyDamage(this, skill);\n }\n }\n this[\"execMethod\"](\"onUse\", [this, otherPlayer], skill);\n return skill;\n }\n };\n}\n","import { Constructor, isString, RpgCommonPlayer } from \"@rpgjs/common\";\n\ntype ClassClass = any;\ntype ActorClass = any;\n\ninterface PlayerWithMixins extends RpgCommonPlayer {\n databaseById(id: string): any;\n addParameter(name: string, { start, end }: { start: number, end: number }): void;\n addItem(item: any): void;\n equip(item: any, equip: boolean): void;\n}\n\nexport interface IClassManager {\n setClass(_class: ClassClass | string): ClassClass;\n setActor(actorClass: ActorClass | string): ActorClass;\n}\n\nexport function WithClassManager<TBase extends Constructor<PlayerWithMixins>>(\n Base: TBase\n): Constructor<IClassManager> & TBase {\n return class extends Base implements IClassManager {\n\n /**\n * Assign a class to the player\n *\n * ```ts\n * import { Fighter } from 'my-database/classes/fighter'\n *\n * player.setClass(Fighter)\n * ```\n *\n * @title Set Class\n * @method player.setClass(ClassClass)\n * @param {ClassClass | string} class class or id\n * @returns {instance of ClassClass}\n * @memberof ClassManager\n * */\n setClass(_class: ClassClass | string) {\n if (isString(_class)) _class = this.databaseById(_class);\n const classInstance = new (_class as ClassClass)();\n this[\"execMethod\"](\"onSet\", [this], classInstance);\n return classInstance;\n }\n\n /**\n * Allows to give a set of already defined properties to the player (default equipment, or a list of skills to learn according to the level)\n *\n * ```ts\n * import { Hero } from 'my-database/classes/hero'\n *\n * player.setActor(Hero)\n * ```\n *\n * @title Set Actor\n * @method player.setActor(ActorClass)\n * @param {ActorClass | string} actorClass actor class or id\n * @returns {instance of ActorClass}\n * @memberof ClassManager\n * */\n setActor(actorClass: ActorClass | string) {\n if (isString(actorClass)) actorClass = this.databaseById(actorClass);\n const actor = new (actorClass as ActorClass)();\n [\"name\", \"initialLevel\", \"finalLevel\", \"expCurve\"].forEach((key) => {\n if (actor[key]) this[key] = actor[key];\n });\n for (let param in actor.parameters) {\n this.addParameter(param, actor.parameters[param]);\n }\n for (let item of actor.startingEquipment) {\n this.addItem(item);\n this.equip(item, true);\n }\n if (actor.class) this.setClass(actor.class);\n this[\"execMethod\"](\"onSet\", [this], actor);\n return actor;\n }\n };\n}\n","import { arrayUniq, RpgCommonPlayer } from \"@rpgjs/common\";\nimport { Constructor } from \"@rpgjs/common\";\nimport { RpgPlayer } from \"./Player\";\n\nexport function WithElementManager<TBase extends Constructor<RpgCommonPlayer>>(\n Base: TBase\n) {\n return class extends Base implements IWithElementManager {\n _elementsEfficiency: { rate: number; element: any }[] = [];\n\n /**\n * Recovers the player's elements defense on inventory. This list is generated from the `elementsDefense` property defined on the weapons or armors equipped.\n * If several items have the same element, only the highest rate will be taken into account.\n *\n * ```ts\n * import { Armor } from '@rpgjs/server'\n *\n * enum Elements {\n * Fire = 'fire'\n * }\n *\n * @Armor({\n * name: 'Shield',\n * elementsDefense: [{ rate: 1, element: Elements.Fire }]\n * })\n * class Shield {}\n *\n * @Armor({\n * name: 'FireShield',\n * elementsDefense: [{ rate: 0.5, element: Elements.Fire }]\n * })\n * class FireShield {}\n *\n * player.addItem(Shield)\n * player.addItem(FireShield)\n * player.equip(Shield)\n * player.equip(FireShield)\n *\n * console.log(player.elementsDefense) // [{ rate: 1, element: 'fire' }]\n * ```\n * @title Get Elements Defense\n * @prop {Array<{ rate: number, element: Element}>} player.elementsDefense\n * @readonly\n * @memberof ElementManager\n * */\n get elementsDefense(): { rate: number; element: any }[] {\n return this.getFeature(\"elementsDefense\", \"element\");\n }\n\n /**\n * Set or retrieves all the elements where the player is vulnerable or not.\n *\n * ```ts\n * import { Class } from '@rpgjs/server'\n *\n * enum Elements {\n * Fire = 'fire',\n * Ice = 'ice'\n * }\n *\n * @Class({\n * name: 'Fighter',\n * elementsEfficiency: [{ rate: 1, element: Elements.Fire }]\n * })\n * class Hero {}\n *\n * player.setClass(Hero)\n *\n * console.log(player.elementsEfficiency) // [{ rate: 1, element: 'fire' }]\n *\n * player.elementsEfficiency = [{ rate: 2, element: Elements.Ice }]\n *\n * console.log(player.elementsEfficiency) // [{ rate: 1, element: 'fire' }, { rate: 2, element: 'ice' }]\n * ```\n * @title Set/Get Elements Efficiency\n * @prop {Array<{ rate: number, element: Element}>} player.elementsEfficiency\n * @memberof ElementManager\n * */\n get elementsEfficiency(): { rate: number; element: any }[] {\n if (this._class) {\n return <any>[\n ...this._elementsEfficiency,\n ...(this._class()?.elementsEfficiency || []),\n ];\n }\n return this._elementsEfficiency;\n }\n\n set elementsEfficiency(val) {\n this._elementsEfficiency = val;\n }\n\n /**\n * Retrieves a array of elements assigned to the player and the elements of the weapons / armor equipped\n *\n * ```ts\n * console.log(player.elements)\n * ```\n * @title Get Elements\n * @prop {Array<Element>} player.elements\n * @readonly\n * @memberof ElementManager\n * */\n get elements(): {\n rate: number;\n element: string;\n }[] {\n let elements: any = [];\n for (let item of this.equipments()) {\n if (item.elements) {\n elements = [...elements, ...item.elements];\n }\n }\n return arrayUniq(elements);\n }\n\n coefficientElements(otherPlayer: RpgPlayer): number {\n const atkPlayerElements: any = otherPlayer.elements;\n const playerElements: any = this.elementsEfficiency;\n let coefficient = 1;\n\n for (let atkElement of atkPlayerElements) {\n const elementPlayer = playerElements.find(\n (el) => el.element == atkElement.element\n );\n const elementPlayerDef = this.elementsDefense.find(\n (el) => el.element == atkElement.element\n );\n if (!elementPlayer) continue;\n const fn = this.getFormulas(\"coefficientElements\");\n if (!fn) {\n return coefficient;\n }\n coefficient += fn(\n atkElement,\n elementPlayer,\n elementPlayerDef || { rate: 0 }\n );\n }\n return coefficient;\n }\n };\n}\n","import {\n combineMixins,\n Hooks,\n ModulesToken,\n RpgCommonPlayer,\n ShowAnimationParams,\n Constructor,\n ZoneOptions,\n} from \"@rpgjs/common\";\nimport { WithComponentManager, IComponentManager } from \"./ComponentManager\";\nimport { RpgMap } from \"../rooms/map\";\nimport { Context, inject } from \"@signe/di\";\nimport { IGuiManager, WithGuiManager } from \"./GuiManager\";\nimport { MockConnection } from \"@signe/room\";\nimport { IMoveManager, WithMoveManager } from \"./MoveManager\";\nimport { IGoldManager, WithGoldManager } from \"./GoldManager\";\nimport { IWithVariableManager, WithVariableManager } from \"./VariableManager\";\nimport { sync } from \"@signe/sync\";\nimport { signal } from \"@signe/reactive\";\nimport {\n IWithParameterManager,\n WithParameterManager,\n} from \"./ParameterManager\";\nimport { WithItemFixture } from \"./ItemFixture\";\nimport { WithStateManager } from \"./StateManager\";\nimport { WithItemManager } from \"./ItemManager\";\nimport { lastValueFrom } from \"rxjs\";\nimport { WithBattleManager } from \"./BattleManager\";\nimport { WithEffectManager } from \"./EffectManager\";\nimport { WithSkillManager, IWithSkillManager } from \"./SkillManager\";\nimport { AGI, AGI_CURVE, DEX, DEX_CURVE, INT, INT_CURVE, MAXHP, MAXHP_CURVE, MAXSP, MAXSP_CURVE, STR, STR_CURVE } from \"../presets\";\nimport { WithClassManager } from \"./ClassManager\";\nimport { WithElementManager } from \"./ElementManager\";\n\n\n/**\n * Combines multiple RpgCommonPlayer mixins into one\n * \n * @param mixins - Array of mixin functions that extend RpgCommonPlayer\n * @returns A single mixin function that applies all mixins\n */\nfunction combinePlayerMixins<T extends Constructor<RpgCommonPlayer>>(\n mixins: Array<(Base: T) => any>\n) {\n return (Base: T) =>\n mixins.reduce((ExtendedClass, mixin) => mixin(ExtendedClass), Base);\n}\n\nconst PlayerMixins = combinePlayerMixins([\n WithComponentManager,\n WithEffectManager,\n WithGuiManager,\n WithMoveManager,\n WithGoldManager,\n WithVariableManager,\n WithParameterManager,\n WithItemFixture,\n WithStateManager,\n WithItemManager,\n WithSkillManager,\n WithClassManager,\n WithBattleManager,\n WithElementManager,\n]);\n\n/**\n * RPG Player class with component management capabilities\n */\nexport class RpgPlayer extends PlayerMixins(RpgCommonPlayer) {\n map: RpgMap | null = null;\n context?: Context;\n conn: MockConnection | null = null;\n\n @sync(RpgPlayer) events = signal<RpgEvent[]>([]);\n\n constructor() {\n super();\n this.expCurve = {\n basis: 30,\n extra: 20,\n accelerationA: 30,\n accelerationB: 30\n }\n\n this.addParameter(MAXHP, MAXHP_CURVE)\n this.addParameter(MAXSP, MAXSP_CURVE)\n this.addParameter(STR, STR_CURVE)\n this.addParameter(INT, INT_CURVE)\n this.addParameter(DEX, DEX_CURVE)\n this.addParameter(AGI, AGI_CURVE)\n this.allRecovery()\n }\n\n async execMethod(method: string, methodData: any[] = [], target?: any) {\n let ret: any;\n if (target) {\n ret = await target[method](...methodData);\n }\n else {\n const hooks = inject<Hooks>(this.context as any, ModulesToken);\n ret = await lastValueFrom(hooks\n .callHooks(`server-player-${method}`, target ?? this, ...methodData));\n }\n this.syncChanges()\n return ret;\n }\n\n /**\n * Change the map for this player\n *\n * @param mapId - The ID of the map to change to\n * @param positions - Optional positions to place the player at\n * @returns A promise that resolves when the map change is complete\n *\n * @example\n * ```ts\n * // Change player to map \"town\" at position {x: 10, y: 20}\n * await player.changeMap(\"town\", {x: 10, y: 20});\n *\n * // Change player to map \"dungeon\" at a named position\n * await player.changeMap(\"dungeon\", \"entrance\");\n * ```\n */\n async changeMap(\n mapId: string,\n positions?: { x: number; y: number; z?: number } | string\n ): Promise<any | null | boolean> {\n this.emit(\"changeMap\", {\n mapId: 'map-' + mapId,\n positions,\n });\n return true;\n }\n\n async teleport(positions: { x: number; y: number }) {\n if (!this.map) return false;\n // For movable objects like players, the position represents the center\n this.map.physic.updateHitbox(this.id, positions.x, positions.y);\n }\n\n getCurrentMap<T extends RpgMap = RpgMap>(): T | null {\n return this.map as T | null;\n }\n\n emit(type: string, value?: any) {\n const map = this.getCurrentMap();\n if (!map || !this.conn) return;\n map.$send(this.conn, {\n type,\n value,\n });\n }\n\n showAnimation(params: ShowAnimationParams) {}\n\n /**\n * Run the change detection cycle. Normally, as soon as a hook is called in a class, the cycle is started. But you can start it manually\n * The method calls the `onChanges` method on events and synchronizes all map data with the client.\n\n * @title Run Sync Changes\n * @method player.syncChanges()\n * @returns {void}\n * @memberof Player\n */\n syncChanges() {\n this._eventChanges();\n }\n\n databaseById(id: string) {\n const map = this.getCurrentMap();\n if (!map) return;\n const data = map.database()[id];\n if (!data)\n throw new Error(\n `The ID=${id} data is not found in the database. Add the data in the property \"database\"`\n );\n return data;\n }\n\n private _eventChanges() {\n const map = this.getCurrentMap();\n if (!map) return;\n const { events } = map;\n const arrayEvents: any[] = [\n ...Object.values(this.events()),\n ...Object.values(events()),\n ];\n for (let event of arrayEvents) {\n if (event.onChanges) event.onChanges(this);\n }\n }\n\n attachShape(id: string, options: ZoneOptions) {\n const map = this.getCurrentMap();\n if (!map) return;\n\n const physic = map.physic;\n\n const zoneId = physic.addZone(id, {\n linkedTo: this.id,\n ...options,\n });\n\n physic.registerZoneEvents(\n id,\n (hitIds) => {\n hitIds.forEach((id) => {\n const event = map.getEvent<RpgEvent>(id);\n const player = map.getPlayer(id);\n const zone = physic.getZone(zoneId);\n if (event) {\n event.execMethod(\"onInShape\", [zone, this]);\n }\n if (player) this.execMethod(\"onDetectInShape\", [player, zone]);\n });\n },\n (hitIds) => {\n hitIds.forEach((id) => {\n const event = map.getEvent<RpgEvent>(id);\n const zone = physic.getZone(zoneId);\n const player = map.getPlayer(id);\n if (event) {\n event.execMethod(\"onOutShape\", [zone, this]);\n }\n if (player) this.execMethod(\"onDetectOutShape\", [player, zone]);\n });\n }\n );\n }\n\n broadcastEffect(id: string, params: any) {\n const map = this.getCurrentMap();\n if (!map) return;\n map.$broadcast({\n type: \"showEffect\",\n value: {\n id,\n params,\n object: this.id,\n },\n });\n }\n\n showHit(text: string) {\n this.broadcastEffect(\"hit\", {\n text,\n direction: this.direction(),\n });\n }\n}\n\nexport class RpgEvent extends RpgPlayer {\n override async execMethod(methodName: string, methodData: any[] = [], instance = this) {\n const hooks = inject<Hooks>(this.context as any, ModulesToken);\n await lastValueFrom(hooks\n .callHooks(`server-event-${methodName}`, instance, ...methodData));\n if (!instance[methodName]) {\n return;\n }\n const ret = instance[methodName](...methodData);\n return ret;\n }\n\n remove() {\n const map = this.getCurrentMap();\n if (!map) return;\n map.removeEvent(this.id);\n }\n}\n\nexport interface RpgPlayer\n extends RpgCommonPlayer,\n IComponentManager,\n IGuiManager,\n IMoveManager,\n IGoldManager,\n IWithVariableManager,\n IWithParameterManager,\n IWithSkillManager {}\n","import { Context } from \"@signe/di\";\n\nexport const context = new Context();\n","import { Action, MockConnection, Request, Room, RoomOnJoin } from \"@signe/room\";\nimport { Hooks, IceMovement, ModulesToken, ProjectileMovement, ProjectileType, RpgCommonMap, ZoneData } from \"@rpgjs/common\";\nimport { RpgPlayer, RpgEvent } from \"../Player/Player\";\nimport { generateShortUUID, sync, users } from \"@signe/sync\";\nimport { signal } from \"@signe/reactive\";\nimport { inject } from \"@signe/di\";\nimport { context } from \"../core/context\";;\nimport { finalize, lastValueFrom } from \"rxjs\";\nimport { Subject } from \"rxjs\";\nimport { BehaviorSubject } from \"rxjs\";\nimport { COEFFICIENT_ELEMENTS, DAMAGE_CRITICAL, DAMAGE_PHYSIC, DAMAGE_SKILL } from \"../presets\";\n\n/**\n * Interface representing hook methods available for map events\n * \n * These hooks are triggered at specific moments during the event lifecycle\n */\nexport interface EventHooks {\n /** Called when the event is first initialized */\n onInit?: () => void;\n /** Called when the event properties change */\n onChanges?: (player: RpgPlayer) => void;\n /** Called when a player performs an action on this event */\n onAction?: (player: RpgPlayer) => void;\n /** Called when a player touches this event */\n onPlayerTouch?: (player: RpgPlayer) => void;\n /** Called when a player enters a shape */\n onInShape?: (zone: ZoneData, player: RpgPlayer) => void;\n /** Called when a player exits a shape */\n onOutShape?: (zone: ZoneData, player: RpgPlayer) => void;\n\n onDetectInShape?: (player: RpgPlayer, shape: ZoneData) => void;\n onDetectOutShape?: (player: RpgPlayer, shape: ZoneData) => void;\n}\n\n/** Type for event class constructor */\nexport type EventConstructor = new () => RpgPlayer;\n\n/** Options for positioning and defining an event on the map */\nexport type EventPosOption = {\n /** ID of the event */\n id?: string,\n\n /** X position of the event on the map */\n x: number,\n /** Y position of the event on the map */\n y: number,\n /** \n * Event definition - can be either:\n * - A class that extends RpgPlayer\n * - An object with hook methods\n */\n event: EventConstructor | (EventHooks & Record<string, any>)\n}\n\n@Room({\n path: \"map-{id}\",\n throttleSync: 0\n})\nexport class RpgMap extends RpgCommonMap<RpgPlayer> implements RoomOnJoin {\n @users(RpgPlayer) players = signal({});\n @sync(RpgPlayer) events = signal({});\n database = signal({});\n maps: any[] = []\n dataIsReady$ = new BehaviorSubject<void>(undefined);\n globalConfig: any = {}\n damageFormulas: any = {}\n\n onJoin(player: RpgPlayer, conn: MockConnection) {\n player.map = this;\n player.context = context;\n player.conn = conn;\n this.physic.addMovableHitbox(player, player.x(), player.y(), player.hitbox().w, player.hitbox().h, {}, {\n enabled: true,\n friction: 0.8,\n minVelocity: 0.5\n });\n this.physic.registerMovementEvents(player.id, () => {\n player.animationName.set('walk')\n }, () => {\n player.animationName.set('stand')\n })\n this.dataIsReady$.pipe(\n finalize(() => {\n this.hooks\n .callHooks(\"server-player-onJoinMap\", player, this)\n .subscribe();\n })\n ).subscribe();\n }\n\n get hooks() {\n return inject<Hooks>(context, ModulesToken);\n }\n\n @Action('gui.interaction')\n guiInteraction(player: RpgPlayer, value) {\n //this.hooks.callHooks(\"server-player-guiInteraction\", player, value);\n player.syncChanges();\n }\n\n @Action('gui.exit')\n guiExit(player: RpgPlayer, { guiId, data }) {\n player.removeGui(guiId, data)\n }\n\n @Action('action')\n onAction(player: RpgPlayer, action: any) {\n const collisions = this.physic.getCollisions(player.id)\n const events: (RpgEvent | undefined)[] = collisions.map(id => this.getEvent(id))\n if (events.length > 0) {\n events.forEach(event => {\n event?.execMethod('onAction', [player, action]);\n });\n }\n player.execMethod('onInput', [action]);\n }\n\n @Action('move')\n onInput(player: RpgPlayer, input: any) {\n this.movePlayer(player, input.input)\n }\n\n @Request({\n path: \"/map/update\",\n method: \"POST\",\n })\n async updateMap(request: Request) {\n const map = await request.json()\n this.data.set(map)\n this.globalConfig = map.config\n this.damageFormulas = map.damageFormulas || {};\n this.damageFormulas = {\n damageSkill: DAMAGE_SKILL,\n damagePhysic: DAMAGE_PHYSIC,\n damageCritical: DAMAGE_CRITICAL,\n coefficientElements: COEFFICIENT_ELEMENTS,\n ...this.damageFormulas\n }\n await lastValueFrom(this.hooks.callHooks(\"server-maps-load\", this))\n\n map.events = map.events ?? []\n\n if (map.id) {\n const mapFound = this.maps.find(m => m.id === map.id)\n if (mapFound.events) {\n map.events = [\n ...mapFound.events,\n ...map.events\n ] \n }\n }\n\n await lastValueFrom(this.hooks.callHooks(\"server-map-onBeforeUpdate\", map, this))\n\n this.loadPhysic()\n\n for (let event of map.events ?? []) {\n await this.createDynamicEvent(event);\n }\n\n this.dataIsReady$.complete()\n // TODO: Update map\n }\n\n addInDatabase(id: string, data: any) {\n this.database()[id] = data;\n }\n\n /**\n * Creates a dynamic event on the map\n * \n * This method handles both class-based events and object-based events with hooks.\n * For class-based events, it creates a new instance of the class.\n * For object-based events, it creates a dynamic class that extends RpgPlayer and \n * implements the hook methods from the object.\n * \n * @param eventObj - The event position and definition\n * \n * @example\n * // Using a class-based event\n * class MyEvent extends RpgPlayer {\n * onInit() {\n * console.log('Event initialized');\n * }\n * }\n * \n * map.createDynamicEvent({\n * x: 100,\n * y: 200,\n * event: MyEvent\n * });\n * \n * // Using an object-based event\n * map.createDynamicEvent({\n * x: 100,\n * y: 200,\n * event: {\n * onInit() {\n * console.log('Event initialized');\n * },\n * onPlayerTouch(player) {\n * console.log('Player touched event');\n * }\n * }\n * });\n */\n async createDynamicEvent(eventObj: EventPosOption) {\n\n if (!eventObj.event) {\n // @ts-ignore\n eventObj = {\n event: eventObj \n }\n }\n\n const value = await lastValueFrom(this.hooks.callHooks(\"server-event-onBeforeCreated\", eventObj, this));\n value.filter(v => v).forEach(v => {\n eventObj = v\n })\n\n const { x, y, event } = eventObj;\n let id = eventObj.id || generateShortUUID()\n let eventInstance: RpgPlayer;\n\n if (this.events()[id]) {\n console.warn(`Event ${id} already exists on map`);\n return;\n }\n\n // Check if event is a constructor function (class)\n if (typeof event === 'function') {\n eventInstance = new event();\n } \n // Handle event as an object with hooks\n else {\n // Create a new instance extending RpgPlayer with the hooks from the event object\n class DynamicEvent extends RpgEvent {\n onInit?: () => void;\n onChanges?: (player: RpgPlayer) => void;\n onAction?: (player: RpgPlayer) => void;\n onPlayerTouch?: (player: RpgPlayer) => void;\n onInShape?: (zone: ZoneData, player: RpgPlayer) => void;\n onOutShape?: (zone: ZoneData, player: RpgPlayer) => void;\n onDetectInShape?: (player: RpgPlayer, shape: ZoneData) => void;\n onDetectOutShape?: (player: RpgPlayer, shape: ZoneData) => void;\n\n constructor() {\n super();\n \n // Copy hooks from the event object\n const hookObj = event as EventHooks;\n if (hookObj.onInit) this.onInit = hookObj.onInit.bind(this);\n if (hookObj.onChanges) this.onChanges = hookObj.onChanges.bind(this);\n if (hookObj.onAction) this.onAction = hookObj.onAction.bind(this);\n if (hookObj.onPlayerTouch) this.onPlayerTouch = hookObj.onPlayerTouch.bind(this);\n if (hookObj.onInShape) this.onInShape = hookObj.onInShape.bind(this);\n if (hookObj.onOutShape) this.onOutShape = hookObj.onOutShape.bind(this);\n if (hookObj.onDetectInShape) this.onDetectInShape = hookObj.onDetectInShape.bind(this);\n if (hookObj.onDetectOutShape) this.onDetectOutShape = hookObj.onDetectOutShape.bind(this);\n }\n }\n\n eventInstance = new DynamicEvent();\n }\n\n eventInstance.map = this;\n eventInstance.context = context;\n\n eventInstance.x.set(x);\n eventInstance.y.set(y);\n \n this.events()[id] = eventInstance;\n\n await eventInstance.execMethod('onInit')\n }\n\n getEvent<T extends RpgPlayer>(eventId: string): T | undefined {\n return this.events()[eventId] as T\n }\n\n getPlayer(playerId: string): RpgPlayer | undefined {\n return this.players()[playerId]\n }\n\n getEvents(): RpgEvent[] {\n return Object.values(this.events())\n }\n\n removeEvent(eventId: string) {\n delete this.events()[eventId]\n }\n\n showAnimation(animationName: string, object: RpgPlayer) {\n this.$broadcast({\n type: 'showEffect',\n value: {\n id: 'animation',\n params: {\n name: animationName\n },\n object: object.id\n }\n })\n }\n}\n\nexport interface RpgMap {\n $send: (conn: MockConnection, data: any) => void; \n $broadcast: (data: any) => void;\n}","import { inject } from \"@signe/di\";\nimport { MockConnection, Room } from \"@signe/room\";\nimport { Hooks, ModulesToken } from \"@rpgjs/common\";\nimport { context } from \"../core/context\";\nimport { users } from \"@signe/sync\";\nimport { signal } from \"@signe/reactive\";\nimport { RpgPlayer } from \"../Player/Player\";\n\n@Room({\n path: \"lobby-{id}\",\n})\nexport class LobbyRoom {\n @users(RpgPlayer) players = signal({});\n\n onJoin(player: RpgPlayer, conn: MockConnection) {\n player.map = this;\n player.context = context;\n player.conn = conn;\n const hooks = inject<Hooks>(context, ModulesToken);\n hooks\n .callHooks(\"server-player-onConnected\", player)\n .subscribe();\n }\n}\n","import { Server } from \"@signe/room\";\nimport { RpgMap } from \"./rooms/map\";\nimport { LobbyRoom } from \"./rooms/lobby\";\n\nexport class RpgServerEngine extends Server {\n rooms = [RpgMap, LobbyRoom];\n}\n","import { Context, inject as injector } from \"@signe/di\";\n\nexport let context: Context | null = null\n\nexport function inject<T>(service: (new (...args: any[]) => T) | string, _context?: Context): T {\n const c = _context ?? context\n if (!c) throw new Error(\"Context is not set. use setInject() to set the context\");\n return injector(c, service);\n}\n\nexport function setInject(_context: Context) {\n context = _context;\n}\n\nexport function clearInject() {\n context = null\n}","import { injector, Providers } from \"@signe/di\";\nimport { RpgServerEngine } from \"../RpgServerEngine\";\nimport { context } from \"./context\";\nimport { setInject } from \"./inject\";\n\ninterface SetupOptions {\n providers: Providers;\n}\n\nexport function createServer(options: SetupOptions): any {\n return class extends RpgServerEngine {\n config = options;\n \n async onStart() {\n setInject(context);\n await injector(context, options.providers);\n return super.onStart();\n }\n };\n}","import { findModules, provideModules } from \"@rpgjs/common\";\nimport { FactoryProvider } from \"@signe/di\";\nimport { RpgServerEngine } from \"./RpgServerEngine\";\nimport { RpgMap } from \"./rooms/map\";\n\nexport function provideServerModules(modules: any[]): FactoryProvider {\n return provideModules(modules, \"server\", (modules, context) => {\n const mainModuleServer = findModules(context, 'Server')\n modules = [...mainModuleServer, ...modules]\n modules = modules.map((module) => {\n if ('server' in module) {\n module = module.server as any;\n }\n if (module.maps && Array.isArray(module.maps)) {\n const maps = [...module.maps];\n module = {\n ...module,\n maps: {\n load: (engine: RpgMap) => {\n maps.forEach((map) => {\n engine.maps.push(map);\n });\n },\n }\n };\n }\n return module;\n })\n return modules\n });\n}\n "],"names":["__defProp","__name","extendStatics","__extends","__awaiter","__generator","__values","__read","__spreadArray","__await","__asyncGenerator","__asyncValues","isFunction","createErrorClass","UnsubscriptionError","arrRemove","Subscription","execFinalizer","EMPTY_SUBSCRIPTION","isSubscription","config","timeoutProvider","reportUnhandledError","noop","errorContext","Subscriber","EMPTY_OBSERVER","SafeSubscriber","ConsumerObserver","handleUnhandledError","defaultErrorHandler","observable","identity","pipeFromArray","Observable","isSubscriber","getPromiseCtor","Symbol_observable","isObserver","hasLift","operate","createOperatorSubscriber","OperatorSubscriber","ObjectUnsubscribedError","Subject","AnonymousSubject","BehaviorSubject","isScheduler","last","popResultSelector","popScheduler","isArrayLike","isPromise","isInteropObservable","isAsyncIterable","createInvalidObservableTypeError","getSymbolIterator","iterator","isIterable","Symbol_iterator","readableStreamLikeToAsyncGenerator","isReadableStreamLike","innerFrom","fromInteropObservable","fromArrayLike","fromPromise","fromAsyncIterable","fromIterable","fromReadableStreamLike","process","executeSchedule","observeOn","subscribeOn","scheduleObservable","schedulePromise","scheduleArray","scheduleIterable","scheduleAsyncIterable","scheduleReadableStreamLike","scheduled","from","map","isArray","callOrApply","mapOneOrManyArgs","getPrototypeOf","objectProto","getKeys","argsArgArrayOrObject","isPOJO","createObject","combineLatest","combineLatestInit","maybeSchedule","filter","finalize","ArraySubject","isArraySubject","ObjectSubject","BehaviorSubject2","isObjectSubject","getGlobalReactiveStore","reactiveStore","trackDependency","signal","BehaviorSubject3","isSignal","isComputed","computed","effect","isClass","isInstanceOfClass","generateShortUUID","DELETE_TOKEN","createSyncClass","createStatesSnapshot","setMetadata","type","sync","id","users","persist","connected","load","loadFromObject","loadFromPaths","loadValue","isSignal2","getByPath","dset2","generateShortUUID2","z2","__defProp$3","__defProp$2","__defProp$1","__decorateClass$1","__decorateClass","inject","Frequency","Speed","Matter","Effect","context","Request","injector","modules"],"mappings":"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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AA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AU,OAAO,SAAS;AAC1B,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,SAAS,CAAC,MAAM,GAAG,SAAS,SAAS,EAAE;AAC7C,UAAU,IAAI,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC;AACrD,cAAc,QAAQ,GAAG,EAAE;;AAE3B,UAAU,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACrD,cAAc,IAAI,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;AAClC,cAAc,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAC7D;;AAEA,UAAU,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;AACxC,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG,GAAG;;;AAGN,SAAS;AACT;AACA,SAAS,SAAS,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE;;AAExD;AACA;AAC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AU,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC;AAC3E,iBAAiB,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;;AAE7D,UAAU,IAAI,MAAM,GAAG,OAAO,GAAG,OAAO;AACxC,UAAU,IAAI,MAAM,GAAG,OAAO,GAAG,OAAO;;AAExC,UAAU,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAC7D,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG,GAAG;;;AAGN,SAAS;AACT;AACA,SAAS,SAAS,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE;;AAExD;AACA;AACA;AACA;AACA;;AAEA,EAAE,IAAI,IAAI,GAAG,EAAE;;AAEf,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;;AAEvB,EAAE,IAAI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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG,GAAG;;;AAGN,SAAS;AACT;AACA,SAAS,SAAS,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE;;AAExD;AACA;AACA;AACA;AACA;;AAEA,E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ACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG,GAAG;;;AAGN,SAAS;AACT;AACA,SAAS,SAAS,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE,IAAI,MAAM,GAAG,EAAE;;AAEjB,EAAE,MAAM,CAAC,OAAO,GAAG,MAAM;;AAEzB,EAAE,IAAI,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC;AACrC,EAAE,IAAI,MAAM,GAAG,mBAAmB,CAAC,EAAE,CAAC;AACtC,EAAE,IAAI,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC;;AAErC,EAAE,CAAC,WAAW;;AAEd,MAAM,MAAM,CAAC,cAAc,GAAG,IAAI,GAAG,EAAE;AACvC,MAAM,MAAM,CAAC,mBAAmB,GAAG,IAAI,GAAG,EAAE;AAC5C,MAAM,MAAM,CAAC,iBAAiB,GAAG,GAAG;AACpC,MAAM,MAAM,CAAC,oBAAoB,GAAG,CAAC;AACrC,MAAM,MAAM,CAAC,oBAAoB,GAAG,GAAG;AACvC,MAAM,MAAM,CAAC,oBAAoB,GAAG,GAAG;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,CAAC,MAAM,GAAG,SAAS,OAAO,EAAE;AACxC,UAAU,IAAI,QAAQ,GAAG;AACzB,cAAc,KAAK,EAAE,IAAI,GAAG,EAAE;AAC9B,cAAc,UAAU,EAAE,IAAI;AAC9B,cAAc,mBAAmB,EAAE,IAAI;AACvC,cAAc,kBAAkB,EAAE,IAAI;AACtC,cAAc,iBAAiB,EAAE,EAAE;AACnC,cAAc,qBAAqB,EAAE,GAAG;AACxC,cAAc,cAAc,EAAE,IAAI;AAClC,cAAc,UAAU,EAAE,CAAC;AAC3B,cAAc,YAAY,EAAE,IAAI;AAChC,cAAc,UAAU,EAAE,IAAI;AAC9B,cAAc,YAAY,EAAE,IAAI,GAAG,EAAE;AACrC,cAAc,mBAAmB,EAAE,CAAC;AACpC,cAAc,OAAO,EAAE;AACvB,WAAW;;AAEX,UAAU,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;;AAEvD;AACA,UAAU,MAAM,CAAC,GAAG,GAAG,CAAC;;AAExB,UAAU,OAAO,MAAM;AACvB,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,CAAC,GAAG,GAAG,SAAS,MAAM,EAAE,MAAM,EAAE;AAC5C;AACA,UAAU,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,mBAAmB;;AAExD,UAAU,CAAC,SAAS,OAAO,CAAC,IAAI,CAAC;AACjC,cAAc,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;;AAE1E,cAAc,IAAI,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE;AAC1C,kBAAkB,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;AACnD;AACA,WAAW,GAAG;;AAEd,UAAU,OAAO,MAAM;AACvB,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,CAAC,IAAI,GAAG,SAAS,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;AACnD,UAAU,IAAI,aAAa,GAAG,MAAM,CAAC,GAAG,EAAE;AAC1C,cAAc,WAAW,GAAG,MAAM,CAAC,KAAK;AACxC,cAAc,WAAW,GAAG,CAAC;;AAE7B;AACA,UAAU,IAAI,UAAU,GAAG,IAAI,GAAG,MAAM,CAAC,YAAY;;AAErD;AACA,UAAU,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE;AACxH;AACA,cAAc,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,mBAAmB;AAC1E;;AAEA,UAAU,IAAI,MAAM,CAAC,mBAAmB,EAAE;AAC1C;AACA,cAAc,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AACvD,cAAc,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC;;AAEtG;AACA,cAAc,IAAI,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;;AAE/E;AACA,cAAc,IAAI,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC,KAAK;AACrE,kBAAkB,kBAAkB,CAAC,MAAM,GAAG,MAAM,CAAC,oBAAoB;AACzE,kBAAkB,kBAAkB,CAAC,MAAM,GAAG,MAAM,CAAC;AACrD,eAAe;;AAEf;AACA,cAAc,IAAI,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAC;AAChE,cAAc,UAAU,GAAG,kBAAkB,IAAI,UAAU;AAC3D;;AAEA,UAAU,IAAI,MAAM,CAAC,kBAAkB,EAAE;AACzC;AACA,cAAc,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;AAC/D;;AAEA;AACA,UAAU,MAAM,CAAC,UAAU,GAAG,UAAU;AACxC,UAAU,MAAM,CAAC,YAAY,GAAG,IAAI;;AAEpC;AACA,UAAU,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU;;AAEhD;AACA,UAAU,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK;AAC1C,cAAc,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,WAAW,GAAG,MAAM,CAAC;AAC7E,WAAW;;AAEX;AACA,UAAU,MAAM,CAAC,mBAAmB,GAAG,CAAC;;AAExC;AACA,UAAU,IAAI,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,WAAW,CAAC;;AAE5F;AACA,UAAU,IAAI,KAAK,GAAG;AACtB,cAAc,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC;AACvC,WAAW;;AAEX;AACA,UAAU,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC;AACrD,UAAU,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC;;AAE/C,UAAU,IAAI,eAAe,GAAG,MAAM,CAAC,GAAG,EAAE;;AAE5C;AACA,UAAU,OAAO,WAAW,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,IAAI,WAAW,GAAG,MAAM,CAAC,iBAAiB,EAAE;AACjG;AACA,cAAc,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC;AAC3D,cAAc,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;AAChD,cAAc,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC;;AAE1D;AACA,cAAc,MAAM,CAAC,UAAU,IAAI,WAAW;AAC9C,cAAc,WAAW,IAAI,CAAC;;AAE9B;AACA,cAAc,IAAI,gBAAgB,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,aAAa;AACjE,kBAAkB,kBAAkB,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,eAAe;AACrE,kBAAkB,mBAAmB,GAAG,gBAAgB,GAAG,MAAM,CAAC,oBAAoB,GAAG,kBAAkB,GAAG,WAAW;;AAEzH;AACA,cAAc,IAAI,WAAW,IAAI,UAAU,IAAI,mBAAmB,GAAG,MAAM,CAAC,YAAY,EAAE;AAC1F,kBAAkB,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,GAAG,WAAW,IAAI,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACpI,kBAAkB;AAClB;AACA;;AAEA;AACA,UAAU,MAAM,CAAC,MAAM,CAAC,mBAAmB,GAAG,WAAW;;AAEzD;AACA,UAAU,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC;;AAEpD;AACA,UAAU,IAAI,MAAM,CAAC,iBAAiB,CAAC,MAAM,IAAI,GAAG,EAAE;AACtD,cAAc,IAAI,MAAM,CAAC,mBAAmB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,UAAU,EAAE;AAC1G,kBAAkB,MAAM,CAAC,QAAQ,CAAC,4DAA4D,CAAC;AAC/F,eAAe,MAAM,IAAI,MAAM,CAAC,mBAAmB,EAAE;AACrD,kBAAkB,MAAM,CAAC,QAAQ,CAAC,8DAA8D,CAAC;AACjG;;AAEA,cAAc,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,WAAW,EAAE;AACzD,kBAAkB,MAAM,CAAC,QAAQ,CAAC,2DAA2D,CAAC;AAC9F;;AAEA,cAAc,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE;AACtD,kBAAkB,MAAM,CAAC,QAAQ,CAAC,4EAA4E,CAAC;AAC/G;;AAEA,cAAc,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE;AACpC,kBAAkB,MAAM,CAAC,QAAQ,CAAC,mEAAmE,CAAC;AACtG;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,CAAC,IAAI,GAAG,SAAS,MAAM,EAAE;AACrC,UAAU,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACzC,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,CAAC,YAAY,GAAG,SAAS,MAAM,EAAE,QAAQ,EAAE;AACvD,UAAU,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,qBAAqB,EAAE;AAC7E,cAAc,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC;AAC5E,WAAW,MAAM;AACjB,cAAc,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC;AACrG;;AAEA,UAAU,OAAO,MAAM,CAAC,cAAc;AACtC,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,CAAC,gBAAgB,GAAG,SAAS,MAAM,EAAE;AACjD,UAAU,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,oBAAoB,EAAE;AAC5E,cAAc,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,cAAc,CAAC;AAChE,WAAW,MAAM;AACjB,cAAc,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC;AACpG;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAI,KAAK,GAAG,SAAS,MAAM,EAAE;AACnC,UAAU,IAAI,MAAM,GAAG,CAAC;AACxB,cAAc,YAAY,GAAG,MAAM,CAAC,MAAM;;AAE1C,UAAU,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE;AACpD,cAAc,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;AACjC;;AAEA,UAAU,OAAO,CAAC,MAAM,GAAG,YAAY,KAAK,CAAC;AAC7C,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG,GAAG;;;AAGN,SAAS;AACT;AACA,SAAS,SAAS,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE;;AAExD;AACA;AACA;AACA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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,61]}
|