@colyseus/playground 0.15.12 → 0.16.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "files": {
3
- "main.css": "./static/css/main.f2b7d123.css",
4
- "main.js": "./static/js/main.f4b3bbcd.js",
5
- "static/js/787.35b26c6d.chunk.js": "./static/js/787.35b26c6d.chunk.js",
3
+ "main.css": "./static/css/main.320ee153.css",
4
+ "main.js": "./static/js/main.d0de7477.js",
5
+ "static/js/453.06401121.chunk.js": "./static/js/453.06401121.chunk.js",
6
6
  "static/media/jsoneditor-icons.svg": "./static/media/jsoneditor-icons.15f2789dd231f36d43a4.svg",
7
7
  "static/media/favicon.svg": "./static/media/favicon.cad7290b5f48941db9f836712c091ae7.svg",
8
8
  "index.html": "./index.html",
9
- "main.f2b7d123.css.map": "./static/css/main.f2b7d123.css.map",
10
- "main.f4b3bbcd.js.map": "./static/js/main.f4b3bbcd.js.map",
11
- "787.35b26c6d.chunk.js.map": "./static/js/787.35b26c6d.chunk.js.map"
9
+ "main.320ee153.css.map": "./static/css/main.320ee153.css.map",
10
+ "main.d0de7477.js.map": "./static/js/main.d0de7477.js.map",
11
+ "453.06401121.chunk.js.map": "./static/js/453.06401121.chunk.js.map"
12
12
  },
13
13
  "entrypoints": [
14
- "static/css/main.f2b7d123.css",
15
- "static/js/main.f4b3bbcd.js"
14
+ "static/css/main.320ee153.css",
15
+ "static/js/main.d0de7477.js"
16
16
  ]
17
17
  }
@@ -1 +1,2 @@
1
- export declare const allRoomNames: string[];
1
+ export declare let allRoomNames: string[];
2
+ export declare function applyMonkeyPatch(): void;
@@ -18,25 +18,37 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var colyseus_ext_exports = {};
20
20
  __export(colyseus_ext_exports, {
21
- allRoomNames: () => allRoomNames
21
+ allRoomNames: () => allRoomNames,
22
+ applyMonkeyPatch: () => applyMonkeyPatch
22
23
  });
23
24
  module.exports = __toCommonJS(colyseus_ext_exports);
24
25
  var import_core = require("@colyseus/core");
25
- const originalDefine = import_core.Server.prototype.define;
26
- const allRoomNames = [];
27
- const original_onJoin = import_core.Room.prototype._onJoin;
28
- import_core.Room.prototype._onJoin = async function(client, req) {
29
- const result = await original_onJoin.apply(this, arguments);
30
- if (client.state === import_core.ClientState.JOINING) {
31
- client.send("__playground_message_types", Object.keys(this["onMessageHandlers"]));
32
- }
33
- return result;
34
- };
26
+ let allRoomNames = [];
27
+ const define = import_core.Server.prototype.define;
35
28
  import_core.Server.prototype.define = function(name, handler, options) {
36
29
  allRoomNames.push(name);
37
- return originalDefine.call(this, name, handler, options);
30
+ return define.call(this, name, handler, options);
31
+ };
32
+ const removeRoomType = import_core.Server.prototype.removeRoomType;
33
+ import_core.Server.prototype.removeRoomType = function(name) {
34
+ const removeIndex = allRoomNames.findIndex((roomName) => roomName === name);
35
+ if (removeIndex !== -1) {
36
+ (0, import_core.spliceOne)(allRoomNames, removeIndex);
37
+ }
38
+ return removeRoomType.call(this, name);
38
39
  };
40
+ function applyMonkeyPatch() {
41
+ const _onJoin = import_core.Room.prototype._onJoin;
42
+ import_core.Room.prototype._onJoin = async function(client, req) {
43
+ const result = await _onJoin.apply(this, [client, req]);
44
+ if (client.state === import_core.ClientState.JOINING) {
45
+ client.send("__playground_message_types", Object.keys(this["onMessageHandlers"]));
46
+ }
47
+ return result;
48
+ };
49
+ }
39
50
  // Annotate the CommonJS export names for ESM import in node:
40
51
  0 && (module.exports = {
41
- allRoomNames
52
+ allRoomNames,
53
+ applyMonkeyPatch
42
54
  });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src-backend/colyseus.ext.ts"],
4
- "sourcesContent": ["import http from \"http\";\nimport { Server, Room, Client, ClientState } from '@colyseus/core';\n\nconst originalDefine = Server.prototype.define;\nexport const allRoomNames: string[] = [];\n\nconst original_onJoin = Room.prototype._onJoin;\n\nRoom.prototype._onJoin = async function(client: Client, req?: http.IncomingMessage) {\n const result = await original_onJoin.apply(this, arguments);\n\n if (client.state === ClientState.JOINING) {\n client.send(\"__playground_message_types\", Object.keys(this['onMessageHandlers']));\n }\n\n return result;\n}\n\n// @ts-ignore\nServer.prototype.define = function(name, handler, options) {\n allRoomNames.push(name);\n return originalDefine.call(this, name, handler, options);\n};"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,kBAAkD;AAElD,MAAM,iBAAiB,mBAAO,UAAU;AACjC,MAAM,eAAyB,CAAC;AAEvC,MAAM,kBAAkB,iBAAK,UAAU;AAEvC,iBAAK,UAAU,UAAU,eAAe,QAAgB,KAA4B;AAClF,QAAM,SAAS,MAAM,gBAAgB,MAAM,MAAM,SAAS;AAE1D,MAAI,OAAO,UAAU,wBAAY,SAAS;AACxC,WAAO,KAAK,8BAA8B,OAAO,KAAK,KAAK,mBAAmB,CAAC,CAAC;AAAA,EAClF;AAEA,SAAO;AACT;AAGA,mBAAO,UAAU,SAAS,SAAS,MAAM,SAAS,SAAS;AACvD,eAAa,KAAK,IAAI;AACtB,SAAO,eAAe,KAAK,MAAM,MAAM,SAAS,OAAO;AAC3D;",
4
+ "sourcesContent": ["import http from \"http\";\nimport { Server, Room, Client, ClientState, ClientPrivate, spliceOne } from '@colyseus/core';\n\nexport let allRoomNames: string[] = [];\n\nconst define = Server.prototype.define;\n// @ts-ignore\nServer.prototype.define = function(name, handler, options) {\n allRoomNames.push(name);\n return define.call(this, name, handler, options);\n};\n\nconst removeRoomType = Server.prototype.removeRoomType;\nServer.prototype.removeRoomType = function(name) {\n const removeIndex = allRoomNames.findIndex((roomName) => roomName === name);\n if (removeIndex !== -1) {\n spliceOne(allRoomNames, removeIndex);\n }\n return removeRoomType.call(this, name);\n};\n\nexport function applyMonkeyPatch() {\n const _onJoin = Room.prototype._onJoin;\n Room.prototype._onJoin = async function (client: Client & ClientPrivate, req?: http.IncomingMessage) {\n const result = await _onJoin.apply(this, [client, req]);\n\n if (client.state === ClientState.JOINING) {\n client.send(\"__playground_message_types\", Object.keys(this['onMessageHandlers']));\n }\n\n return result;\n }\n}"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,kBAA4E;AAErE,IAAI,eAAyB,CAAC;AAErC,MAAM,SAAS,mBAAO,UAAU;AAEhC,mBAAO,UAAU,SAAS,SAAS,MAAM,SAAS,SAAS;AACvD,eAAa,KAAK,IAAI;AACtB,SAAO,OAAO,KAAK,MAAM,MAAM,SAAS,OAAO;AACnD;AAEA,MAAM,iBAAiB,mBAAO,UAAU;AACxC,mBAAO,UAAU,iBAAiB,SAAS,MAAM;AAC7C,QAAM,cAAc,aAAa,UAAU,CAAC,aAAa,aAAa,IAAI;AAC1E,MAAI,gBAAgB,IAAI;AACpB,+BAAU,cAAc,WAAW;AAAA,EACvC;AACA,SAAO,eAAe,KAAK,MAAM,IAAI;AACzC;AAEO,SAAS,mBAAmB;AACjC,QAAM,UAAU,iBAAK,UAAU;AAC/B,mBAAK,UAAU,UAAU,eAAgB,QAAgC,KAA4B;AACnG,UAAM,SAAS,MAAM,QAAQ,MAAM,MAAM,CAAC,QAAQ,GAAG,CAAC;AAEtD,QAAI,OAAO,UAAU,wBAAY,SAAS;AACxC,aAAO,KAAK,8BAA8B,OAAO,KAAK,KAAK,mBAAmB,CAAC,CAAC;AAAA,IAClF;AAEA,WAAO;AAAA,EACT;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,18 +1,29 @@
1
- import { Server, Room, ClientState } from "@colyseus/core";
2
- const originalDefine = Server.prototype.define;
3
- const allRoomNames = [];
4
- const original_onJoin = Room.prototype._onJoin;
5
- Room.prototype._onJoin = async function(client, req) {
6
- const result = await original_onJoin.apply(this, arguments);
7
- if (client.state === ClientState.JOINING) {
8
- client.send("__playground_message_types", Object.keys(this["onMessageHandlers"]));
9
- }
10
- return result;
11
- };
1
+ import { Server, Room, ClientState, spliceOne } from "@colyseus/core";
2
+ let allRoomNames = [];
3
+ const define = Server.prototype.define;
12
4
  Server.prototype.define = function(name, handler, options) {
13
5
  allRoomNames.push(name);
14
- return originalDefine.call(this, name, handler, options);
6
+ return define.call(this, name, handler, options);
7
+ };
8
+ const removeRoomType = Server.prototype.removeRoomType;
9
+ Server.prototype.removeRoomType = function(name) {
10
+ const removeIndex = allRoomNames.findIndex((roomName) => roomName === name);
11
+ if (removeIndex !== -1) {
12
+ spliceOne(allRoomNames, removeIndex);
13
+ }
14
+ return removeRoomType.call(this, name);
15
15
  };
16
+ function applyMonkeyPatch() {
17
+ const _onJoin = Room.prototype._onJoin;
18
+ Room.prototype._onJoin = async function(client, req) {
19
+ const result = await _onJoin.apply(this, [client, req]);
20
+ if (client.state === ClientState.JOINING) {
21
+ client.send("__playground_message_types", Object.keys(this["onMessageHandlers"]));
22
+ }
23
+ return result;
24
+ };
25
+ }
16
26
  export {
17
- allRoomNames
27
+ allRoomNames,
28
+ applyMonkeyPatch
18
29
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src-backend/colyseus.ext.ts"],
4
- "sourcesContent": ["import http from \"http\";\nimport { Server, Room, Client, ClientState } from '@colyseus/core';\n\nconst originalDefine = Server.prototype.define;\nexport const allRoomNames: string[] = [];\n\nconst original_onJoin = Room.prototype._onJoin;\n\nRoom.prototype._onJoin = async function(client: Client, req?: http.IncomingMessage) {\n const result = await original_onJoin.apply(this, arguments);\n\n if (client.state === ClientState.JOINING) {\n client.send(\"__playground_message_types\", Object.keys(this['onMessageHandlers']));\n }\n\n return result;\n}\n\n// @ts-ignore\nServer.prototype.define = function(name, handler, options) {\n allRoomNames.push(name);\n return originalDefine.call(this, name, handler, options);\n};"],
5
- "mappings": "AACA,SAAS,QAAQ,MAAc,mBAAmB;AAElD,MAAM,iBAAiB,OAAO,UAAU;AACjC,MAAM,eAAyB,CAAC;AAEvC,MAAM,kBAAkB,KAAK,UAAU;AAEvC,KAAK,UAAU,UAAU,eAAe,QAAgB,KAA4B;AAClF,QAAM,SAAS,MAAM,gBAAgB,MAAM,MAAM,SAAS;AAE1D,MAAI,OAAO,UAAU,YAAY,SAAS;AACxC,WAAO,KAAK,8BAA8B,OAAO,KAAK,KAAK,mBAAmB,CAAC,CAAC;AAAA,EAClF;AAEA,SAAO;AACT;AAGA,OAAO,UAAU,SAAS,SAAS,MAAM,SAAS,SAAS;AACvD,eAAa,KAAK,IAAI;AACtB,SAAO,eAAe,KAAK,MAAM,MAAM,SAAS,OAAO;AAC3D;",
4
+ "sourcesContent": ["import http from \"http\";\nimport { Server, Room, Client, ClientState, ClientPrivate, spliceOne } from '@colyseus/core';\n\nexport let allRoomNames: string[] = [];\n\nconst define = Server.prototype.define;\n// @ts-ignore\nServer.prototype.define = function(name, handler, options) {\n allRoomNames.push(name);\n return define.call(this, name, handler, options);\n};\n\nconst removeRoomType = Server.prototype.removeRoomType;\nServer.prototype.removeRoomType = function(name) {\n const removeIndex = allRoomNames.findIndex((roomName) => roomName === name);\n if (removeIndex !== -1) {\n spliceOne(allRoomNames, removeIndex);\n }\n return removeRoomType.call(this, name);\n};\n\nexport function applyMonkeyPatch() {\n const _onJoin = Room.prototype._onJoin;\n Room.prototype._onJoin = async function (client: Client & ClientPrivate, req?: http.IncomingMessage) {\n const result = await _onJoin.apply(this, [client, req]);\n\n if (client.state === ClientState.JOINING) {\n client.send(\"__playground_message_types\", Object.keys(this['onMessageHandlers']));\n }\n\n return result;\n }\n}"],
5
+ "mappings": "AACA,SAAS,QAAQ,MAAc,aAA4B,iBAAiB;AAErE,IAAI,eAAyB,CAAC;AAErC,MAAM,SAAS,OAAO,UAAU;AAEhC,OAAO,UAAU,SAAS,SAAS,MAAM,SAAS,SAAS;AACvD,eAAa,KAAK,IAAI;AACtB,SAAO,OAAO,KAAK,MAAM,MAAM,SAAS,OAAO;AACnD;AAEA,MAAM,iBAAiB,OAAO,UAAU;AACxC,OAAO,UAAU,iBAAiB,SAAS,MAAM;AAC7C,QAAM,cAAc,aAAa,UAAU,CAAC,aAAa,aAAa,IAAI;AAC1E,MAAI,gBAAgB,IAAI;AACpB,cAAU,cAAc,WAAW;AAAA,EACvC;AACA,SAAO,eAAe,KAAK,MAAM,IAAI;AACzC;AAEO,SAAS,mBAAmB;AACjC,QAAM,UAAU,KAAK,UAAU;AAC/B,OAAK,UAAU,UAAU,eAAgB,QAAgC,KAA4B;AACnG,UAAM,SAAS,MAAM,QAAQ,MAAM,MAAM,CAAC,QAAQ,GAAG,CAAC;AAEtD,QAAI,OAAO,UAAU,YAAY,SAAS;AACxC,aAAO,KAAK,8BAA8B,OAAO,KAAK,KAAK,mBAAmB,CAAC,CAAC;AAAA,IAClF;AAEA,WAAO;AAAA,EACT;AACF;",
6
6
  "names": []
7
7
  }
package/build/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
- export declare const playground: import("express-serve-static-core").Router;
1
+ import { Router } from "express";
2
2
  export type AuthConfig = {
3
3
  oauth: string[];
4
4
  register: boolean;
5
5
  anonymous: boolean;
6
6
  };
7
+ export declare function playground(): Router;
package/build/index.html CHANGED
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="./favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><link rel="apple-touch-icon" href="./logo192.png"/><link rel="manifest" href="./manifest.json" crossorigin="use-credentials"/><title>[Colyseus Playground]</title><script defer="defer" src="./static/js/main.f4b3bbcd.js"></script><link href="./static/css/main.f2b7d123.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="./favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><link rel="apple-touch-icon" href="./logo192.png"/><link rel="manifest" href="./manifest.json" crossorigin="use-credentials"/><title>[Colyseus Playground]</title><script defer="defer" src="./static/js/main.d0de7477.js"></script><link href="./static/css/main.320ee153.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
package/build/index.js CHANGED
@@ -36,31 +36,35 @@ var import_express = __toESM(require("express"));
36
36
  var import_auth = require("@colyseus/auth");
37
37
  var import_core = require("@colyseus/core");
38
38
  var import_colyseus = require("./colyseus.ext");
39
- const playground = import_express.default.Router();
40
- playground.use("/", import_express.default.static(import_path.default.resolve(__dirname, "..", "build")));
41
- playground.get("/rooms", async (req, res) => {
42
- const rooms = await import_core.matchMaker.driver.find({});
43
- const roomsByType = {};
44
- const roomsById = {};
45
- rooms.forEach((room) => {
46
- if (!roomsByType[room.name]) {
47
- roomsByType[room.name] = 0;
48
- }
49
- roomsByType[room.name]++;
50
- roomsById[room.roomId] = room;
39
+ function playground() {
40
+ (0, import_colyseus.applyMonkeyPatch)();
41
+ const router = import_express.default.Router();
42
+ router.use("/", import_express.default.static(import_path.default.resolve(__dirname, "..", "build")));
43
+ router.get("/rooms", async (req, res) => {
44
+ const rooms = await import_core.matchMaker.driver.query({});
45
+ const roomsByType = {};
46
+ const roomsById = {};
47
+ rooms.forEach((room) => {
48
+ if (!roomsByType[room.name]) {
49
+ roomsByType[room.name] = 0;
50
+ }
51
+ roomsByType[room.name]++;
52
+ roomsById[room.roomId] = room;
53
+ });
54
+ res.json({
55
+ rooms: import_colyseus.allRoomNames,
56
+ roomsByType,
57
+ roomsById,
58
+ auth: {
59
+ // list of OAuth providers
60
+ oauth: Object.keys(import_auth.auth.oauth.providers),
61
+ register: typeof import_auth.auth.settings.onRegisterWithEmailAndPassword === "function",
62
+ anonymous: typeof import_auth.JWT.settings.secret === "string"
63
+ }
64
+ });
51
65
  });
52
- res.json({
53
- rooms: import_colyseus.allRoomNames,
54
- roomsByType,
55
- roomsById,
56
- auth: {
57
- // list of OAuth providers
58
- oauth: Object.keys(import_auth.auth.oauth.providers),
59
- register: typeof import_auth.auth.settings.onRegisterWithEmailAndPassword === "function",
60
- anonymous: typeof import_auth.JWT.settings.secret === "string"
61
- }
62
- });
63
- });
66
+ return router;
67
+ }
64
68
  // Annotate the CommonJS export names for ESM import in node:
65
69
  0 && (module.exports = {
66
70
  playground
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src-backend/index.ts"],
4
- "sourcesContent": ["import path from \"path\";\nimport express from \"express\";\nimport { auth, JWT } from \"@colyseus/auth\";\nimport { matchMaker, RoomListingData } from '@colyseus/core';\nimport { allRoomNames } from \"./colyseus.ext\";\n\nexport const playground = express.Router();\n\nexport type AuthConfig = {\n oauth: string[],\n register: boolean,\n anonymous: boolean,\n};\n\n// serve static frontend\nplayground.use(\"/\", express.static(path.resolve(__dirname, \"..\", \"build\")));\n\n// expose matchmaking stats\nplayground.get(\"/rooms\", async (req, res) => {\n const rooms = await matchMaker.driver.find({});\n\n const roomsByType: { [roomName: string]: number } = {};\n const roomsById: { [roomName: string]: RoomListingData } = {};\n\n rooms.forEach((room) => {\n if (!roomsByType[room.name]) { roomsByType[room.name] = 0; }\n roomsByType[room.name]++;\n roomsById[room.roomId] = room;\n });\n\n res.json({\n rooms: allRoomNames,\n\n roomsByType,\n roomsById,\n\n auth: {\n // list of OAuth providers\n oauth: Object.keys(auth.oauth.providers),\n register: typeof(auth.settings.onRegisterWithEmailAndPassword) === \"function\",\n anonymous: typeof(JWT.settings.secret) === \"string\",\n } as AuthConfig\n });\n});\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAiB;AACjB,qBAAoB;AACpB,kBAA0B;AAC1B,kBAA4C;AAC5C,sBAA6B;AAEtB,MAAM,aAAa,eAAAA,QAAQ,OAAO;AASzC,WAAW,IAAI,KAAK,eAAAA,QAAQ,OAAO,YAAAC,QAAK,QAAQ,WAAW,MAAM,OAAO,CAAC,CAAC;AAG1E,WAAW,IAAI,UAAU,OAAO,KAAK,QAAQ;AAC3C,QAAM,QAAQ,MAAM,uBAAW,OAAO,KAAK,CAAC,CAAC;AAE7C,QAAM,cAA8C,CAAC;AACrD,QAAM,YAAqD,CAAC;AAE5D,QAAM,QAAQ,CAAC,SAAS;AACtB,QAAI,CAAC,YAAY,KAAK,IAAI,GAAG;AAAE,kBAAY,KAAK,IAAI,IAAI;AAAA,IAAG;AAC3D,gBAAY,KAAK,IAAI;AACrB,cAAU,KAAK,MAAM,IAAI;AAAA,EAC3B,CAAC;AAED,MAAI,KAAK;AAAA,IACP,OAAO;AAAA,IAEP;AAAA,IACA;AAAA,IAEA,MAAM;AAAA;AAAA,MAEJ,OAAO,OAAO,KAAK,iBAAK,MAAM,SAAS;AAAA,MACvC,UAAU,OAAO,iBAAK,SAAS,mCAAoC;AAAA,MACnE,WAAW,OAAO,gBAAI,SAAS,WAAY;AAAA,IAC7C;AAAA,EACF,CAAC;AACH,CAAC;",
4
+ "sourcesContent": ["import path from \"path\";\nimport express, { Router } from \"express\";\nimport { auth, JWT } from \"@colyseus/auth\";\nimport { matchMaker, RoomListingData } from '@colyseus/core';\nimport { allRoomNames, applyMonkeyPatch } from \"./colyseus.ext\";\n\nexport type AuthConfig = {\n oauth: string[],\n register: boolean,\n anonymous: boolean,\n};\n\nexport function playground(): Router {\n applyMonkeyPatch();\n\n const router = express.Router();\n\n // serve static frontend\n router.use(\"/\", express.static(path.resolve(__dirname, \"..\", \"build\")));\n\n // expose matchmaking stats\n router.get(\"/rooms\", async (req, res) => {\n const rooms = await matchMaker.driver.query({});\n\n const roomsByType: { [roomName: string]: number } = {};\n const roomsById: { [roomName: string]: RoomListingData } = {};\n\n rooms.forEach((room) => {\n if (!roomsByType[room.name]) { roomsByType[room.name] = 0; }\n roomsByType[room.name]++;\n roomsById[room.roomId] = room;\n });\n\n res.json({\n rooms: allRoomNames,\n\n roomsByType,\n roomsById,\n\n auth: {\n // list of OAuth providers\n oauth: Object.keys(auth.oauth.providers),\n register: typeof(auth.settings.onRegisterWithEmailAndPassword) === \"function\",\n anonymous: typeof(JWT.settings.secret) === \"string\",\n } as AuthConfig\n });\n });\n\n return router;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAiB;AACjB,qBAAgC;AAChC,kBAA0B;AAC1B,kBAA4C;AAC5C,sBAA+C;AAQxC,SAAS,aAAqB;AACnC,wCAAiB;AAEjB,QAAM,SAAS,eAAAA,QAAQ,OAAO;AAG9B,SAAO,IAAI,KAAK,eAAAA,QAAQ,OAAO,YAAAC,QAAK,QAAQ,WAAW,MAAM,OAAO,CAAC,CAAC;AAGtE,SAAO,IAAI,UAAU,OAAO,KAAK,QAAQ;AACvC,UAAM,QAAQ,MAAM,uBAAW,OAAO,MAAM,CAAC,CAAC;AAE9C,UAAM,cAA8C,CAAC;AACrD,UAAM,YAAqD,CAAC;AAE5D,UAAM,QAAQ,CAAC,SAAS;AACtB,UAAI,CAAC,YAAY,KAAK,IAAI,GAAG;AAAE,oBAAY,KAAK,IAAI,IAAI;AAAA,MAAG;AAC3D,kBAAY,KAAK,IAAI;AACrB,gBAAU,KAAK,MAAM,IAAI;AAAA,IAC3B,CAAC;AAED,QAAI,KAAK;AAAA,MACP,OAAO;AAAA,MAEP;AAAA,MACA;AAAA,MAEA,MAAM;AAAA;AAAA,QAEJ,OAAO,OAAO,KAAK,iBAAK,MAAM,SAAS;AAAA,QACvC,UAAU,OAAO,iBAAK,SAAS,mCAAoC;AAAA,QACnE,WAAW,OAAO,gBAAI,SAAS,WAAY;AAAA,MAC7C;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAED,SAAO;AACT;",
6
6
  "names": ["express", "path"]
7
7
  }
package/build/index.mjs CHANGED
@@ -2,32 +2,36 @@ import path from "path";
2
2
  import express from "express";
3
3
  import { auth, JWT } from "@colyseus/auth";
4
4
  import { matchMaker } from "@colyseus/core";
5
- import { allRoomNames } from "./colyseus.ext";
6
- const playground = express.Router();
7
- playground.use("/", express.static(path.resolve(__dirname, "..", "build")));
8
- playground.get("/rooms", async (req, res) => {
9
- const rooms = await matchMaker.driver.find({});
10
- const roomsByType = {};
11
- const roomsById = {};
12
- rooms.forEach((room) => {
13
- if (!roomsByType[room.name]) {
14
- roomsByType[room.name] = 0;
15
- }
16
- roomsByType[room.name]++;
17
- roomsById[room.roomId] = room;
5
+ import { allRoomNames, applyMonkeyPatch } from "./colyseus.ext";
6
+ function playground() {
7
+ applyMonkeyPatch();
8
+ const router = express.Router();
9
+ router.use("/", express.static(path.resolve(__dirname, "..", "build")));
10
+ router.get("/rooms", async (req, res) => {
11
+ const rooms = await matchMaker.driver.query({});
12
+ const roomsByType = {};
13
+ const roomsById = {};
14
+ rooms.forEach((room) => {
15
+ if (!roomsByType[room.name]) {
16
+ roomsByType[room.name] = 0;
17
+ }
18
+ roomsByType[room.name]++;
19
+ roomsById[room.roomId] = room;
20
+ });
21
+ res.json({
22
+ rooms: allRoomNames,
23
+ roomsByType,
24
+ roomsById,
25
+ auth: {
26
+ // list of OAuth providers
27
+ oauth: Object.keys(auth.oauth.providers),
28
+ register: typeof auth.settings.onRegisterWithEmailAndPassword === "function",
29
+ anonymous: typeof JWT.settings.secret === "string"
30
+ }
31
+ });
18
32
  });
19
- res.json({
20
- rooms: allRoomNames,
21
- roomsByType,
22
- roomsById,
23
- auth: {
24
- // list of OAuth providers
25
- oauth: Object.keys(auth.oauth.providers),
26
- register: typeof auth.settings.onRegisterWithEmailAndPassword === "function",
27
- anonymous: typeof JWT.settings.secret === "string"
28
- }
29
- });
30
- });
33
+ return router;
34
+ }
31
35
  export {
32
36
  playground
33
37
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src-backend/index.ts"],
4
- "sourcesContent": ["import path from \"path\";\nimport express from \"express\";\nimport { auth, JWT } from \"@colyseus/auth\";\nimport { matchMaker, RoomListingData } from '@colyseus/core';\nimport { allRoomNames } from \"./colyseus.ext\";\n\nexport const playground = express.Router();\n\nexport type AuthConfig = {\n oauth: string[],\n register: boolean,\n anonymous: boolean,\n};\n\n// serve static frontend\nplayground.use(\"/\", express.static(path.resolve(__dirname, \"..\", \"build\")));\n\n// expose matchmaking stats\nplayground.get(\"/rooms\", async (req, res) => {\n const rooms = await matchMaker.driver.find({});\n\n const roomsByType: { [roomName: string]: number } = {};\n const roomsById: { [roomName: string]: RoomListingData } = {};\n\n rooms.forEach((room) => {\n if (!roomsByType[room.name]) { roomsByType[room.name] = 0; }\n roomsByType[room.name]++;\n roomsById[room.roomId] = room;\n });\n\n res.json({\n rooms: allRoomNames,\n\n roomsByType,\n roomsById,\n\n auth: {\n // list of OAuth providers\n oauth: Object.keys(auth.oauth.providers),\n register: typeof(auth.settings.onRegisterWithEmailAndPassword) === \"function\",\n anonymous: typeof(JWT.settings.secret) === \"string\",\n } as AuthConfig\n });\n});\n"],
5
- "mappings": "AAAA,OAAO,UAAU;AACjB,OAAO,aAAa;AACpB,SAAS,MAAM,WAAW;AAC1B,SAAS,kBAAmC;AAC5C,SAAS,oBAAoB;AAEtB,MAAM,aAAa,QAAQ,OAAO;AASzC,WAAW,IAAI,KAAK,QAAQ,OAAO,KAAK,QAAQ,WAAW,MAAM,OAAO,CAAC,CAAC;AAG1E,WAAW,IAAI,UAAU,OAAO,KAAK,QAAQ;AAC3C,QAAM,QAAQ,MAAM,WAAW,OAAO,KAAK,CAAC,CAAC;AAE7C,QAAM,cAA8C,CAAC;AACrD,QAAM,YAAqD,CAAC;AAE5D,QAAM,QAAQ,CAAC,SAAS;AACtB,QAAI,CAAC,YAAY,KAAK,IAAI,GAAG;AAAE,kBAAY,KAAK,IAAI,IAAI;AAAA,IAAG;AAC3D,gBAAY,KAAK,IAAI;AACrB,cAAU,KAAK,MAAM,IAAI;AAAA,EAC3B,CAAC;AAED,MAAI,KAAK;AAAA,IACP,OAAO;AAAA,IAEP;AAAA,IACA;AAAA,IAEA,MAAM;AAAA;AAAA,MAEJ,OAAO,OAAO,KAAK,KAAK,MAAM,SAAS;AAAA,MACvC,UAAU,OAAO,KAAK,SAAS,mCAAoC;AAAA,MACnE,WAAW,OAAO,IAAI,SAAS,WAAY;AAAA,IAC7C;AAAA,EACF,CAAC;AACH,CAAC;",
4
+ "sourcesContent": ["import path from \"path\";\nimport express, { Router } from \"express\";\nimport { auth, JWT } from \"@colyseus/auth\";\nimport { matchMaker, RoomListingData } from '@colyseus/core';\nimport { allRoomNames, applyMonkeyPatch } from \"./colyseus.ext\";\n\nexport type AuthConfig = {\n oauth: string[],\n register: boolean,\n anonymous: boolean,\n};\n\nexport function playground(): Router {\n applyMonkeyPatch();\n\n const router = express.Router();\n\n // serve static frontend\n router.use(\"/\", express.static(path.resolve(__dirname, \"..\", \"build\")));\n\n // expose matchmaking stats\n router.get(\"/rooms\", async (req, res) => {\n const rooms = await matchMaker.driver.query({});\n\n const roomsByType: { [roomName: string]: number } = {};\n const roomsById: { [roomName: string]: RoomListingData } = {};\n\n rooms.forEach((room) => {\n if (!roomsByType[room.name]) { roomsByType[room.name] = 0; }\n roomsByType[room.name]++;\n roomsById[room.roomId] = room;\n });\n\n res.json({\n rooms: allRoomNames,\n\n roomsByType,\n roomsById,\n\n auth: {\n // list of OAuth providers\n oauth: Object.keys(auth.oauth.providers),\n register: typeof(auth.settings.onRegisterWithEmailAndPassword) === \"function\",\n anonymous: typeof(JWT.settings.secret) === \"string\",\n } as AuthConfig\n });\n });\n\n return router;\n}\n"],
5
+ "mappings": "AAAA,OAAO,UAAU;AACjB,OAAO,aAAyB;AAChC,SAAS,MAAM,WAAW;AAC1B,SAAS,kBAAmC;AAC5C,SAAS,cAAc,wBAAwB;AAQxC,SAAS,aAAqB;AACnC,mBAAiB;AAEjB,QAAM,SAAS,QAAQ,OAAO;AAG9B,SAAO,IAAI,KAAK,QAAQ,OAAO,KAAK,QAAQ,WAAW,MAAM,OAAO,CAAC,CAAC;AAGtE,SAAO,IAAI,UAAU,OAAO,KAAK,QAAQ;AACvC,UAAM,QAAQ,MAAM,WAAW,OAAO,MAAM,CAAC,CAAC;AAE9C,UAAM,cAA8C,CAAC;AACrD,UAAM,YAAqD,CAAC;AAE5D,UAAM,QAAQ,CAAC,SAAS;AACtB,UAAI,CAAC,YAAY,KAAK,IAAI,GAAG;AAAE,oBAAY,KAAK,IAAI,IAAI;AAAA,MAAG;AAC3D,kBAAY,KAAK,IAAI;AACrB,gBAAU,KAAK,MAAM,IAAI;AAAA,IAC3B,CAAC;AAED,QAAI,KAAK;AAAA,MACP,OAAO;AAAA,MAEP;AAAA,MACA;AAAA,MAEA,MAAM;AAAA;AAAA,QAEJ,OAAO,OAAO,KAAK,KAAK,MAAM,SAAS;AAAA,QACvC,UAAU,OAAO,KAAK,SAAS,mCAAoC;AAAA,QACnE,WAAW,OAAO,IAAI,SAAS,WAAY;AAAA,MAC7C;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAED,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,13 @@
1
+ body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}
2
+
3
+ /*
4
+ ! tailwindcss v3.4.4 | MIT License | https://tailwindcss.com
5
+ */*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-y-0{bottom:0;top:0}.left-0{left:0}.left-8{left:2rem}.z-30{z-index:30}.float-right{float:right}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-4{margin-bottom:1rem;margin-top:1rem}.-mb-px{margin-bottom:-1px}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-4{margin-right:1rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.h-10{height:2.5rem}.h-24{height:6rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-screen{height:100vh}.min-h-screen{min-height:100vh}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-60{width:15rem}.w-64{width:16rem}.w-8{width:2rem}.w-80{width:20rem}.w-full{width:100%}.flex-1{flex:1 1}.flex-grow,.grow{flex-grow:1}.table-auto{table-layout:auto}.border-collapse{border-collapse:collapse}.-translate-x-full{--tw-translate-x:-100%}.-translate-x-full,.rotate-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-0{--tw-rotate:0deg}.rotate-90{--tw-rotate:90deg}.rotate-90,.scale-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-0{--tw-scale-x:0;--tw-scale-y:0}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-help{cursor:help}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:.5rem}.gap-6{gap:1.5rem}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;white-space:nowrap}.text-ellipsis,.truncate{text-overflow:ellipsis}.rounded{border-radius:.25rem}.rounded-l{border-bottom-left-radius:.25rem;border-top-left-radius:.25rem}.rounded-r{border-bottom-right-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-r-0{border-right-width:0}.border-t{border-top-width:1px}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.border-purple-600{--tw-border-opacity:1;border-color:rgb(147 51 234/var(--tw-border-opacity))}.border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.bg-blue-800{--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity))}.bg-cyan-800{--tw-bg-opacity:1;background-color:rgb(21 94 117/var(--tw-bg-opacity))}.bg-emerald-800{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity))}.bg-fuchsia-800{--tw-bg-opacity:1;background-color:rgb(134 25 143/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.bg-green-800{--tw-bg-opacity:1;background-color:rgb(22 101 52/var(--tw-bg-opacity))}.bg-indigo-800{--tw-bg-opacity:1;background-color:rgb(55 48 163/var(--tw-bg-opacity))}.bg-lime-800{--tw-bg-opacity:1;background-color:rgb(63 98 18/var(--tw-bg-opacity))}.bg-pink-800{--tw-bg-opacity:1;background-color:rgb(157 23 77/var(--tw-bg-opacity))}.bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity))}.bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.bg-rose-800{--tw-bg-opacity:1;background-color:rgb(159 18 57/var(--tw-bg-opacity))}.bg-sky-800{--tw-bg-opacity:1;background-color:rgb(7 89 133/var(--tw-bg-opacity))}.bg-teal-800{--tw-bg-opacity:1;background-color:rgb(17 94 89/var(--tw-bg-opacity))}.bg-violet-800{--tw-bg-opacity:1;background-color:rgb(91 33 182/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.pb-4{padding-bottom:1rem}.pr-2{padding-right:.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extralight{font-weight:200}.font-light{font-weight:300}.font-medium{font-weight:500}.font-semibold{font-weight:600}.italic{font-style:italic}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity))}.text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.opacity-100{opacity:1}.opacity-60{opacity:.6}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-300{transition-duration:.3s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\:text-purple-500:hover{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity))}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),0 0 #0000;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-purple-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(168 85 247/var(--tw-ring-opacity))}.enabled\:hover\:bg-blue-700:hover:enabled{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}.enabled\:hover\:bg-green-600:hover:enabled{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity))}.enabled\:hover\:bg-purple-700:hover:enabled{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity))}.enabled\:hover\:bg-red-600:hover:enabled{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.enabled\:hover\:bg-red-700:hover:enabled{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:scale-100{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media (min-width:1024px){.lg\:static{position:static}.lg\:inset-0{inset:0}.lg\:translate-x-0{--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}}.jsoneditor,.jsoneditor-modal{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none}.jsoneditor input,.jsoneditor input:not([type]),.jsoneditor input[type=search],.jsoneditor input[type=text],.jsoneditor-modal input,.jsoneditor-modal input:not([type]),.jsoneditor-modal input[type=search],.jsoneditor-modal input[type=text]{border:inherit;box-shadow:none;box-sizing:inherit;font-family:inherit;font-size:inherit;height:auto;line-height:inherit;padding:inherit;transition:none}.jsoneditor input:focus,.jsoneditor input:not([type]):focus,.jsoneditor input[type=search]:focus,.jsoneditor input[type=text]:focus,.jsoneditor-modal input:focus,.jsoneditor-modal input:not([type]):focus,.jsoneditor-modal input[type=search]:focus,.jsoneditor-modal input[type=text]:focus{border:inherit;box-shadow:inherit}.jsoneditor textarea,.jsoneditor-modal textarea{height:inherit}.jsoneditor select,.jsoneditor-modal select{display:inherit;height:inherit}.jsoneditor label,.jsoneditor-modal label{color:inherit;font-size:inherit;font-weight:inherit}.jsoneditor table,.jsoneditor-modal table{border-collapse:collapse;width:auto}.jsoneditor td,.jsoneditor th,.jsoneditor-modal td,.jsoneditor-modal th{border-radius:inherit;display:table-cell;padding:0;text-align:left;vertical-align:inherit}.jsoneditor .autocomplete.dropdown{background:#fff;border:1px solid #d3d3d3;box-shadow:2px 2px 12px #8080804d;cursor:default;font-family:consolas,menlo,monaco,Ubuntu Mono,source-code-pro,monospace;font-size:14px;margin:0;outline:0;overflow-x:hidden;overflow-y:auto;padding:5px;position:absolute;text-align:left}.jsoneditor .autocomplete.dropdown .item{color:#1a1a1a}.jsoneditor .autocomplete.dropdown .item.hover{background-color:#ebebeb}.jsoneditor .autocomplete.hint{color:#a1a1a1;left:4px;top:4px}.jsoneditor-contextmenu-root{height:0;position:relative;width:0}.jsoneditor-contextmenu{box-sizing:initial;position:absolute;z-index:2}.jsoneditor-contextmenu .jsoneditor-menu{background:#fff;border:1px solid #d3d3d3;box-shadow:2px 2px 12px #8080804d;height:auto;left:0;list-style:none;margin:0;padding:0;position:relative;top:0;width:128px}.jsoneditor-contextmenu .jsoneditor-menu button{background:#0000;border:none;box-sizing:border-box;color:#4d4d4d;cursor:pointer;font-family:arial,sans-serif;font-size:14px;height:auto;margin:0;padding:0 8px 0 0;position:relative;text-align:left;width:128px}.jsoneditor-contextmenu .jsoneditor-menu button::-moz-focus-inner{border:0;padding:0}.jsoneditor-contextmenu .jsoneditor-menu button.jsoneditor-default{width:96px}.jsoneditor-contextmenu .jsoneditor-menu button.jsoneditor-expand{border-left:1px solid #e5e5e5;float:right;height:24px;width:32px}.jsoneditor-contextmenu .jsoneditor-menu li{overflow:hidden}.jsoneditor-contextmenu .jsoneditor-menu li ul{border:none;box-shadow:inset 0 0 10px #80808080;display:none;left:-10px;padding:0 10px;position:relative;top:0;transition:all .3s ease-out}.jsoneditor-contextmenu .jsoneditor-menu li ul .jsoneditor-icon{margin-left:24px}.jsoneditor-contextmenu .jsoneditor-menu li ul li button{animation:all 1s ease-in-out;padding-left:24px}.jsoneditor-contextmenu .jsoneditor-menu li button .jsoneditor-expand{background-position:0 -72px;margin:0 4px 0 0;right:0}.jsoneditor-contextmenu .jsoneditor-icon,.jsoneditor-contextmenu .jsoneditor-menu li button .jsoneditor-expand{background-image:url(../../static/media/jsoneditor-icons.15f2789dd231f36d43a4.svg);height:24px;padding:0;position:absolute;top:0;width:24px}.jsoneditor-contextmenu .jsoneditor-icon{border:none;left:0;margin:0}.jsoneditor-contextmenu .jsoneditor-text{word-wrap:break-word;padding:4px 0 4px 24px}.jsoneditor-contextmenu .jsoneditor-text.jsoneditor-right-margin{padding-right:24px}.jsoneditor-contextmenu .jsoneditor-separator{border-top:1px solid #e5e5e5;height:0;margin-top:5px;padding-top:5px}.jsoneditor-contextmenu button.jsoneditor-remove .jsoneditor-icon{background-position:-24px 0}.jsoneditor-contextmenu button.jsoneditor-append .jsoneditor-icon,.jsoneditor-contextmenu button.jsoneditor-insert .jsoneditor-icon{background-position:0 0}.jsoneditor-contextmenu button.jsoneditor-duplicate .jsoneditor-icon{background-position:-48px 0}.jsoneditor-contextmenu button.jsoneditor-sort-asc .jsoneditor-icon{background-position:-168px 0}.jsoneditor-contextmenu button.jsoneditor-sort-desc .jsoneditor-icon{background-position:-192px 0}.jsoneditor-contextmenu button.jsoneditor-transform .jsoneditor-icon{background-position:-216px 0}.jsoneditor-contextmenu button.jsoneditor-extract .jsoneditor-icon{background-position:0 -24px}.jsoneditor-contextmenu button.jsoneditor-type-string .jsoneditor-icon{background-position:-144px 0}.jsoneditor-contextmenu button.jsoneditor-type-auto .jsoneditor-icon{background-position:-120px 0}.jsoneditor-contextmenu button.jsoneditor-type-object .jsoneditor-icon{background-position:-72px 0}.jsoneditor-contextmenu button.jsoneditor-type-array .jsoneditor-icon{background-position:-96px 0}.jsoneditor-contextmenu button.jsoneditor-type-modes .jsoneditor-icon{background-image:none;width:6px}.jsoneditor-contextmenu li,.jsoneditor-contextmenu ul{box-sizing:initial;position:relative}.jsoneditor-contextmenu .jsoneditor-menu button:focus,.jsoneditor-contextmenu .jsoneditor-menu button:hover{background-color:#f5f5f5;color:#1a1a1a;outline:none}.jsoneditor-contextmenu .jsoneditor-menu li button.jsoneditor-selected,.jsoneditor-contextmenu .jsoneditor-menu li button.jsoneditor-selected:focus,.jsoneditor-contextmenu .jsoneditor-menu li button.jsoneditor-selected:hover{background-color:#ee422e;color:#fff}.jsoneditor-contextmenu .jsoneditor-menu li ul li button:focus,.jsoneditor-contextmenu .jsoneditor-menu li ul li button:hover{background-color:#f5f5f5}.jsoneditor-modal{border-radius:2px!important;box-shadow:2px 2px 12px #8080804d;color:#4d4d4d;line-height:1.3em;max-width:95%;padding:45px 15px 15px!important}.jsoneditor-modal.jsoneditor-modal-transform{width:600px!important}.jsoneditor-modal .pico-modal-header{background:#3883fa;box-sizing:border-box;color:#fff;font-family:arial,sans-serif;font-size:11pt;height:30px;left:0;line-height:30px;padding:0 10px;position:absolute;top:0;width:100%}.jsoneditor-modal table{width:100%}.jsoneditor-modal table td{padding:3px 0}.jsoneditor-modal table td.jsoneditor-modal-input{padding-right:0;text-align:right;white-space:nowrap}.jsoneditor-modal table td.jsoneditor-modal-actions{padding-top:15px}.jsoneditor-modal table th{vertical-align:middle}.jsoneditor-modal p:first-child{margin-top:0}.jsoneditor-modal a{color:#3883fa}.jsoneditor-modal .jsoneditor-jmespath-block{margin-bottom:10px}.jsoneditor-modal .pico-close{background:none!important;color:#fff;font-size:24px!important;right:7px!important;top:7px!important}.jsoneditor-modal input{padding:4px}.jsoneditor-modal input[type=text]{cursor:inherit}.jsoneditor-modal input[disabled]{background:#d3d3d3;color:grey}.jsoneditor-modal .jsoneditor-select-wrapper{display:inline-block;position:relative}.jsoneditor-modal .jsoneditor-select-wrapper:after{border-left:5px solid #0000;border-right:5px solid #0000;border-top:6px solid #666;content:"";height:0;pointer-events:none;position:absolute;right:8px;top:14px;width:0}.jsoneditor-modal select{-webkit-appearance:none;appearance:none;font-size:14px;line-height:1.5em;max-width:350px;min-width:180px;padding:3px 24px 3px 10px;text-indent:0;text-overflow:""}.jsoneditor-modal select::-ms-expand{display:none}.jsoneditor-modal .jsoneditor-button-group input{border-left-style:none;border-radius:0;margin:0;padding:4px 10px}.jsoneditor-modal .jsoneditor-button-group input.jsoneditor-button-first{border-bottom-left-radius:3px;border-left-style:solid;border-top-left-radius:3px}.jsoneditor-modal .jsoneditor-button-group input.jsoneditor-button-last{border-bottom-right-radius:3px;border-top-right-radius:3px}.jsoneditor-modal .jsoneditor-transform-preview{background:#f5f5f5;height:200px}.jsoneditor-modal .jsoneditor-transform-preview.jsoneditor-error{color:#ee422e}.jsoneditor-modal .jsoneditor-jmespath-wizard{border-radius:3px;line-height:1.2em;padding:0;width:100%}.jsoneditor-modal .jsoneditor-jmespath-label{color:#1e90ff;font-weight:700;margin-bottom:5px;margin-top:20px}.jsoneditor-modal .jsoneditor-jmespath-wizard-table{border-collapse:collapse;width:100%}.jsoneditor-modal .jsoneditor-jmespath-wizard-label{font-style:italic;margin:4px 0 2px}.jsoneditor-modal .jsoneditor-inline{display:inline-block;padding-bottom:2px;padding-top:2px;position:relative;width:100%}.jsoneditor-modal .jsoneditor-inline:not(:last-child){padding-right:2px}.jsoneditor-modal .jsoneditor-jmespath-filter{display:flex;flex-wrap:wrap}.jsoneditor-modal .jsoneditor-jmespath-filter-field{width:180px}.jsoneditor-modal .jsoneditor-jmespath-filter-relation{width:100px}.jsoneditor-modal .jsoneditor-jmespath-filter-value{flex:1 1;min-width:180px}.jsoneditor-modal .jsoneditor-jmespath-sort-field{width:170px}.jsoneditor-modal .jsoneditor-jmespath-sort-order{width:150px}.jsoneditor-modal .jsoneditor-jmespath-select-fields{width:100%}.jsoneditor-modal .selectr-selected{border-color:#d3d3d3;padding:4px 28px 4px 8px}.jsoneditor-modal .selectr-selected .selectr-tag{background-color:#3883fa;border-radius:5px}.jsoneditor-modal table td,.jsoneditor-modal table th{border-collapse:collapse;border-spacing:0;color:#4d4d4d;font-weight:400;text-align:left;vertical-align:middle}.jsoneditor-modal #query,.jsoneditor-modal input,.jsoneditor-modal input[type=text],.jsoneditor-modal input[type=text]:focus,.jsoneditor-modal select,.jsoneditor-modal textarea{background:#fff;border:1px solid #d3d3d3;border-radius:3px;color:#4d4d4d;padding:4px}.jsoneditor-modal #query,.jsoneditor-modal textarea{border-radius:0;border-radius:initial}.jsoneditor-modal,.jsoneditor-modal #query,.jsoneditor-modal input,.jsoneditor-modal input[type=text],.jsoneditor-modal option,.jsoneditor-modal select,.jsoneditor-modal table td,.jsoneditor-modal table th,.jsoneditor-modal textarea{font-family:arial,sans-serif;font-size:10.5pt}.jsoneditor-modal #query,.jsoneditor-modal .jsoneditor-transform-preview{box-sizing:border-box;font-family:consolas,menlo,monaco,Ubuntu Mono,source-code-pro,monospace;font-size:14px;width:100%}.jsoneditor-modal input[type=button],.jsoneditor-modal input[type=submit]{background:#f5f5f5;padding:4px 20px}.jsoneditor-modal input,.jsoneditor-modal select{cursor:pointer}.jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-asc input.jsoneditor-button-asc,.jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-desc input.jsoneditor-button-desc{background:#3883fa;border-color:#3883fa;color:#fff}.jsoneditor{border:thin solid #3883fa;box-sizing:border-box;color:#1a1a1a;height:100%;line-height:100%;padding:0;position:relative;width:100%}a.jsoneditor-value,div.jsoneditor-default,div.jsoneditor-field,div.jsoneditor-readonly,div.jsoneditor-value{word-wrap:break-word;border:1px solid #0000;float:left;line-height:16px;margin:1px;min-height:16px;min-width:32px;overflow-wrap:break-word;padding:2px;word-break:break-word}div.jsoneditor-field p,div.jsoneditor-value p{margin:0}div.jsoneditor-value.jsoneditor-empty:after{content:"value"}div.jsoneditor-value.jsoneditor-string{color:#006000}div.jsoneditor-value.jsoneditor-number{color:#ee422e}div.jsoneditor-value.jsoneditor-boolean{color:#ff8c00}div.jsoneditor-value.jsoneditor-null{color:#004ed0}div.jsoneditor-value.jsoneditor-color-value,div.jsoneditor-value.jsoneditor-invalid{color:#1a1a1a}div.jsoneditor-readonly{color:grey;min-width:16px}div.jsoneditor-empty{border-color:#d3d3d3;border-radius:2px;border-style:dashed}div.jsoneditor-field.jsoneditor-empty:after{content:"field"}div.jsoneditor td{vertical-align:top}div.jsoneditor td.jsoneditor-separator{color:grey;padding:3px 0;vertical-align:top}div.jsoneditor td.jsoneditor-tree{vertical-align:top}div.jsoneditor.busy pre.jsoneditor-preview{background:#f5f5f5;color:grey}div.jsoneditor.busy div.jsoneditor-busy{display:inherit}div.jsoneditor code.jsoneditor-preview{background:none}div.jsoneditor.jsoneditor-mode-preview pre.jsoneditor-preview{box-sizing:border-box;height:100%;margin:0;overflow:auto;padding:2px;white-space:pre-wrap;width:100%;word-break:break-all}div.jsoneditor-default{color:grey;padding-left:10px}div.jsoneditor-tree{background:#fff;height:100%;overflow:auto;position:relative;width:100%}div.jsoneditor-tree button.jsoneditor-button{background-color:initial;background-image:url(../../static/media/jsoneditor-icons.15f2789dd231f36d43a4.svg);border:none;cursor:pointer;height:24px;margin:0;padding:0;width:24px}div.jsoneditor-tree button.jsoneditor-button:focus{background-color:#f5f5f5;outline:1px solid #e5e5e5}div.jsoneditor-tree button.jsoneditor-collapsed{background-position:0 -48px}div.jsoneditor-tree button.jsoneditor-expanded{background-position:0 -72px}div.jsoneditor-tree button.jsoneditor-contextmenu-button{background-position:-48px -72px}div.jsoneditor-tree button.jsoneditor-invisible{background:none;visibility:hidden}div.jsoneditor-tree button.jsoneditor-dragarea{background-image:url(../../static/media/jsoneditor-icons.15f2789dd231f36d43a4.svg);background-position:-72px -72px;cursor:move}div.jsoneditor-tree :focus{outline:none}div.jsoneditor-tree div.jsoneditor-show-more{background-color:#e5e5e5;border-radius:3px;color:grey;display:inline-block;font-family:arial,sans-serif;font-size:14px;margin:2px 0;padding:3px 4px}div.jsoneditor-tree div.jsoneditor-show-more a{color:grey;display:inline-block}div.jsoneditor-tree div.jsoneditor-color{border:1px solid grey;cursor:pointer;display:inline-block;height:12px;margin:4px;width:12px}div.jsoneditor-tree div.jsoneditor-color.jsoneditor-color-readonly{cursor:inherit}div.jsoneditor-tree div.jsoneditor-date{background:#a1a1a1;border-radius:3px;color:#fff;display:inline-block;font-family:arial,sans-serif;margin:0 3px;padding:3px}div.jsoneditor-tree table.jsoneditor-tree{border-collapse:collapse;border-spacing:0;width:100%}div.jsoneditor-tree .jsoneditor-button{display:block}div.jsoneditor-tree .jsoneditor-button.jsoneditor-schema-error{background-color:initial;background-image:url(../../static/media/jsoneditor-icons.15f2789dd231f36d43a4.svg);background-position:-168px -48px;height:24px;margin:0 4px 0 0;padding:0;width:24px}div.jsoneditor-outer{box-sizing:border-box;height:100%;margin:0;padding:0;position:static;width:100%}div.jsoneditor-outer.has-nav-bar{margin-top:-26px;padding-top:26px}div.jsoneditor-outer.has-nav-bar.has-main-menu-bar{margin-top:-61px;padding-top:61px}div.jsoneditor-outer.has-status-bar{margin-bottom:-26px;padding-bottom:26px}div.jsoneditor-outer.has-main-menu-bar{margin-top:-35px;padding-top:35px}div.jsoneditor-busy{box-sizing:border-box;display:none;left:0;position:absolute;text-align:center;top:15%;width:100%}div.jsoneditor-busy span{background-color:#ffffab;border:1px solid #fe0;border-radius:3px;box-shadow:0 0 5px #0006;padding:5px 15px}div.jsoneditor-field.jsoneditor-empty:after,div.jsoneditor-value.jsoneditor-empty:after{color:#d3d3d3;font-size:8pt;pointer-events:none}a.jsoneditor-value.jsoneditor-url,div.jsoneditor-value.jsoneditor-url{color:#006000;text-decoration:underline}a.jsoneditor-value.jsoneditor-url{display:inline-block;margin:2px;padding:2px}a.jsoneditor-value.jsoneditor-url:focus,a.jsoneditor-value.jsoneditor-url:hover{color:#ee422e}div.jsoneditor-field.jsoneditor-highlight,div.jsoneditor-field[contenteditable=true]:focus,div.jsoneditor-field[contenteditable=true]:hover,div.jsoneditor-value.jsoneditor-highlight,div.jsoneditor-value[contenteditable=true]:focus,div.jsoneditor-value[contenteditable=true]:hover{background-color:#ffffab;border:1px solid #fe0;border-radius:2px}div.jsoneditor-field.jsoneditor-highlight-active,div.jsoneditor-field.jsoneditor-highlight-active:focus,div.jsoneditor-field.jsoneditor-highlight-active:hover,div.jsoneditor-value.jsoneditor-highlight-active,div.jsoneditor-value.jsoneditor-highlight-active:focus,div.jsoneditor-value.jsoneditor-highlight-active:hover{background-color:#fe0;border:1px solid #ffc700;border-radius:2px}div.jsoneditor-value.jsoneditor-array,div.jsoneditor-value.jsoneditor-object{min-width:16px}div.jsoneditor-tree button.jsoneditor-contextmenu-button.jsoneditor-selected,div.jsoneditor-tree button.jsoneditor-contextmenu-button:focus,div.jsoneditor-tree button.jsoneditor-contextmenu-button:hover,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu-button{background-position:-48px -48px}div.jsoneditor-tree div.jsoneditor-show-more a:focus,div.jsoneditor-tree div.jsoneditor-show-more a:hover{color:#ee422e}.ace-jsoneditor,textarea.jsoneditor-text{min-height:150px}.ace-jsoneditor.ace_editor,textarea.jsoneditor-text.ace_editor{font-family:consolas,menlo,monaco,Ubuntu Mono,source-code-pro,monospace}textarea.jsoneditor-text{background-color:#fff;border:none;box-sizing:border-box;height:100%;margin:0;outline-width:0;resize:none;width:100%}tr.jsoneditor-highlight,tr.jsoneditor-selected{background-color:#d3d3d3}tr.jsoneditor-selected button.jsoneditor-contextmenu-button,tr.jsoneditor-selected button.jsoneditor-dragarea{visibility:hidden}tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu-button,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea{visibility:visible}div.jsoneditor-tree button.jsoneditor-dragarea:focus,div.jsoneditor-tree button.jsoneditor-dragarea:hover,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea{background-position:-72px -48px}div.jsoneditor td,div.jsoneditor th,div.jsoneditor tr{margin:0;padding:0}.jsoneditor-popover,.jsoneditor-schema-error,div.jsoneditor td,div.jsoneditor textarea,div.jsoneditor th,div.jsoneditor-field,div.jsoneditor-value,pre.jsoneditor-preview{color:#1a1a1a;font-family:consolas,menlo,monaco,Ubuntu Mono,source-code-pro,monospace;font-size:14px}.jsoneditor-schema-error{cursor:default;display:inline-block;height:24px;line-height:24px;position:relative;text-align:center;width:24px}.jsoneditor-popover{background-color:#4c4c4c;border-radius:3px;box-shadow:0 0 5px #0006;color:#fff;cursor:auto;padding:7px 10px;position:absolute;width:200px}.jsoneditor-popover.jsoneditor-above{bottom:32px;left:-98px}.jsoneditor-popover.jsoneditor-above:before{border-top:7px solid #4c4c4c;bottom:-7px}.jsoneditor-popover.jsoneditor-below{left:-98px;top:32px}.jsoneditor-popover.jsoneditor-below:before{border-bottom:7px solid #4c4c4c;top:-7px}.jsoneditor-popover.jsoneditor-left{right:32px;top:-7px}.jsoneditor-popover.jsoneditor-left:before{border-bottom:7px solid #0000;border-left:7px solid #4c4c4c;border-top:7px solid #0000;content:"";left:inherit;margin-left:inherit;margin-top:-7px;position:absolute;right:-14px;top:19px}.jsoneditor-popover.jsoneditor-right{left:32px;top:-7px}.jsoneditor-popover.jsoneditor-right:before{border-bottom:7px solid #0000;border-right:7px solid #4c4c4c;border-top:7px solid #0000;content:"";left:-14px;margin-left:inherit;margin-top:-7px;position:absolute;top:19px}.jsoneditor-popover:before{border-left:7px solid #0000;border-right:7px solid #0000;content:"";display:block;left:50%;margin-left:-7px;position:absolute}.jsoneditor-text-errors tr.jump-to-line:hover{cursor:pointer;text-decoration:underline}.jsoneditor-schema-error:focus .jsoneditor-popover,.jsoneditor-schema-error:hover .jsoneditor-popover{animation:fade-in .3s linear 1,move-up .3s linear 1;display:block}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.jsoneditor .jsoneditor-validation-errors-container{max-height:130px;overflow-y:auto}.jsoneditor .jsoneditor-validation-errors{overflow:hidden;width:100%}.jsoneditor .jsoneditor-additional-errors{background-color:#ebebeb;border-radius:8px;bottom:31px;color:grey;left:calc(50% - 92px);margin:auto;padding:7px 15px;position:absolute}.jsoneditor .jsoneditor-additional-errors.visible{opacity:1;transition:opacity 2s linear;visibility:visible}.jsoneditor .jsoneditor-additional-errors.hidden{opacity:0;transition:visibility 0s 2s,opacity 2s linear;visibility:hidden}.jsoneditor .jsoneditor-text-errors{border-collapse:collapse;border-top:1px solid #ffc700;width:100%}.jsoneditor .jsoneditor-text-errors td{padding:3px 6px;vertical-align:middle}.jsoneditor .jsoneditor-text-errors td pre{margin:0;white-space:pre-wrap}.jsoneditor .jsoneditor-text-errors tr{background-color:#ffffab}.jsoneditor .jsoneditor-text-errors tr.parse-error{background-color:rgba(238,46,46,.439)}.jsoneditor-text-errors .jsoneditor-schema-error{border:none;cursor:pointer;height:24px;margin:0 4px 0 0;padding:0;width:24px}.jsoneditor-text-errors tr .jsoneditor-schema-error{background-color:initial;background-image:url(../../static/media/jsoneditor-icons.15f2789dd231f36d43a4.svg);background-position:-168px -48px}.jsoneditor-text-errors tr.parse-error .jsoneditor-schema-error{background-color:initial;background-image:url(../../static/media/jsoneditor-icons.15f2789dd231f36d43a4.svg);background-position:-25px 0}.jsoneditor-anchor{cursor:pointer}.jsoneditor-anchor .picker_wrapper.popup.popup_bottom{left:-10px;top:28px}.fadein{animation:fadein .3s;-moz-animation:fadein .3s;-o-animation:fadein .3s}@keyframes fadein{0%{opacity:0}to{opacity:1}}.jsoneditor-modal input[type=search].selectr-input{border:1px solid #d3d3d3;box-sizing:border-box;margin:2px;padding:4px;width:calc(100% - 4px)}.jsoneditor-modal button.selectr-input-clear{right:8px}.jsoneditor-menu{background-color:#3883fa;border-bottom:1px solid #3883fa;box-sizing:border-box;color:#fff;height:35px;margin:0;padding:2px;width:100%}.jsoneditor-menu>.jsoneditor-modes>button,.jsoneditor-menu>button{background-color:initial;background-image:url(../../static/media/jsoneditor-icons.15f2789dd231f36d43a4.svg);border:1px solid #0000;border-radius:2px;color:#fff;float:left;font-family:arial,sans-serif;font-size:14px;height:26px;margin:2px;opacity:.8;padding:0;width:26px}.jsoneditor-menu>.jsoneditor-modes>button:hover,.jsoneditor-menu>button:hover{background-color:#fff3;border:1px solid #fff6}.jsoneditor-menu>.jsoneditor-modes>button:active,.jsoneditor-menu>.jsoneditor-modes>button:focus,.jsoneditor-menu>button:active,.jsoneditor-menu>button:focus{background-color:#ffffff4d}.jsoneditor-menu>.jsoneditor-modes>button:disabled,.jsoneditor-menu>button:disabled{background-color:initial;border:none;opacity:.5}.jsoneditor-menu>button.jsoneditor-collapse-all{background-position:0 -96px}.jsoneditor-menu>button.jsoneditor-expand-all{background-position:0 -120px}.jsoneditor-menu>button.jsoneditor-sort{background-position:-120px -96px}.jsoneditor-menu>button.jsoneditor-transform{background-position:-144px -96px}.jsoneditor.jsoneditor-mode-form>.jsoneditor-menu>button.jsoneditor-sort,.jsoneditor.jsoneditor-mode-form>.jsoneditor-menu>button.jsoneditor-transform,.jsoneditor.jsoneditor-mode-view>.jsoneditor-menu>button.jsoneditor-sort,.jsoneditor.jsoneditor-mode-view>.jsoneditor-menu>button.jsoneditor-transform{display:none}.jsoneditor-menu>button.jsoneditor-undo{background-position:-24px -96px}.jsoneditor-menu>button.jsoneditor-undo:disabled{background-position:-24px -120px}.jsoneditor-menu>button.jsoneditor-redo{background-position:-48px -96px}.jsoneditor-menu>button.jsoneditor-redo:disabled{background-position:-48px -120px}.jsoneditor-menu>button.jsoneditor-compact{background-position:-72px -96px}.jsoneditor-menu>button.jsoneditor-format{background-position:-72px -120px}.jsoneditor-menu>button.jsoneditor-repair{background-position:-96px -96px}.jsoneditor-menu>.jsoneditor-modes{display:inline-block;float:left}.jsoneditor-menu>.jsoneditor-modes>button{background-image:none;padding-left:6px;padding-right:6px;width:auto}.jsoneditor-menu>.jsoneditor-modes>button.jsoneditor-separator,.jsoneditor-menu>button.jsoneditor-separator{margin-left:10px}.jsoneditor-menu a{color:#fff;font-family:arial,sans-serif;font-size:14px;opacity:.8;vertical-align:middle}.jsoneditor-menu a:hover{opacity:1}.jsoneditor-menu a.jsoneditor-poweredBy{font-size:8pt;padding:10px;position:absolute;right:0;top:0}.jsoneditor-navigation-bar{background-color:#ebebeb;border-bottom:1px solid #d3d3d3;box-sizing:border-box;color:grey;font-family:arial,sans-serif;font-size:14px;height:26px;line-height:26px;margin:0;overflow:hidden;padding:0;width:100%}.jsoneditor-search{border-collapse:collapse;border-spacing:0;display:flex;font-family:arial,sans-serif;position:absolute;right:4px;top:4px}.jsoneditor-search input{border:none;color:#1a1a1a;font-family:arial,sans-serif;line-height:20px;margin:1px;outline:none;width:120px}.jsoneditor-search button{background:url(../../static/media/jsoneditor-icons.15f2789dd231f36d43a4.svg);border:none;height:24px;margin:0;padding:0;vertical-align:top;width:16px}.jsoneditor-search button:hover{background-color:initial}.jsoneditor-search button.jsoneditor-refresh{background-position:-99px -73px;width:18px}.jsoneditor-search button.jsoneditor-next{background-position:-124px -73px;cursor:pointer}.jsoneditor-search button.jsoneditor-next:hover{background-position:-124px -49px}.jsoneditor-search button.jsoneditor-previous{background-position:-148px -73px;cursor:pointer;margin-right:2px}.jsoneditor-search button.jsoneditor-previous:hover{background-position:-148px -49px}.jsoneditor-results{color:#fff;font-family:arial,sans-serif;line-height:26px;padding-right:5px}.jsoneditor-frame{background-color:#fff;border:1px solid #0000;margin:0;padding:0 2px}.jsoneditor-statusbar{background-color:#ebebeb;border-top:1px solid #d3d3d3;box-sizing:border-box;color:grey;font-size:14px;height:26px;line-height:26px}.jsoneditor-statusbar>.jsoneditor-curserinfo-val{margin-right:12px}.jsoneditor-statusbar>.jsoneditor-curserinfo-count{margin-left:4px}.jsoneditor-statusbar>.jsoneditor-validation-error-icon{background-image:url(../../static/media/jsoneditor-icons.15f2789dd231f36d43a4.svg);background-position:-168px -48px;cursor:pointer;float:right;height:24px;margin-top:1px;padding:0;width:24px}.jsoneditor-statusbar>.jsoneditor-validation-error-count{cursor:pointer;float:right;margin:0 4px 0 0}.jsoneditor-statusbar>.jsoneditor-parse-error-icon{background-image:url(../../static/media/jsoneditor-icons.15f2789dd231f36d43a4.svg);background-position:-25px 0;float:right;height:24px;margin:1px;padding:0;width:24px}.jsoneditor-statusbar .jsoneditor-array-info a{color:inherit}div.jsoneditor-statusbar>.jsoneditor-curserinfo-label,div.jsoneditor-statusbar>.jsoneditor-size-info{margin:0 4px}.jsoneditor-treepath{outline:none;overflow:hidden;padding:0 5px;white-space:nowrap}.jsoneditor-treepath.show-all{word-wrap:break-word;background-color:#ebebeb;box-shadow:2px 2px 12px #8080804d;position:absolute;white-space:normal;z-index:1}.jsoneditor-treepath.show-all span.jsoneditor-treepath-show-all-btn{display:none}.jsoneditor-treepath div.jsoneditor-contextmenu-root{left:0;position:absolute}.jsoneditor-treepath .jsoneditor-treepath-show-all-btn{background-color:#ebebeb;cursor:pointer;height:20px;left:0;padding:0 3px;position:absolute}.jsoneditor-treepath .jsoneditor-treepath-element{font-family:arial,sans-serif;font-size:14px;margin:1px}.jsoneditor-treepath .jsoneditor-treepath-seperator{font-family:arial,sans-serif;font-size:9pt;margin:2px}.jsoneditor-treepath span.jsoneditor-treepath-element:hover,.jsoneditor-treepath span.jsoneditor-treepath-seperator:hover{cursor:pointer;text-decoration:underline}
6
+
7
+ /*!
8
+ * Selectr 2.4.13
9
+ * http://mobius.ovh/docs/selectr
10
+ *
11
+ * Released under the MIT license
12
+ */.selectr-container{position:relative}.selectr-container li{list-style:none}.selectr-hidden{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.selectr-visible{height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:11}.selectr-desktop.multiple .selectr-visible{display:none}.selectr-desktop.multiple.native-open .selectr-visible{display:block;height:auto;min-height:200px!important;opacity:1;top:100%}.selectr-container.multiple.selectr-mobile .selectr-selected{z-index:0}.selectr-selected{background-color:#fff;border:1px solid #999;border-radius:3px;box-sizing:border-box;cursor:pointer;padding:7px 28px 7px 14px;position:relative;width:100%;z-index:1}.selectr-selected:before{border-color:#6c7a86 #0000 #0000;border-style:solid;border-width:4px 4px 0;content:"";height:0;position:absolute;right:10px;top:50%;transform:rotate(0deg) translate3d(0,-50%,0);width:0}.selectr-container.native-open .selectr-selected:before,.selectr-container.open .selectr-selected:before{border-color:#0000 #0000 #6c7a86;border-style:solid;border-width:0 4px 4px}.selectr-label{display:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.selectr-placeholder{color:#6c7a86}.selectr-tags{margin:0;padding:0;white-space:normal}.has-selected .selectr-tags{margin:0 0 -2px}.selectr-tag{background:#acb7bf none repeat scroll 0 0;border:none;border-radius:10px;color:#fff;cursor:default;float:left;list-style:none;margin:0 2px 2px 0;padding:2px 25px 2px 8px;position:relative}.selectr-container.multiple.has-selected .selectr-selected{padding:5px 28px 5px 5px}.selectr-options-container{background-color:#fff;border:1px solid #999;border-radius:0 0 3px 3px;border-top:0 solid #0000;box-sizing:border-box;display:none;left:0;position:absolute;top:calc(100% - 1px);width:100%;z-index:10000}.selectr-container.open .selectr-options-container{display:block}.selectr-input-container{display:none;position:relative}.selectr-clear,.selectr-input-clear,.selectr-tag-remove{background-color:initial;border:none;cursor:pointer;height:20px;padding:0;position:absolute;right:22px;top:50%;transform:translate3d(0,-50%,0);width:20px;z-index:11}.selectr-clear,.selectr-input-clear{display:none}.selectr-container.has-selected .selectr-clear,.selectr-input-container.active .selectr-input-clear{display:block}.selectr-selected .selectr-tag-remove{right:2px}.selectr-clear:after,.selectr-clear:before,.selectr-input-clear:after,.selectr-input-clear:before,.selectr-tag-remove:after,.selectr-tag-remove:before{background-color:#6c7a86;content:" ";height:10px;left:9px;position:absolute;top:5px;width:2px}.selectr-tag-remove:after,.selectr-tag-remove:before{background-color:#fff;height:12px;top:4px;width:3px}.selectr-clear:before,.selectr-input-clear:before,.selectr-tag-remove:before{transform:rotate(45deg)}.selectr-clear:after,.selectr-input-clear:after,.selectr-tag-remove:after{transform:rotate(-45deg)}.selectr-input-container.active,.selectr-input-container.active .selectr-clear{display:block}.selectr-input{border:1px solid #999;border-radius:3px;box-sizing:border-box;left:5px;margin:10px 15px;padding:7px 30px 7px 9px;top:5px;width:calc(100% - 30px)}.selectr-notice{background-color:#fff;border-radius:0 0 3px 3px;border-top:1px solid #999;box-sizing:border-box;display:none;padding:8px 16px;width:100%}.selectr-container.notice .selectr-notice{display:block}.selectr-container.notice .selectr-selected{border-radius:3px 3px 0 0}.selectr-options{display:none;margin:0;max-height:200px;overflow-x:auto;overflow-y:scroll;padding:0;position:relative;top:calc(100% + 2px)}.selectr-container.notice .selectr-options-container,.selectr-container.open .selectr-input-container,.selectr-container.open .selectr-options{display:block}.selectr-option{cursor:pointer;display:block;font-weight:400;list-style:none outside none;padding:5px 20px;position:relative}.selectr-options.optgroups>.selectr-option{padding-left:25px}.selectr-optgroup{font-weight:700;padding:0}.selectr-optgroup--label{font-weight:700;margin-top:10px;padding:5px 15px}.selectr-match{text-decoration:underline}.selectr-option.selected{background-color:#ddd}.selectr-option.active{background-color:#5897fb;color:#fff}.selectr-option.disabled{opacity:.4}.selectr-option.excluded{display:none}.selectr-container.open .selectr-selected{border-color:#999 #999 #0000;border-radius:3px 3px 0 0}.selectr-container.open .selectr-selected:after{transform:rotate(180deg) translate3d(0,50%,0)}.selectr-disabled{opacity:.6}.has-selected .selectr-placeholder,.selectr-empty{display:none}.has-selected .selectr-label{display:block}.taggable .selectr-selected{padding:4px 28px 4px 4px}.taggable .selectr-selected:after{clear:both;content:" ";display:table}.taggable .selectr-label{width:auto}.taggable .selectr-tags{display:block;float:left}.taggable .selectr-placeholder{display:none}.input-tag{float:left;min-width:90px;width:auto}.selectr-tag-input{border:none;font-family:inherit;font-size:inherit;font-weight:inherit;padding:3px 10px;width:100%}.selectr-input-container.loading:after{animation:selectr-spin .5s linear 0s infinite normal forwards running;border:3px solid #ddd;border-radius:50%;border-top-color:#aaa;content:"";height:20px;position:absolute;right:20px;top:50%;transform:translate3d(0,-50%,0);transform-origin:50% 0 0;width:20px}@keyframes selectr-spin{0%{transform:rotate(0deg) translate3d(0,-50%,0)}to{transform:rotate(1turn) translate3d(0,-50%,0)}}.selectr-container.open.inverted .selectr-selected{border-color:#0000 #999 #999;border-radius:0 0 3px 3px}.selectr-container.inverted .selectr-options-container{background-color:#fff;border-color:#999 #999 #0000;border-radius:3px 3px 0 0;border-width:1px 1px 0;bottom:calc(100% - 1px);top:auto}.selectr-container ::placeholder{color:#6c7a86;opacity:1}.jsoneditor{border:none}.jsoneditor-react-container{height:100%;width:100%}.json-view{--json-property:#009033;--json-index:#676dff;--json-number:#676dff;--json-string:#b2762e;--json-boolean:#dc155e;--json-null:#dc155e}.json-view .json-view--property{color:var(--json-property)}.json-view .json-view--index{color:var(--json-index)}.json-view .json-view--number{color:var(--json-number)}.json-view .json-view--string{color:var(--json-string)}.json-view .json-view--boolean{color:var(--json-boolean)}.json-view .json-view--null{color:var(--json-null)}.json-view .json-view--pair:hover>.json-view--copy,.json-view:hover>.json-view--copy{display:inline-block}.json-view .json-view--copy{cursor:pointer;display:none;height:1em;margin-left:4px;vertical-align:-11%;width:1em}.json-view .jv-indent{padding-left:16px}.json-view .jv-chevron{cursor:pointer;display:inline-block;opacity:.4;vertical-align:-20%}.json-view .jv-chevron:hover{opacity:.8}.json-view .jv-button{background:#0000;border:none;cursor:pointer;outline:none}.json-view .cursor-pointer{cursor:pointer}
13
+ /*# sourceMappingURL=main.320ee153.css.map*/