summary refs log tree commit diff
diff options
context:
space:
mode:
authorThe Arcane Brony <myrainbowdash949@gmail.com>2021-10-06 18:20:22 +0200
committerThe Arcane Brony <myrainbowdash949@gmail.com>2021-10-06 18:20:22 +0200
commit7db9086dd09ffccf71f57d8ce3df84c47c9cfa24 (patch)
treeaf0d68e64fa444c7927774813da366b539cb2876
parent:arrow_up: update packages (diff)
downloadserver-7db9086dd09ffccf71f57d8ce3df84c47c9cfa24.tar.xz
Compiler test
-rw-r--r--.vscode/settings.json4
-rw-r--r--api/.swcrc9
-rw-r--r--api/package-lock.json1133
-rw-r--r--api/package.json5
-rw-r--r--api/tsconfig-docker.json2
-rw-r--r--api/tsconfig.json2
-rw-r--r--bundle/.swcrc23
-rw-r--r--bundle/package-lock.json2038
-rw-r--r--bundle/package.json5
-rw-r--r--bundle/src/build.js18
-rw-r--r--bundle/tsconfig.json4
-rw-r--r--bundle/tsconfig.tsbuildinfo1
-rw-r--r--cdn/.swcrc9
-rw-r--r--cdn/package-lock.json650
-rw-r--r--cdn/package.json5
-rw-r--r--cdn/tsconfig.json2
-rw-r--r--cdn/tsconfig.tsbuildinfo1
-rw-r--r--dashboard/.swcrc23
-rw-r--r--gateway/.swcrc9
-rw-r--r--gateway/package-lock.json681
-rw-r--r--gateway/package.json5
-rw-r--r--gateway/tsconfig.json2
-rw-r--r--rtc/.swcrc9
-rw-r--r--util/.swcrc9
-rw-r--r--util/package-lock.json648
-rw-r--r--util/package.json5
-rw-r--r--util/tsconfig.json4
-rw-r--r--webrtc/.swcrc9
-rw-r--r--webrtc/tsconfig.json2
29 files changed, 5195 insertions, 122 deletions
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 00000000..46e4e52f
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,4 @@
+{
+    "awooga.originalColorCustomizations": {},
+    "workbench.colorCustomizations": {}
+}
\ No newline at end of file
diff --git a/api/.swcrc b/api/.swcrc
new file mode 100644
index 00000000..f04801b8
--- /dev/null
+++ b/api/.swcrc
@@ -0,0 +1,9 @@
+{
+    "jsc": {
+        "parser": {
+            "syntax": "typescript",
+            "decorators": true
+        },
+        "target": "es2021"
+    }
+}
\ No newline at end of file
diff --git a/api/package-lock.json b/api/package-lock.json
index 84d3ffd3..32910baa 100644
--- a/api/package-lock.json
+++ b/api/package-lock.json
@@ -41,12 +41,15 @@
 				"patch-package": "^6.4.7",
 				"supertest": "^6.1.6",
 				"tsconfig-paths": "^3.11.0",
-				"typeorm": "^0.2.37"
+				"typeorm": "^0.2.37",
+				"wsc": "^0.3.0"
 			},
 			"devDependencies": {
 				"@babel/core": "^7.15.5",
 				"@babel/preset-env": "^7.15.6",
 				"@babel/preset-typescript": "^7.15.0",
+				"@swc/cli": "^0.1.51",
+				"@swc/core": "^1.2.93",
 				"@types/amqplib": "^0.8.1",
 				"@types/bcrypt": "^5.0.0",
 				"@types/express": "^4.17.9",
@@ -99,12 +102,15 @@
 				"pg": "^8.7.1",
 				"reflect-metadata": "^0.1.13",
 				"sqlite3": "^5.0.2",
+				"swc": "^1.0.11",
 				"tsconfig-paths": "^3.11.0",
 				"typeorm": "^0.2.37",
 				"typescript": "^4.4.2",
 				"typescript-json-schema": "^0.50.1"
 			},
 			"devDependencies": {
+				"@swc/cli": "^0.1.51",
+				"@swc/core": "^1.2.93",
 				"@types/amqplib": "^0.8.1",
 				"@types/jsonwebtoken": "^8.5.0",
 				"@types/mongoose-autopopulate": "^0.10.1",
@@ -2749,6 +2755,21 @@
 				"node": ">=10"
 			}
 		},
+		"node_modules/@napi-rs/triples": {
+			"version": "1.0.3",
+			"resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz",
+			"integrity": "sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA==",
+			"dev": true
+		},
+		"node_modules/@node-rs/helper": {
+			"version": "1.2.1",
+			"resolved": "https://registry.npmjs.org/@node-rs/helper/-/helper-1.2.1.tgz",
+			"integrity": "sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg==",
+			"dev": true,
+			"dependencies": {
+				"@napi-rs/triples": "^1.0.3"
+			}
+		},
 		"node_modules/@nodelib/fs.scandir": {
 			"version": "2.1.5",
 			"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -2807,6 +2828,265 @@
 			"resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.3.tgz",
 			"integrity": "sha512-O3uyB/JbkAEMZaP3YqyHH7TMnex7tWyCbCI4EfJdOCoN6HIhqdJBWTM6aCCiWQ/5f5wxjgU735QAIpJbjDvmzg=="
 		},
+		"node_modules/@swc/cli": {
+			"version": "0.1.51",
+			"resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.1.51.tgz",
+			"integrity": "sha512-7eqZGpkI4QOYfF+9FV4xpT/V/LSRDs5OMJcm4Z46JnPMvv+sxumAFdCe1hHRzHgnzwis9OtjI8Tt3Srf9JudQw==",
+			"dev": true,
+			"dependencies": {
+				"commander": "^7.1.0",
+				"fast-glob": "^3.2.5",
+				"slash": "3.0.0",
+				"source-map": "^0.7.3"
+			},
+			"bin": {
+				"spack": "bin/spack.js",
+				"swc": "bin/swc.js"
+			},
+			"engines": {
+				"node": ">= 12.13"
+			},
+			"peerDependencies": {
+				"@swc/core": "^1.2.66",
+				"chokidar": "^3.5.1"
+			},
+			"peerDependenciesMeta": {
+				"chokidar": {
+					"optional": true
+				}
+			}
+		},
+		"node_modules/@swc/cli/node_modules/source-map": {
+			"version": "0.7.3",
+			"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+			"integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+			"dev": true,
+			"engines": {
+				"node": ">= 8"
+			}
+		},
+		"node_modules/@swc/core": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core/-/core-1.2.93.tgz",
+			"integrity": "sha512-Lx9I+9GfUl2Mb7r23MVbSkc+NZE0+xZ4Xh787D1b82KMeFLz7QgYe4cNM9SzTjV/VlSQyNTVlzjES7ZThIUvtA==",
+			"dev": true,
+			"dependencies": {
+				"@node-rs/helper": "^1.0.0"
+			},
+			"engines": {
+				"node": ">=10"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/swc"
+			},
+			"optionalDependencies": {
+				"@swc/core-android-arm64": "1.2.93",
+				"@swc/core-darwin-arm64": "1.2.93",
+				"@swc/core-darwin-x64": "1.2.93",
+				"@swc/core-freebsd-x64": "1.2.93",
+				"@swc/core-linux-arm-gnueabihf": "1.2.93",
+				"@swc/core-linux-arm64-gnu": "1.2.93",
+				"@swc/core-linux-arm64-musl": "1.2.93",
+				"@swc/core-linux-x64-gnu": "1.2.93",
+				"@swc/core-linux-x64-musl": "1.2.93",
+				"@swc/core-win32-arm64-msvc": "1.2.93",
+				"@swc/core-win32-ia32-msvc": "1.2.93",
+				"@swc/core-win32-x64-msvc": "1.2.93"
+			}
+		},
+		"node_modules/@swc/core-android-arm64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.93.tgz",
+			"integrity": "sha512-3F5A7QNR5+MI64W20QBADU0Z6knt8kJOxIoKw4Vuk7JQ6k0nnMemio3LtusHgAVZLXq0wMILZ4kv/+qnRzWb7A==",
+			"cpu": [
+				"arm64"
+			],
+			"dev": true,
+			"optional": true,
+			"os": [
+				"android"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-darwin-arm64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.93.tgz",
+			"integrity": "sha512-a8tu9WCtnjiuKTscUu8N9z/vVuIldwo5US4WfYi2dtQNgf21n1ZKxwvsZzRz6mEC86zVE0k9pmslwEtMuuCJog==",
+			"cpu": [
+				"arm64"
+			],
+			"dev": true,
+			"optional": true,
+			"os": [
+				"darwin"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-darwin-x64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.93.tgz",
+			"integrity": "sha512-ga8bpjauZYHWMjuPKcqOZFSgStvveMc/J7yqIlr9sF2pOr7Rt/MKLO4Ups95A2Aay90aCF9cPKQDtX71PmdlVw==",
+			"cpu": [
+				"x64"
+			],
+			"dev": true,
+			"optional": true,
+			"os": [
+				"darwin"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-freebsd-x64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.93.tgz",
+			"integrity": "sha512-qDBEZqHh6C2AMaxjdm/Am8MUwN94RS3na9VLYDMGUkgs2yvnSADfx7JOyZEJT1Ot7FZEuyGXcSfomUzNCU/5kw==",
+			"cpu": [
+				"x64"
+			],
+			"dev": true,
+			"optional": true,
+			"os": [
+				"freebsd"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-linux-arm-gnueabihf": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.93.tgz",
+			"integrity": "sha512-KlJsXOcZpuHXU8hMVDXfSyBQ9fdUpzwDV1JKpfIehG+P2kRdCbiN3irdv6kd3rVH/PUjiCSIP5SvpCMvwJzDNg==",
+			"cpu": [
+				"arm"
+			],
+			"dev": true,
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-linux-arm64-gnu": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.93.tgz",
+			"integrity": "sha512-UdQX3Tt7xLUgC4AFROw9wRaRA2vDHNnNFURkV//i/nsGay12JANBvXA/FOMge6yx32tPvcNUSRHnb3MYep0kzg==",
+			"cpu": [
+				"arm64"
+			],
+			"dev": true,
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-linux-arm64-musl": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.93.tgz",
+			"integrity": "sha512-O5W/cjnkP9nuKZsx03/DxVO+ILh5BUmfCjFzScXGuLMIZrBLyzBstcaSaZOxfd04wPEqael4VZiAGmWXornZ1g==",
+			"cpu": [
+				"arm64"
+			],
+			"dev": true,
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-linux-x64-gnu": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.93.tgz",
+			"integrity": "sha512-fDELNkklMzEI8KDr51XGajP7TVbZCLYkiPGAgbGadmkMFvlgJfzf1Qt1VzjGk5lTYdQO40vCe7u4xEpfdq6lLQ==",
+			"cpu": [
+				"x64"
+			],
+			"dev": true,
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-linux-x64-musl": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.93.tgz",
+			"integrity": "sha512-ZdEi04dfj96XDjT+J2k/J/m3WoHqlfwz93dTlpWdlPvrSNtsMg2oorm0Zynx/x2Ghe3w1hJu3HdMaJF2UY3Ttw==",
+			"cpu": [
+				"x64"
+			],
+			"dev": true,
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-win32-arm64-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.93.tgz",
+			"integrity": "sha512-NbIyBpOCEqxa+s3x8ijQGBOxQd5P63icf+6SK6MkO5E2zTgiR4g6ziihKCdhF9tJ6M4c0DHL/RqIV5SS9UX01w==",
+			"cpu": [
+				"arm64"
+			],
+			"dev": true,
+			"optional": true,
+			"os": [
+				"win32"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-win32-ia32-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.93.tgz",
+			"integrity": "sha512-TrRfHzGBQL1fjTahfBLDYcjLx28tH7pN5co5fJmYgASey8McVWL6eW/q/9fxvZqOVyj2SF9wvLDYKm0IWz4f+g==",
+			"cpu": [
+				"ia32"
+			],
+			"dev": true,
+			"optional": true,
+			"os": [
+				"win32"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-win32-x64-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.93.tgz",
+			"integrity": "sha512-VsqLVB7ytNYqEC21amMswC2c84NCVNW6KLhS9XeO6Vz1+7wx8uPu1rAo14oBu5/3yhv7/K3wgfMqJMKHZtXPMQ==",
+			"cpu": [
+				"x64"
+			],
+			"dev": true,
+			"optional": true,
+			"os": [
+				"win32"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
 		"node_modules/@tootallnate/once": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
@@ -3684,6 +3964,14 @@
 				"node": ">=0.10.0"
 			}
 		},
+		"node_modules/array-find-index": {
+			"version": "1.0.2",
+			"resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+			"integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
 		"node_modules/array-flatten": {
 			"version": "1.1.1",
 			"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
@@ -4773,6 +5061,26 @@
 				"node": ">=6"
 			}
 		},
+		"node_modules/camelcase-keys": {
+			"version": "2.1.0",
+			"resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+			"integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+			"dependencies": {
+				"camelcase": "^2.0.0",
+				"map-obj": "^1.0.0"
+			},
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
+		"node_modules/camelcase-keys/node_modules/camelcase": {
+			"version": "2.1.1",
+			"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+			"integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
 		"node_modules/caniuse-lite": {
 			"version": "1.0.30001257",
 			"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001257.tgz",
@@ -5642,6 +5950,17 @@
 			"integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
 			"dev": true
 		},
+		"node_modules/currently-unhandled": {
+			"version": "0.4.1",
+			"resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+			"integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+			"dependencies": {
+				"array-find-index": "^1.0.1"
+			},
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
 		"node_modules/d3-array": {
 			"version": "2.12.1",
 			"resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
@@ -5863,7 +6182,6 @@
 			"version": "1.2.0",
 			"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
 			"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-			"dev": true,
 			"engines": {
 				"node": ">=0.10.0"
 			}
@@ -6396,7 +6714,6 @@
 			"version": "1.3.2",
 			"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
 			"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
-			"dev": true,
 			"dependencies": {
 				"is-arrayish": "^0.2.1"
 			}
@@ -7198,6 +7515,14 @@
 				"node": ">=8.0.0"
 			}
 		},
+		"node_modules/get-stdin": {
+			"version": "4.0.1",
+			"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+			"integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
 		"node_modules/get-stream": {
 			"version": "5.2.0",
 			"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
@@ -7493,8 +7818,7 @@
 		"node_modules/hosted-git-info": {
 			"version": "2.8.9",
 			"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
-			"integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
-			"dev": true
+			"integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw=="
 		},
 		"node_modules/hsl-to-rgb-for-reals": {
 			"version": "1.1.1",
@@ -7725,6 +8049,17 @@
 				"node": ">=0.8.19"
 			}
 		},
+		"node_modules/indent-string": {
+			"version": "2.1.0",
+			"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+			"integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+			"dependencies": {
+				"repeating": "^2.0.0"
+			},
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
 		"node_modules/inflight": {
 			"version": "1.0.6",
 			"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@@ -7813,8 +8148,7 @@
 		"node_modules/is-arrayish": {
 			"version": "0.2.1",
 			"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
-			"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
-			"dev": true
+			"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
 		},
 		"node_modules/is-binary-path": {
 			"version": "2.1.0",
@@ -7855,7 +8189,6 @@
 			"version": "2.6.0",
 			"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz",
 			"integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==",
-			"dev": true,
 			"dependencies": {
 				"has": "^1.0.3"
 			},
@@ -7924,6 +8257,17 @@
 				"node": ">=0.10.0"
 			}
 		},
+		"node_modules/is-finite": {
+			"version": "1.1.0",
+			"resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
+			"integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
+			"engines": {
+				"node": ">=0.10.0"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/sindresorhus"
+			}
+		},
 		"node_modules/is-fullwidth-code-point": {
 			"version": "1.0.0",
 			"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
@@ -8008,6 +8352,11 @@
 			"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
 			"dev": true
 		},
+		"node_modules/is-utf8": {
+			"version": "0.2.1",
+			"resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+			"integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI="
+		},
 		"node_modules/is-windows": {
 			"version": "1.0.2",
 			"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
@@ -10307,6 +10656,51 @@
 			"integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
 			"dev": true
 		},
+		"node_modules/load-json-file": {
+			"version": "1.1.0",
+			"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+			"integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+			"dependencies": {
+				"graceful-fs": "^4.1.2",
+				"parse-json": "^2.2.0",
+				"pify": "^2.0.0",
+				"pinkie-promise": "^2.0.0",
+				"strip-bom": "^2.0.0"
+			},
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
+		"node_modules/load-json-file/node_modules/parse-json": {
+			"version": "2.2.0",
+			"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+			"integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+			"dependencies": {
+				"error-ex": "^1.2.0"
+			},
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
+		"node_modules/load-json-file/node_modules/pify": {
+			"version": "2.3.0",
+			"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+			"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
+		"node_modules/load-json-file/node_modules/strip-bom": {
+			"version": "2.0.0",
+			"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+			"integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+			"dependencies": {
+				"is-utf8": "^0.2.0"
+			},
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
 		"node_modules/locate-path": {
 			"version": "5.0.0",
 			"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
@@ -10395,6 +10789,18 @@
 			"integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=",
 			"dev": true
 		},
+		"node_modules/loud-rejection": {
+			"version": "1.6.0",
+			"resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+			"integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+			"dependencies": {
+				"currently-unhandled": "^0.4.1",
+				"signal-exit": "^3.0.0"
+			},
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
 		"node_modules/lower-case": {
 			"version": "1.1.4",
 			"resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
@@ -10457,6 +10863,14 @@
 				"node": ">=0.10.0"
 			}
 		},
+		"node_modules/map-obj": {
+			"version": "1.0.1",
+			"resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+			"integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
 		"node_modules/map-visit": {
 			"version": "1.0.0",
 			"resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
@@ -10494,6 +10908,95 @@
 			"integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
 			"devOptional": true
 		},
+		"node_modules/meow": {
+			"version": "3.7.0",
+			"resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+			"integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+			"dependencies": {
+				"camelcase-keys": "^2.0.0",
+				"decamelize": "^1.1.2",
+				"loud-rejection": "^1.0.0",
+				"map-obj": "^1.0.1",
+				"minimist": "^1.1.3",
+				"normalize-package-data": "^2.3.4",
+				"object-assign": "^4.0.1",
+				"read-pkg-up": "^1.0.1",
+				"redent": "^1.0.0",
+				"trim-newlines": "^1.0.0"
+			},
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
+		"node_modules/meow/node_modules/find-up": {
+			"version": "1.1.2",
+			"resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+			"integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+			"dependencies": {
+				"path-exists": "^2.0.0",
+				"pinkie-promise": "^2.0.0"
+			},
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
+		"node_modules/meow/node_modules/path-exists": {
+			"version": "2.1.0",
+			"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+			"integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+			"dependencies": {
+				"pinkie-promise": "^2.0.0"
+			},
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
+		"node_modules/meow/node_modules/path-type": {
+			"version": "1.1.0",
+			"resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+			"integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+			"dependencies": {
+				"graceful-fs": "^4.1.2",
+				"pify": "^2.0.0",
+				"pinkie-promise": "^2.0.0"
+			},
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
+		"node_modules/meow/node_modules/pify": {
+			"version": "2.3.0",
+			"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+			"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
+		"node_modules/meow/node_modules/read-pkg": {
+			"version": "1.1.0",
+			"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+			"integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+			"dependencies": {
+				"load-json-file": "^1.0.0",
+				"normalize-package-data": "^2.3.2",
+				"path-type": "^1.0.0"
+			},
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
+		"node_modules/meow/node_modules/read-pkg-up": {
+			"version": "1.0.1",
+			"resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+			"integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+			"dependencies": {
+				"find-up": "^1.0.0",
+				"read-pkg": "^1.0.0"
+			},
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
 		"node_modules/merge-descriptors": {
 			"version": "1.0.1",
 			"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
@@ -11262,7 +11765,6 @@
 			"version": "2.5.0",
 			"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
 			"integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
-			"dev": true,
 			"dependencies": {
 				"hosted-git-info": "^2.1.4",
 				"resolve": "^1.10.0",
@@ -11591,6 +12093,14 @@
 				"node": ">= 0.8.0"
 			}
 		},
+		"node_modules/options": {
+			"version": "0.0.6",
+			"resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz",
+			"integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=",
+			"engines": {
+				"node": ">=0.4.0"
+			}
+		},
 		"node_modules/os-browserify": {
 			"version": "0.3.0",
 			"resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
@@ -11953,8 +12463,7 @@
 		"node_modules/path-parse": {
 			"version": "1.0.7",
 			"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-			"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
-			"dev": true
+			"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
 		},
 		"node_modules/path-platform": {
 			"version": "0.11.15",
@@ -12051,6 +12560,25 @@
 				"node": ">=4"
 			}
 		},
+		"node_modules/pinkie": {
+			"version": "2.0.4",
+			"resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+			"integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
+		"node_modules/pinkie-promise": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+			"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+			"dependencies": {
+				"pinkie": "^2.0.0"
+			},
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
 		"node_modules/pirates": {
 			"version": "4.0.1",
 			"resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz",
@@ -12561,6 +13089,18 @@
 				"node": ">= 0.10"
 			}
 		},
+		"node_modules/redent": {
+			"version": "1.0.0",
+			"resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+			"integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+			"dependencies": {
+				"indent-string": "^2.1.0",
+				"strip-indent": "^1.0.1"
+			},
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
 		"node_modules/reflect-metadata": {
 			"version": "0.1.13",
 			"resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
@@ -12684,6 +13224,17 @@
 				"node": ">=0.10"
 			}
 		},
+		"node_modules/repeating": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+			"integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+			"dependencies": {
+				"is-finite": "^1.0.0"
+			},
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
 		"node_modules/require-directory": {
 			"version": "2.1.1",
 			"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -12715,7 +13266,6 @@
 			"version": "1.20.0",
 			"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
 			"integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
-			"dev": true,
 			"dependencies": {
 				"is-core-module": "^2.2.0",
 				"path-parse": "^1.0.6"
@@ -13691,7 +14241,6 @@
 			"version": "3.1.1",
 			"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
 			"integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
-			"dev": true,
 			"dependencies": {
 				"spdx-expression-parse": "^3.0.0",
 				"spdx-license-ids": "^3.0.0"
@@ -13700,14 +14249,12 @@
 		"node_modules/spdx-exceptions": {
 			"version": "2.3.0",
 			"resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
-			"integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
-			"dev": true
+			"integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A=="
 		},
 		"node_modules/spdx-expression-parse": {
 			"version": "3.0.1",
 			"resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
 			"integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
-			"dev": true,
 			"dependencies": {
 				"spdx-exceptions": "^2.1.0",
 				"spdx-license-ids": "^3.0.0"
@@ -13716,8 +14263,7 @@
 		"node_modules/spdx-license-ids": {
 			"version": "3.0.10",
 			"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz",
-			"integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==",
-			"dev": true
+			"integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA=="
 		},
 		"node_modules/split-string": {
 			"version": "3.1.0",
@@ -14154,6 +14700,20 @@
 				"node": ">=6"
 			}
 		},
+		"node_modules/strip-indent": {
+			"version": "1.0.1",
+			"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+			"integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+			"dependencies": {
+				"get-stdin": "^4.0.1"
+			},
+			"bin": {
+				"strip-indent": "cli.js"
+			},
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
 		"node_modules/strip-json-comments": {
 			"version": "2.0.1",
 			"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
@@ -14712,6 +15272,14 @@
 				"tree-kill": "cli.js"
 			}
 		},
+		"node_modules/trim-newlines": {
+			"version": "1.0.0",
+			"resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+			"integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
 		"node_modules/ts-node": {
 			"version": "9.1.1",
 			"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz",
@@ -15305,6 +15873,11 @@
 				"node": ">=10"
 			}
 		},
+		"node_modules/ultron": {
+			"version": "1.0.2",
+			"resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz",
+			"integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po="
+		},
 		"node_modules/umd": {
 			"version": "3.0.3",
 			"resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz",
@@ -15612,7 +16185,6 @@
 			"version": "3.0.4",
 			"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
 			"integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
-			"dev": true,
 			"dependencies": {
 				"spdx-correct": "^3.0.0",
 				"spdx-expression-parse": "^3.0.0"
@@ -15823,6 +16395,81 @@
 				}
 			}
 		},
+		"node_modules/wsc": {
+			"version": "0.3.0",
+			"resolved": "https://registry.npmjs.org/wsc/-/wsc-0.3.0.tgz",
+			"integrity": "sha1-1IbqG5e+P7HhOFlBmIqgen5SiBA=",
+			"dependencies": {
+				"chalk": "^1.1.3",
+				"meow": "^3.7.0",
+				"ws": "^1.1.1"
+			},
+			"bin": {
+				"wsc": "wsc"
+			},
+			"engines": {
+				"node": ">=4"
+			}
+		},
+		"node_modules/wsc/node_modules/ansi-regex": {
+			"version": "2.1.1",
+			"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+			"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
+		"node_modules/wsc/node_modules/ansi-styles": {
+			"version": "2.2.1",
+			"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+			"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
+		"node_modules/wsc/node_modules/chalk": {
+			"version": "1.1.3",
+			"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+			"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+			"dependencies": {
+				"ansi-styles": "^2.2.1",
+				"escape-string-regexp": "^1.0.2",
+				"has-ansi": "^2.0.0",
+				"strip-ansi": "^3.0.0",
+				"supports-color": "^2.0.0"
+			},
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
+		"node_modules/wsc/node_modules/strip-ansi": {
+			"version": "3.0.1",
+			"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+			"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+			"dependencies": {
+				"ansi-regex": "^2.0.0"
+			},
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
+		"node_modules/wsc/node_modules/supports-color": {
+			"version": "2.0.0",
+			"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+			"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+			"engines": {
+				"node": ">=0.8.0"
+			}
+		},
+		"node_modules/wsc/node_modules/ws": {
+			"version": "1.1.5",
+			"resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz",
+			"integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
+			"dependencies": {
+				"options": ">=0.0.5",
+				"ultron": "1.0.x"
+			}
+		},
 		"node_modules/xml-name-validator": {
 			"version": "3.0.0",
 			"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
@@ -17277,6 +17924,8 @@
 		"@fosscord/util": {
 			"version": "file:../util",
 			"requires": {
+				"@swc/cli": "^0.1.51",
+				"@swc/core": "^1.2.93",
 				"@types/amqplib": "^0.8.1",
 				"@types/jsonwebtoken": "^8.5.0",
 				"@types/mongoose-autopopulate": "^0.10.1",
@@ -17299,6 +17948,7 @@
 				"pg": "^8.7.1",
 				"reflect-metadata": "^0.1.13",
 				"sqlite3": "^5.0.2",
+				"swc": "^1.0.11",
 				"tsconfig-paths": "^3.11.0",
 				"typeorm": "^0.2.37",
 				"typescript": "^4.4.2",
@@ -18021,6 +18671,21 @@
 				}
 			}
 		},
+		"@napi-rs/triples": {
+			"version": "1.0.3",
+			"resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz",
+			"integrity": "sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA==",
+			"dev": true
+		},
+		"@node-rs/helper": {
+			"version": "1.2.1",
+			"resolved": "https://registry.npmjs.org/@node-rs/helper/-/helper-1.2.1.tgz",
+			"integrity": "sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg==",
+			"dev": true,
+			"requires": {
+				"@napi-rs/triples": "^1.0.3"
+			}
+		},
 		"@nodelib/fs.scandir": {
 			"version": "2.1.5",
 			"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -18070,6 +18735,131 @@
 			"resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.3.tgz",
 			"integrity": "sha512-O3uyB/JbkAEMZaP3YqyHH7TMnex7tWyCbCI4EfJdOCoN6HIhqdJBWTM6aCCiWQ/5f5wxjgU735QAIpJbjDvmzg=="
 		},
+		"@swc/cli": {
+			"version": "0.1.51",
+			"resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.1.51.tgz",
+			"integrity": "sha512-7eqZGpkI4QOYfF+9FV4xpT/V/LSRDs5OMJcm4Z46JnPMvv+sxumAFdCe1hHRzHgnzwis9OtjI8Tt3Srf9JudQw==",
+			"dev": true,
+			"requires": {
+				"commander": "^7.1.0",
+				"fast-glob": "^3.2.5",
+				"slash": "3.0.0",
+				"source-map": "^0.7.3"
+			},
+			"dependencies": {
+				"source-map": {
+					"version": "0.7.3",
+					"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+					"integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+					"dev": true
+				}
+			}
+		},
+		"@swc/core": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core/-/core-1.2.93.tgz",
+			"integrity": "sha512-Lx9I+9GfUl2Mb7r23MVbSkc+NZE0+xZ4Xh787D1b82KMeFLz7QgYe4cNM9SzTjV/VlSQyNTVlzjES7ZThIUvtA==",
+			"dev": true,
+			"requires": {
+				"@node-rs/helper": "^1.0.0",
+				"@swc/core-android-arm64": "1.2.93",
+				"@swc/core-darwin-arm64": "1.2.93",
+				"@swc/core-darwin-x64": "1.2.93",
+				"@swc/core-freebsd-x64": "1.2.93",
+				"@swc/core-linux-arm-gnueabihf": "1.2.93",
+				"@swc/core-linux-arm64-gnu": "1.2.93",
+				"@swc/core-linux-arm64-musl": "1.2.93",
+				"@swc/core-linux-x64-gnu": "1.2.93",
+				"@swc/core-linux-x64-musl": "1.2.93",
+				"@swc/core-win32-arm64-msvc": "1.2.93",
+				"@swc/core-win32-ia32-msvc": "1.2.93",
+				"@swc/core-win32-x64-msvc": "1.2.93"
+			}
+		},
+		"@swc/core-android-arm64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.93.tgz",
+			"integrity": "sha512-3F5A7QNR5+MI64W20QBADU0Z6knt8kJOxIoKw4Vuk7JQ6k0nnMemio3LtusHgAVZLXq0wMILZ4kv/+qnRzWb7A==",
+			"dev": true,
+			"optional": true
+		},
+		"@swc/core-darwin-arm64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.93.tgz",
+			"integrity": "sha512-a8tu9WCtnjiuKTscUu8N9z/vVuIldwo5US4WfYi2dtQNgf21n1ZKxwvsZzRz6mEC86zVE0k9pmslwEtMuuCJog==",
+			"dev": true,
+			"optional": true
+		},
+		"@swc/core-darwin-x64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.93.tgz",
+			"integrity": "sha512-ga8bpjauZYHWMjuPKcqOZFSgStvveMc/J7yqIlr9sF2pOr7Rt/MKLO4Ups95A2Aay90aCF9cPKQDtX71PmdlVw==",
+			"dev": true,
+			"optional": true
+		},
+		"@swc/core-freebsd-x64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.93.tgz",
+			"integrity": "sha512-qDBEZqHh6C2AMaxjdm/Am8MUwN94RS3na9VLYDMGUkgs2yvnSADfx7JOyZEJT1Ot7FZEuyGXcSfomUzNCU/5kw==",
+			"dev": true,
+			"optional": true
+		},
+		"@swc/core-linux-arm-gnueabihf": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.93.tgz",
+			"integrity": "sha512-KlJsXOcZpuHXU8hMVDXfSyBQ9fdUpzwDV1JKpfIehG+P2kRdCbiN3irdv6kd3rVH/PUjiCSIP5SvpCMvwJzDNg==",
+			"dev": true,
+			"optional": true
+		},
+		"@swc/core-linux-arm64-gnu": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.93.tgz",
+			"integrity": "sha512-UdQX3Tt7xLUgC4AFROw9wRaRA2vDHNnNFURkV//i/nsGay12JANBvXA/FOMge6yx32tPvcNUSRHnb3MYep0kzg==",
+			"dev": true,
+			"optional": true
+		},
+		"@swc/core-linux-arm64-musl": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.93.tgz",
+			"integrity": "sha512-O5W/cjnkP9nuKZsx03/DxVO+ILh5BUmfCjFzScXGuLMIZrBLyzBstcaSaZOxfd04wPEqael4VZiAGmWXornZ1g==",
+			"dev": true,
+			"optional": true
+		},
+		"@swc/core-linux-x64-gnu": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.93.tgz",
+			"integrity": "sha512-fDELNkklMzEI8KDr51XGajP7TVbZCLYkiPGAgbGadmkMFvlgJfzf1Qt1VzjGk5lTYdQO40vCe7u4xEpfdq6lLQ==",
+			"dev": true,
+			"optional": true
+		},
+		"@swc/core-linux-x64-musl": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.93.tgz",
+			"integrity": "sha512-ZdEi04dfj96XDjT+J2k/J/m3WoHqlfwz93dTlpWdlPvrSNtsMg2oorm0Zynx/x2Ghe3w1hJu3HdMaJF2UY3Ttw==",
+			"dev": true,
+			"optional": true
+		},
+		"@swc/core-win32-arm64-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.93.tgz",
+			"integrity": "sha512-NbIyBpOCEqxa+s3x8ijQGBOxQd5P63icf+6SK6MkO5E2zTgiR4g6ziihKCdhF9tJ6M4c0DHL/RqIV5SS9UX01w==",
+			"dev": true,
+			"optional": true
+		},
+		"@swc/core-win32-ia32-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.93.tgz",
+			"integrity": "sha512-TrRfHzGBQL1fjTahfBLDYcjLx28tH7pN5co5fJmYgASey8McVWL6eW/q/9fxvZqOVyj2SF9wvLDYKm0IWz4f+g==",
+			"dev": true,
+			"optional": true
+		},
+		"@swc/core-win32-x64-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.93.tgz",
+			"integrity": "sha512-VsqLVB7ytNYqEC21amMswC2c84NCVNW6KLhS9XeO6Vz1+7wx8uPu1rAo14oBu5/3yhv7/K3wgfMqJMKHZtXPMQ==",
+			"dev": true,
+			"optional": true
+		},
 		"@tootallnate/once": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
@@ -18865,6 +19655,11 @@
 			"integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
 			"dev": true
 		},
+		"array-find-index": {
+			"version": "1.0.2",
+			"resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+			"integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E="
+		},
 		"array-flatten": {
 			"version": "1.1.1",
 			"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
@@ -19788,6 +20583,22 @@
 			"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
 			"dev": true
 		},
+		"camelcase-keys": {
+			"version": "2.1.0",
+			"resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+			"integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+			"requires": {
+				"camelcase": "^2.0.0",
+				"map-obj": "^1.0.0"
+			},
+			"dependencies": {
+				"camelcase": {
+					"version": "2.1.1",
+					"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+					"integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8="
+				}
+			}
+		},
 		"caniuse-lite": {
 			"version": "1.0.30001257",
 			"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001257.tgz",
@@ -20503,6 +21314,14 @@
 				}
 			}
 		},
+		"currently-unhandled": {
+			"version": "0.4.1",
+			"resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+			"integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+			"requires": {
+				"array-find-index": "^1.0.1"
+			}
+		},
 		"d3-array": {
 			"version": "2.12.1",
 			"resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
@@ -20716,8 +21535,7 @@
 		"decamelize": {
 			"version": "1.2.0",
 			"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-			"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-			"dev": true
+			"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
 		},
 		"decimal.js": {
 			"version": "10.3.1",
@@ -21154,7 +21972,6 @@
 			"version": "1.3.2",
 			"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
 			"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
-			"dev": true,
 			"requires": {
 				"is-arrayish": "^0.2.1"
 			}
@@ -21802,6 +22619,11 @@
 			"integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
 			"dev": true
 		},
+		"get-stdin": {
+			"version": "4.0.1",
+			"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+			"integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4="
+		},
 		"get-stream": {
 			"version": "5.2.0",
 			"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
@@ -22030,8 +22852,7 @@
 		"hosted-git-info": {
 			"version": "2.8.9",
 			"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
-			"integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
-			"dev": true
+			"integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw=="
 		},
 		"hsl-to-rgb-for-reals": {
 			"version": "1.1.1",
@@ -22203,6 +23024,14 @@
 			"integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
 			"dev": true
 		},
+		"indent-string": {
+			"version": "2.1.0",
+			"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+			"integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+			"requires": {
+				"repeating": "^2.0.0"
+			}
+		},
 		"inflight": {
 			"version": "1.0.6",
 			"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@@ -22279,8 +23108,7 @@
 		"is-arrayish": {
 			"version": "0.2.1",
 			"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
-			"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
-			"dev": true
+			"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
 		},
 		"is-binary-path": {
 			"version": "2.1.0",
@@ -22315,7 +23143,6 @@
 			"version": "2.6.0",
 			"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz",
 			"integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==",
-			"dev": true,
 			"requires": {
 				"has": "^1.0.3"
 			}
@@ -22360,6 +23187,11 @@
 			"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
 			"dev": true
 		},
+		"is-finite": {
+			"version": "1.1.0",
+			"resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
+			"integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w=="
+		},
 		"is-fullwidth-code-point": {
 			"version": "1.0.0",
 			"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
@@ -22420,6 +23252,11 @@
 			"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
 			"dev": true
 		},
+		"is-utf8": {
+			"version": "0.2.1",
+			"resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+			"integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI="
+		},
 		"is-windows": {
 			"version": "1.0.2",
 			"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
@@ -24248,6 +25085,41 @@
 			"integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
 			"dev": true
 		},
+		"load-json-file": {
+			"version": "1.1.0",
+			"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+			"integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+			"requires": {
+				"graceful-fs": "^4.1.2",
+				"parse-json": "^2.2.0",
+				"pify": "^2.0.0",
+				"pinkie-promise": "^2.0.0",
+				"strip-bom": "^2.0.0"
+			},
+			"dependencies": {
+				"parse-json": {
+					"version": "2.2.0",
+					"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+					"integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+					"requires": {
+						"error-ex": "^1.2.0"
+					}
+				},
+				"pify": {
+					"version": "2.3.0",
+					"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+					"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
+				},
+				"strip-bom": {
+					"version": "2.0.0",
+					"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+					"integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+					"requires": {
+						"is-utf8": "^0.2.0"
+					}
+				}
+			}
+		},
 		"locate-path": {
 			"version": "5.0.0",
 			"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
@@ -24333,6 +25205,15 @@
 			"integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=",
 			"dev": true
 		},
+		"loud-rejection": {
+			"version": "1.6.0",
+			"resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+			"integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+			"requires": {
+				"currently-unhandled": "^0.4.1",
+				"signal-exit": "^3.0.0"
+			}
+		},
 		"lower-case": {
 			"version": "1.1.4",
 			"resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
@@ -24386,6 +25267,11 @@
 			"integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
 			"dev": true
 		},
+		"map-obj": {
+			"version": "1.0.1",
+			"resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+			"integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0="
+		},
 		"map-visit": {
 			"version": "1.0.0",
 			"resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
@@ -24417,6 +25303,76 @@
 			"integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
 			"devOptional": true
 		},
+		"meow": {
+			"version": "3.7.0",
+			"resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+			"integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+			"requires": {
+				"camelcase-keys": "^2.0.0",
+				"decamelize": "^1.1.2",
+				"loud-rejection": "^1.0.0",
+				"map-obj": "^1.0.1",
+				"minimist": "^1.1.3",
+				"normalize-package-data": "^2.3.4",
+				"object-assign": "^4.0.1",
+				"read-pkg-up": "^1.0.1",
+				"redent": "^1.0.0",
+				"trim-newlines": "^1.0.0"
+			},
+			"dependencies": {
+				"find-up": {
+					"version": "1.1.2",
+					"resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+					"integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+					"requires": {
+						"path-exists": "^2.0.0",
+						"pinkie-promise": "^2.0.0"
+					}
+				},
+				"path-exists": {
+					"version": "2.1.0",
+					"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+					"integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+					"requires": {
+						"pinkie-promise": "^2.0.0"
+					}
+				},
+				"path-type": {
+					"version": "1.1.0",
+					"resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+					"integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+					"requires": {
+						"graceful-fs": "^4.1.2",
+						"pify": "^2.0.0",
+						"pinkie-promise": "^2.0.0"
+					}
+				},
+				"pify": {
+					"version": "2.3.0",
+					"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+					"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
+				},
+				"read-pkg": {
+					"version": "1.1.0",
+					"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+					"integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+					"requires": {
+						"load-json-file": "^1.0.0",
+						"normalize-package-data": "^2.3.2",
+						"path-type": "^1.0.0"
+					}
+				},
+				"read-pkg-up": {
+					"version": "1.0.1",
+					"resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+					"integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+					"requires": {
+						"find-up": "^1.0.0",
+						"read-pkg": "^1.0.0"
+					}
+				}
+			}
+		},
 		"merge-descriptors": {
 			"version": "1.0.1",
 			"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
@@ -25044,7 +26000,6 @@
 			"version": "2.5.0",
 			"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
 			"integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
-			"dev": true,
 			"requires": {
 				"hosted-git-info": "^2.1.4",
 				"resolve": "^1.10.0",
@@ -25292,6 +26247,11 @@
 				"word-wrap": "~1.2.3"
 			}
 		},
+		"options": {
+			"version": "0.0.6",
+			"resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz",
+			"integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8="
+		},
 		"os-browserify": {
 			"version": "0.3.0",
 			"resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
@@ -25566,8 +26526,7 @@
 		"path-parse": {
 			"version": "1.0.7",
 			"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-			"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
-			"dev": true
+			"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
 		},
 		"path-platform": {
 			"version": "0.11.15",
@@ -25644,6 +26603,19 @@
 			"integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
 			"dev": true
 		},
+		"pinkie": {
+			"version": "2.0.4",
+			"resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+			"integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA="
+		},
+		"pinkie-promise": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+			"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+			"requires": {
+				"pinkie": "^2.0.0"
+			}
+		},
 		"pirates": {
 			"version": "4.0.1",
 			"resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz",
@@ -26075,6 +27047,15 @@
 				"resolve": "^1.1.6"
 			}
 		},
+		"redent": {
+			"version": "1.0.0",
+			"resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+			"integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+			"requires": {
+				"indent-string": "^2.1.0",
+				"strip-indent": "^1.0.1"
+			}
+		},
 		"reflect-metadata": {
 			"version": "0.1.13",
 			"resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
@@ -26179,6 +27160,14 @@
 			"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
 			"dev": true
 		},
+		"repeating": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+			"integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+			"requires": {
+				"is-finite": "^1.0.0"
+			}
+		},
 		"require-directory": {
 			"version": "2.1.1",
 			"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -26204,7 +27193,6 @@
 			"version": "1.20.0",
 			"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
 			"integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
-			"dev": true,
 			"requires": {
 				"is-core-module": "^2.2.0",
 				"path-parse": "^1.0.6"
@@ -26981,7 +27969,6 @@
 			"version": "3.1.1",
 			"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
 			"integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
-			"dev": true,
 			"requires": {
 				"spdx-expression-parse": "^3.0.0",
 				"spdx-license-ids": "^3.0.0"
@@ -26990,14 +27977,12 @@
 		"spdx-exceptions": {
 			"version": "2.3.0",
 			"resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
-			"integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
-			"dev": true
+			"integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A=="
 		},
 		"spdx-expression-parse": {
 			"version": "3.0.1",
 			"resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
 			"integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
-			"dev": true,
 			"requires": {
 				"spdx-exceptions": "^2.1.0",
 				"spdx-license-ids": "^3.0.0"
@@ -27006,8 +27991,7 @@
 		"spdx-license-ids": {
 			"version": "3.0.10",
 			"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz",
-			"integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==",
-			"dev": true
+			"integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA=="
 		},
 		"split-string": {
 			"version": "3.1.0",
@@ -27395,6 +28379,14 @@
 			"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
 			"dev": true
 		},
+		"strip-indent": {
+			"version": "1.0.1",
+			"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+			"integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+			"requires": {
+				"get-stdin": "^4.0.1"
+			}
+		},
 		"strip-json-comments": {
 			"version": "2.0.1",
 			"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
@@ -27833,6 +28825,11 @@
 			"integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
 			"dev": true
 		},
+		"trim-newlines": {
+			"version": "1.0.0",
+			"resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+			"integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM="
+		},
 		"ts-node": {
 			"version": "9.1.1",
 			"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz",
@@ -28220,6 +29217,11 @@
 				}
 			}
 		},
+		"ultron": {
+			"version": "1.0.2",
+			"resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz",
+			"integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po="
+		},
 		"umd": {
 			"version": "3.0.3",
 			"resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz",
@@ -28480,7 +29482,6 @@
 			"version": "3.0.4",
 			"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
 			"integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
-			"dev": true,
 			"requires": {
 				"spdx-correct": "^3.0.0",
 				"spdx-expression-parse": "^3.0.0"
@@ -28651,6 +29652,62 @@
 			"dev": true,
 			"requires": {}
 		},
+		"wsc": {
+			"version": "0.3.0",
+			"resolved": "https://registry.npmjs.org/wsc/-/wsc-0.3.0.tgz",
+			"integrity": "sha1-1IbqG5e+P7HhOFlBmIqgen5SiBA=",
+			"requires": {
+				"chalk": "^1.1.3",
+				"meow": "^3.7.0",
+				"ws": "^1.1.1"
+			},
+			"dependencies": {
+				"ansi-regex": {
+					"version": "2.1.1",
+					"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+					"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+				},
+				"ansi-styles": {
+					"version": "2.2.1",
+					"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+					"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
+				},
+				"chalk": {
+					"version": "1.1.3",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+					"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+					"requires": {
+						"ansi-styles": "^2.2.1",
+						"escape-string-regexp": "^1.0.2",
+						"has-ansi": "^2.0.0",
+						"strip-ansi": "^3.0.0",
+						"supports-color": "^2.0.0"
+					}
+				},
+				"strip-ansi": {
+					"version": "3.0.1",
+					"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+					"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+					"requires": {
+						"ansi-regex": "^2.0.0"
+					}
+				},
+				"supports-color": {
+					"version": "2.0.0",
+					"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+					"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+				},
+				"ws": {
+					"version": "1.1.5",
+					"resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz",
+					"integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
+					"requires": {
+						"options": ">=0.0.5",
+						"ultron": "1.0.x"
+					}
+				}
+			}
+		},
 		"xml-name-validator": {
 			"version": "3.0.0",
 			"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
diff --git a/api/package.json b/api/package.json
index c2a75a8f..37721728 100644
--- a/api/package.json
+++ b/api/package.json
@@ -40,6 +40,8 @@
 		"@babel/core": "^7.15.5",
 		"@babel/preset-env": "^7.15.6",
 		"@babel/preset-typescript": "^7.15.0",
+		"@swc/cli": "^0.1.51",
+		"@swc/core": "^1.2.93",
 		"@types/amqplib": "^0.8.1",
 		"@types/bcrypt": "^5.0.0",
 		"@types/express": "^4.17.9",
@@ -102,7 +104,8 @@
 		"patch-package": "^6.4.7",
 		"supertest": "^6.1.6",
 		"tsconfig-paths": "^3.11.0",
-		"typeorm": "^0.2.37"
+		"typeorm": "^0.2.37",
+		"wsc": "^0.3.0"
 	},
 	"jest": {
 		"setupFiles": [
diff --git a/api/tsconfig-docker.json b/api/tsconfig-docker.json
index 5d1f0a3c..1713dd64 100644
--- a/api/tsconfig-docker.json
+++ b/api/tsconfig-docker.json
@@ -7,7 +7,7 @@
 		// "incremental": true,                   /* Enable incremental compilation */
 		"target": "ESNext" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */,
 		"module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */,
-		"lib": ["ES2020"] /* Specify library files to be included in the compilation. */,
+		"lib": ["ES2021"] /* Specify library files to be included in the compilation. */,
 		"allowJs": true /* Allow javascript files to be compiled. */,
 		"checkJs": true /* Report errors in .js files. */,
 		// "jsx": "preserve",                     /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
diff --git a/api/tsconfig.json b/api/tsconfig.json
index 0169642d..0bbd615a 100644
--- a/api/tsconfig.json
+++ b/api/tsconfig.json
@@ -7,7 +7,7 @@
 		// "incremental": true,                   /* Enable incremental compilation */
 		"target": "ESNext" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */,
 		"module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */,
-		"lib": ["ES2020"] /* Specify library files to be included in the compilation. */,
+		"lib": ["ES2021"] /* Specify library files to be included in the compilation. */,
 		"allowJs": true /* Allow javascript files to be compiled. */,
 		"checkJs": true /* Report errors in .js files. */,
 		// "jsx": "preserve",                     /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
diff --git a/bundle/.swcrc b/bundle/.swcrc
new file mode 100644
index 00000000..dcf4af8e
--- /dev/null
+++ b/bundle/.swcrc
@@ -0,0 +1,23 @@
+{
+    "jsc": {
+      "parser": {
+        "syntax": "ecmascript",
+        "jsx": false,
+        "dynamicImport": false,
+        "privateMethod": false,
+        "functionBind": false,
+        "exportDefaultFrom": false,
+        "exportNamespaceFrom": false,
+        "decorators": false,
+        "decoratorsBeforeExport": false,
+        "topLevelAwait": false,
+        "importMeta": false
+      },
+      "transform": null,
+      "target": "es2021",
+      "loose": false,
+      "externalHelpers": false,
+      // Requires v1.2.50 or upper and requires target to be es2016 or upper.
+      "keepClassNames": false
+    }
+  }
\ No newline at end of file
diff --git a/bundle/package-lock.json b/bundle/package-lock.json
index ea4fb9e2..dffe4629 100644
--- a/bundle/package-lock.json
+++ b/bundle/package-lock.json
@@ -20,9 +20,13 @@
 				"missing-native-js-functions": "^1.2.17",
 				"nanocolors": "^0.2.12",
 				"node-os-utils": "^1.3.5",
+				"npm-run-all": "^4.1.5",
+				"swc": "^1.0.11",
 				"tsconfig-paths": "^3.11.0"
 			},
 			"devDependencies": {
+				"@swc/cli": "^0.1.51",
+				"@swc/core": "^1.2.93",
 				"@types/amqplib": "^0.8.1",
 				"@types/async-exit-hook": "^2.0.0",
 				"@types/bcrypt": "^5.0.0",
@@ -81,12 +85,15 @@
 				"patch-package": "^6.4.7",
 				"supertest": "^6.1.6",
 				"tsconfig-paths": "^3.11.0",
-				"typeorm": "^0.2.37"
+				"typeorm": "^0.2.37",
+				"wsc": "^0.3.0"
 			},
 			"devDependencies": {
 				"@babel/core": "^7.15.5",
 				"@babel/preset-env": "^7.15.6",
 				"@babel/preset-typescript": "^7.15.0",
+				"@swc/cli": "^0.1.51",
+				"@swc/core": "^1.2.93",
 				"@types/amqplib": "^0.8.1",
 				"@types/bcrypt": "^5.0.0",
 				"@types/express": "^4.17.9",
@@ -143,10 +150,13 @@
 				"nanocolors": "^0.2.12",
 				"node-fetch": "^2.6.1",
 				"supertest": "^6.1.6",
+				"swc": "^1.0.11",
 				"typescript": "^4.1.2",
 				"uuid": "^8.3.2"
 			},
 			"devDependencies": {
+				"@swc/cli": "^0.1.51",
+				"@swc/core": "^1.2.93",
 				"@types/amqplib": "^0.8.1",
 				"@types/body-parser": "^1.19.0",
 				"@types/btoa": "^1.2.3",
@@ -180,11 +190,14 @@
 				"missing-native-js-functions": "^1.2.17",
 				"mongoose-autopopulate": "^0.12.3",
 				"node-fetch": "^2.6.1",
+				"swc": "^1.0.11",
 				"typeorm": "^0.2.37",
 				"uuid": "^8.3.2",
 				"ws": "^7.4.2"
 			},
 			"devDependencies": {
+				"@swc/cli": "^0.1.51",
+				"@swc/core": "^1.2.93",
 				"@types/amqplib": "^0.8.1",
 				"@types/jsonwebtoken": "^8.5.0",
 				"@types/mongodb": "^3.6.9",
@@ -224,12 +237,15 @@
 				"pg": "^8.7.1",
 				"reflect-metadata": "^0.1.13",
 				"sqlite3": "^5.0.2",
+				"swc": "^1.0.11",
 				"tsconfig-paths": "^3.11.0",
 				"typeorm": "^0.2.37",
 				"typescript": "^4.4.2",
 				"typescript-json-schema": "^0.50.1"
 			},
 			"devDependencies": {
+				"@swc/cli": "^0.1.51",
+				"@swc/core": "^1.2.93",
 				"@types/amqplib": "^0.8.1",
 				"@types/jsonwebtoken": "^8.5.0",
 				"@types/mongoose-autopopulate": "^0.10.1",
@@ -288,6 +304,287 @@
 			"resolved": "../util",
 			"link": true
 		},
+		"node_modules/@napi-rs/triples": {
+			"version": "1.0.3",
+			"resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz",
+			"integrity": "sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA=="
+		},
+		"node_modules/@node-rs/helper": {
+			"version": "1.2.1",
+			"resolved": "https://registry.npmjs.org/@node-rs/helper/-/helper-1.2.1.tgz",
+			"integrity": "sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg==",
+			"dependencies": {
+				"@napi-rs/triples": "^1.0.3"
+			}
+		},
+		"node_modules/@nodelib/fs.scandir": {
+			"version": "2.1.5",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+			"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+			"dependencies": {
+				"@nodelib/fs.stat": "2.0.5",
+				"run-parallel": "^1.1.9"
+			},
+			"engines": {
+				"node": ">= 8"
+			}
+		},
+		"node_modules/@nodelib/fs.stat": {
+			"version": "2.0.5",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+			"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+			"engines": {
+				"node": ">= 8"
+			}
+		},
+		"node_modules/@nodelib/fs.walk": {
+			"version": "1.2.8",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+			"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+			"dependencies": {
+				"@nodelib/fs.scandir": "2.1.5",
+				"fastq": "^1.6.0"
+			},
+			"engines": {
+				"node": ">= 8"
+			}
+		},
+		"node_modules/@swc/cli": {
+			"version": "0.1.51",
+			"resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.1.51.tgz",
+			"integrity": "sha512-7eqZGpkI4QOYfF+9FV4xpT/V/LSRDs5OMJcm4Z46JnPMvv+sxumAFdCe1hHRzHgnzwis9OtjI8Tt3Srf9JudQw==",
+			"dependencies": {
+				"commander": "^7.1.0",
+				"fast-glob": "^3.2.5",
+				"slash": "3.0.0",
+				"source-map": "^0.7.3"
+			},
+			"bin": {
+				"spack": "bin/spack.js",
+				"swc": "bin/swc.js"
+			},
+			"engines": {
+				"node": ">= 12.13"
+			},
+			"peerDependencies": {
+				"@swc/core": "^1.2.66",
+				"chokidar": "^3.5.1"
+			},
+			"peerDependenciesMeta": {
+				"chokidar": {
+					"optional": true
+				}
+			}
+		},
+		"node_modules/@swc/core": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core/-/core-1.2.93.tgz",
+			"integrity": "sha512-Lx9I+9GfUl2Mb7r23MVbSkc+NZE0+xZ4Xh787D1b82KMeFLz7QgYe4cNM9SzTjV/VlSQyNTVlzjES7ZThIUvtA==",
+			"dependencies": {
+				"@node-rs/helper": "^1.0.0"
+			},
+			"engines": {
+				"node": ">=10"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/swc"
+			},
+			"optionalDependencies": {
+				"@swc/core-android-arm64": "1.2.93",
+				"@swc/core-darwin-arm64": "1.2.93",
+				"@swc/core-darwin-x64": "1.2.93",
+				"@swc/core-freebsd-x64": "1.2.93",
+				"@swc/core-linux-arm-gnueabihf": "1.2.93",
+				"@swc/core-linux-arm64-gnu": "1.2.93",
+				"@swc/core-linux-arm64-musl": "1.2.93",
+				"@swc/core-linux-x64-gnu": "1.2.93",
+				"@swc/core-linux-x64-musl": "1.2.93",
+				"@swc/core-win32-arm64-msvc": "1.2.93",
+				"@swc/core-win32-ia32-msvc": "1.2.93",
+				"@swc/core-win32-x64-msvc": "1.2.93"
+			}
+		},
+		"node_modules/@swc/core-android-arm64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.93.tgz",
+			"integrity": "sha512-3F5A7QNR5+MI64W20QBADU0Z6knt8kJOxIoKw4Vuk7JQ6k0nnMemio3LtusHgAVZLXq0wMILZ4kv/+qnRzWb7A==",
+			"cpu": [
+				"arm64"
+			],
+			"optional": true,
+			"os": [
+				"android"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-darwin-arm64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.93.tgz",
+			"integrity": "sha512-a8tu9WCtnjiuKTscUu8N9z/vVuIldwo5US4WfYi2dtQNgf21n1ZKxwvsZzRz6mEC86zVE0k9pmslwEtMuuCJog==",
+			"cpu": [
+				"arm64"
+			],
+			"optional": true,
+			"os": [
+				"darwin"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-darwin-x64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.93.tgz",
+			"integrity": "sha512-ga8bpjauZYHWMjuPKcqOZFSgStvveMc/J7yqIlr9sF2pOr7Rt/MKLO4Ups95A2Aay90aCF9cPKQDtX71PmdlVw==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"darwin"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-freebsd-x64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.93.tgz",
+			"integrity": "sha512-qDBEZqHh6C2AMaxjdm/Am8MUwN94RS3na9VLYDMGUkgs2yvnSADfx7JOyZEJT1Ot7FZEuyGXcSfomUzNCU/5kw==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"freebsd"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-linux-arm-gnueabihf": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.93.tgz",
+			"integrity": "sha512-KlJsXOcZpuHXU8hMVDXfSyBQ9fdUpzwDV1JKpfIehG+P2kRdCbiN3irdv6kd3rVH/PUjiCSIP5SvpCMvwJzDNg==",
+			"cpu": [
+				"arm"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-linux-arm64-gnu": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.93.tgz",
+			"integrity": "sha512-UdQX3Tt7xLUgC4AFROw9wRaRA2vDHNnNFURkV//i/nsGay12JANBvXA/FOMge6yx32tPvcNUSRHnb3MYep0kzg==",
+			"cpu": [
+				"arm64"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-linux-arm64-musl": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.93.tgz",
+			"integrity": "sha512-O5W/cjnkP9nuKZsx03/DxVO+ILh5BUmfCjFzScXGuLMIZrBLyzBstcaSaZOxfd04wPEqael4VZiAGmWXornZ1g==",
+			"cpu": [
+				"arm64"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-linux-x64-gnu": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.93.tgz",
+			"integrity": "sha512-fDELNkklMzEI8KDr51XGajP7TVbZCLYkiPGAgbGadmkMFvlgJfzf1Qt1VzjGk5lTYdQO40vCe7u4xEpfdq6lLQ==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-linux-x64-musl": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.93.tgz",
+			"integrity": "sha512-ZdEi04dfj96XDjT+J2k/J/m3WoHqlfwz93dTlpWdlPvrSNtsMg2oorm0Zynx/x2Ghe3w1hJu3HdMaJF2UY3Ttw==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-win32-arm64-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.93.tgz",
+			"integrity": "sha512-NbIyBpOCEqxa+s3x8ijQGBOxQd5P63icf+6SK6MkO5E2zTgiR4g6ziihKCdhF9tJ6M4c0DHL/RqIV5SS9UX01w==",
+			"cpu": [
+				"arm64"
+			],
+			"optional": true,
+			"os": [
+				"win32"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-win32-ia32-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.93.tgz",
+			"integrity": "sha512-TrRfHzGBQL1fjTahfBLDYcjLx28tH7pN5co5fJmYgASey8McVWL6eW/q/9fxvZqOVyj2SF9wvLDYKm0IWz4f+g==",
+			"cpu": [
+				"ia32"
+			],
+			"optional": true,
+			"os": [
+				"win32"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-win32-x64-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.93.tgz",
+			"integrity": "sha512-VsqLVB7ytNYqEC21amMswC2c84NCVNW6KLhS9XeO6Vz1+7wx8uPu1rAo14oBu5/3yhv7/K3wgfMqJMKHZtXPMQ==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"win32"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
 		"node_modules/@tsconfig/node10": {
 			"version": "1.0.8",
 			"resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz",
@@ -639,8 +936,7 @@
 		"node_modules/balanced-match": {
 			"version": "1.0.2",
 			"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-			"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
-			"dev": true
+			"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
 		},
 		"node_modules/base64-js": {
 			"version": "1.5.1",
@@ -686,12 +982,22 @@
 			"version": "1.1.11",
 			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
 			"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-			"dev": true,
 			"dependencies": {
 				"balanced-match": "^1.0.0",
 				"concat-map": "0.0.1"
 			}
 		},
+		"node_modules/braces": {
+			"version": "3.0.2",
+			"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+			"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+			"dependencies": {
+				"fill-range": "^7.0.1"
+			},
+			"engines": {
+				"node": ">=8"
+			}
+		},
 		"node_modules/bson": {
 			"version": "4.5.2",
 			"resolved": "https://registry.npmjs.org/bson/-/bson-4.5.2.tgz",
@@ -736,6 +1042,18 @@
 				"node": ">= 0.8"
 			}
 		},
+		"node_modules/call-bind": {
+			"version": "1.0.2",
+			"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+			"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+			"dependencies": {
+				"function-bind": "^1.1.1",
+				"get-intrinsic": "^1.0.2"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
 		"node_modules/chalk": {
 			"version": "4.1.2",
 			"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -782,11 +1100,18 @@
 				"node": ">= 0.8"
 			}
 		},
+		"node_modules/commander": {
+			"version": "7.2.0",
+			"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+			"integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+			"engines": {
+				"node": ">= 10"
+			}
+		},
 		"node_modules/concat-map": {
 			"version": "0.0.1",
 			"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-			"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
-			"dev": true
+			"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
 		},
 		"node_modules/content-disposition": {
 			"version": "0.5.3",
@@ -826,6 +1151,21 @@
 			"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
 			"dev": true
 		},
+		"node_modules/cross-spawn": {
+			"version": "6.0.5",
+			"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+			"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+			"dependencies": {
+				"nice-try": "^1.0.4",
+				"path-key": "^2.0.1",
+				"semver": "^5.5.0",
+				"shebang-command": "^1.2.0",
+				"which": "^1.2.9"
+			},
+			"engines": {
+				"node": ">=4.8"
+			}
+		},
 		"node_modules/debug": {
 			"version": "2.6.9",
 			"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -834,6 +1174,17 @@
 				"ms": "2.0.0"
 			}
 		},
+		"node_modules/define-properties": {
+			"version": "1.1.3",
+			"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+			"integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+			"dependencies": {
+				"object-keys": "^1.0.12"
+			},
+			"engines": {
+				"node": ">= 0.4"
+			}
+		},
 		"node_modules/delayed-stream": {
 			"version": "1.0.0",
 			"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -886,11 +1237,76 @@
 				"node": ">= 0.8"
 			}
 		},
+		"node_modules/error-ex": {
+			"version": "1.3.2",
+			"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+			"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+			"dependencies": {
+				"is-arrayish": "^0.2.1"
+			}
+		},
+		"node_modules/es-abstract": {
+			"version": "1.19.1",
+			"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz",
+			"integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==",
+			"dependencies": {
+				"call-bind": "^1.0.2",
+				"es-to-primitive": "^1.2.1",
+				"function-bind": "^1.1.1",
+				"get-intrinsic": "^1.1.1",
+				"get-symbol-description": "^1.0.0",
+				"has": "^1.0.3",
+				"has-symbols": "^1.0.2",
+				"internal-slot": "^1.0.3",
+				"is-callable": "^1.2.4",
+				"is-negative-zero": "^2.0.1",
+				"is-regex": "^1.1.4",
+				"is-shared-array-buffer": "^1.0.1",
+				"is-string": "^1.0.7",
+				"is-weakref": "^1.0.1",
+				"object-inspect": "^1.11.0",
+				"object-keys": "^1.1.1",
+				"object.assign": "^4.1.2",
+				"string.prototype.trimend": "^1.0.4",
+				"string.prototype.trimstart": "^1.0.4",
+				"unbox-primitive": "^1.0.1"
+			},
+			"engines": {
+				"node": ">= 0.4"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
+		"node_modules/es-to-primitive": {
+			"version": "1.2.1",
+			"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+			"integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+			"dependencies": {
+				"is-callable": "^1.1.4",
+				"is-date-object": "^1.0.1",
+				"is-symbol": "^1.0.2"
+			},
+			"engines": {
+				"node": ">= 0.4"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
 		"node_modules/escape-html": {
 			"version": "1.0.3",
 			"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
 			"integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
 		},
+		"node_modules/escape-string-regexp": {
+			"version": "1.0.5",
+			"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+			"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+			"engines": {
+				"node": ">=0.8.0"
+			}
+		},
 		"node_modules/etag": {
 			"version": "1.8.1",
 			"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
@@ -939,6 +1355,40 @@
 				"node": ">= 0.10.0"
 			}
 		},
+		"node_modules/fast-glob": {
+			"version": "3.2.7",
+			"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz",
+			"integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==",
+			"dependencies": {
+				"@nodelib/fs.stat": "^2.0.2",
+				"@nodelib/fs.walk": "^1.2.3",
+				"glob-parent": "^5.1.2",
+				"merge2": "^1.3.0",
+				"micromatch": "^4.0.4"
+			},
+			"engines": {
+				"node": ">=8"
+			}
+		},
+		"node_modules/fastq": {
+			"version": "1.13.0",
+			"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
+			"integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+			"dependencies": {
+				"reusify": "^1.0.4"
+			}
+		},
+		"node_modules/fill-range": {
+			"version": "7.0.1",
+			"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+			"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+			"dependencies": {
+				"to-regex-range": "^5.0.1"
+			},
+			"engines": {
+				"node": ">=8"
+			}
+		},
 		"node_modules/finalhandler": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
@@ -995,8 +1445,35 @@
 		"node_modules/function-bind": {
 			"version": "1.1.1",
 			"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-			"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
-			"dev": true
+			"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+		},
+		"node_modules/get-intrinsic": {
+			"version": "1.1.1",
+			"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
+			"integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
+			"dependencies": {
+				"function-bind": "^1.1.1",
+				"has": "^1.0.3",
+				"has-symbols": "^1.0.1"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
+		"node_modules/get-symbol-description": {
+			"version": "1.0.0",
+			"resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+			"integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+			"dependencies": {
+				"call-bind": "^1.0.2",
+				"get-intrinsic": "^1.1.1"
+			},
+			"engines": {
+				"node": ">= 0.4"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
 		},
 		"node_modules/glob": {
 			"version": "7.1.7",
@@ -1018,6 +1495,17 @@
 				"url": "https://github.com/sponsors/isaacs"
 			}
 		},
+		"node_modules/glob-parent": {
+			"version": "5.1.2",
+			"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+			"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+			"dependencies": {
+				"is-glob": "^4.0.1"
+			},
+			"engines": {
+				"node": ">= 6"
+			}
+		},
 		"node_modules/global-prefix": {
 			"version": "3.0.0",
 			"resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
@@ -1032,11 +1520,15 @@
 				"node": ">=6"
 			}
 		},
+		"node_modules/graceful-fs": {
+			"version": "4.2.8",
+			"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
+			"integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg=="
+		},
 		"node_modules/has": {
 			"version": "1.0.3",
 			"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
 			"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-			"dev": true,
 			"dependencies": {
 				"function-bind": "^1.1.1"
 			},
@@ -1044,6 +1536,14 @@
 				"node": ">= 0.4.0"
 			}
 		},
+		"node_modules/has-bigints": {
+			"version": "1.0.1",
+			"resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz",
+			"integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==",
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
 		"node_modules/has-flag": {
 			"version": "4.0.0",
 			"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -1053,6 +1553,36 @@
 				"node": ">=8"
 			}
 		},
+		"node_modules/has-symbols": {
+			"version": "1.0.2",
+			"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
+			"integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
+			"engines": {
+				"node": ">= 0.4"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
+		"node_modules/has-tostringtag": {
+			"version": "1.0.0",
+			"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+			"integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+			"dependencies": {
+				"has-symbols": "^1.0.2"
+			},
+			"engines": {
+				"node": ">= 0.4"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
+		"node_modules/hosted-git-info": {
+			"version": "2.8.9",
+			"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+			"integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw=="
+		},
 		"node_modules/http-errors": {
 			"version": "1.7.2",
 			"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
@@ -1129,6 +1659,19 @@
 			"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
 			"dev": true
 		},
+		"node_modules/internal-slot": {
+			"version": "1.0.3",
+			"resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
+			"integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
+			"dependencies": {
+				"get-intrinsic": "^1.1.0",
+				"has": "^1.0.3",
+				"side-channel": "^1.0.4"
+			},
+			"engines": {
+				"node": ">= 0.4"
+			}
+		},
 		"node_modules/interpret": {
 			"version": "1.4.0",
 			"resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
@@ -1146,11 +1689,52 @@
 				"node": ">= 0.10"
 			}
 		},
+		"node_modules/is-arrayish": {
+			"version": "0.2.1",
+			"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+			"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
+		},
+		"node_modules/is-bigint": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+			"integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+			"dependencies": {
+				"has-bigints": "^1.0.1"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
+		"node_modules/is-boolean-object": {
+			"version": "1.1.2",
+			"resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+			"integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+			"dependencies": {
+				"call-bind": "^1.0.2",
+				"has-tostringtag": "^1.0.0"
+			},
+			"engines": {
+				"node": ">= 0.4"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
+		"node_modules/is-callable": {
+			"version": "1.2.4",
+			"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
+			"integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==",
+			"engines": {
+				"node": ">= 0.4"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
 		"node_modules/is-core-module": {
 			"version": "2.6.0",
 			"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz",
 			"integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==",
-			"dev": true,
 			"dependencies": {
 				"has": "^1.0.3"
 			},
@@ -1158,11 +1742,143 @@
 				"url": "https://github.com/sponsors/ljharb"
 			}
 		},
+		"node_modules/is-date-object": {
+			"version": "1.0.5",
+			"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+			"integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+			"dependencies": {
+				"has-tostringtag": "^1.0.0"
+			},
+			"engines": {
+				"node": ">= 0.4"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
+		"node_modules/is-extglob": {
+			"version": "2.1.1",
+			"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+			"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
+		"node_modules/is-glob": {
+			"version": "4.0.3",
+			"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+			"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+			"dependencies": {
+				"is-extglob": "^2.1.1"
+			},
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
+		"node_modules/is-negative-zero": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz",
+			"integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==",
+			"engines": {
+				"node": ">= 0.4"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
+		"node_modules/is-number": {
+			"version": "7.0.0",
+			"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+			"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+			"engines": {
+				"node": ">=0.12.0"
+			}
+		},
+		"node_modules/is-number-object": {
+			"version": "1.0.6",
+			"resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz",
+			"integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==",
+			"dependencies": {
+				"has-tostringtag": "^1.0.0"
+			},
+			"engines": {
+				"node": ">= 0.4"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
+		"node_modules/is-regex": {
+			"version": "1.1.4",
+			"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+			"integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+			"dependencies": {
+				"call-bind": "^1.0.2",
+				"has-tostringtag": "^1.0.0"
+			},
+			"engines": {
+				"node": ">= 0.4"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
+		"node_modules/is-shared-array-buffer": {
+			"version": "1.0.1",
+			"resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz",
+			"integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==",
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
+		"node_modules/is-string": {
+			"version": "1.0.7",
+			"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+			"integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+			"dependencies": {
+				"has-tostringtag": "^1.0.0"
+			},
+			"engines": {
+				"node": ">= 0.4"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
+		"node_modules/is-symbol": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+			"integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+			"dependencies": {
+				"has-symbols": "^1.0.2"
+			},
+			"engines": {
+				"node": ">= 0.4"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
+		"node_modules/is-weakref": {
+			"version": "1.0.1",
+			"resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz",
+			"integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==",
+			"dependencies": {
+				"call-bind": "^1.0.0"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
 		"node_modules/isexe": {
 			"version": "2.0.0",
 			"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-			"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
-			"dev": true
+			"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
+		},
+		"node_modules/json-parse-better-errors": {
+			"version": "1.0.2",
+			"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+			"integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
 		},
 		"node_modules/json5": {
 			"version": "1.0.1",
@@ -1184,6 +1900,20 @@
 				"node": ">=0.10.0"
 			}
 		},
+		"node_modules/load-json-file": {
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+			"integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+			"dependencies": {
+				"graceful-fs": "^4.1.2",
+				"parse-json": "^4.0.0",
+				"pify": "^3.0.0",
+				"strip-bom": "^3.0.0"
+			},
+			"engines": {
+				"node": ">=4"
+			}
+		},
 		"node_modules/make-error": {
 			"version": "1.3.6",
 			"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
@@ -1198,11 +1928,27 @@
 				"node": ">= 0.6"
 			}
 		},
+		"node_modules/memorystream": {
+			"version": "0.3.1",
+			"resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
+			"integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=",
+			"engines": {
+				"node": ">= 0.10.0"
+			}
+		},
 		"node_modules/merge-descriptors": {
 			"version": "1.0.1",
 			"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
 			"integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
 		},
+		"node_modules/merge2": {
+			"version": "1.4.1",
+			"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+			"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+			"engines": {
+				"node": ">= 8"
+			}
+		},
 		"node_modules/methods": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
@@ -1211,6 +1957,18 @@
 				"node": ">= 0.6"
 			}
 		},
+		"node_modules/micromatch": {
+			"version": "4.0.4",
+			"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
+			"integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
+			"dependencies": {
+				"braces": "^3.0.1",
+				"picomatch": "^2.2.3"
+			},
+			"engines": {
+				"node": ">=8.6"
+			}
+		},
 		"node_modules/mime": {
 			"version": "1.6.0",
 			"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
@@ -1245,7 +2003,6 @@
 			"version": "3.0.4",
 			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
 			"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
-			"dev": true,
 			"dependencies": {
 				"brace-expansion": "^1.1.7"
 			},
@@ -1281,11 +2038,140 @@
 				"node": ">= 0.6"
 			}
 		},
+		"node_modules/nice-try": {
+			"version": "1.0.5",
+			"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+			"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
+		},
 		"node_modules/node-os-utils": {
 			"version": "1.3.5",
 			"resolved": "https://registry.npmjs.org/node-os-utils/-/node-os-utils-1.3.5.tgz",
 			"integrity": "sha512-bIJIlk+hA+7/ATnu3sQMtF697iw9T/JksDhKMe9uENG0OhzIG7hLM6fbcyu18bOuajlYWnSlj0IhDo2q7k0ebg=="
 		},
+		"node_modules/normalize-package-data": {
+			"version": "2.5.0",
+			"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+			"integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+			"dependencies": {
+				"hosted-git-info": "^2.1.4",
+				"resolve": "^1.10.0",
+				"semver": "2 || 3 || 4 || 5",
+				"validate-npm-package-license": "^3.0.1"
+			}
+		},
+		"node_modules/npm-run-all": {
+			"version": "4.1.5",
+			"resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz",
+			"integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==",
+			"dependencies": {
+				"ansi-styles": "^3.2.1",
+				"chalk": "^2.4.1",
+				"cross-spawn": "^6.0.5",
+				"memorystream": "^0.3.1",
+				"minimatch": "^3.0.4",
+				"pidtree": "^0.3.0",
+				"read-pkg": "^3.0.0",
+				"shell-quote": "^1.6.1",
+				"string.prototype.padend": "^3.0.0"
+			},
+			"bin": {
+				"npm-run-all": "bin/npm-run-all/index.js",
+				"run-p": "bin/run-p/index.js",
+				"run-s": "bin/run-s/index.js"
+			},
+			"engines": {
+				"node": ">= 4"
+			}
+		},
+		"node_modules/npm-run-all/node_modules/ansi-styles": {
+			"version": "3.2.1",
+			"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+			"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+			"dependencies": {
+				"color-convert": "^1.9.0"
+			},
+			"engines": {
+				"node": ">=4"
+			}
+		},
+		"node_modules/npm-run-all/node_modules/chalk": {
+			"version": "2.4.2",
+			"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+			"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+			"dependencies": {
+				"ansi-styles": "^3.2.1",
+				"escape-string-regexp": "^1.0.5",
+				"supports-color": "^5.3.0"
+			},
+			"engines": {
+				"node": ">=4"
+			}
+		},
+		"node_modules/npm-run-all/node_modules/color-convert": {
+			"version": "1.9.3",
+			"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+			"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+			"dependencies": {
+				"color-name": "1.1.3"
+			}
+		},
+		"node_modules/npm-run-all/node_modules/color-name": {
+			"version": "1.1.3",
+			"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+			"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+		},
+		"node_modules/npm-run-all/node_modules/has-flag": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+			"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+			"engines": {
+				"node": ">=4"
+			}
+		},
+		"node_modules/npm-run-all/node_modules/supports-color": {
+			"version": "5.5.0",
+			"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+			"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+			"dependencies": {
+				"has-flag": "^3.0.0"
+			},
+			"engines": {
+				"node": ">=4"
+			}
+		},
+		"node_modules/object-inspect": {
+			"version": "1.11.0",
+			"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
+			"integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==",
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
+		"node_modules/object-keys": {
+			"version": "1.1.1",
+			"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+			"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+			"engines": {
+				"node": ">= 0.4"
+			}
+		},
+		"node_modules/object.assign": {
+			"version": "4.1.2",
+			"resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
+			"integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
+			"dependencies": {
+				"call-bind": "^1.0.0",
+				"define-properties": "^1.1.3",
+				"has-symbols": "^1.0.1",
+				"object-keys": "^1.1.1"
+			},
+			"engines": {
+				"node": ">= 0.4"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
 		"node_modules/on-finished": {
 			"version": "2.3.0",
 			"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
@@ -1306,6 +2192,18 @@
 				"wrappy": "1"
 			}
 		},
+		"node_modules/parse-json": {
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+			"integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+			"dependencies": {
+				"error-ex": "^1.3.1",
+				"json-parse-better-errors": "^1.0.1"
+			},
+			"engines": {
+				"node": ">=4"
+			}
+		},
 		"node_modules/parseurl": {
 			"version": "1.3.3",
 			"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
@@ -1323,17 +2221,65 @@
 				"node": ">=0.10.0"
 			}
 		},
+		"node_modules/path-key": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+			"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+			"engines": {
+				"node": ">=4"
+			}
+		},
 		"node_modules/path-parse": {
 			"version": "1.0.7",
 			"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-			"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
-			"dev": true
+			"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
 		},
 		"node_modules/path-to-regexp": {
 			"version": "0.1.7",
 			"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
 			"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
 		},
+		"node_modules/path-type": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+			"integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+			"dependencies": {
+				"pify": "^3.0.0"
+			},
+			"engines": {
+				"node": ">=4"
+			}
+		},
+		"node_modules/picomatch": {
+			"version": "2.3.0",
+			"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
+			"integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
+			"engines": {
+				"node": ">=8.6"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/jonschlinkert"
+			}
+		},
+		"node_modules/pidtree": {
+			"version": "0.3.1",
+			"resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz",
+			"integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==",
+			"bin": {
+				"pidtree": "bin/pidtree.js"
+			},
+			"engines": {
+				"node": ">=0.10"
+			}
+		},
+		"node_modules/pify": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+			"integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+			"engines": {
+				"node": ">=4"
+			}
+		},
 		"node_modules/proxy-addr": {
 			"version": "2.0.7",
 			"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@@ -1354,6 +2300,25 @@
 				"node": ">=0.6"
 			}
 		},
+		"node_modules/queue-microtask": {
+			"version": "1.2.3",
+			"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+			"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/feross"
+				},
+				{
+					"type": "patreon",
+					"url": "https://www.patreon.com/feross"
+				},
+				{
+					"type": "consulting",
+					"url": "https://feross.org/support"
+				}
+			]
+		},
 		"node_modules/range-parser": {
 			"version": "1.2.1",
 			"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
@@ -1376,6 +2341,19 @@
 				"node": ">= 0.8"
 			}
 		},
+		"node_modules/read-pkg": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+			"integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+			"dependencies": {
+				"load-json-file": "^4.0.0",
+				"normalize-package-data": "^2.3.2",
+				"path-type": "^3.0.0"
+			},
+			"engines": {
+				"node": ">=4"
+			}
+		},
 		"node_modules/rechoir": {
 			"version": "0.6.2",
 			"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
@@ -1398,7 +2376,6 @@
 			"version": "1.20.0",
 			"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
 			"integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
-			"dev": true,
 			"dependencies": {
 				"is-core-module": "^2.2.0",
 				"path-parse": "^1.0.6"
@@ -1407,6 +2384,37 @@
 				"url": "https://github.com/sponsors/ljharb"
 			}
 		},
+		"node_modules/reusify": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+			"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+			"engines": {
+				"iojs": ">=1.0.0",
+				"node": ">=0.10.0"
+			}
+		},
+		"node_modules/run-parallel": {
+			"version": "1.2.0",
+			"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+			"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/feross"
+				},
+				{
+					"type": "patreon",
+					"url": "https://www.patreon.com/feross"
+				},
+				{
+					"type": "consulting",
+					"url": "https://feross.org/support"
+				}
+			],
+			"dependencies": {
+				"queue-microtask": "^1.2.2"
+			}
+		},
 		"node_modules/safe-buffer": {
 			"version": "5.1.2",
 			"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
@@ -1417,6 +2425,14 @@
 			"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
 			"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
 		},
+		"node_modules/semver": {
+			"version": "5.7.1",
+			"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+			"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+			"bin": {
+				"semver": "bin/semver"
+			}
+		},
 		"node_modules/send": {
 			"version": "0.17.1",
 			"resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
@@ -1464,6 +2480,30 @@
 			"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
 			"integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
 		},
+		"node_modules/shebang-command": {
+			"version": "1.2.0",
+			"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+			"integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+			"dependencies": {
+				"shebang-regex": "^1.0.0"
+			},
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
+		"node_modules/shebang-regex": {
+			"version": "1.0.0",
+			"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+			"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
+		"node_modules/shell-quote": {
+			"version": "1.7.2",
+			"resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz",
+			"integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg=="
+		},
 		"node_modules/shelljs": {
 			"version": "0.8.4",
 			"resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz",
@@ -1481,6 +2521,63 @@
 				"node": ">=4"
 			}
 		},
+		"node_modules/side-channel": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+			"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+			"dependencies": {
+				"call-bind": "^1.0.0",
+				"get-intrinsic": "^1.0.2",
+				"object-inspect": "^1.9.0"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
+		"node_modules/slash": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+			"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+			"engines": {
+				"node": ">=8"
+			}
+		},
+		"node_modules/source-map": {
+			"version": "0.7.3",
+			"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+			"integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+			"engines": {
+				"node": ">= 8"
+			}
+		},
+		"node_modules/spdx-correct": {
+			"version": "3.1.1",
+			"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
+			"integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
+			"dependencies": {
+				"spdx-expression-parse": "^3.0.0",
+				"spdx-license-ids": "^3.0.0"
+			}
+		},
+		"node_modules/spdx-exceptions": {
+			"version": "2.3.0",
+			"resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+			"integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A=="
+		},
+		"node_modules/spdx-expression-parse": {
+			"version": "3.0.1",
+			"resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+			"integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+			"dependencies": {
+				"spdx-exceptions": "^2.1.0",
+				"spdx-license-ids": "^3.0.0"
+			}
+		},
+		"node_modules/spdx-license-ids": {
+			"version": "3.0.10",
+			"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz",
+			"integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA=="
+		},
 		"node_modules/statuses": {
 			"version": "1.5.0",
 			"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
@@ -1489,6 +2586,46 @@
 				"node": ">= 0.6"
 			}
 		},
+		"node_modules/string.prototype.padend": {
+			"version": "3.1.2",
+			"resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.2.tgz",
+			"integrity": "sha512-/AQFLdYvePENU3W5rgurfWSMU6n+Ww8n/3cUt7E+vPBB/D7YDG8x+qjoFs4M/alR2bW7Qg6xMjVwWUOvuQ0XpQ==",
+			"dependencies": {
+				"call-bind": "^1.0.2",
+				"define-properties": "^1.1.3",
+				"es-abstract": "^1.18.0-next.2"
+			},
+			"engines": {
+				"node": ">= 0.4"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
+		"node_modules/string.prototype.trimend": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
+			"integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
+			"dependencies": {
+				"call-bind": "^1.0.2",
+				"define-properties": "^1.1.3"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
+		"node_modules/string.prototype.trimstart": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
+			"integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
+			"dependencies": {
+				"call-bind": "^1.0.2",
+				"define-properties": "^1.1.3"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
 		"node_modules/strip-ansi": {
 			"version": "6.0.0",
 			"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
@@ -1521,6 +2658,26 @@
 				"node": ">=8"
 			}
 		},
+		"node_modules/swc": {
+			"version": "1.0.11",
+			"resolved": "https://registry.npmjs.org/swc/-/swc-1.0.11.tgz",
+			"integrity": "sha512-YbG4eija7g/ajQ0lu4P2WPgKt5zCm743VgKn+buBrXXo1IETftO2r/8VdBPhv8wpTyg3CO+VU1z2wHuL4iohmw==",
+			"dependencies": {
+				"@swc/cli": "^0.1.26",
+				"@swc/core": "^1.2.12"
+			}
+		},
+		"node_modules/to-regex-range": {
+			"version": "5.0.1",
+			"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+			"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+			"dependencies": {
+				"is-number": "^7.0.0"
+			},
+			"engines": {
+				"node": ">=8.0"
+			}
+		},
 		"node_modules/toidentifier": {
 			"version": "1.0.0",
 			"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
@@ -1630,6 +2787,20 @@
 				"node": ">=4.2.0"
 			}
 		},
+		"node_modules/unbox-primitive": {
+			"version": "1.0.1",
+			"resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
+			"integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
+			"dependencies": {
+				"function-bind": "^1.1.1",
+				"has-bigints": "^1.0.1",
+				"has-symbols": "^1.0.2",
+				"which-boxed-primitive": "^1.0.2"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
 		"node_modules/unpipe": {
 			"version": "1.0.0",
 			"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
@@ -1646,6 +2817,15 @@
 				"node": ">= 0.4.0"
 			}
 		},
+		"node_modules/validate-npm-package-license": {
+			"version": "3.0.4",
+			"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+			"integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+			"dependencies": {
+				"spdx-correct": "^3.0.0",
+				"spdx-expression-parse": "^3.0.0"
+			}
+		},
 		"node_modules/vary": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
@@ -1658,7 +2838,6 @@
 			"version": "1.3.1",
 			"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
 			"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
-			"dev": true,
 			"dependencies": {
 				"isexe": "^2.0.0"
 			},
@@ -1666,6 +2845,21 @@
 				"which": "bin/which"
 			}
 		},
+		"node_modules/which-boxed-primitive": {
+			"version": "1.0.2",
+			"resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+			"integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+			"dependencies": {
+				"is-bigint": "^1.0.1",
+				"is-boolean-object": "^1.1.0",
+				"is-number-object": "^1.0.4",
+				"is-string": "^1.0.5",
+				"is-symbol": "^1.0.3"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/ljharb"
+			}
+		},
 		"node_modules/wrappy": {
 			"version": "1.0.2",
 			"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
@@ -1714,6 +2908,8 @@
 				"@babel/preset-env": "^7.15.6",
 				"@babel/preset-typescript": "^7.15.0",
 				"@fosscord/util": "file:../util",
+				"@swc/cli": "^0.1.51",
+				"@swc/core": "^1.2.93",
 				"@types/amqplib": "^0.8.1",
 				"@types/bcrypt": "^5.0.0",
 				"@types/express": "^4.17.9",
@@ -1773,13 +2969,16 @@
 				"tsconfig-paths": "^3.11.0",
 				"typeorm": "^0.2.37",
 				"typescript": "^4.4.2",
-				"typescript-json-schema": "0.50.1"
+				"typescript-json-schema": "0.50.1",
+				"wsc": "^0.3.0"
 			}
 		},
 		"@fosscord/cdn": {
 			"version": "file:../cdn",
 			"requires": {
 				"@fosscord/util": "file:../util",
+				"@swc/cli": "^0.1.51",
+				"@swc/core": "^1.2.93",
 				"@types/amqplib": "^0.8.1",
 				"@types/body-parser": "^1.19.0",
 				"@types/btoa": "^1.2.3",
@@ -1813,6 +3012,7 @@
 				"nanocolors": "^0.2.12",
 				"node-fetch": "^2.6.1",
 				"supertest": "^6.1.6",
+				"swc": "^1.0.11",
 				"ts-patch": "^1.4.4",
 				"typescript": "^4.1.2",
 				"uuid": "^8.3.2"
@@ -1822,6 +3022,8 @@
 			"version": "file:../gateway",
 			"requires": {
 				"@fosscord/util": "file:../util",
+				"@swc/cli": "^0.1.51",
+				"@swc/core": "^1.2.93",
 				"@types/amqplib": "^0.8.1",
 				"@types/jsonwebtoken": "^8.5.0",
 				"@types/mongodb": "^3.6.9",
@@ -1841,6 +3043,7 @@
 				"missing-native-js-functions": "^1.2.17",
 				"mongoose-autopopulate": "^0.12.3",
 				"node-fetch": "^2.6.1",
+				"swc": "^1.0.11",
 				"ts-node-dev": "^1.1.6",
 				"ts-patch": "^1.4.4",
 				"typeorm": "^0.2.37",
@@ -1852,6 +3055,8 @@
 		"@fosscord/util": {
 			"version": "file:../util",
 			"requires": {
+				"@swc/cli": "^0.1.51",
+				"@swc/core": "^1.2.93",
 				"@types/amqplib": "^0.8.1",
 				"@types/jsonwebtoken": "^8.5.0",
 				"@types/mongoose-autopopulate": "^0.10.1",
@@ -1874,12 +3079,152 @@
 				"pg": "^8.7.1",
 				"reflect-metadata": "^0.1.13",
 				"sqlite3": "^5.0.2",
+				"swc": "^1.0.11",
 				"tsconfig-paths": "^3.11.0",
 				"typeorm": "^0.2.37",
 				"typescript": "^4.4.2",
 				"typescript-json-schema": "^0.50.1"
 			}
 		},
+		"@napi-rs/triples": {
+			"version": "1.0.3",
+			"resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz",
+			"integrity": "sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA=="
+		},
+		"@node-rs/helper": {
+			"version": "1.2.1",
+			"resolved": "https://registry.npmjs.org/@node-rs/helper/-/helper-1.2.1.tgz",
+			"integrity": "sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg==",
+			"requires": {
+				"@napi-rs/triples": "^1.0.3"
+			}
+		},
+		"@nodelib/fs.scandir": {
+			"version": "2.1.5",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+			"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+			"requires": {
+				"@nodelib/fs.stat": "2.0.5",
+				"run-parallel": "^1.1.9"
+			}
+		},
+		"@nodelib/fs.stat": {
+			"version": "2.0.5",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+			"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
+		},
+		"@nodelib/fs.walk": {
+			"version": "1.2.8",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+			"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+			"requires": {
+				"@nodelib/fs.scandir": "2.1.5",
+				"fastq": "^1.6.0"
+			}
+		},
+		"@swc/cli": {
+			"version": "0.1.51",
+			"resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.1.51.tgz",
+			"integrity": "sha512-7eqZGpkI4QOYfF+9FV4xpT/V/LSRDs5OMJcm4Z46JnPMvv+sxumAFdCe1hHRzHgnzwis9OtjI8Tt3Srf9JudQw==",
+			"requires": {
+				"commander": "^7.1.0",
+				"fast-glob": "^3.2.5",
+				"slash": "3.0.0",
+				"source-map": "^0.7.3"
+			}
+		},
+		"@swc/core": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core/-/core-1.2.93.tgz",
+			"integrity": "sha512-Lx9I+9GfUl2Mb7r23MVbSkc+NZE0+xZ4Xh787D1b82KMeFLz7QgYe4cNM9SzTjV/VlSQyNTVlzjES7ZThIUvtA==",
+			"requires": {
+				"@node-rs/helper": "^1.0.0",
+				"@swc/core-android-arm64": "1.2.93",
+				"@swc/core-darwin-arm64": "1.2.93",
+				"@swc/core-darwin-x64": "1.2.93",
+				"@swc/core-freebsd-x64": "1.2.93",
+				"@swc/core-linux-arm-gnueabihf": "1.2.93",
+				"@swc/core-linux-arm64-gnu": "1.2.93",
+				"@swc/core-linux-arm64-musl": "1.2.93",
+				"@swc/core-linux-x64-gnu": "1.2.93",
+				"@swc/core-linux-x64-musl": "1.2.93",
+				"@swc/core-win32-arm64-msvc": "1.2.93",
+				"@swc/core-win32-ia32-msvc": "1.2.93",
+				"@swc/core-win32-x64-msvc": "1.2.93"
+			}
+		},
+		"@swc/core-android-arm64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.93.tgz",
+			"integrity": "sha512-3F5A7QNR5+MI64W20QBADU0Z6knt8kJOxIoKw4Vuk7JQ6k0nnMemio3LtusHgAVZLXq0wMILZ4kv/+qnRzWb7A==",
+			"optional": true
+		},
+		"@swc/core-darwin-arm64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.93.tgz",
+			"integrity": "sha512-a8tu9WCtnjiuKTscUu8N9z/vVuIldwo5US4WfYi2dtQNgf21n1ZKxwvsZzRz6mEC86zVE0k9pmslwEtMuuCJog==",
+			"optional": true
+		},
+		"@swc/core-darwin-x64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.93.tgz",
+			"integrity": "sha512-ga8bpjauZYHWMjuPKcqOZFSgStvveMc/J7yqIlr9sF2pOr7Rt/MKLO4Ups95A2Aay90aCF9cPKQDtX71PmdlVw==",
+			"optional": true
+		},
+		"@swc/core-freebsd-x64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.93.tgz",
+			"integrity": "sha512-qDBEZqHh6C2AMaxjdm/Am8MUwN94RS3na9VLYDMGUkgs2yvnSADfx7JOyZEJT1Ot7FZEuyGXcSfomUzNCU/5kw==",
+			"optional": true
+		},
+		"@swc/core-linux-arm-gnueabihf": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.93.tgz",
+			"integrity": "sha512-KlJsXOcZpuHXU8hMVDXfSyBQ9fdUpzwDV1JKpfIehG+P2kRdCbiN3irdv6kd3rVH/PUjiCSIP5SvpCMvwJzDNg==",
+			"optional": true
+		},
+		"@swc/core-linux-arm64-gnu": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.93.tgz",
+			"integrity": "sha512-UdQX3Tt7xLUgC4AFROw9wRaRA2vDHNnNFURkV//i/nsGay12JANBvXA/FOMge6yx32tPvcNUSRHnb3MYep0kzg==",
+			"optional": true
+		},
+		"@swc/core-linux-arm64-musl": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.93.tgz",
+			"integrity": "sha512-O5W/cjnkP9nuKZsx03/DxVO+ILh5BUmfCjFzScXGuLMIZrBLyzBstcaSaZOxfd04wPEqael4VZiAGmWXornZ1g==",
+			"optional": true
+		},
+		"@swc/core-linux-x64-gnu": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.93.tgz",
+			"integrity": "sha512-fDELNkklMzEI8KDr51XGajP7TVbZCLYkiPGAgbGadmkMFvlgJfzf1Qt1VzjGk5lTYdQO40vCe7u4xEpfdq6lLQ==",
+			"optional": true
+		},
+		"@swc/core-linux-x64-musl": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.93.tgz",
+			"integrity": "sha512-ZdEi04dfj96XDjT+J2k/J/m3WoHqlfwz93dTlpWdlPvrSNtsMg2oorm0Zynx/x2Ghe3w1hJu3HdMaJF2UY3Ttw==",
+			"optional": true
+		},
+		"@swc/core-win32-arm64-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.93.tgz",
+			"integrity": "sha512-NbIyBpOCEqxa+s3x8ijQGBOxQd5P63icf+6SK6MkO5E2zTgiR4g6ziihKCdhF9tJ6M4c0DHL/RqIV5SS9UX01w==",
+			"optional": true
+		},
+		"@swc/core-win32-ia32-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.93.tgz",
+			"integrity": "sha512-TrRfHzGBQL1fjTahfBLDYcjLx28tH7pN5co5fJmYgASey8McVWL6eW/q/9fxvZqOVyj2SF9wvLDYKm0IWz4f+g==",
+			"optional": true
+		},
+		"@swc/core-win32-x64-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.93.tgz",
+			"integrity": "sha512-VsqLVB7ytNYqEC21amMswC2c84NCVNW6KLhS9XeO6Vz1+7wx8uPu1rAo14oBu5/3yhv7/K3wgfMqJMKHZtXPMQ==",
+			"optional": true
+		},
 		"@tsconfig/node10": {
 			"version": "1.0.8",
 			"resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz",
@@ -2200,8 +3545,7 @@
 		"balanced-match": {
 			"version": "1.0.2",
 			"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-			"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
-			"dev": true
+			"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
 		},
 		"base64-js": {
 			"version": "1.5.1",
@@ -2230,12 +3574,19 @@
 			"version": "1.1.11",
 			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
 			"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-			"dev": true,
 			"requires": {
 				"balanced-match": "^1.0.0",
 				"concat-map": "0.0.1"
 			}
 		},
+		"braces": {
+			"version": "3.0.2",
+			"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+			"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+			"requires": {
+				"fill-range": "^7.0.1"
+			}
+		},
 		"bson": {
 			"version": "4.5.2",
 			"resolved": "https://registry.npmjs.org/bson/-/bson-4.5.2.tgz",
@@ -2260,6 +3611,15 @@
 			"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
 			"integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
 		},
+		"call-bind": {
+			"version": "1.0.2",
+			"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+			"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+			"requires": {
+				"function-bind": "^1.1.1",
+				"get-intrinsic": "^1.0.2"
+			}
+		},
 		"chalk": {
 			"version": "4.1.2",
 			"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -2294,11 +3654,15 @@
 				"delayed-stream": "~1.0.0"
 			}
 		},
+		"commander": {
+			"version": "7.2.0",
+			"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+			"integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="
+		},
 		"concat-map": {
 			"version": "0.0.1",
 			"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-			"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
-			"dev": true
+			"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
 		},
 		"content-disposition": {
 			"version": "0.5.3",
@@ -2329,6 +3693,18 @@
 			"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
 			"dev": true
 		},
+		"cross-spawn": {
+			"version": "6.0.5",
+			"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+			"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+			"requires": {
+				"nice-try": "^1.0.4",
+				"path-key": "^2.0.1",
+				"semver": "^5.5.0",
+				"shebang-command": "^1.2.0",
+				"which": "^1.2.9"
+			}
+		},
 		"debug": {
 			"version": "2.6.9",
 			"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -2337,6 +3713,14 @@
 				"ms": "2.0.0"
 			}
 		},
+		"define-properties": {
+			"version": "1.1.3",
+			"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+			"integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+			"requires": {
+				"object-keys": "^1.0.12"
+			}
+		},
 		"delayed-stream": {
 			"version": "1.0.0",
 			"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -2374,11 +3758,61 @@
 			"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
 			"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
 		},
+		"error-ex": {
+			"version": "1.3.2",
+			"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+			"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+			"requires": {
+				"is-arrayish": "^0.2.1"
+			}
+		},
+		"es-abstract": {
+			"version": "1.19.1",
+			"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz",
+			"integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==",
+			"requires": {
+				"call-bind": "^1.0.2",
+				"es-to-primitive": "^1.2.1",
+				"function-bind": "^1.1.1",
+				"get-intrinsic": "^1.1.1",
+				"get-symbol-description": "^1.0.0",
+				"has": "^1.0.3",
+				"has-symbols": "^1.0.2",
+				"internal-slot": "^1.0.3",
+				"is-callable": "^1.2.4",
+				"is-negative-zero": "^2.0.1",
+				"is-regex": "^1.1.4",
+				"is-shared-array-buffer": "^1.0.1",
+				"is-string": "^1.0.7",
+				"is-weakref": "^1.0.1",
+				"object-inspect": "^1.11.0",
+				"object-keys": "^1.1.1",
+				"object.assign": "^4.1.2",
+				"string.prototype.trimend": "^1.0.4",
+				"string.prototype.trimstart": "^1.0.4",
+				"unbox-primitive": "^1.0.1"
+			}
+		},
+		"es-to-primitive": {
+			"version": "1.2.1",
+			"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+			"integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+			"requires": {
+				"is-callable": "^1.1.4",
+				"is-date-object": "^1.0.1",
+				"is-symbol": "^1.0.2"
+			}
+		},
 		"escape-html": {
 			"version": "1.0.3",
 			"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
 			"integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
 		},
+		"escape-string-regexp": {
+			"version": "1.0.5",
+			"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+			"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+		},
 		"etag": {
 			"version": "1.8.1",
 			"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
@@ -2421,6 +3855,34 @@
 				"vary": "~1.1.2"
 			}
 		},
+		"fast-glob": {
+			"version": "3.2.7",
+			"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz",
+			"integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==",
+			"requires": {
+				"@nodelib/fs.stat": "^2.0.2",
+				"@nodelib/fs.walk": "^1.2.3",
+				"glob-parent": "^5.1.2",
+				"merge2": "^1.3.0",
+				"micromatch": "^4.0.4"
+			}
+		},
+		"fastq": {
+			"version": "1.13.0",
+			"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
+			"integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+			"requires": {
+				"reusify": "^1.0.4"
+			}
+		},
+		"fill-range": {
+			"version": "7.0.1",
+			"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+			"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+			"requires": {
+				"to-regex-range": "^5.0.1"
+			}
+		},
 		"finalhandler": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
@@ -2465,8 +3927,26 @@
 		"function-bind": {
 			"version": "1.1.1",
 			"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-			"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
-			"dev": true
+			"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+		},
+		"get-intrinsic": {
+			"version": "1.1.1",
+			"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
+			"integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
+			"requires": {
+				"function-bind": "^1.1.1",
+				"has": "^1.0.3",
+				"has-symbols": "^1.0.1"
+			}
+		},
+		"get-symbol-description": {
+			"version": "1.0.0",
+			"resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+			"integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+			"requires": {
+				"call-bind": "^1.0.2",
+				"get-intrinsic": "^1.1.1"
+			}
 		},
 		"glob": {
 			"version": "7.1.7",
@@ -2482,6 +3962,14 @@
 				"path-is-absolute": "^1.0.0"
 			}
 		},
+		"glob-parent": {
+			"version": "5.1.2",
+			"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+			"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+			"requires": {
+				"is-glob": "^4.0.1"
+			}
+		},
 		"global-prefix": {
 			"version": "3.0.0",
 			"resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
@@ -2493,21 +3981,48 @@
 				"which": "^1.3.1"
 			}
 		},
+		"graceful-fs": {
+			"version": "4.2.8",
+			"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
+			"integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg=="
+		},
 		"has": {
 			"version": "1.0.3",
 			"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
 			"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-			"dev": true,
 			"requires": {
 				"function-bind": "^1.1.1"
 			}
 		},
+		"has-bigints": {
+			"version": "1.0.1",
+			"resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz",
+			"integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA=="
+		},
 		"has-flag": {
 			"version": "4.0.0",
 			"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
 			"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
 			"dev": true
 		},
+		"has-symbols": {
+			"version": "1.0.2",
+			"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
+			"integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw=="
+		},
+		"has-tostringtag": {
+			"version": "1.0.0",
+			"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+			"integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+			"requires": {
+				"has-symbols": "^1.0.2"
+			}
+		},
+		"hosted-git-info": {
+			"version": "2.8.9",
+			"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+			"integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw=="
+		},
 		"http-errors": {
 			"version": "1.7.2",
 			"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
@@ -2564,6 +4079,16 @@
 			"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
 			"dev": true
 		},
+		"internal-slot": {
+			"version": "1.0.3",
+			"resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
+			"integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
+			"requires": {
+				"get-intrinsic": "^1.1.0",
+				"has": "^1.0.3",
+				"side-channel": "^1.0.4"
+			}
+		},
 		"interpret": {
 			"version": "1.4.0",
 			"resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
@@ -2575,20 +4100,127 @@
 			"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
 			"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
 		},
+		"is-arrayish": {
+			"version": "0.2.1",
+			"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+			"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
+		},
+		"is-bigint": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+			"integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+			"requires": {
+				"has-bigints": "^1.0.1"
+			}
+		},
+		"is-boolean-object": {
+			"version": "1.1.2",
+			"resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+			"integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+			"requires": {
+				"call-bind": "^1.0.2",
+				"has-tostringtag": "^1.0.0"
+			}
+		},
+		"is-callable": {
+			"version": "1.2.4",
+			"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
+			"integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w=="
+		},
 		"is-core-module": {
 			"version": "2.6.0",
 			"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz",
 			"integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==",
-			"dev": true,
 			"requires": {
 				"has": "^1.0.3"
 			}
 		},
+		"is-date-object": {
+			"version": "1.0.5",
+			"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+			"integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+			"requires": {
+				"has-tostringtag": "^1.0.0"
+			}
+		},
+		"is-extglob": {
+			"version": "2.1.1",
+			"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+			"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
+		},
+		"is-glob": {
+			"version": "4.0.3",
+			"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+			"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+			"requires": {
+				"is-extglob": "^2.1.1"
+			}
+		},
+		"is-negative-zero": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz",
+			"integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w=="
+		},
+		"is-number": {
+			"version": "7.0.0",
+			"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+			"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
+		},
+		"is-number-object": {
+			"version": "1.0.6",
+			"resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz",
+			"integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==",
+			"requires": {
+				"has-tostringtag": "^1.0.0"
+			}
+		},
+		"is-regex": {
+			"version": "1.1.4",
+			"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+			"integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+			"requires": {
+				"call-bind": "^1.0.2",
+				"has-tostringtag": "^1.0.0"
+			}
+		},
+		"is-shared-array-buffer": {
+			"version": "1.0.1",
+			"resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz",
+			"integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA=="
+		},
+		"is-string": {
+			"version": "1.0.7",
+			"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+			"integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+			"requires": {
+				"has-tostringtag": "^1.0.0"
+			}
+		},
+		"is-symbol": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+			"integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+			"requires": {
+				"has-symbols": "^1.0.2"
+			}
+		},
+		"is-weakref": {
+			"version": "1.0.1",
+			"resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz",
+			"integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==",
+			"requires": {
+				"call-bind": "^1.0.0"
+			}
+		},
 		"isexe": {
 			"version": "2.0.0",
 			"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-			"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
-			"dev": true
+			"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
+		},
+		"json-parse-better-errors": {
+			"version": "1.0.2",
+			"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+			"integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
 		},
 		"json5": {
 			"version": "1.0.1",
@@ -2604,6 +4236,17 @@
 			"integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
 			"dev": true
 		},
+		"load-json-file": {
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+			"integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+			"requires": {
+				"graceful-fs": "^4.1.2",
+				"parse-json": "^4.0.0",
+				"pify": "^3.0.0",
+				"strip-bom": "^3.0.0"
+			}
+		},
 		"make-error": {
 			"version": "1.3.6",
 			"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
@@ -2615,16 +4258,35 @@
 			"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
 			"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
 		},
+		"memorystream": {
+			"version": "0.3.1",
+			"resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
+			"integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI="
+		},
 		"merge-descriptors": {
 			"version": "1.0.1",
 			"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
 			"integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
 		},
+		"merge2": {
+			"version": "1.4.1",
+			"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+			"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
+		},
 		"methods": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
 			"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
 		},
+		"micromatch": {
+			"version": "4.0.4",
+			"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
+			"integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
+			"requires": {
+				"braces": "^3.0.1",
+				"picomatch": "^2.2.3"
+			}
+		},
 		"mime": {
 			"version": "1.6.0",
 			"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
@@ -2647,7 +4309,6 @@
 			"version": "3.0.4",
 			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
 			"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
-			"dev": true,
 			"requires": {
 				"brace-expansion": "^1.1.7"
 			}
@@ -2677,11 +4338,110 @@
 			"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
 			"integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
 		},
+		"nice-try": {
+			"version": "1.0.5",
+			"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+			"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
+		},
 		"node-os-utils": {
 			"version": "1.3.5",
 			"resolved": "https://registry.npmjs.org/node-os-utils/-/node-os-utils-1.3.5.tgz",
 			"integrity": "sha512-bIJIlk+hA+7/ATnu3sQMtF697iw9T/JksDhKMe9uENG0OhzIG7hLM6fbcyu18bOuajlYWnSlj0IhDo2q7k0ebg=="
 		},
+		"normalize-package-data": {
+			"version": "2.5.0",
+			"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+			"integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+			"requires": {
+				"hosted-git-info": "^2.1.4",
+				"resolve": "^1.10.0",
+				"semver": "2 || 3 || 4 || 5",
+				"validate-npm-package-license": "^3.0.1"
+			}
+		},
+		"npm-run-all": {
+			"version": "4.1.5",
+			"resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz",
+			"integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==",
+			"requires": {
+				"ansi-styles": "^3.2.1",
+				"chalk": "^2.4.1",
+				"cross-spawn": "^6.0.5",
+				"memorystream": "^0.3.1",
+				"minimatch": "^3.0.4",
+				"pidtree": "^0.3.0",
+				"read-pkg": "^3.0.0",
+				"shell-quote": "^1.6.1",
+				"string.prototype.padend": "^3.0.0"
+			},
+			"dependencies": {
+				"ansi-styles": {
+					"version": "3.2.1",
+					"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+					"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+					"requires": {
+						"color-convert": "^1.9.0"
+					}
+				},
+				"chalk": {
+					"version": "2.4.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+					"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+					"requires": {
+						"ansi-styles": "^3.2.1",
+						"escape-string-regexp": "^1.0.5",
+						"supports-color": "^5.3.0"
+					}
+				},
+				"color-convert": {
+					"version": "1.9.3",
+					"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+					"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+					"requires": {
+						"color-name": "1.1.3"
+					}
+				},
+				"color-name": {
+					"version": "1.1.3",
+					"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+					"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+				},
+				"has-flag": {
+					"version": "3.0.0",
+					"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+					"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
+				},
+				"supports-color": {
+					"version": "5.5.0",
+					"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+					"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+					"requires": {
+						"has-flag": "^3.0.0"
+					}
+				}
+			}
+		},
+		"object-inspect": {
+			"version": "1.11.0",
+			"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
+			"integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg=="
+		},
+		"object-keys": {
+			"version": "1.1.1",
+			"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+			"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
+		},
+		"object.assign": {
+			"version": "4.1.2",
+			"resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
+			"integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
+			"requires": {
+				"call-bind": "^1.0.0",
+				"define-properties": "^1.1.3",
+				"has-symbols": "^1.0.1",
+				"object-keys": "^1.1.1"
+			}
+		},
 		"on-finished": {
 			"version": "2.3.0",
 			"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
@@ -2699,6 +4459,15 @@
 				"wrappy": "1"
 			}
 		},
+		"parse-json": {
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+			"integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+			"requires": {
+				"error-ex": "^1.3.1",
+				"json-parse-better-errors": "^1.0.1"
+			}
+		},
 		"parseurl": {
 			"version": "1.3.3",
 			"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
@@ -2710,17 +4479,44 @@
 			"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
 			"dev": true
 		},
+		"path-key": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+			"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
+		},
 		"path-parse": {
 			"version": "1.0.7",
 			"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-			"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
-			"dev": true
+			"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
 		},
 		"path-to-regexp": {
 			"version": "0.1.7",
 			"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
 			"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
 		},
+		"path-type": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+			"integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+			"requires": {
+				"pify": "^3.0.0"
+			}
+		},
+		"picomatch": {
+			"version": "2.3.0",
+			"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
+			"integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw=="
+		},
+		"pidtree": {
+			"version": "0.3.1",
+			"resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz",
+			"integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA=="
+		},
+		"pify": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+			"integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
+		},
 		"proxy-addr": {
 			"version": "2.0.7",
 			"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@@ -2735,6 +4531,11 @@
 			"resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
 			"integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
 		},
+		"queue-microtask": {
+			"version": "1.2.3",
+			"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+			"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
+		},
 		"range-parser": {
 			"version": "1.2.1",
 			"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
@@ -2751,6 +4552,16 @@
 				"unpipe": "1.0.0"
 			}
 		},
+		"read-pkg": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+			"integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+			"requires": {
+				"load-json-file": "^4.0.0",
+				"normalize-package-data": "^2.3.2",
+				"path-type": "^3.0.0"
+			}
+		},
 		"rechoir": {
 			"version": "0.6.2",
 			"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
@@ -2770,12 +4581,24 @@
 			"version": "1.20.0",
 			"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
 			"integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
-			"dev": true,
 			"requires": {
 				"is-core-module": "^2.2.0",
 				"path-parse": "^1.0.6"
 			}
 		},
+		"reusify": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+			"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
+		},
+		"run-parallel": {
+			"version": "1.2.0",
+			"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+			"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+			"requires": {
+				"queue-microtask": "^1.2.2"
+			}
+		},
 		"safe-buffer": {
 			"version": "5.1.2",
 			"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
@@ -2786,6 +4609,11 @@
 			"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
 			"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
 		},
+		"semver": {
+			"version": "5.7.1",
+			"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+			"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+		},
 		"send": {
 			"version": "0.17.1",
 			"resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
@@ -2829,6 +4657,24 @@
 			"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
 			"integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
 		},
+		"shebang-command": {
+			"version": "1.2.0",
+			"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+			"integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+			"requires": {
+				"shebang-regex": "^1.0.0"
+			}
+		},
+		"shebang-regex": {
+			"version": "1.0.0",
+			"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+			"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
+		},
+		"shell-quote": {
+			"version": "1.7.2",
+			"resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz",
+			"integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg=="
+		},
 		"shelljs": {
 			"version": "0.8.4",
 			"resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz",
@@ -2840,11 +4686,87 @@
 				"rechoir": "^0.6.2"
 			}
 		},
+		"side-channel": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+			"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+			"requires": {
+				"call-bind": "^1.0.0",
+				"get-intrinsic": "^1.0.2",
+				"object-inspect": "^1.9.0"
+			}
+		},
+		"slash": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+			"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="
+		},
+		"source-map": {
+			"version": "0.7.3",
+			"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+			"integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ=="
+		},
+		"spdx-correct": {
+			"version": "3.1.1",
+			"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
+			"integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
+			"requires": {
+				"spdx-expression-parse": "^3.0.0",
+				"spdx-license-ids": "^3.0.0"
+			}
+		},
+		"spdx-exceptions": {
+			"version": "2.3.0",
+			"resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+			"integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A=="
+		},
+		"spdx-expression-parse": {
+			"version": "3.0.1",
+			"resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+			"integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+			"requires": {
+				"spdx-exceptions": "^2.1.0",
+				"spdx-license-ids": "^3.0.0"
+			}
+		},
+		"spdx-license-ids": {
+			"version": "3.0.10",
+			"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz",
+			"integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA=="
+		},
 		"statuses": {
 			"version": "1.5.0",
 			"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
 			"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
 		},
+		"string.prototype.padend": {
+			"version": "3.1.2",
+			"resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.2.tgz",
+			"integrity": "sha512-/AQFLdYvePENU3W5rgurfWSMU6n+Ww8n/3cUt7E+vPBB/D7YDG8x+qjoFs4M/alR2bW7Qg6xMjVwWUOvuQ0XpQ==",
+			"requires": {
+				"call-bind": "^1.0.2",
+				"define-properties": "^1.1.3",
+				"es-abstract": "^1.18.0-next.2"
+			}
+		},
+		"string.prototype.trimend": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
+			"integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
+			"requires": {
+				"call-bind": "^1.0.2",
+				"define-properties": "^1.1.3"
+			}
+		},
+		"string.prototype.trimstart": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
+			"integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
+			"requires": {
+				"call-bind": "^1.0.2",
+				"define-properties": "^1.1.3"
+			}
+		},
 		"strip-ansi": {
 			"version": "6.0.0",
 			"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
@@ -2868,6 +4790,23 @@
 				"has-flag": "^4.0.0"
 			}
 		},
+		"swc": {
+			"version": "1.0.11",
+			"resolved": "https://registry.npmjs.org/swc/-/swc-1.0.11.tgz",
+			"integrity": "sha512-YbG4eija7g/ajQ0lu4P2WPgKt5zCm743VgKn+buBrXXo1IETftO2r/8VdBPhv8wpTyg3CO+VU1z2wHuL4iohmw==",
+			"requires": {
+				"@swc/cli": "^0.1.26",
+				"@swc/core": "^1.2.12"
+			}
+		},
+		"to-regex-range": {
+			"version": "5.0.1",
+			"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+			"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+			"requires": {
+				"is-number": "^7.0.0"
+			}
+		},
 		"toidentifier": {
 			"version": "1.0.0",
 			"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
@@ -2934,6 +4873,17 @@
 			"integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==",
 			"dev": true
 		},
+		"unbox-primitive": {
+			"version": "1.0.1",
+			"resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
+			"integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
+			"requires": {
+				"function-bind": "^1.1.1",
+				"has-bigints": "^1.0.1",
+				"has-symbols": "^1.0.2",
+				"which-boxed-primitive": "^1.0.2"
+			}
+		},
 		"unpipe": {
 			"version": "1.0.0",
 			"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
@@ -2944,6 +4894,15 @@
 			"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
 			"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
 		},
+		"validate-npm-package-license": {
+			"version": "3.0.4",
+			"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+			"integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+			"requires": {
+				"spdx-correct": "^3.0.0",
+				"spdx-expression-parse": "^3.0.0"
+			}
+		},
 		"vary": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
@@ -2953,11 +4912,22 @@
 			"version": "1.3.1",
 			"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
 			"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
-			"dev": true,
 			"requires": {
 				"isexe": "^2.0.0"
 			}
 		},
+		"which-boxed-primitive": {
+			"version": "1.0.2",
+			"resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+			"integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+			"requires": {
+				"is-bigint": "^1.0.1",
+				"is-boolean-object": "^1.1.0",
+				"is-number-object": "^1.0.4",
+				"is-string": "^1.0.5",
+				"is-symbol": "^1.0.3"
+			}
+		},
 		"wrappy": {
 			"version": "1.0.2",
 			"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
diff --git a/bundle/package.json b/bundle/package.json
index cd2b9f44..fbb39042 100644
--- a/bundle/package.json
+++ b/bundle/package.json
@@ -7,7 +7,7 @@
 		"setup": "cd ../util && npm --production=false i && cd ../api && npm --production=false i && cd ../cdn && npm --production=false i && cd ../gateway && npm --production=false i && cd ../bundle/ && npm --production=false i && npm run build",
 		"build": "npm run build:util && npm run build:api && npm run build:cdn && npm run build:gateway && npm run build:bundle",
 		"postinstall": "ts-patch install -s",
-		"build:bundle": "npx tsc -b .",
+		"build:bundle": "swc src --out-dir dist",
 		"build:util": "cd ../util/ && npm run build",
 		"build:api": "cd ../api/ && npm run build",
 		"build:cdn": "cd ../cdn/ && npm run build",
@@ -28,6 +28,8 @@
 	},
 	"homepage": "https://fosscord.com",
 	"devDependencies": {
+		"@swc/cli": "^0.1.51",
+		"@swc/core": "^1.2.93",
 		"@types/amqplib": "^0.8.1",
 		"@types/async-exit-hook": "^2.0.0",
 		"@types/bcrypt": "^5.0.0",
@@ -59,6 +61,7 @@
 		"missing-native-js-functions": "^1.2.17",
 		"nanocolors": "^0.2.12",
 		"node-os-utils": "^1.3.5",
+		"swc": "^1.0.11",
 		"tsconfig-paths": "^3.11.0"
 	}
 }
diff --git a/bundle/src/build.js b/bundle/src/build.js
new file mode 100644
index 00000000..b893d5ee
--- /dev/null
+++ b/bundle/src/build.js
@@ -0,0 +1,18 @@
+const { exec, spawn } = require("child_process");
+const { exitCode } = require("process");
+
+let parts = "api,cdn,gateway,util,bundle".split(",");
+parts.forEach(element => {
+    // exec(`npm --prefix ../${element} run build`, (error, stdout, stderr) => {
+    //     if (error) {
+    //         console.log(`error: ${error.message}`);
+    //         return;
+    //     }
+    //     if (stderr) {
+    //         console.log(`stderr: ${stderr}`);
+    //         return;
+    //     }
+    //     console.log(`stdout: ${stdout}`);
+    // });
+    spawn("npm", ["run", "build"], {cwd: `../${element}`});
+});
\ No newline at end of file
diff --git a/bundle/tsconfig.json b/bundle/tsconfig.json
index 6bf2e6b7..232531fb 100644
--- a/bundle/tsconfig.json
+++ b/bundle/tsconfig.json
@@ -4,10 +4,10 @@
 		/* Visit https://aka.ms/tsconfig.json to read more about this file */
 
 		/* Basic Options */
-		// "incremental": true,                   /* Enable incremental compilation */
+		"incremental": true,                   /* Enable incremental compilation */
 		"target": "ESNext" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */,
 		"module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */,
-		"lib": ["ES2020"] /* Specify library files to be included in the compilation. */,
+		"lib": ["ES2021"] /* Specify library files to be included in the compilation. */,
 		"allowJs": true /* Allow javascript files to be compiled. */,
 		"checkJs": true /* Report errors in .js files. */,
 		// "jsx": "preserve",                     /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
diff --git a/bundle/tsconfig.tsbuildinfo b/bundle/tsconfig.tsbuildinfo
new file mode 100644
index 00000000..44ebd120
--- /dev/null
+++ b/bundle/tsconfig.tsbuildinfo
@@ -0,0 +1 @@
+{"version":"4.4.3"}
\ No newline at end of file
diff --git a/cdn/.swcrc b/cdn/.swcrc
new file mode 100644
index 00000000..f04801b8
--- /dev/null
+++ b/cdn/.swcrc
@@ -0,0 +1,9 @@
+{
+    "jsc": {
+        "parser": {
+            "syntax": "typescript",
+            "decorators": true
+        },
+        "target": "es2021"
+    }
+}
\ No newline at end of file
diff --git a/cdn/package-lock.json b/cdn/package-lock.json
index a71d100d..71c8d364 100644
--- a/cdn/package-lock.json
+++ b/cdn/package-lock.json
@@ -29,10 +29,13 @@
 				"nanocolors": "^0.2.12",
 				"node-fetch": "^2.6.1",
 				"supertest": "^6.1.6",
+				"swc": "^1.0.11",
 				"typescript": "^4.1.2",
 				"uuid": "^8.3.2"
 			},
 			"devDependencies": {
+				"@swc/cli": "^0.1.51",
+				"@swc/core": "^1.2.93",
 				"@types/amqplib": "^0.8.1",
 				"@types/body-parser": "^1.19.0",
 				"@types/btoa": "^1.2.3",
@@ -72,12 +75,15 @@
 				"pg": "^8.7.1",
 				"reflect-metadata": "^0.1.13",
 				"sqlite3": "^5.0.2",
+				"swc": "^1.0.11",
 				"tsconfig-paths": "^3.11.0",
 				"typeorm": "^0.2.37",
 				"typescript": "^4.4.2",
 				"typescript-json-schema": "^0.50.1"
 			},
 			"devDependencies": {
+				"@swc/cli": "^0.1.51",
+				"@swc/core": "^1.2.93",
 				"@types/amqplib": "^0.8.1",
 				"@types/jsonwebtoken": "^8.5.0",
 				"@types/mongoose-autopopulate": "^0.10.1",
@@ -963,6 +969,51 @@
 				"node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
 			}
 		},
+		"node_modules/@napi-rs/triples": {
+			"version": "1.0.3",
+			"resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz",
+			"integrity": "sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA=="
+		},
+		"node_modules/@node-rs/helper": {
+			"version": "1.2.1",
+			"resolved": "https://registry.npmjs.org/@node-rs/helper/-/helper-1.2.1.tgz",
+			"integrity": "sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg==",
+			"dependencies": {
+				"@napi-rs/triples": "^1.0.3"
+			}
+		},
+		"node_modules/@nodelib/fs.scandir": {
+			"version": "2.1.5",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+			"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+			"dependencies": {
+				"@nodelib/fs.stat": "2.0.5",
+				"run-parallel": "^1.1.9"
+			},
+			"engines": {
+				"node": ">= 8"
+			}
+		},
+		"node_modules/@nodelib/fs.stat": {
+			"version": "2.0.5",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+			"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+			"engines": {
+				"node": ">= 8"
+			}
+		},
+		"node_modules/@nodelib/fs.walk": {
+			"version": "1.2.8",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+			"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+			"dependencies": {
+				"@nodelib/fs.scandir": "2.1.5",
+				"fastq": "^1.6.0"
+			},
+			"engines": {
+				"node": ">= 8"
+			}
+		},
 		"node_modules/@sinonjs/commons": {
 			"version": "1.8.3",
 			"resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
@@ -979,6 +1030,250 @@
 				"@sinonjs/commons": "^1.7.0"
 			}
 		},
+		"node_modules/@swc/cli": {
+			"version": "0.1.51",
+			"resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.1.51.tgz",
+			"integrity": "sha512-7eqZGpkI4QOYfF+9FV4xpT/V/LSRDs5OMJcm4Z46JnPMvv+sxumAFdCe1hHRzHgnzwis9OtjI8Tt3Srf9JudQw==",
+			"dependencies": {
+				"commander": "^7.1.0",
+				"fast-glob": "^3.2.5",
+				"slash": "3.0.0",
+				"source-map": "^0.7.3"
+			},
+			"bin": {
+				"spack": "bin/spack.js",
+				"swc": "bin/swc.js"
+			},
+			"engines": {
+				"node": ">= 12.13"
+			},
+			"peerDependencies": {
+				"@swc/core": "^1.2.66",
+				"chokidar": "^3.5.1"
+			},
+			"peerDependenciesMeta": {
+				"chokidar": {
+					"optional": true
+				}
+			}
+		},
+		"node_modules/@swc/cli/node_modules/source-map": {
+			"version": "0.7.3",
+			"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+			"integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+			"engines": {
+				"node": ">= 8"
+			}
+		},
+		"node_modules/@swc/core": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core/-/core-1.2.93.tgz",
+			"integrity": "sha512-Lx9I+9GfUl2Mb7r23MVbSkc+NZE0+xZ4Xh787D1b82KMeFLz7QgYe4cNM9SzTjV/VlSQyNTVlzjES7ZThIUvtA==",
+			"dependencies": {
+				"@node-rs/helper": "^1.0.0"
+			},
+			"engines": {
+				"node": ">=10"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/swc"
+			},
+			"optionalDependencies": {
+				"@swc/core-android-arm64": "1.2.93",
+				"@swc/core-darwin-arm64": "1.2.93",
+				"@swc/core-darwin-x64": "1.2.93",
+				"@swc/core-freebsd-x64": "1.2.93",
+				"@swc/core-linux-arm-gnueabihf": "1.2.93",
+				"@swc/core-linux-arm64-gnu": "1.2.93",
+				"@swc/core-linux-arm64-musl": "1.2.93",
+				"@swc/core-linux-x64-gnu": "1.2.93",
+				"@swc/core-linux-x64-musl": "1.2.93",
+				"@swc/core-win32-arm64-msvc": "1.2.93",
+				"@swc/core-win32-ia32-msvc": "1.2.93",
+				"@swc/core-win32-x64-msvc": "1.2.93"
+			}
+		},
+		"node_modules/@swc/core-android-arm64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.93.tgz",
+			"integrity": "sha512-3F5A7QNR5+MI64W20QBADU0Z6knt8kJOxIoKw4Vuk7JQ6k0nnMemio3LtusHgAVZLXq0wMILZ4kv/+qnRzWb7A==",
+			"cpu": [
+				"arm64"
+			],
+			"optional": true,
+			"os": [
+				"android"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-darwin-arm64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.93.tgz",
+			"integrity": "sha512-a8tu9WCtnjiuKTscUu8N9z/vVuIldwo5US4WfYi2dtQNgf21n1ZKxwvsZzRz6mEC86zVE0k9pmslwEtMuuCJog==",
+			"cpu": [
+				"arm64"
+			],
+			"optional": true,
+			"os": [
+				"darwin"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-darwin-x64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.93.tgz",
+			"integrity": "sha512-ga8bpjauZYHWMjuPKcqOZFSgStvveMc/J7yqIlr9sF2pOr7Rt/MKLO4Ups95A2Aay90aCF9cPKQDtX71PmdlVw==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"darwin"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-freebsd-x64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.93.tgz",
+			"integrity": "sha512-qDBEZqHh6C2AMaxjdm/Am8MUwN94RS3na9VLYDMGUkgs2yvnSADfx7JOyZEJT1Ot7FZEuyGXcSfomUzNCU/5kw==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"freebsd"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-linux-arm-gnueabihf": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.93.tgz",
+			"integrity": "sha512-KlJsXOcZpuHXU8hMVDXfSyBQ9fdUpzwDV1JKpfIehG+P2kRdCbiN3irdv6kd3rVH/PUjiCSIP5SvpCMvwJzDNg==",
+			"cpu": [
+				"arm"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-linux-arm64-gnu": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.93.tgz",
+			"integrity": "sha512-UdQX3Tt7xLUgC4AFROw9wRaRA2vDHNnNFURkV//i/nsGay12JANBvXA/FOMge6yx32tPvcNUSRHnb3MYep0kzg==",
+			"cpu": [
+				"arm64"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-linux-arm64-musl": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.93.tgz",
+			"integrity": "sha512-O5W/cjnkP9nuKZsx03/DxVO+ILh5BUmfCjFzScXGuLMIZrBLyzBstcaSaZOxfd04wPEqael4VZiAGmWXornZ1g==",
+			"cpu": [
+				"arm64"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-linux-x64-gnu": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.93.tgz",
+			"integrity": "sha512-fDELNkklMzEI8KDr51XGajP7TVbZCLYkiPGAgbGadmkMFvlgJfzf1Qt1VzjGk5lTYdQO40vCe7u4xEpfdq6lLQ==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-linux-x64-musl": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.93.tgz",
+			"integrity": "sha512-ZdEi04dfj96XDjT+J2k/J/m3WoHqlfwz93dTlpWdlPvrSNtsMg2oorm0Zynx/x2Ghe3w1hJu3HdMaJF2UY3Ttw==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-win32-arm64-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.93.tgz",
+			"integrity": "sha512-NbIyBpOCEqxa+s3x8ijQGBOxQd5P63icf+6SK6MkO5E2zTgiR4g6ziihKCdhF9tJ6M4c0DHL/RqIV5SS9UX01w==",
+			"cpu": [
+				"arm64"
+			],
+			"optional": true,
+			"os": [
+				"win32"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-win32-ia32-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.93.tgz",
+			"integrity": "sha512-TrRfHzGBQL1fjTahfBLDYcjLx28tH7pN5co5fJmYgASey8McVWL6eW/q/9fxvZqOVyj2SF9wvLDYKm0IWz4f+g==",
+			"cpu": [
+				"ia32"
+			],
+			"optional": true,
+			"os": [
+				"win32"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-win32-x64-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.93.tgz",
+			"integrity": "sha512-VsqLVB7ytNYqEC21amMswC2c84NCVNW6KLhS9XeO6Vz1+7wx8uPu1rAo14oBu5/3yhv7/K3wgfMqJMKHZtXPMQ==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"win32"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
 		"node_modules/@tokenizer/token": {
 			"version": "0.3.0",
 			"resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz",
@@ -1928,6 +2223,14 @@
 				"node": ">= 0.8"
 			}
 		},
+		"node_modules/commander": {
+			"version": "7.2.0",
+			"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+			"integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+			"engines": {
+				"node": ">= 10"
+			}
+		},
 		"node_modules/component-emitter": {
 			"version": "1.3.0",
 			"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
@@ -2498,6 +2801,21 @@
 				"express": "^4.16.2"
 			}
 		},
+		"node_modules/fast-glob": {
+			"version": "3.2.7",
+			"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz",
+			"integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==",
+			"dependencies": {
+				"@nodelib/fs.stat": "^2.0.2",
+				"@nodelib/fs.walk": "^1.2.3",
+				"glob-parent": "^5.1.2",
+				"merge2": "^1.3.0",
+				"micromatch": "^4.0.4"
+			},
+			"engines": {
+				"node": ">=8"
+			}
+		},
 		"node_modules/fast-json-stable-stringify": {
 			"version": "2.1.0",
 			"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
@@ -2513,6 +2831,14 @@
 			"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
 			"integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA=="
 		},
+		"node_modules/fastq": {
+			"version": "1.13.0",
+			"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
+			"integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+			"dependencies": {
+				"reusify": "^1.0.4"
+			}
+		},
 		"node_modules/fb-watchman": {
 			"version": "2.0.1",
 			"resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz",
@@ -2717,6 +3043,17 @@
 				"url": "https://github.com/sponsors/isaacs"
 			}
 		},
+		"node_modules/glob-parent": {
+			"version": "5.1.2",
+			"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+			"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+			"dependencies": {
+				"is-glob": "^4.0.1"
+			},
+			"engines": {
+				"node": ">= 6"
+			}
+		},
 		"node_modules/global-prefix": {
 			"version": "3.0.0",
 			"resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
@@ -3044,6 +3381,14 @@
 				"url": "https://github.com/sponsors/ljharb"
 			}
 		},
+		"node_modules/is-extglob": {
+			"version": "2.1.1",
+			"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+			"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
 		"node_modules/is-fullwidth-code-point": {
 			"version": "3.0.0",
 			"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
@@ -3060,6 +3405,17 @@
 				"node": ">=6"
 			}
 		},
+		"node_modules/is-glob": {
+			"version": "4.0.3",
+			"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+			"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+			"dependencies": {
+				"is-extglob": "^2.1.1"
+			},
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
 		"node_modules/is-number": {
 			"version": "7.0.0",
 			"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
@@ -4019,6 +4375,14 @@
 			"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
 			"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
 		},
+		"node_modules/merge2": {
+			"version": "1.4.1",
+			"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+			"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+			"engines": {
+				"node": ">= 8"
+			}
+		},
 		"node_modules/methods": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
@@ -4721,6 +5085,25 @@
 				"inherits": "~2.0.3"
 			}
 		},
+		"node_modules/queue-microtask": {
+			"version": "1.2.3",
+			"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+			"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/feross"
+				},
+				{
+					"type": "patreon",
+					"url": "https://www.patreon.com/feross"
+				},
+				{
+					"type": "consulting",
+					"url": "https://feross.org/support"
+				}
+			]
+		},
 		"node_modules/range-parser": {
 			"version": "1.2.1",
 			"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
@@ -4862,6 +5245,15 @@
 				"node": ">=12.x <=16.x"
 			}
 		},
+		"node_modules/reusify": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+			"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+			"engines": {
+				"iojs": ">=1.0.0",
+				"node": ">=0.10.0"
+			}
+		},
 		"node_modules/rimraf": {
 			"version": "3.0.2",
 			"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@@ -4876,6 +5268,28 @@
 				"url": "https://github.com/sponsors/isaacs"
 			}
 		},
+		"node_modules/run-parallel": {
+			"version": "1.2.0",
+			"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+			"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/feross"
+				},
+				{
+					"type": "patreon",
+					"url": "https://www.patreon.com/feross"
+				},
+				{
+					"type": "consulting",
+					"url": "https://feross.org/support"
+				}
+			],
+			"dependencies": {
+				"queue-microtask": "^1.2.2"
+			}
+		},
 		"node_modules/safe-buffer": {
 			"version": "5.1.2",
 			"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
@@ -5305,6 +5719,15 @@
 				"node": ">=8"
 			}
 		},
+		"node_modules/swc": {
+			"version": "1.0.11",
+			"resolved": "https://registry.npmjs.org/swc/-/swc-1.0.11.tgz",
+			"integrity": "sha512-YbG4eija7g/ajQ0lu4P2WPgKt5zCm743VgKn+buBrXXo1IETftO2r/8VdBPhv8wpTyg3CO+VU1z2wHuL4iohmw==",
+			"dependencies": {
+				"@swc/cli": "^0.1.26",
+				"@swc/core": "^1.2.12"
+			}
+		},
 		"node_modules/symbol-tree": {
 			"version": "3.2.4",
 			"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
@@ -6203,6 +6626,8 @@
 		"@fosscord/util": {
 			"version": "file:../util",
 			"requires": {
+				"@swc/cli": "^0.1.51",
+				"@swc/core": "^1.2.93",
 				"@types/amqplib": "^0.8.1",
 				"@types/jsonwebtoken": "^8.5.0",
 				"@types/mongoose-autopopulate": "^0.10.1",
@@ -6225,6 +6650,7 @@
 				"pg": "^8.7.1",
 				"reflect-metadata": "^0.1.13",
 				"sqlite3": "^5.0.2",
+				"swc": "^1.0.11",
 				"tsconfig-paths": "^3.11.0",
 				"typeorm": "^0.2.37",
 				"typescript": "^4.4.2",
@@ -6458,6 +6884,42 @@
 				"chalk": "^4.0.0"
 			}
 		},
+		"@napi-rs/triples": {
+			"version": "1.0.3",
+			"resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz",
+			"integrity": "sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA=="
+		},
+		"@node-rs/helper": {
+			"version": "1.2.1",
+			"resolved": "https://registry.npmjs.org/@node-rs/helper/-/helper-1.2.1.tgz",
+			"integrity": "sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg==",
+			"requires": {
+				"@napi-rs/triples": "^1.0.3"
+			}
+		},
+		"@nodelib/fs.scandir": {
+			"version": "2.1.5",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+			"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+			"requires": {
+				"@nodelib/fs.stat": "2.0.5",
+				"run-parallel": "^1.1.9"
+			}
+		},
+		"@nodelib/fs.stat": {
+			"version": "2.0.5",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+			"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
+		},
+		"@nodelib/fs.walk": {
+			"version": "1.2.8",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+			"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+			"requires": {
+				"@nodelib/fs.scandir": "2.1.5",
+				"fastq": "^1.6.0"
+			}
+		},
 		"@sinonjs/commons": {
 			"version": "1.8.3",
 			"resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
@@ -6474,6 +6936,116 @@
 				"@sinonjs/commons": "^1.7.0"
 			}
 		},
+		"@swc/cli": {
+			"version": "0.1.51",
+			"resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.1.51.tgz",
+			"integrity": "sha512-7eqZGpkI4QOYfF+9FV4xpT/V/LSRDs5OMJcm4Z46JnPMvv+sxumAFdCe1hHRzHgnzwis9OtjI8Tt3Srf9JudQw==",
+			"requires": {
+				"commander": "^7.1.0",
+				"fast-glob": "^3.2.5",
+				"slash": "3.0.0",
+				"source-map": "^0.7.3"
+			},
+			"dependencies": {
+				"source-map": {
+					"version": "0.7.3",
+					"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+					"integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ=="
+				}
+			}
+		},
+		"@swc/core": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core/-/core-1.2.93.tgz",
+			"integrity": "sha512-Lx9I+9GfUl2Mb7r23MVbSkc+NZE0+xZ4Xh787D1b82KMeFLz7QgYe4cNM9SzTjV/VlSQyNTVlzjES7ZThIUvtA==",
+			"requires": {
+				"@node-rs/helper": "^1.0.0",
+				"@swc/core-android-arm64": "1.2.93",
+				"@swc/core-darwin-arm64": "1.2.93",
+				"@swc/core-darwin-x64": "1.2.93",
+				"@swc/core-freebsd-x64": "1.2.93",
+				"@swc/core-linux-arm-gnueabihf": "1.2.93",
+				"@swc/core-linux-arm64-gnu": "1.2.93",
+				"@swc/core-linux-arm64-musl": "1.2.93",
+				"@swc/core-linux-x64-gnu": "1.2.93",
+				"@swc/core-linux-x64-musl": "1.2.93",
+				"@swc/core-win32-arm64-msvc": "1.2.93",
+				"@swc/core-win32-ia32-msvc": "1.2.93",
+				"@swc/core-win32-x64-msvc": "1.2.93"
+			}
+		},
+		"@swc/core-android-arm64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.93.tgz",
+			"integrity": "sha512-3F5A7QNR5+MI64W20QBADU0Z6knt8kJOxIoKw4Vuk7JQ6k0nnMemio3LtusHgAVZLXq0wMILZ4kv/+qnRzWb7A==",
+			"optional": true
+		},
+		"@swc/core-darwin-arm64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.93.tgz",
+			"integrity": "sha512-a8tu9WCtnjiuKTscUu8N9z/vVuIldwo5US4WfYi2dtQNgf21n1ZKxwvsZzRz6mEC86zVE0k9pmslwEtMuuCJog==",
+			"optional": true
+		},
+		"@swc/core-darwin-x64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.93.tgz",
+			"integrity": "sha512-ga8bpjauZYHWMjuPKcqOZFSgStvveMc/J7yqIlr9sF2pOr7Rt/MKLO4Ups95A2Aay90aCF9cPKQDtX71PmdlVw==",
+			"optional": true
+		},
+		"@swc/core-freebsd-x64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.93.tgz",
+			"integrity": "sha512-qDBEZqHh6C2AMaxjdm/Am8MUwN94RS3na9VLYDMGUkgs2yvnSADfx7JOyZEJT1Ot7FZEuyGXcSfomUzNCU/5kw==",
+			"optional": true
+		},
+		"@swc/core-linux-arm-gnueabihf": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.93.tgz",
+			"integrity": "sha512-KlJsXOcZpuHXU8hMVDXfSyBQ9fdUpzwDV1JKpfIehG+P2kRdCbiN3irdv6kd3rVH/PUjiCSIP5SvpCMvwJzDNg==",
+			"optional": true
+		},
+		"@swc/core-linux-arm64-gnu": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.93.tgz",
+			"integrity": "sha512-UdQX3Tt7xLUgC4AFROw9wRaRA2vDHNnNFURkV//i/nsGay12JANBvXA/FOMge6yx32tPvcNUSRHnb3MYep0kzg==",
+			"optional": true
+		},
+		"@swc/core-linux-arm64-musl": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.93.tgz",
+			"integrity": "sha512-O5W/cjnkP9nuKZsx03/DxVO+ILh5BUmfCjFzScXGuLMIZrBLyzBstcaSaZOxfd04wPEqael4VZiAGmWXornZ1g==",
+			"optional": true
+		},
+		"@swc/core-linux-x64-gnu": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.93.tgz",
+			"integrity": "sha512-fDELNkklMzEI8KDr51XGajP7TVbZCLYkiPGAgbGadmkMFvlgJfzf1Qt1VzjGk5lTYdQO40vCe7u4xEpfdq6lLQ==",
+			"optional": true
+		},
+		"@swc/core-linux-x64-musl": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.93.tgz",
+			"integrity": "sha512-ZdEi04dfj96XDjT+J2k/J/m3WoHqlfwz93dTlpWdlPvrSNtsMg2oorm0Zynx/x2Ghe3w1hJu3HdMaJF2UY3Ttw==",
+			"optional": true
+		},
+		"@swc/core-win32-arm64-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.93.tgz",
+			"integrity": "sha512-NbIyBpOCEqxa+s3x8ijQGBOxQd5P63icf+6SK6MkO5E2zTgiR4g6ziihKCdhF9tJ6M4c0DHL/RqIV5SS9UX01w==",
+			"optional": true
+		},
+		"@swc/core-win32-ia32-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.93.tgz",
+			"integrity": "sha512-TrRfHzGBQL1fjTahfBLDYcjLx28tH7pN5co5fJmYgASey8McVWL6eW/q/9fxvZqOVyj2SF9wvLDYKm0IWz4f+g==",
+			"optional": true
+		},
+		"@swc/core-win32-x64-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.93.tgz",
+			"integrity": "sha512-VsqLVB7ytNYqEC21amMswC2c84NCVNW6KLhS9XeO6Vz1+7wx8uPu1rAo14oBu5/3yhv7/K3wgfMqJMKHZtXPMQ==",
+			"optional": true
+		},
 		"@tokenizer/token": {
 			"version": "0.3.0",
 			"resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz",
@@ -7250,6 +7822,11 @@
 				"delayed-stream": "~1.0.0"
 			}
 		},
+		"commander": {
+			"version": "7.2.0",
+			"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+			"integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="
+		},
 		"component-emitter": {
 			"version": "1.3.0",
 			"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
@@ -7681,6 +8258,18 @@
 			"integrity": "sha512-h6aK1da4tpqWSbyCa3FxB/V6Ehd4EEB15zyQq9qe75OZBp0krinNKuH4rAY+S/U/2I36vdLAUFSjQJ+TFmODng==",
 			"requires": {}
 		},
+		"fast-glob": {
+			"version": "3.2.7",
+			"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz",
+			"integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==",
+			"requires": {
+				"@nodelib/fs.stat": "^2.0.2",
+				"@nodelib/fs.walk": "^1.2.3",
+				"glob-parent": "^5.1.2",
+				"merge2": "^1.3.0",
+				"micromatch": "^4.0.4"
+			}
+		},
 		"fast-json-stable-stringify": {
 			"version": "2.1.0",
 			"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
@@ -7696,6 +8285,14 @@
 			"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
 			"integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA=="
 		},
+		"fastq": {
+			"version": "1.13.0",
+			"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
+			"integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+			"requires": {
+				"reusify": "^1.0.4"
+			}
+		},
 		"fb-watchman": {
 			"version": "2.0.1",
 			"resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz",
@@ -7839,6 +8436,14 @@
 				"path-is-absolute": "^1.0.0"
 			}
 		},
+		"glob-parent": {
+			"version": "5.1.2",
+			"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+			"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+			"requires": {
+				"is-glob": "^4.0.1"
+			}
+		},
 		"global-prefix": {
 			"version": "3.0.0",
 			"resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
@@ -8066,6 +8671,11 @@
 				"has": "^1.0.3"
 			}
 		},
+		"is-extglob": {
+			"version": "2.1.1",
+			"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+			"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
+		},
 		"is-fullwidth-code-point": {
 			"version": "3.0.0",
 			"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
@@ -8076,6 +8686,14 @@
 			"resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
 			"integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ=="
 		},
+		"is-glob": {
+			"version": "4.0.3",
+			"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+			"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+			"requires": {
+				"is-extglob": "^2.1.1"
+			}
+		},
 		"is-number": {
 			"version": "7.0.0",
 			"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
@@ -8814,6 +9432,11 @@
 			"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
 			"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
 		},
+		"merge2": {
+			"version": "1.4.1",
+			"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+			"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
+		},
 		"methods": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
@@ -9294,6 +9917,11 @@
 				"inherits": "~2.0.3"
 			}
 		},
+		"queue-microtask": {
+			"version": "1.2.3",
+			"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+			"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
+		},
 		"range-parser": {
 			"version": "1.2.1",
 			"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
@@ -9400,6 +10028,11 @@
 			"resolved": "https://registry.npmjs.org/rethinkdb-ts/-/rethinkdb-ts-2.4.14.tgz",
 			"integrity": "sha512-7sLnDTqZDrfjwGvK9YoewahqVyfQG0pHpClU/dwPlvA/E8YUxc1liXDukhetGhpGYGxQamzKwWWZl9eeVRZEsA=="
 		},
+		"reusify": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+			"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
+		},
 		"rimraf": {
 			"version": "3.0.2",
 			"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@@ -9408,6 +10041,14 @@
 				"glob": "^7.1.3"
 			}
 		},
+		"run-parallel": {
+			"version": "1.2.0",
+			"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+			"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+			"requires": {
+				"queue-microtask": "^1.2.2"
+			}
+		},
 		"safe-buffer": {
 			"version": "5.1.2",
 			"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
@@ -9733,6 +10374,15 @@
 				"supports-color": "^7.0.0"
 			}
 		},
+		"swc": {
+			"version": "1.0.11",
+			"resolved": "https://registry.npmjs.org/swc/-/swc-1.0.11.tgz",
+			"integrity": "sha512-YbG4eija7g/ajQ0lu4P2WPgKt5zCm743VgKn+buBrXXo1IETftO2r/8VdBPhv8wpTyg3CO+VU1z2wHuL4iohmw==",
+			"requires": {
+				"@swc/cli": "^0.1.26",
+				"@swc/core": "^1.2.12"
+			}
+		},
 		"symbol-tree": {
 			"version": "3.2.4",
 			"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
diff --git a/cdn/package.json b/cdn/package.json
index 24870318..addec363 100644
--- a/cdn/package.json
+++ b/cdn/package.json
@@ -7,7 +7,7 @@
 	"scripts": {
 		"postinstall": "ts-patch install -s",
 		"test": "npm run build && jest --coverage ./tests",
-		"build": "npx tsc -b .",
+		"build": "swc src --out-dir dist",
 		"start": "npm run build && node dist/start.js"
 	},
 	"repository": {
@@ -22,6 +22,8 @@
 	},
 	"homepage": "https://github.com/fosscord/fosscord-server#readme",
 	"devDependencies": {
+		"@swc/cli": "^0.1.51",
+		"@swc/core": "^1.2.93",
 		"@types/amqplib": "^0.8.1",
 		"@types/body-parser": "^1.19.0",
 		"@types/btoa": "^1.2.3",
@@ -59,6 +61,7 @@
 		"nanocolors": "^0.2.12",
 		"node-fetch": "^2.6.1",
 		"supertest": "^6.1.6",
+		"swc": "^1.0.11",
 		"typescript": "^4.1.2",
 		"uuid": "^8.3.2"
 	},
diff --git a/cdn/tsconfig.json b/cdn/tsconfig.json
index f2f378e1..c80d16fd 100644
--- a/cdn/tsconfig.json
+++ b/cdn/tsconfig.json
@@ -4,7 +4,7 @@
 		/* Visit https://aka.ms/tsconfig.json to read more about this file */
 
 		/* Basic Options */
-		// "incremental": true,                   /* Enable incremental compilation */
+		"incremental": true,                   /* Enable incremental compilation */
 		"target": "ES6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */,
 		"module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */,
 		"lib": ["ES2015", "dom"] /* Specify library files to be included in the compilation. */,
diff --git a/cdn/tsconfig.tsbuildinfo b/cdn/tsconfig.tsbuildinfo
new file mode 100644
index 00000000..af77cde6
--- /dev/null
+++ b/cdn/tsconfig.tsbuildinfo
@@ -0,0 +1 @@
+{"program":{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/missing-native-js-functions/dist/array.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/globals.global.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/missing-native-js-functions/dist/global.d.ts","./node_modules/missing-native-js-functions/dist/math.d.ts","./node_modules/missing-native-js-functions/dist/number.d.ts","./node_modules/missing-native-js-functions/dist/object.d.ts","./node_modules/missing-native-js-functions/dist/promise.d.ts","./node_modules/missing-native-js-functions/dist/string.d.ts","./node_modules/missing-native-js-functions/dist/date.d.ts","./node_modules/missing-native-js-functions/dist/index.d.ts","./node_modules/@types/range-parser/index.d.ts","./node_modules/@types/qs/index.d.ts","./node_modules/@types/express-serve-static-core/index.d.ts","./node_modules/@types/mime/index.d.ts","./node_modules/@types/serve-static/index.d.ts","./node_modules/@types/connect/index.d.ts","./node_modules/@types/body-parser/index.d.ts","./node_modules/@types/express/index.d.ts","./node_modules/lambert-server/dist/check.d.ts","./node_modules/lambert-server/dist/server.d.ts","./node_modules/lambert-server/dist/utils.d.ts","./node_modules/lambert-server/dist/httperror.d.ts","./node_modules/lambert-server/dist/index.d.ts","../util/node_modules/reflect-metadata/index.d.ts","../util/dist/util/apierror.d.ts","../util/dist/util/bitfield.d.ts","../util/node_modules/@types/jsonwebtoken/index.d.ts","../util/dist/util/token.d.ts","../util/dist/util/cdn.d.ts","../util/node_modules/missing-native-js-functions/dist/index.d.ts","../util/node_modules/typeorm/metadata/types/relationtypes.d.ts","../util/node_modules/typeorm/metadata/types/deferrabletype.d.ts","../util/node_modules/typeorm/metadata/types/ondeletetype.d.ts","../util/node_modules/typeorm/metadata/types/onupdatetype.d.ts","../util/node_modules/typeorm/decorator/options/relationoptions.d.ts","../util/node_modules/typeorm/metadata/types/propertytypeinfunction.d.ts","../util/node_modules/typeorm/metadata/types/relationtypeinfunction.d.ts","../util/node_modules/typeorm/metadata-args/relationmetadataargs.d.ts","../util/node_modules/typeorm/driver/types/columntypes.d.ts","../util/node_modules/typeorm/decorator/options/valuetransformer.d.ts","../util/node_modules/typeorm/decorator/options/columncommonoptions.d.ts","../util/node_modules/typeorm/decorator/options/columnoptions.d.ts","../util/node_modules/typeorm/metadata-args/types/columnmode.d.ts","../util/node_modules/typeorm/metadata-args/columnmetadataargs.d.ts","../util/node_modules/typeorm/common/objectliteral.d.ts","../util/node_modules/typeorm/schema-builder/options/tablecolumnoptions.d.ts","../util/node_modules/typeorm/schema-builder/table/tablecolumn.d.ts","../util/node_modules/typeorm/naming-strategy/namingstrategyinterface.d.ts","../util/node_modules/typeorm/metadata/foreignkeymetadata.d.ts","../util/node_modules/typeorm/metadata/relationmetadata.d.ts","../util/node_modules/typeorm/metadata-args/embeddedmetadataargs.d.ts","../util/node_modules/typeorm/metadata-args/relationidmetadataargs.d.ts","../util/node_modules/typeorm/metadata/relationidmetadata.d.ts","../util/node_modules/typeorm/metadata/relationcountmetadata.d.ts","../util/node_modules/typeorm/metadata/types/eventlistenertypes.d.ts","../util/node_modules/typeorm/metadata-args/entitylistenermetadataargs.d.ts","../util/node_modules/typeorm/metadata/entitylistenermetadata.d.ts","../util/node_modules/typeorm/metadata-args/uniquemetadataargs.d.ts","../util/node_modules/typeorm/metadata/uniquemetadata.d.ts","../util/node_modules/typeorm/metadata/embeddedmetadata.d.ts","../util/node_modules/typeorm/metadata/columnmetadata.d.ts","../util/node_modules/typeorm/driver/types/mappedcolumntypes.d.ts","../util/node_modules/typeorm/driver/query.d.ts","../util/node_modules/typeorm/driver/sqlinmemory.d.ts","../util/node_modules/typeorm/schema-builder/schemabuilder.d.ts","../util/node_modules/typeorm/driver/types/datatypedefaults.d.ts","../util/node_modules/typeorm/entity-schema/entityschemaindexoptions.d.ts","../util/node_modules/typeorm/decorator/options/spatialcolumnoptions.d.ts","../util/node_modules/typeorm/entity-schema/entityschemacolumnoptions.d.ts","../util/node_modules/typeorm/decorator/options/joincolumnoptions.d.ts","../util/node_modules/typeorm/decorator/options/jointablemultiplecolumnsoptions.d.ts","../util/node_modules/typeorm/decorator/options/jointableoptions.d.ts","../util/node_modules/typeorm/entity-schema/entityschemarelationoptions.d.ts","../util/node_modules/typeorm/find-options/orderbycondition.d.ts","../util/node_modules/typeorm/metadata/types/tabletypes.d.ts","../util/node_modules/typeorm/entity-schema/entityschemauniqueoptions.d.ts","../util/node_modules/typeorm/entity-schema/entityschemacheckoptions.d.ts","../util/node_modules/typeorm/entity-schema/entityschemaexclusionoptions.d.ts","../util/node_modules/typeorm/entity-schema/entityschemaoptions.d.ts","../util/node_modules/typeorm/entity-schema/entityschema.d.ts","../util/node_modules/typeorm/logger/loggeroptions.d.ts","../util/node_modules/typeorm/driver/types/databasetype.d.ts","../util/node_modules/typeorm/logger/logger.d.ts","../util/node_modules/typeorm/cache/queryresultcacheoptions.d.ts","../util/node_modules/typeorm/cache/queryresultcache.d.ts","../util/node_modules/typeorm/connection/baseconnectionoptions.d.ts","../util/node_modules/typeorm/driver/types/replicationmode.d.ts","../util/node_modules/typeorm/schema-builder/options/viewoptions.d.ts","../util/node_modules/typeorm/schema-builder/view/view.d.ts","../util/node_modules/typeorm/schema-builder/options/tableforeignkeyoptions.d.ts","../util/node_modules/typeorm/schema-builder/table/tableforeignkey.d.ts","../util/node_modules/typeorm/driver/driver.d.ts","../util/node_modules/typeorm/common/entityfieldsnames.d.ts","../util/node_modules/typeorm/find-options/joinoptions.d.ts","../util/node_modules/typeorm/find-options/findoperatortype.d.ts","../util/node_modules/typeorm/find-options/findoperator.d.ts","../util/node_modules/typeorm/find-options/findconditions.d.ts","../util/node_modules/typeorm/find-options/findoneoptions.d.ts","../util/node_modules/typeorm/find-options/findmanyoptions.d.ts","../util/node_modules/typeorm/common/deeppartial.d.ts","../util/node_modules/typeorm/repository/saveoptions.d.ts","../util/node_modules/typeorm/repository/removeoptions.d.ts","../util/node_modules/typeorm/common/objecttype.d.ts","../util/node_modules/typeorm/common/entitytarget.d.ts","../util/node_modules/typeorm/platform/platformtools.d.ts","../util/node_modules/typeorm/driver/mongodb/typings.d.ts","../util/node_modules/typeorm/schema-builder/options/tableuniqueoptions.d.ts","../util/node_modules/typeorm/schema-builder/table/tableunique.d.ts","../util/node_modules/typeorm/subscriber/event/transactioncommitevent.d.ts","../util/node_modules/typeorm/subscriber/event/transactionrollbackevent.d.ts","../util/node_modules/typeorm/subscriber/event/transactionstartevent.d.ts","../util/node_modules/typeorm/subscriber/event/updateevent.d.ts","../util/node_modules/typeorm/subscriber/event/removeevent.d.ts","../util/node_modules/typeorm/subscriber/event/insertevent.d.ts","../util/node_modules/typeorm/subscriber/event/loadevent.d.ts","../util/node_modules/typeorm/subscriber/entitysubscriberinterface.d.ts","../util/node_modules/typeorm/subscriber/broadcasterresult.d.ts","../util/node_modules/typeorm/subscriber/broadcaster.d.ts","../util/node_modules/typeorm/schema-builder/options/tablecheckoptions.d.ts","../util/node_modules/typeorm/metadata-args/checkmetadataargs.d.ts","../util/node_modules/typeorm/metadata/checkmetadata.d.ts","../util/node_modules/typeorm/schema-builder/table/tablecheck.d.ts","../util/node_modules/typeorm/schema-builder/options/tableexclusionoptions.d.ts","../util/node_modules/typeorm/metadata-args/exclusionmetadataargs.d.ts","../util/node_modules/typeorm/metadata/exclusionmetadata.d.ts","../util/node_modules/typeorm/schema-builder/table/tableexclusion.d.ts","../util/node_modules/typeorm/driver/mongodb/mongoqueryrunner.d.ts","../util/node_modules/typeorm/query-builder/querypartialentity.d.ts","../util/node_modules/typeorm/query-runner/queryresult.d.ts","../util/node_modules/typeorm/query-builder/result/insertresult.d.ts","../util/node_modules/typeorm/query-builder/result/updateresult.d.ts","../util/node_modules/typeorm/query-builder/result/deleteresult.d.ts","../util/node_modules/typeorm/entity-manager/mongoentitymanager.d.ts","../util/node_modules/typeorm/repository/mongorepository.d.ts","../util/node_modules/typeorm/find-options/findtreeoptions.d.ts","../util/node_modules/typeorm/repository/treerepository.d.ts","../util/node_modules/typeorm/query-builder/transformer/plainobjecttonewentitytransformer.d.ts","../util/node_modules/typeorm/driver/types/isolationlevel.d.ts","../util/node_modules/typeorm/entity-manager/entitymanager.d.ts","../util/node_modules/typeorm/repository/repository.d.ts","../util/node_modules/typeorm/migration/migrationinterface.d.ts","../util/node_modules/typeorm/migration/migration.d.ts","../util/node_modules/typeorm/driver/cockroachdb/cockroachconnectioncredentialsoptions.d.ts","../util/node_modules/typeorm/driver/cockroachdb/cockroachconnectionoptions.d.ts","../util/node_modules/typeorm/driver/mysql/mysqlconnectioncredentialsoptions.d.ts","../util/node_modules/typeorm/driver/mysql/mysqlconnectionoptions.d.ts","../util/node_modules/typeorm/driver/postgres/postgresconnectioncredentialsoptions.d.ts","../util/node_modules/typeorm/driver/postgres/postgresconnectionoptions.d.ts","../util/node_modules/typeorm/driver/sqlite/sqliteconnectionoptions.d.ts","../util/node_modules/typeorm/driver/sqlserver/authentication/defaultauthentication.d.ts","../util/node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectoryaccesstokenauthentication.d.ts","../util/node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectorymsiappserviceauthentication.d.ts","../util/node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectorymsivmauthentication.d.ts","../util/node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectorypasswordauthentication.d.ts","../util/node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectoryserviceprincipalsecret.d.ts","../util/node_modules/typeorm/driver/sqlserver/authentication/ntlmauthentication.d.ts","../util/node_modules/typeorm/driver/sqlserver/sqlserverconnectioncredentialsoptions.d.ts","../util/node_modules/typeorm/driver/sqlserver/sqlserverconnectionoptions.d.ts","../util/node_modules/typeorm/driver/oracle/oracleconnectioncredentialsoptions.d.ts","../util/node_modules/typeorm/driver/oracle/oracleconnectionoptions.d.ts","../util/node_modules/typeorm/driver/mongodb/mongoconnectionoptions.d.ts","../util/node_modules/typeorm/driver/cordova/cordovaconnectionoptions.d.ts","../util/node_modules/typeorm/driver/sqljs/sqljsconnectionoptions.d.ts","../util/node_modules/typeorm/driver/react-native/reactnativeconnectionoptions.d.ts","../util/node_modules/typeorm/driver/nativescript/nativescriptconnectionoptions.d.ts","../util/node_modules/typeorm/driver/expo/expoconnectionoptions.d.ts","../util/node_modules/typeorm/driver/aurora-data-api/auroradataapiconnectioncredentialsoptions.d.ts","../util/node_modules/typeorm/driver/aurora-data-api/auroradataapiconnectionoptions.d.ts","../util/node_modules/typeorm/driver/sap/sapconnectioncredentialsoptions.d.ts","../util/node_modules/typeorm/driver/sap/sapconnectionoptions.d.ts","../util/node_modules/typeorm/driver/aurora-data-api-pg/auroradataapipostgresconnectionoptions.d.ts","../util/node_modules/typeorm/driver/better-sqlite3/bettersqlite3connectionoptions.d.ts","../util/node_modules/typeorm/driver/capacitor/capacitorconnectionoptions.d.ts","../util/node_modules/typeorm/connection/connectionoptions.d.ts","../util/node_modules/typeorm/entity-manager/sqljsentitymanager.d.ts","../util/node_modules/typeorm/query-builder/relationloader.d.ts","../util/node_modules/typeorm/connection/connection.d.ts","../util/node_modules/typeorm/metadata-args/tablemetadataargs.d.ts","../util/node_modules/typeorm/metadata/types/treetypes.d.ts","../util/node_modules/typeorm/metadata/types/closuretreeoptions.d.ts","../util/node_modules/typeorm/metadata-args/treemetadataargs.d.ts","../util/node_modules/typeorm/metadata/entitymetadata.d.ts","../util/node_modules/typeorm/metadata-args/indexmetadataargs.d.ts","../util/node_modules/typeorm/metadata/indexmetadata.d.ts","../util/node_modules/typeorm/schema-builder/options/tableindexoptions.d.ts","../util/node_modules/typeorm/schema-builder/table/tableindex.d.ts","../util/node_modules/typeorm/schema-builder/options/tableoptions.d.ts","../util/node_modules/typeorm/schema-builder/table/table.d.ts","../util/node_modules/typeorm/query-runner/queryrunner.d.ts","../util/node_modules/typeorm/query-builder/alias.d.ts","../util/node_modules/typeorm/query-builder/joinattribute.d.ts","../util/node_modules/typeorm/query-builder/relation-id/relationidattribute.d.ts","../util/node_modules/typeorm/query-builder/relation-count/relationcountattribute.d.ts","../util/node_modules/typeorm/query-builder/selectquery.d.ts","../util/node_modules/typeorm/query-builder/selectquerybuilderoption.d.ts","../util/node_modules/typeorm/query-builder/whereclause.d.ts","../util/node_modules/typeorm/query-builder/queryexpressionmap.d.ts","../util/node_modules/typeorm/query-builder/brackets.d.ts","../util/node_modules/typeorm/query-builder/whereexpressionbuilder.d.ts","../util/node_modules/typeorm/query-builder/updatequerybuilder.d.ts","../util/node_modules/typeorm/query-builder/deletequerybuilder.d.ts","../util/node_modules/typeorm/query-builder/softdeletequerybuilder.d.ts","../util/node_modules/typeorm/query-builder/insertquerybuilder.d.ts","../util/node_modules/typeorm/query-builder/relationquerybuilder.d.ts","../util/node_modules/typeorm/query-builder/querybuilder.d.ts","../util/node_modules/typeorm/query-builder/selectquerybuilder.d.ts","../util/node_modules/typeorm/metadata-args/relationcountmetadataargs.d.ts","../util/node_modules/typeorm/metadata-args/namingstrategymetadataargs.d.ts","../util/node_modules/typeorm/metadata-args/joincolumnmetadataargs.d.ts","../util/node_modules/typeorm/metadata-args/jointablemetadataargs.d.ts","../util/node_modules/typeorm/metadata-args/entitysubscribermetadataargs.d.ts","../util/node_modules/typeorm/metadata-args/inheritancemetadataargs.d.ts","../util/node_modules/typeorm/metadata-args/discriminatorvaluemetadataargs.d.ts","../util/node_modules/typeorm/metadata-args/entityrepositorymetadataargs.d.ts","../util/node_modules/typeorm/metadata-args/transactionentitymetadataargs.d.ts","../util/node_modules/typeorm/metadata-args/transactionrepositorymetadataargs.d.ts","../util/node_modules/typeorm/metadata-args/generatedmetadataargs.d.ts","../util/node_modules/typeorm/metadata-args/metadataargsstorage.d.ts","../util/node_modules/typeorm/connection/connectionmanager.d.ts","../util/node_modules/typeorm/globals.d.ts","../util/node_modules/typeorm/container.d.ts","../util/node_modules/typeorm/error/typeormerror.d.ts","../util/node_modules/typeorm/error/cannotreflectmethodparametertypeerror.d.ts","../util/node_modules/typeorm/error/alreadyhasactiveconnectionerror.d.ts","../util/node_modules/typeorm/persistence/subjectchangemap.d.ts","../util/node_modules/typeorm/persistence/subject.d.ts","../util/node_modules/typeorm/error/subjectwithoutidentifiererror.d.ts","../util/node_modules/typeorm/error/cannotconnectalreadyconnectederror.d.ts","../util/node_modules/typeorm/error/locknotsupportedongivendrivererror.d.ts","../util/node_modules/typeorm/error/connectionisnotseterror.d.ts","../util/node_modules/typeorm/error/cannotcreateentityidmaperror.d.ts","../util/node_modules/typeorm/error/metadataalreadyexistserror.d.ts","../util/node_modules/typeorm/error/cannotdetermineentityerror.d.ts","../util/node_modules/typeorm/error/updatevaluesmissingerror.d.ts","../util/node_modules/typeorm/error/treerepositorynotsupportederror.d.ts","../util/node_modules/typeorm/error/customrepositorynotfounderror.d.ts","../util/node_modules/typeorm/error/transactionnotstartederror.d.ts","../util/node_modules/typeorm/error/transactionalreadystartederror.d.ts","../util/node_modules/typeorm/error/entitynotfounderror.d.ts","../util/node_modules/typeorm/error/entitymetadatanotfounderror.d.ts","../util/node_modules/typeorm/error/mustbeentityerror.d.ts","../util/node_modules/typeorm/error/optimisticlockversionmismatcherror.d.ts","../util/node_modules/typeorm/error/limitonupdatenotsupportederror.d.ts","../util/node_modules/typeorm/error/primarycolumncannotbenullableerror.d.ts","../util/node_modules/typeorm/error/customrepositorycannotinheritrepositoryerror.d.ts","../util/node_modules/typeorm/error/queryrunnerprovideralreadyreleasederror.d.ts","../util/node_modules/typeorm/error/cannotattachtreechildrenentityerror.d.ts","../util/node_modules/typeorm/error/customrepositorydoesnothaveentityerror.d.ts","../util/node_modules/typeorm/error/missingdeletedatecolumnerror.d.ts","../util/node_modules/typeorm/error/noconnectionforrepositoryerror.d.ts","../util/node_modules/typeorm/error/circularrelationserror.d.ts","../util/node_modules/typeorm/error/returningstatementnotsupportederror.d.ts","../util/node_modules/typeorm/error/usingjointableisnotallowederror.d.ts","../util/node_modules/typeorm/error/missingjoincolumnerror.d.ts","../util/node_modules/typeorm/error/missingprimarycolumnerror.d.ts","../util/node_modules/typeorm/error/entitycolumnnotfound.d.ts","../util/node_modules/typeorm/error/missingdrivererror.d.ts","../util/node_modules/typeorm/error/driverpackagenotinstallederror.d.ts","../util/node_modules/typeorm/error/cannotgetentitymanagernotconnectederror.d.ts","../util/node_modules/typeorm/error/connectionnotfounderror.d.ts","../util/node_modules/typeorm/error/noversionorupdatedatecolumnerror.d.ts","../util/node_modules/typeorm/error/insertvaluesmissingerror.d.ts","../util/node_modules/typeorm/error/optimisticlockcannotbeusederror.d.ts","../util/node_modules/typeorm/error/metadatawithsuchnamealreadyexistserror.d.ts","../util/node_modules/typeorm/error/driveroptionnotseterror.d.ts","../util/node_modules/typeorm/error/findrelationsnotfounderror.d.ts","../util/node_modules/typeorm/error/repositorynotfounderror.d.ts","../util/node_modules/typeorm/error/namingstrategynotfounderror.d.ts","../util/node_modules/typeorm/error/pessimisticlocktransactionrequirederror.d.ts","../util/node_modules/typeorm/error/repositorynottreeerror.d.ts","../util/node_modules/typeorm/error/datatypenotsupportederror.d.ts","../util/node_modules/typeorm/error/initializedrelationerror.d.ts","../util/node_modules/typeorm/error/missingjointableerror.d.ts","../util/node_modules/typeorm/error/queryfailederror.d.ts","../util/node_modules/typeorm/error/noneedtoreleaseentitymanagererror.d.ts","../util/node_modules/typeorm/error/usingjoincolumnonlyononesideallowederror.d.ts","../util/node_modules/typeorm/error/usingjointableonlyononesideallowederror.d.ts","../util/node_modules/typeorm/error/subjectremovedandupdatederror.d.ts","../util/node_modules/typeorm/error/persistedentitynotfounderror.d.ts","../util/node_modules/typeorm/error/usingjoincolumnisnotallowederror.d.ts","../util/node_modules/typeorm/error/columntypeundefinederror.d.ts","../util/node_modules/typeorm/error/queryrunneralreadyreleasederror.d.ts","../util/node_modules/typeorm/error/offsetwithoutlimitnotsupportederror.d.ts","../util/node_modules/typeorm/error/cannotexecutenotconnectederror.d.ts","../util/node_modules/typeorm/error/noconnectionoptionerror.d.ts","../util/node_modules/typeorm/error/index.d.ts","../util/node_modules/typeorm/decorator/options/columnwithlengthoptions.d.ts","../util/node_modules/typeorm/decorator/options/columnnumericoptions.d.ts","../util/node_modules/typeorm/decorator/options/columnenumoptions.d.ts","../util/node_modules/typeorm/decorator/options/columnembeddedoptions.d.ts","../util/node_modules/typeorm/decorator/options/columnhstoreoptions.d.ts","../util/node_modules/typeorm/decorator/options/columnwithwidthoptions.d.ts","../util/node_modules/typeorm/decorator/columns/column.d.ts","../util/node_modules/typeorm/decorator/columns/createdatecolumn.d.ts","../util/node_modules/typeorm/decorator/columns/deletedatecolumn.d.ts","../util/node_modules/typeorm/decorator/options/primarygeneratedcolumnnumericoptions.d.ts","../util/node_modules/typeorm/decorator/options/primarygeneratedcolumnuuidoptions.d.ts","../util/node_modules/typeorm/decorator/columns/primarygeneratedcolumn.d.ts","../util/node_modules/typeorm/decorator/columns/primarycolumn.d.ts","../util/node_modules/typeorm/decorator/columns/updatedatecolumn.d.ts","../util/node_modules/typeorm/decorator/columns/versioncolumn.d.ts","../util/node_modules/typeorm/decorator/options/viewcolumnoptions.d.ts","../util/node_modules/typeorm/decorator/columns/viewcolumn.d.ts","../util/node_modules/typeorm/decorator/columns/objectidcolumn.d.ts","../util/node_modules/typeorm/decorator/listeners/afterinsert.d.ts","../util/node_modules/typeorm/decorator/listeners/afterload.d.ts","../util/node_modules/typeorm/decorator/listeners/afterremove.d.ts","../util/node_modules/typeorm/decorator/listeners/afterupdate.d.ts","../util/node_modules/typeorm/decorator/listeners/beforeinsert.d.ts","../util/node_modules/typeorm/decorator/listeners/beforeremove.d.ts","../util/node_modules/typeorm/decorator/listeners/beforeupdate.d.ts","../util/node_modules/typeorm/decorator/listeners/eventsubscriber.d.ts","../util/node_modules/typeorm/decorator/options/indexoptions.d.ts","../util/node_modules/typeorm/decorator/options/entityoptions.d.ts","../util/node_modules/typeorm/decorator/relations/joincolumn.d.ts","../util/node_modules/typeorm/decorator/relations/jointable.d.ts","../util/node_modules/typeorm/decorator/relations/manytomany.d.ts","../util/node_modules/typeorm/decorator/relations/manytoone.d.ts","../util/node_modules/typeorm/decorator/relations/onetomany.d.ts","../util/node_modules/typeorm/decorator/relations/onetoone.d.ts","../util/node_modules/typeorm/decorator/relations/relationcount.d.ts","../util/node_modules/typeorm/decorator/relations/relationid.d.ts","../util/node_modules/typeorm/decorator/entity/entity.d.ts","../util/node_modules/typeorm/decorator/entity/childentity.d.ts","../util/node_modules/typeorm/decorator/entity/tableinheritance.d.ts","../util/node_modules/typeorm/decorator/options/viewentityoptions.d.ts","../util/node_modules/typeorm/decorator/entity-view/viewentity.d.ts","../util/node_modules/typeorm/decorator/options/transactionoptions.d.ts","../util/node_modules/typeorm/decorator/transaction/transaction.d.ts","../util/node_modules/typeorm/decorator/transaction/transactionmanager.d.ts","../util/node_modules/typeorm/decorator/transaction/transactionrepository.d.ts","../util/node_modules/typeorm/decorator/tree/treelevelcolumn.d.ts","../util/node_modules/typeorm/decorator/tree/treeparent.d.ts","../util/node_modules/typeorm/decorator/tree/treechildren.d.ts","../util/node_modules/typeorm/decorator/tree/tree.d.ts","../util/node_modules/typeorm/decorator/index.d.ts","../util/node_modules/typeorm/decorator/unique.d.ts","../util/node_modules/typeorm/decorator/check.d.ts","../util/node_modules/typeorm/decorator/exclusion.d.ts","../util/node_modules/typeorm/decorator/generated.d.ts","../util/node_modules/typeorm/decorator/entityrepository.d.ts","../util/node_modules/typeorm/find-options/operator/any.d.ts","../util/node_modules/typeorm/find-options/operator/between.d.ts","../util/node_modules/typeorm/find-options/operator/equal.d.ts","../util/node_modules/typeorm/find-options/operator/in.d.ts","../util/node_modules/typeorm/find-options/operator/isnull.d.ts","../util/node_modules/typeorm/find-options/operator/lessthan.d.ts","../util/node_modules/typeorm/find-options/operator/lessthanorequal.d.ts","../util/node_modules/typeorm/find-options/operator/ilike.d.ts","../util/node_modules/typeorm/find-options/operator/like.d.ts","../util/node_modules/typeorm/find-options/operator/morethan.d.ts","../util/node_modules/typeorm/find-options/operator/morethanorequal.d.ts","../util/node_modules/typeorm/find-options/operator/not.d.ts","../util/node_modules/typeorm/find-options/operator/raw.d.ts","../util/node_modules/typeorm/find-options/findoptionsutils.d.ts","../util/node_modules/typeorm/logger/advancedconsolelogger.d.ts","../util/node_modules/typeorm/logger/simpleconsolelogger.d.ts","../util/node_modules/typeorm/logger/filelogger.d.ts","../util/node_modules/typeorm/repository/abstractrepository.d.ts","../util/node_modules/typeorm/repository/baseentity.d.ts","../util/node_modules/typeorm/driver/sqlserver/mssqlparameter.d.ts","../util/node_modules/typeorm/connection/connectionoptionsreader.d.ts","../util/node_modules/typeorm/migration/migrationexecutor.d.ts","../util/node_modules/typeorm/naming-strategy/defaultnamingstrategy.d.ts","../util/node_modules/typeorm/index.d.ts","../util/dist/entities/baseclass.d.ts","../util/dist/entities/config.d.ts","../util/dist/util/config.d.ts","../util/dist/util/constants.d.ts","../util/dist/util/database.d.ts","../util/node_modules/@types/bluebird/index.d.ts","../util/node_modules/@types/amqplib/properties.d.ts","../util/node_modules/@types/amqplib/index.d.ts","../util/dist/interfaces/activity.d.ts","../util/dist/interfaces/status.d.ts","../util/dist/interfaces/presence.d.ts","../util/dist/entities/relationship.d.ts","../util/dist/entities/connectedaccount.d.ts","../util/dist/entities/user.d.ts","../util/dist/entities/ban.d.ts","../util/dist/entities/recipient.d.ts","../util/dist/entities/readstate.d.ts","../util/dist/entities/invite.d.ts","../util/dist/entities/voicestate.d.ts","../util/dist/entities/teammember.d.ts","../util/dist/entities/team.d.ts","../util/dist/entities/application.d.ts","../util/dist/entities/webhook.d.ts","../util/dist/entities/attachment.d.ts","../util/dist/entities/auditlog.d.ts","../util/dist/entities/emoji.d.ts","../util/dist/entities/ratelimit.d.ts","../util/dist/entities/role.d.ts","../util/dist/entities/session.d.ts","../util/dist/entities/sticker.d.ts","../util/dist/entities/template.d.ts","../util/dist/entities/index.d.ts","../util/dist/dtos/userdto.d.ts","../util/dist/dtos/dmchanneldto.d.ts","../util/dist/dtos/index.d.ts","../util/dist/entities/channel.d.ts","../util/dist/entities/guild.d.ts","../util/dist/entities/member.d.ts","../util/dist/entities/message.d.ts","../util/dist/interfaces/interaction.d.ts","../util/dist/interfaces/event.d.ts","../util/dist/interfaces/index.d.ts","../util/dist/util/event.d.ts","../util/dist/util/email.d.ts","../util/dist/util/intents.d.ts","../util/dist/util/messageflags.d.ts","../util/dist/util/permissions.d.ts","../util/dist/util/rabbitmq.d.ts","../util/dist/util/regex.d.ts","../util/dist/util/rights.d.ts","../util/dist/util/snowflake.d.ts","../util/dist/util/string.d.ts","../util/dist/util/array.d.ts","../util/dist/util/index.d.ts","../util/dist/index.d.ts","./node_modules/@types/fs-extra/index.d.ts","./node_modules/exif-be-gone/index.ts","./src/util/filestorage.ts","./src/util/storage.ts","./node_modules/@tokenizer/token/index.d.ts","./node_modules/strtok3/lib/types.d.ts","./node_modules/strtok3/lib/abstracttokenizer.d.ts","./node_modules/strtok3/lib/readstreamtokenizer.d.ts","./node_modules/strtok3/lib/buffertokenizer.d.ts","./node_modules/peek-readable/lib/endoffilestream.d.ts","./node_modules/peek-readable/lib/index.d.ts","./node_modules/strtok3/lib/core.d.ts","./node_modules/file-type/core.d.ts","./node_modules/file-type/index.d.ts","./node_modules/@types/multer/index.d.ts","./src/util/multer.ts","./src/routes/avatars.ts","./src/server.ts","./src/index.ts","./node_modules/dotenv/types/index.d.ts","./src/start.ts","./node_modules/image-size/dist/types/interface.d.ts","./node_modules/image-size/dist/types.d.ts","./node_modules/image-size/dist/index.d.ts","./src/routes/attachments.ts","./node_modules/form-data/index.d.ts","./node_modules/@types/node-fetch/externals.d.ts","./node_modules/@types/node-fetch/index.d.ts","./src/routes/external.ts","./src/routes/ping.ts"],"fileInfos":[{"version":"aa9fb4c70f369237c2f45f9d969c9a59e0eae9a192962eb48581fe864aa609db","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",{"version":"e54c8715a4954cfdc66cd69489f2b725c09ebf37492dbd91cff0a1688b1159e8","affectsGlobalScope":true},{"version":"51b8b27c21c066bf877646e320bf6a722b80d1ade65e686923cd9d4494aef1ca","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"2c8c5ee58f30e7c944e04ab1fb5506fdbb4dd507c9efa6972cf4b91cec90c503","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"1b3fe904465430e030c93239a348f05e1be80640d91f2f004c3512c2c2c89f34","affectsGlobalScope":true},{"version":"4632665b87204bb1caa8b44d165bce0c50dfab177df5b561b345a567cabacf9a","affectsGlobalScope":true},{"version":"1a005df4a9085751168425fa06028a70f6a23d9a248c63f312ea737a885cb16b","affectsGlobalScope":true},"d555cd63a3fc837840db192596273fdf52fb28092b0a33bec98e89a0334b3a4c",{"version":"f54d7a33bad768b50c8512d55f38499209d95038558fea231058465f680d1e1e","affectsGlobalScope":true},"85d545d430795d54a8b2896f67f9aeb7bf19fd74a1469ae0627311eb72f0dfa2","a473cf45c3d9809518f8af913312139d9f4db6887dc554e0d06d0f4e52722e6b","10b3076ac94d93d107062c0874fcc02305d8b915961cf848df17778535774f39","3d68ecf05475492f041c88395372c3a01b30351619bebcd38287ab185be7f7e4",{"version":"36c956a3a6dc279f1e6b77aa4b97b7b229b7d828102573ef5002de456ff5e1d9","affectsGlobalScope":true},"45ac321f2e15d268fd74a90ddaa6467dcaaff2c5b13f95b4b85831520fb7a491","6e8b894365ab993dbb55c58542598d1548fdda072c974f98b89c218891e2ba09","ddd6169dff8e5263397a9399ba7ba92521d3959f8f9dcdc27f24403dc7b751ba","508e1e25ca40ea6cde332d3232c826fcd82f456f45ae535d817754684f048f9e",{"version":"2866a528b2708aa272ec3eaafd3c980abb23aec1ef831cfc5eb2186b98c37ce5","affectsGlobalScope":true},{"version":"8f8f6ee2a0c94077f79439f51640a625ac7e2f5dd6866bd3b5a41705c836adfc","affectsGlobalScope":true},"ee97aed5b4667a5c3003a1da4b108827fc64b888391417617d89b02ff134de9a","839421b494b57cd2bc0074e914130277051850eba6def6c25870056e6652640b","e18a4b529c9a05593e612130554d93a2b78b949cf1cf48c0b183071258f0e95a","88587b5c94b0c4f5d78026e4beeb93383b3933c860d9840b55d6bf47d7b632bb","a473ecd14d9bafbd6a33105524b033237bbf1d6ce2cd81eb71cc54bec2d83d55","9e8947666e44137405fd378f3a8a0515a492e967e552406c02b991c98c78fc61","0cff7901aedfe78e314f7d44088f07e2afa1b6e4f0473a4169b8456ca2fb245d","7a2a3ff87ffd4313a6a2f3b012e801dd249ee58152cedf90c8718dcd2c811fe3","69640cc2e76dad52daeb9914e6b70c5c9a5591a3a65190a2d3ea432cf0015e16","a39a4c527b7a2dc7a2661b711a534c10c76852c5ad6ae320767d3f7d2621b67d","1bb5c9857b2ee32c199dd85bc0f4c0299112485d6e5dc91428eabfdee0dbd68c",{"version":"5daba568741c8ed283d67bf370c626a91e09fdfbc6d4abe22a7f93e2cf5138b9","affectsGlobalScope":true},"7f77304372efe3c9967e5f9ea2061f1b4bf41dc3cda3c83cdd676f2e5af6b7e6","662661bbf9ccd869f3bca82d34234b2abdc95c657e2187c35352d42dddb24c2d","5caa645cc390a0a8d5a031072b6b4e49218c17017cd80a63bd2557b19be13c5f","4c4334eb5d8fae83416a361d787b55a5743916aed8af812a909898bc7333e709","6feb6f75a3e4e017f8e6e12740cf06f18eefcf829284fa310da6c7f4d44fb2eb","4fd3c4debadce3e9ab9dec3eb45f7f5e2e3d4ad65cf975a6d938d883cfb25a50","0953427f9c2498f71dd912fdd8a81b19cf6925de3e1ad67ab9a77b9a0f79bf0b","b709ff1f6d6235f5e9c8dcbce3e683ff24ec35046b232d5a281af083026018d1","7df562288f949945cf69c21cd912100c2afedeeb7cdb219085f7f4b46cb7dde4","9d16690485ff1eb4f6fc57aebe237728fd8e03130c460919da3a35f4d9bd97f5","40c6ed5dc58e1c6afa7dcd23b1697bf290cc5b1170c63d0a4dd12f52aa39291c","71d6da3b0150ecdcd16c08b3b546fe4cc7f53df642eccfeb03c813ee788fae0c","a364b4a8a015ae377052fa4fac94204d79a69d879567f444c7ceff1b7a18482d","c5ec3b97d9db756c689cd11f4a11eaa9e6077b2768e3e9b54ff727a93c03a909","c14e9e86f18189c7d32b5dd03b4cf3f40bed68f0509dec06d75d41b82c065fe2","bdb07038733b2d74a75ba9c381dcb92774cd6f161ee125bfa921eae7d883ccc9","ad93e960a3a07dff7394bf0c8a558006a9ff2d0725ab28fc33dec227d4cb251e",{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true},"33f44d7dfe8ed95d42485149f97926d80d0f3a5d7ce7d6b5b21428a8286b51ea",{"version":"3b02fa7a1a681fc2eb13f43e43b77bb44cc6877f1452422837ed29e6ee09cdee","affectsGlobalScope":true},{"version":"7788d8805db107373b11c69a9af330d06d4441e2eee25d61bcc3393a1835b672","affectsGlobalScope":true},{"version":"3727b0d0f56cd835352e1f5e787c5a3700fc642913d1db94becbcb6918a8b978","affectsGlobalScope":true},{"version":"d0538cf31a6746ad8b976a85861bec36bed7da2f5b430b1e9ec4a5a5b2bfb84c","affectsGlobalScope":true},{"version":"083056dd6f2f7f6fadf06dd66a5f423567090e3c91e673a0853a478657ea4be7","affectsGlobalScope":true},{"version":"9cc66753c8b2bbb14e18ce8d09aad7c6dd4414000e42c68847d7e62c851f8096","affectsGlobalScope":true},{"version":"fbc3fa90d994e7c3e80a798448f85942e2c86f319064e0bd6f9fbdfc6f3be91c","affectsGlobalScope":true},"8e0ebdabb5ad34d826379e7a456b9a6eca952dfdc940af26f3309bf7269f97aa","16d51f964ec125ad2024cf03f0af444b3bc3ec3614d9345cc54d09bab45c9a4c","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc",{"version":"61b60d145059c3c8e3c7b484713191b6d0b70999bcb11f2b26286b15926a2b5f","affectsGlobalScope":true},"84e3bbd6f80983d468260fdbfeeb431cc81f7ea98d284d836e4d168e36875e86","0b85cb069d0e427ba946e5eb2d86ef65ffd19867042810516d16919f6c1a5aec","6d829824ead8999f87b6df21200df3c6150391b894b4e80662caa462bd48d073","65cfd1c0bc729fbc2b49fe66bc5ebddba5aa3a978c748e1d2e0d07f502238ce2","15c88bfd1b8dc7231ff828ae8df5d955bae5ebca4cf2bcb417af5821e52299ae","f6846a1aa01d1dc1ff2fd66922a5213db597b540a75cd1fceee8cd81a3f01f11",{"version":"8f12f0b8a0d31909b365a51faa525f6d4515314de5d4c302f563b063114d93af","affectsGlobalScope":true},"98ee144e84a53b12ae9e1623fe7651d1e7957c6776af84829e510004929ad1d9","f48660020057a0ce352cfd0fa52076d8ba5f86e3181cacd223c67428eaabc185","78000e7e4e792064490eb47dd7c428398a1d1581353b16d1cfd9102ace46c86d",{"version":"8d6d51a5118d000ed3bfe6e1dd1335bebfff3fef23cd2af2f84a24d30f90cc90","affectsGlobalScope":true},"c037ae63b6a537037c511cfd628a4224a5ba2c18b8005428aaa7677762ed5ccd","db8f516635a8069084788f035b89e9d18a9b4bc317d5cd4a6cc9de2bbe30ea2a","7aa2c4361d1f3243c262813fec18366e89578c527f44b1ec60fdc8fc7977d551","81ae7b55963b40719c5c5f0184923a02e3d9141063206c731e28fd8815a653f3","554fcf39a146eeee8dbcb8210c0ef74875c0b8a7a112300979c24d8655979d86","8e0ebdabb5ad34d826379e7a456b9a6eca952dfdc940af26f3309bf7269f97aa","266f841bfbb4358874546e9b55f87c99f0b88e28c42544be9cdf7676a9bbdc9a","905fd426fbc5b7ed3d7f7caa57e1bb66f515f54c7a7e52e79bfdc5599fd62025","c3218428a1422d031abb242c791f76882a959391d676697c52c58feb123cc739","8744deeec972d07732ef9260eff40135ef860660f5613440a0e2060f9263c39e","fd6c35310a36015681c832280d6583cb3571b04b5523e033a6f010b34db4c1bb","f855d47e6066386d0c85b891c9ee4870b34b43d55dcb3563e59e60c0759be6e4","63d8839c609a48c023dea11798a38e09e3b9227ba99756d45930178e740757b6","3d9d985d41e536fcf79fc95082925c2f1ae5ade75814ad2bd70c0944747f7ac4","02904a3994118d5f9b45699aca81a6caf7d630e1b97f7806770c772a0d89f045","b0e6f1b1569779cf567317c2265d67460d1d3b4de4e79126533109d87dc16d50","cdd8bcdd627ca9923b440262b4e3d9be61ab110b5778e92ee72ca83f59bf061a","7a8d78ea4e51c14996d9e405158495454fb6f32682660f5ee35a9676a6988585","4c608b30e56a915fa9ae7392127d2c2dc1c6840eb5b031f4c52f1011403ecc79","80c538ee6a62249e77ba3de07efb23d4a7ca8946499c065261bf5079f1cd3cf0","ad4277862bdcbe1cf5c1e0d43b39770e1ccc033da92f5b9ff75ca8c3a03a569b","222ebf19b1260582fd2023a65c5b7da77f730021f05afb9c4ead4b0b339a8c98","6fa89ecb38fbf2aedef350744e230b68cc4a884ef7b7eb4cd347691b032fe3e4","f10f3eaf960d85799ad9e65d8a1d0ac75c07a04991fb527ea17454eb4601d129","4cea506dcbfb8f7b84d27aa211776d19659075bbf68f898a8643fc461b120c04","bc1084ef11aadc2199b7bd85c5fd2ebb5dc772983bb3e42db784cd3696868d81","fff823cca0eb5103f7bd05413e50c1ad99ebe62e8edb273de0c43b507e91e097","91464e0beb8309e6694eb09b58777bd1d86a058b69a5752d4600e1550fc5b22c","6a219f12b3e853398d51192736707e320699a355052687bad4729784649ff519","4294a84634c56529e67301a3258448019e41c101de6b9646ea41c0ecdc70df92","55f75f5fa3413eb3a94bc35dd1493643a69c8696af0a817166210a80b01841b6","27f24ba43083d406b372e9eff72dbc378afa0503dac1c1dd32499cc92fc9cb22","12594611a054ca7fe69962f690a4e79922d563b4b434716eb855d63a9d11a78f","276265ce4c584e1c48a326adde8c28256988f1e46f8b2bb44e864353dbddc372","c1936ce89b6aac997231b46d32228e924573d023db7b48504060bbb8604d42f1","20dc402bca149465f4ce0944db461608f28623cfe14425f8e731780ffd0a6261","68becfe8556ad2780c9cac09f9ec6b5234f84abe67974fe526c7db96a0449cde","ac3a69c529ab256532825b08902aec65d0d88c66963e39ae19a3d214953aedc5","3d855ca51e9e1b40140265a003600488d723d926d7c1a04736a5883fd23767ef","04d5bfb0a0eecd66c0b3f522477bf69065a9703be8300fbea5566a0fc4a97b9d","d5e3e13faca961679bed01d80bc38b3336e7de598ebf9b03ec7d31081af735ad","de05a488fb501de32c1ec0af2a6ddfe0fdef46935b9f4ffb3922d355b15da674","733f5fed6c0e8717a32e8f4145566fc9819dd7b39c9d88973c834bcdc111f454","1cf086abc7abb48f994d986b3cc6bdf70c343a5661315f6bb982378b21b55435","4707c2fd3cc63371167c5b935c3dc66b10ed13c0106f4527d910892837929ebd","74fe5c4fb7d9ee01e8690638e4b60a14b909240c14632ac4e7662995ad004b90","3c725b4c73af44a1eedda6cbbea47d8fdc71d464e13633750aebe0af76bc2469","d8b8f783622d25039d66c910e13dc683914f384dcff6a5e959c41ee2be6085bc","bef79a9ad0b7236316ea3c59bfc04aa238f1ab020e87b12da74675c9909a65fa","c0dc3e6460b765ad7a83b30afd15e1ecb70c5875e539f0219c4147aadcee419f","0a394432809e8d612d8bf21ed34524906b158fd284d2c616461ee57d88376ec1","76a53f6b4062f3cc3c54d2a8b731f4b8d2782a7d3524115d3c977ca181306f39","b3ded8e50b3cdf548d7c8d3b3b5b2105932b04a2f08b392564f4bc499407e4e5","4ed2d8fb4c598719985b8fbef65f7de9c3f5ae6a233fc0fe20bd00193c490908","53a86aae1d9aaee78c042d6ed6695f301663114f62b16b9d061fbd711ef69d36","1e9dd4dc39eb80dacd5573944aa8b3f84854e8397ac3ec0a86feadd4e2ce40d4","c20fe75426bf9281b4b5ac93243ca7d93c55d9e9f5146b755028a2136302bef7","b94900f0dd2fdbe8f59ea6cccb6a5c851f4abff9e77fbb3c48a5a92056c32069","a49e3af85d547004bcd8535e19b328cd39f7164abcb4e10e52763e167740abbb","9b1f38160faedf5b9fa8b547c095c9f657c64f0704d8cc9b0691627cee7aee90","abcb5db28886eec7437cb341a42fec07580fb1fbc927d1bd4f0f22b558a7aa9a","5b3357f1ed0c21a46e7621826d18fef74c23be7730dd120856c5a611a6cd08ea","9d1d33309b69e7a14fcaff4c9e948071a3de86492d6a45ab74a6b5106d093fee","4e6ed4bef48690881ea035c614b6464baeea509e53eb4a7d031fa0c76750b5aa","5e8adbc639baedbe696f909af9b006c373036173e15cf16b734626dc1048eda5","81cba2f0a70de428740ff2ab6e1b92ae478f8f39c9d9693caf2a6a6232424699","f96bc782a683a66faa77373b6b98d7519390356483f5ca61be711a81fcf19246","83556962cc0fd18f62a6a042e2eca753a8211092cf34e11e5954ae999b1dd310","1c92595b30c0ff3f7d358f4328571a08aafd5cdb13ff69763a6df25dc358cf52","a152b47027da5f278b1feee0e9abff8f026fb911c0e848b6273980812272b571","7d659e9b2e21d1ead6a231cccd32fe699e3010bbd4b12b98557f689eff8ac239","1213cc36fbc4956e32b402ff1adbee562513aff7c45d8ca6170eaaa117d63ab3","5d4386e386d0fcadba8dd8881fcf41249a3e38959a85f16f46662f556aa5fd92","e246b14be6df6cbd0076f1e9f2e42193e56481579c554c7d361dac0c3a6d01d2","b96760c030c41fa078b35ea05fc3e7e4d2a81710a8329271d42b6abc110d5dbe","e48c779f2ed51010907b3be4015586a6c2ab72055edb26897984379d939ede98","1154ed167b954ffb24a95ec3b11b1519a597024e7fda1df63c144962bc523aaf","174a3381f98fc78c451528cb1aa1baaa37a51852ec6fa90d42efd876301537c1","42f44c5a2957b5ebddf155f15c111f281c3446e55bddd6a6cb9505d7a683ee58","b19fc2f23b90bdec3fd4c82e4925531bbcb14faf01b5b193177c400589cc3e38","2646e316872aa61ed09e6272fb07ecd766a7977fbf37080aa6429be40907c1e7","113a6b4ff18eef30defc70772d63cb27f54a1b42aee75a7d22987d2bd040b073","c0df860f73695699aadf57bf4ed9884de07e4744bdf9b0f74f0707ad9a5f0c0d","1f19859b5b619258d8d83f7634ec0c326f95e282726562918da4b089b24daa26","09423fcf77b1f327971c2b22ee16e744736a403b33e414fe54325296537ac9ac","f3f4278ff190e4896f44e1853bb6846be75e2fdca494a6d553f375f97424a516","a945caa7e11a3671c7b9bf3f383e5f8ebeb90f35b66ac395bab48faf9752aec7","a74903ddbb6e705602bc4c122e14e7612ab755416188e9654c6cfe50365d86f8","a4bc52405b5e5e7b1371ed38baf9dc693833cb531402da9cc633c48ab14d4d4c","15640a3fd0e6bc66cde18ed25f0cdd44c015bd0ac68ac0809b4ae30c20460d9f","a0b52388e287a453c333dcdbdfd9e450174d1a00026152e9f25641e7f3a98d4c","bf933fac182d47797b18f8fe63e56a300f924f1bc1fc1243e55ab7ea045a5fd6","77a1010705f6cf4be6cc24701d8daa472ae2ea855f6e3d40409150eb3d687509","fcdb3b7823e8cd2da703a7eef46e7f7de53470c60b8ea0659c608022e8f6ad68","5eb09226bfa1928721a438e37c004647fc19d8d1f4817bddcc350e57fb32935f","5994ed389d7fc28c03dad647ecb62e5349160bde443b0c7a54e0e10d6368bcbd","e1ff7df643e1aa1dbf1863113a913358844ed66f1af452e774834b0008e578b2","338eef608f7e8c0d1c1b5f7729572289008875288a7a86a922aa0e94c104ca10","2752e949c871f2cbd146efa21ebc34e4693c0ac8020401f90a45d4e150682181","c349cea980e28566998972522156daac849af8a9e4a9d59074845e319b975f5d","0370682454d1d243b75a7c7031bc8589531a472e927b67854c1b53b55ee496ea","a09ceb2a8c55f2dac2c2e2aadf0a2e209ddc88015b40fc57bf4135d38bab1083","a4ac6823e8b4734a42da1ff865876d27e0dcf168a3e188b264ad1b774a2b19c9","4d26f8d4e5c2a8de9285e82ea0ce5f5ed986866b4a77b9082536a732e7f40c36","d1b5663356da50b06bf7a8c547dd30161d6435f8061678437c06efe2d1c3f66c","ef19d5fe42541f8b529bccd10f488d12caefa3b57a0deb1ed6143219cba716b4","84b5e6269d7cf53008a479eeb533ef09d025eafb4febe3729301b8d4daf37ff2","04196b5d9edd60b9648daa329c3355d7c95f33b7e520e7835eb21002174a8b8c","e654a862a4bcf28cfdccd1a6347ff0ea693b9884b8974e5495cd9b966258c79f","3fb97479497f8ca1c32d2a42ca3dffdf9e1622b570a3c3ad86676d8e11e3f6c1","3e83e04456081265f0ed95f7536ecd35a95532446f43af65c068441ec0d9e1c8","7cb15826409bc8705cbeffbb3d85aee5615f8f9edb21250d25ff88d2b5e62019","247ee0b7d2796444a3481811b5ce830a5fa289f40b310f0dd024251e91c7e179","7173502081d153bd441c3c6e053984bf390961fc248e5f7d4b41ae7747839359","d0e7cdb03d554da843a370d4101b67773cf46562eab79a359d92b58baea83bfd","b6bec0d2022c0f9b923d125fe833b1171b5a43acc8e2ff94ca8fd1528e6ea675","833f0c05b6f98feea4028eda2de08ea075a5094c01805399a6d93657dbab1ccf","371ab2e2daed8d299bfe0c5fbf1e5a588235854c5f705704540f61e3127cdbb4","ab159dda8873292919fb0d498cafd4c922c2969928eced2b834062b4ffc2d7c7","c10324442297210833600b677d3c5478e839c0cf5c86630588c5079d81ce9446","3e855437e99a09e54d2813e8e0ddcc78caf14dc9709c35ac93cdc35f2b581abd","c5f040a3f96cb9e644fe69e77a017f69833c891d9943dfb75f7b9707337e7cc2","32f9169fb6cad29917b3f1670550df48ba30dee34dcb0bffaed13947b2e0d2d2","15961bf00025bdd21dec5bf822728e3b92309a935503d71ce31874dd30c31f72","c1fa8be5a9ffa9bd54b74a682971f33dd99224e7238caf1ba07746bac2426592","59c2cbf84c22fae87f4f506f36a7258a72b931b602115067dfd6008ee526f8c0","0df643bb575cd1f04cf2df32613dc6f0c29b9b941a69d2656bfe2868c55f1872","88273e80cf190b22384a954487c3d401595c4a67e939bfd92d1f5c4d5a589d26","6aee50a5285d7d0ffb297c4696bc3f808b834693f9af5e406836184954162acb","252a2d81491b049f72d868d5c6fdf084eaf69fce4cd76d59d380e4552e6359ff","69ec6331ee3a7cd6bade5d5f683f1705c1041ff77432aa18c50d2097e61f93db","06f34a0f2151b619314fc8a54e4352a40fd5606bda50623c326c3be365cc1ef9","7ef2a14da62d77cb343dc94f7b0dd394030f779a8009c4d0bb7ea829f26973b4","169a179e1156536af896a9c2dbb8dd39acb298b77bc09ab77e999be6fa63a663","6c3d3586d8fff56a9763c47133b4a9230480534471b38c7a2f688eac5d819164","74b79c7994a5db331a82cc4c062d65923fbd34f33f03fb50e66cd20b60e2d28f","c1ec0ba6d8f3af762f96c29feca5da12de892f231c0216aad20f0fbc18f07c27","0e3aa780aee28b1eb2b2bba6c087e92d8a93eddf6aeee81e2810b6e40b0d6fa7","99f5e2875ce5aea1a61d0141504c56ccc31891d7a646d30cb73c8bbba382e9d2","3d4e239b17f413be13c0e53e557cf14183d422723edd401973971a375150c8c2","6efaeec542f15491c801163235112984c76e2972b09a88ce07eb9b3a71db6270","d20af22b435bd3687cdecbd30178707cab80a8d9a46a303a6b128b855178326a","b2efafe67c811e8e2d8d35f7597cf42bf2b3aea2b9541efbaadf082c3c5a9cf5","f13e2c4f2801a74e3c3c49abf7263aafeefd0259790e2d6a98b6a729e7cd5391","d51a2e050c8a131b13ec9330a0869e5ac75b9ac4ebde52d5f474e819510b5263","e8673f544fbdf3fcdefe68fb3f91321b2fc899437b4b2798232654a3a0f55dbf","b321411107b4e737d1590ea1a5ea33c668c06cf15caf182ee10a9adff4b36796","e78aaddd9e825e66ee7e7a1cb1553a7ff0cfb4c23dab6cdf11af3a6823c9cbc0","6278df8617ccd2772c09e6e5a58d1b78e38f49750216070b6f96c1110b59a1bc","908186650911cbfe9a5aa005ad1ee610d13d02cb2e4a27a9e1d442dfc21909bc","66bf4f1c2021505f93b884d58bab7b99cac6fc580e615009020583fa51d79912","6f779d9be34a50738557cea9bf421695dcc149fd692a63857c73cc4c0dc8548c","5f4856a3647a169eae71499e963a24de88a56823ca2038c13c0943920812e44a","bed6c7b84b7481bf4c63b75f04cd156baf3a1e563c12fc66a6fc2aa2d7c6a889","244511898fec5159e9e5d00880e33745a947a09cb9007922dbecc60e007cda6c","90d202ace592f7b51b131a5890ec93e4df774c8677a485391c280cef0ea53f48","b34e1861949a545916696ef40f4a7fe71793661e72dd4db5e04cacc60ef23f7a","31eccf1fe752811b6611b91f873b99e115414ef2f333da0c0e3636296d508555","66e6c7792fb75f40b2721367b9b5db188614487cafd30008088ae50a85618f1e","f7aae4a6c2b1f77c184dac096c3a4b9f2e32d4d23fe73ce7f30141912a679097","81dfa060d1bd2af2a0ca909edf133b88c06b783b07378b68f1e7750677aa30ce","86038e3a6821c05532dd1dbe8183f735a26585137af10fed17807a20df861ab8","30884e6c4e805be89fc1178ce92ff95adff50e5330246a525db72b8501cdd698","2a8fe3e7bedb25f587783d0a02b027f4bc9b65ce1f93e4d034a2826582cc1c17","bacf61766d6b2a9662d48b0adb6ffd9cf116a179862c8b6698c7b98bd3e0cf19","cf4dc15ca9dc6c0995dd2a9264e5ec37d09d9d551c85f395034e812abdf60a99","e74babac0be57a8e13eb69efb67286c6e954625978c67449e679267180ded327","4cb49e79595c6413fcb01af55a8a574705bf385bd2ec5cf8b777778952e2914a","d6b44382b2670f38c8473e7c16b6e8a9bfa546b396b920afc4c53410eeb22abf","3b5c6f451b7ad87e3fcd2008d3a6cb69bd33803e541e9c0fe35754201389158f","548ef4a7ba09bdd5a03e3be32ecfd4efac910d86691444f80f56d95bd65d6d9d","a2d163941b598e23edc92623f5538fb8dfa84014009af271f1b2b5d7c29fdccb","de4e081f41e80f4d62ff6622346b1c434de3185bfa56a4cdb8f4566f2cff96c6","7d3f8373b871b9570f85f1f3d598f186c547fbc20bb47f606c7055d73acee9fd","a01950b95ce3146810d9390e8561329610a47e127d5f9518c89ec18c25179bfe","0207f87632dd8a801dcd0eaa423a4d5bb35ea39ccc60b8c21c475429887679f9","59e9defd647d02a00ba6f6fd737535664703ff74b95a94868c020edd8027b79c","75ef655e0a83bed5c95349e78f66f29375d9c034ba2ffa43e7514d5cf0bbc627","d14dbf3a0c3d3265e109c96495a16999dd64b4a23bddca16111d15833c5fb271","921274e649ce4eafc40a63f0f155bd5d26d4ed8e6d3002c9f0fc066fbcb718d9","3598dc8f8c08ea2e05e34ff7b6ba5b79806f625d8b483ec25bd2f8e1c2f013a0","b7516e801d54a65d1f1abe8ae70881413584ec107d2852aac8546f716d1c886d","c86fea295c21ea01c93410eba2ec6e4f918b97d0c3bf9f1bb1960eabe417e7eb","05d41b3e7789381ff4d7f06d8739bf54cc8e75b835cb28f22e59c1d212e48ff3","ff8c485f6d39157c29e9196f99b0e69b13508b84bde6b51b01f8f3f7cb35f4b8","94169a40e1ac690c161c8e61b388d298ab202c9b95a885532d2e54686e24adb3","f63be9b46a22ee5894316cf71a4ba7581809dd98cf046109060a1214ee9e2977","dd3cc41b5764c9435b7cae3cc830be4ee6071f41a607188e43aa1edeba4fbb3e","b2dbb9485701a1d8250d9a35b74afd41b9a403c32484ed40ed195e8aa369ae70","5aa7565991c306061181bd0148c458bcce3472d912e2af6a98a0a54904cd84fc","9629e70ae80485928a562adb978890c53c7be47c3b3624dbb82641e1da48fd2f","c33d86e1d4753d035c4ea8d0fdb2377043bc894e4227be3ceabc8e6a5411ab2e","f9ec74382c95cbc85804daf0e9dabed56511a6dfb72f8a2868aa46a0b9b5eafc","be32c0a0576265a4dee467f328c5945805a832e6268d312ed768cae1f2666fa6","f03ad8ed9d468e4bd52cbc20888bc72df27aabab4b5d57f917c5a7de0e9a9bee","e4ae60dfe4f3b266e1880c565e6830349bd67502aaed04d4196c14f006610e4f","4dc6a62b37bbe4af66ef387690b6493c984eee96d0e5e9979f17ecdc098f520e","90878ed33999d4ff8da72bd2ca3efb1cde76d81940767adc8c229a70eb9332b2","d7236656e70e3a7005dba52aa27b2c989ba676aff1cab0863795ac6185f8d54f","e327901e9f31d1ad13928a95d95604ee4917d72ad96092da65612879d89aba42","868914e3630910e58d4ad917f44b045d05303adc113931e4b197357f59c3e93e","247a6d07530c7f4496d74afde8e25dddece9f20222dfb1f028a2faa65b90fd04","275344839c4df9f991bcf5d99c98d61ef3ce3425421e63eeb4641f544cb76e25","c4f1cc0bd56665694e010a6096a1d31b689fa33a4dd2e3aa591c4e343dd5181c","81c3d9b4d90902aa6b3cbd22e4d956b6eb5c46c4ea2d42c8ff63201c3e9676da","5bfc3a4bd84a6f4b992b3d285193a8140c80bbb49d50a98c4f28ad14d10e0acc","a7cf6a2391061ca613649bc3497596f96c1e933f7b166fa9b6856022b68783ab","864c844c424536df0f6f745101d90d69dd14b36aa8bd6dde11268bb91e7de88e","c74a70a215bbd8b763610f195459193ab05c877b3654e74f6c8881848b9ddb7f","3fa94513af13055cd79ea0b70078521e4484e576f8973e0712db9aab2f5dd436","48ffc1a6b67d61110c44d786d520a0cba81bb89667c7cdc35d4157263bfb7175","7cb4007e1e7b6192af196dc1dacd29a0c3adc44df23190752bef6cbbc94b5e0b","3d409649b4e73004b7561219ce791874818239913cac47accc083fad58f4f985","051908114dee3ca6d0250aacb0a4a201e60f458085177d5eda1fc3cde2e570f3","3744239074f9d681192bc60dea91e30360e28c96207f53d2e80d64956ac8e63a","d82609394127fb33eed0b58e33f8a0f55b62b21c2b6c10f1d7348b4781e392cb","b0f8a6436fbaf3fb7b707e2551b3029650bfaeb51d4b98e089e9a104d5b559b5","eae0ac4f87d56dcf9fbcf9314540cc1447e7a206eee8371b44afa3e2911e520c","7324096f281ee8878c35355b523b9e939e2d7cb41583fd54668c44e780ddb7aa","b92ac4cc40d551450a87f9154a8d088e31cff02c36e81db2976d9ff070ba9929","6f99b4a552fbdc6afd36d695201712901d9b3f009e340db8b8d1d3415f2776f5","43700e8832b12f82e6f519b56fae2695e93bb18dddb485ddea6583a0d1482992","b967b7b90b9a3295b33f425c9905b15eaadc6939fa7d399a3cc540b88d7aaf87","6db546ea3ced87efda943e6016c2a748e150941a0704af013dfe535936e820e1","f521c4293b6d8f097e885be50c2fef97de3dd512ad26f978360bb70c766e7eae","a0666dfd499f319cc51a1e6d9722ed9c830b040801427bbdd2984b73f98d292a","a7d86611d7882643dd8c529d56d2e2b698afd3a13a5adc2d9e8157b57927c0da","7e4615c366c93399f288c7bfbaa00a1dc123578be9d8ac96b15d489efc3f4851","f2e6c87a2c322ee1473cb0bd776eb20ee7bff041bc56619e5d245134ab73e83d","ee89bc94431b2dfaf6a7e690f8d9a5473b9d61de4ddcb637217d11229fe5b69f","a19c1014936f60281156dd4798395ad4ab26b7578b5a6a062b344a3e924a4333","d080a3d9a369ad6924d6183a21d0f882b4537c5da6917433a762211fc0d07ce2","4a800f1d740379122c473c18343058f4bd63c3dffdef4d0edba668caa9c75f54","8e6868a58ca21e92e09017440fdb42ebfe78361803be2c1e7f49883b7113fdc2","2fbb72a22faefa3c9ae0dfb2a7e83d7b3d82ec625a74a8800a9da973511b0672","3e8c1a811bad9e5cd313c3d90c39a99867befa746098cdad81a9578ac3392541","d88f78b4e272864f414d98e5ed0996cd09f7a3bb01c5b7528320386f7383153d","0b9c34da2c6f0170e6a357112b91f2351712c5a537b76e42adfee9a91308b122","47adac87ec85a52ed2562cb4a3b441383551727ed802e471aa05c12e7cc7e27e","d1cacf181763c5d0960986f6d0abd1a36fc58fc06a707c9f5060b6b5526179ca","92610d503212366ff87801c2b9dc2d1bccfa427f175261a5c11331bc3588bb3f","40be004f224a10b561b836bde4a65f1df1484388665f7c78d3ffc62bccb4dd97","862a9a28d7651007bf274d53d578a23619d5207a10c1ac6e34fe58c9558394fc","77fece0e88132fb5383810d303de6152ea8f2ff1ed2cd4ac1abd69a7fc570cc5","a37b576e17cf09938090a0e7feaec52d5091a1d2bbd73d7335d350e5f0e8be95","98971aa63683469692fef990fcba8b7ba3bae3077de26ac4be3e1545d09874b8","c6d36fa611917b6177e9c103a2719a61421044fb81cdd0accd19eba08d1b54de","77081112c1ca3ad1670df79cdfd28a1f2fd6334a593623aaf7268c353798e5c3","5eb39c56462b29c90cb373676a9a9a179f348a8684b85990367b3bbc6be5a6e9","b6d6835fc4a26b227920250c7fc1fdebc2f5016949edd0e1901129e1f6bc9d13","731d07940d9b4313122e6cc58829ea57dcc5748003df9a0cad7eb444b0644685","b3ead4874138ce39966238b97f758fdb06f56a14df3f5e538d77596195ece0b5","032b40b5529f2ecce0524974dbec04e9c674278ae39760b2ee0d7fce1bb0b165","c25736b0cb086cd2afa4206c11959cb8141cea9700f95a766ad37c2712b7772b","033c269cd9631b3f56bb69a9f912c1f0d6f83cf2cff4d436ee1c98f6e655e3b5","bd6d692a4a950abbfabe29131420abe804e7f3cc187c3c451f9811e9cf4408ce","a9b6411417d4bffd9a89c41dc9dedda7d39fb4fa378eaa0ab55ec9ea1a94eb6a","1329e7cd7aca4d223ef5a088d82bc3f6f302ce70581c8d3823a050ea155eec3b","3acc0b61e9e5c37fb9bfa002da4234d468300fbda358e92d675d14d4755600fe","b8df115bf7b30cceeb4550c0be507082b9930ee6268539a1a1aaffb0791cc299","dde00f41a2d2b1e70df6df8ac33de7cb3a658956212c7bee326245cc01c990c2","61f5790adba82b47b8c6d3552a9ff904655aa55cd5cba0d605405e6cbcd56c77","5cd5a999e218c635ea6c3e0d64da34a0f112757e793f29bc097fd18b5267f427","cc14b99b4e1bbedab2e3fbf058ed95231d8ced691f0645f2a206c32464f1bd7b","e6db934da4b03c1f4f1da6f4165a981ec004e9e7d956c585775326b392d4d886","53e65282ab040a9f535f4ad2e3c8d8346034d8d69941370886d17055874b348d","6ecb85c8cbb289fe72e1d302684e659cc01ef76ae8e0ad01e8b2203706af1d56","35ab64ba795a16668247552da22f2efe1c5fbc5bc775392c534747be7f91df04","34283015304de5df8d6e3740b9bca58e40513ec6333b3fb0a3fa3aa4c43b856b","4a397c8a3d1cccf28751bcca469d57faeb637e76b74f6826e76ad66a3c57c7b8","34c1bb0d4cf216f2acb3d013ad2c79f906fe89ce829e23a899029dfa738f97e0","08521fb4e5e7f3c47bbe7dea62b2696422f816ca1b7f90bf55a3d6e9d9d42047","dd661e118e549293177ef4531d54328624229e7a5aefa8f0c6194e033db3bd19","11e21e674001320d403c1d7f33154b6391f61ab5ea3667cd942ef6c37f39da81","7363a9bfd7b8bc068189ccebfa395383b9c84f115e8a0bf2a71f4de68f28d5ad","9584dd669a3bf285e079502ebbb683e7da0bf7f7c1eb3d63f6ef929350667541","41a10e2db052a8bf53ed4d933d9b4f5caa30bdaee5a9d978af95f6641ce44860","0dcd8a4a8314acf13bfb6074f9a7ccafef02ff93294c0c033643f99687cd121a","6392ce794eef6f9b57818264bb0eeb24a46cf923f7695a957c15d3d087fbb6cc","b10f123e8100aa98723c133af16f1226a6360ec5b6990a0fe82b165d289549db","93d20368cdb5fff7f7398bfc9b2b474b2a2d5867277a0631a33b7db7fd53d5b4","b1e69b9834104482fabf7fba40e86a282ee10e0600ffd75123622f4610b0ef9e","ad5bb6c450cb574289db945ff82be103ed5d0ad8ee8c76164cee7999c695ae01","e9aa5ccb42e118f5418721d2ac8c0ebdebeb9502007db9b4c1b7c9b8d493013e","d300868212b3cc4d13228f5dc2e9880d5959dc742c0c55be2fc43bcda8504c8f","0c55daad827669843bd2401f1ddd163b74d9f922680b08ae6e162ceb6c11b078","5055e86e689cfe39104ab71298757e5aac839c2ea9d1f12299e76fa79303d47d","42266c387025558423c19d624f671352aac3e449c23906cb636f9ae317b72d7e","365647ed7b113e727b2ced995e856678d8276f20adae6457ab50a8fe806b06b2","af1af59e70d7cd03669420193574e8b8d2667213e1c874f17fcbf78e3e96d185","9b21e8a79f4213c1cf29f3c408f85a622f9eb6f4902549ccb9a2c00717a0b220","d556e498591413e254793f9d64d3108b369a97bd50f9dd4015b5552888e975ef","e2c652c7a45072e408c1749908ca39528d3a9a0eb6634a8999b8cf0e35ef20c8","ec08224b320739d26aaf61cead7f1e0f82e6581df0216f6fe048aa6f5042cb8c","4eadaa271acca9bd20fc6ac1ea5e4bf9ab6698b8ccf3ec07c33df4970f8130f1","3a0a397189726902c046697f7bf38fecb557a79d5a644aac9ec983024b4c3d17","46f1df33bc635aa84313579ff51a7269707b58a8a32728e4e5fc7ab47816b44a","5ecd8fdeb6c87db9c320eefbfa9ea27efccbdce853ed38d5ba58e2da482edf1f","19a4d116285e7d77e91411966930761a2204ce2d20915afdb12652681a4a88d7","c30ca82112586c5dae7477d7e82cc91a7e0d1e658c581f9ec3df07c4485bba84","68fca1813d17ee736f41124ccc958d0364cdef79ad1222951bfacc36b2630a58","2a1718499352fe9fca401d6f99bf7bac822daa7eea58bd68286dedcfaabc80f8","561067dc7b6b7635277d3cad0a0e11f698d377063dd2c15dfac43ef78847eef4","a236ad8ee2cc7e31b0436f3502750adadcbc3342d5cccd6b4e6b2ae5c5b20fc6","2968f1800b627803e0a6744a0a9d58cf7a8ca4d7820dcd24840fbf14e9a99923","fc9b2868b6707a9fe0329b1fc7448644faef6412d042323938616b33e3f10591","125c3b5ad822db90ecd9215f1b64cf8e365afda31ecef9a7141300e48f183e0c","438247e782a8a9b9abdce618e963667cf95157cc6d3f5194a452d3c7d9e9655c","253f79802f33f405c1807f33efa7d78e0a26143ee694297d4f8e1477c7ed5e28","f1e8eca509487806fdf979349cfcdb6ffdeb20f11b7e95666c4309d12dcd9ba6","83724b26b711d85d6cfc9dd92fd5d666ffaae27fcfb1a0110401b98814ea26c0","c61d8987f0e0eb2dd620bd9cb7b1398f2ddef9e63004ad2bbe6c7f06789e7e5e","596366db50dfeb7ec8a1da8650030809c2938c8efef5cf1f2b897443ecdbe71c","85e2808cc73ab3ac07774802b34a6ff0d7e1e46c26de7bc2dbe08e04b3340edb","f766e5cdea938e0c9d214533fd4501ab0ee23ab4efca9edba334fa02d2869f11","eb380820a3a1feda3a182a3d078da18e0d5b7da08ae531ce11133a84b479678c","17250426320eef8842ec175088abe01460312cacf97c8dabca7cb1c919be1e1b","ddaa88853f1ee35622267a9d95450cd00c80d6d920ff7acb438c5a6d265ba549","f780879a2ca63dbb59b36f772bc28dccd2840f1377d8d632e8c978b99c26a45f","2c0639b28386cb90bc9f5ffa210c55beaef22b196096820cc11d971f33dc6ca9","1f6b42497e897d0e703464f75d264e5b7efbc54e0060e48811630e8e34c4bf78","c90f8038c75600e55db93d97bab73c0ab8fb618d75392d1d1ad32e2f6e9c7908","ca083f3bf68e813b5bded56ecbf177636aa75833eb86c7b40e3d75b8ce4c2f78","3c8bf00283ef468da8389119d3f5662c81106e302c8810f40ea86b1018df647e","67b248e4bac845c5139898b44cbd3e1213674bcc9831039701b5f0f957243a24","4eafa9b29603f99f816a686872bd2c7dec00d0250eb3b1c0c9987fc12c6b999f","9f5f256c7b5cc4a98ef557ea9720f81e96319d569f731c897ddb4514936242b4","a20ded6c920f6e566537e93d69cbad79bc57d7e3ce85686003078cf88c1c9cfc","b90ba7f5713afd494546fb053186dc077993b8b56ba46c08007b0e67e9f7212d","45bf5ca176cbdba570fdb372fd44343743a263f5fee80ce64876f9dcfc8eb374","d8291072f60eab7ba944815f0eac58f72fd6c94e5add38c17a5a77b751c762ca","bda2fb4d78fbec5ebb7397460a4c9e05da0e94ed11f1a2f9e8e401924ca53578","88331dcab25eb03a0de8ea2d2a48b7d1df81b380e043c6560469d14c5452745b","2b0efa367149a530075699e9b146c625958ec3df1305405c9dd9f98dbc468180","b75db76c1ac0d59dbe5ed5848e7a09cd452ca5dec918313becf7dacc420dbfa7","c8504dd7e9055887f48b31b74697e539975b715c7a2cfef2e987ee4c241d3fb1","b250d34cdebe2744cf32c7eecfe58c48496f1650fe7e944eb745a80b1347377e","f4ccbddbaaaef62bdb3e0e4455321957069fe84995aeac8d0c386a761741c4f6","ffe81bf62046e1fb340972c2145bcc702c9de80c46d315177eae201be2d3346a","ab77da5a8f551ef0ca6d9113397b651cd0d186157d0f727273f414a87cae0273","5447d822f322883bcaeb31f623b90e7777ba29baf67f2eb72611f2f194802664","9ac2fa41d9651fe6d78a736535e99963c9835f2c16a987d83f1ecfc6b4df2d21","f2582dabd6f7104a26857c65d9c3e632a5504d31205bd8c2b17f2dc01cd289ff","2d41830b3aba43bbbc15f4ad616bed0c78bac80af13b83377355516c6530a867","3107554539651b2b7b688ab832e0db49e73f9c359110846eaae88fd5ae7d9e98","a8a035785c1a7e7e884aa8a682b10f47c7d13392ad21c6f03664499b1114cbb5","338bd7c3518b05b4c473971be0e5f8f854aca7cdb00d1b97192c14860f4ebf2f","b97cc1db771cf580d56411fe9221b23f313e9b0d559e5bcf311b8ceccae6f397","a83689c51e47f722dc17ce46a251ce8e0f8b376f75cfdd974e182c0d3fea4ee4","23caa65fa10f87f9ee1924058fd4df1af46a433a3dd4174038974ec8f9e6d105","c3c4131f4ae257055f727510d9aa259cbf88688726c9a162df7be858f2292077","59910c51443b2307e41eb1a96947619f5c2797bcf22ec56999a4672b8ae0735a","c16463c2a74cf779a4a575e2ce891c24fceb7ad6edca849a9c1733ba4ff743a1","e762d972281de7764bfccd90f8305ea2ac2b6f6e021ea9aad5432122b901ed77","057d87e5f03b3251789cd49b8559c5e153db13fb3168ecb525c878c0f7892f71","f4cb0d0529a3ea159c57d2aa15cbd88f5b32271a20322693428fb129279da403","54e213d65fe99fcfb849358b0d63f81bbfd015ad9d42dee184632afb8b10878b","f358e029ab645e9cdf44ddb5c086cc7cdf97279f01ee857b8c3aef726503b3ef","c1f1d0f843b5711ea7548f14c7ef1ead02ffe679b0ee74b87487c1c63b7cd5ee","2daa459f9de948734e377fa8dc7e5ba5b5aaa268dedb5614ed493dca1c2b6649","664b9544091777d4670f12b82a6bec1a1c3d56d92d9ee9b0a4b34ee671b78208","5296c9ef02d5234da8656683dfd3de1fcde3edb09967a069a62466a629184e46","5cc9915671350639def256cf454217ba23fbaa4a9721f12e7cc993b5b6a0206b","d737af4c932c31713d1bbd7f524509745d8be64e9394376d24081806765d3891","0490a88c72c5b8ce6dbc18ddc4c57b20cf431faa3bd82a470aed3331d828db0b","84a0a4a53c43477925156dce1f09337cb607a73e1d1985557a42f180498178f1","9bd384108aa317f85ec1ec4c2bf279f61eb8b518427cf0d1431dbdb6f3008c98","7faace2a0b8055b9f31e42b95ad9f1f74a28d8681827c1d2c4e226ad2b9d9ed7","35fea67bde008f5d76f91b66431098e7c8d202f7e6fc21cab0ea7d316e457fd1","4a8e5fdd321181fdc0c175890e25eeb6f8e851d4b9038fd1308a202f2c04d539","d1afe337e9f07f4bd299223e15e788710e9924a572241594e3e42640ce349e99","a25d233db9bc536602b6e11e6f29062735b13f584fd4d00dc69c960115c51770","4248dc189b9e14b6e8bf3dd14e70a007bd8bc53db0234c17c75c891ec562d6e9","a2f727bfb43063910a19d69d539c68d39a762476582c0c06a8757d50e73dc74d","dc82de2b2058512ed1827ba01bae451c72244009dd197a9e6386c317ea03a980","46f0352396717267a98e3271968f8e6df90397e5ba19a4e901dd4f25135cf0c4","37403f1158e77198c84f688c7b9877c6f20da45050dd42e187c8818ca306a195","120edb6745290ddc97c487c755efe5bee39da5611fd799d9cd2118714afefa2e","45a422e824d628aabab11226ad8db2372d384a1b23278b3aa8dd034b11e5402f","a079dd332f658c7ab816c9a8280bee481f7e675b6e5ff715c05357fb8c9431e5","668fdce2bd9004a40ac30b30daf291875051313822186c8b7d6baf6eaca0ce79","d6caeacf5317d04af030065d1ff6e45882d7fa706b5bd991237f55ce5a6c0ade","4604199ae65250195ff2a79d65cc97dcb411eafb582b9cad100e3c24124f0667","f37981120a5e6edae08b33dd4105e46ddd8d907c632956f6678e58f7540c7c25","0b6152e545030c06afba873352324ba0088e773a9631bb4c3d4458cc682f5394","1e5035279933c42f44f02a329017e85d92929eb19393d795107dd929d5e87b2a","51d8a1bc4fba34555bd34d0dce61e80edd1a0876b49e8589efae2e58673ead10","0f63e390c976e0dcdf9e1ea25a338e39824cdd7a5f237f6e6d7bb50c175bd735","95c098f0a61bf93414b00de1021ade6025898d50cd8967bc96e940b5ff3daeee","21ca6e66896aa153a92f0946b2b0024ed53528049933a84b9558c2efc980f4b6","93daefe1e69a3d60b553e310c60d2f9dac6cc256462b8846ce281e49f1d7f234","00a2b9b2f6c6a54ca09926efbdb578970bd2bb2d4dbee8cb0f5744d836ec9947","f04c719d89205551ce50220d1804ad7d7f95ccd030ff9a63f013b7377034bef8","eda330942ad453a717b530d9a4f853f26cf00737abd196926117abf07434e102","a3392f6b24a23ce0feca892b28d22912da606d88ca8d54c9b1886a8ad6e37f02","4605385875a65d76229cd37ceaa6c75615e6c9bc82d146f07e74a8aee194de7b","6435575b4feae200831d37df9f871de6e695c64d3148611fe1b4d714d648ea24","d5953e1cf85004c43a17910982c3316af5407cf8ee82015fbfb337ae6511df5c","23b70c9b7a23d54dc60d63e50e65d7fec6d90a9ad4ba73659011c648531b8a88","0383177fcc24e289602e83f7fba6e37603df9a90d0183ca6bab7629fabdb2c11","e46cf250ea18d419593c3d20e3cab8465158dd7b891a46f30ca382a109a55131","f1a34bbe5959d7075c8757e5d173eec32c94376e1120bae030db22a801ed5cef","7fa7cb056766d812df2b3254d08f31bfee0de0d1e0090f2bdfff031850102ac8","5a093e106a4fd5b2ca8a74b15029200e6d1218c2813b06c25756771588fb8be1","733b675036f9a5b733291cef4cd4d92d534045cde746948b535f6fcd0400c9d9","e7440ee495cf56a2cdbeec0ecfd8b590c10f46eda6b152839677b40e3094dde9","e7053cd2b44b1b84ac8954f9196a6a6fb466ce3fc91568d69c599157bc366c9e","4ed2fab4e41c9b9e3618e1337639d2c2faacd0287ac6b854c9fcafb6c32a1090","f71ee05d30bd43468cd0653b9b6ecdf3ecdb07a8f9d8a004a0ff24985cc9fa07","d07ef1165c38c2efe0ffc9823e36c0511092061ce12d3c80607ee9c0739f802e",{"version":"3ee881b5584c5718935e6fe1fc1080b997682a3c8bebd17d51dccfd41c3e7da6","affectsGlobalScope":true},"68eca88d6056ba6bbb2f723534fb88f594aec0776321b56cecdc1eb6a62371d3","a6723ab280855269eae713c4d24f86541a5ef52ca4cc7b5ad3b2b69d78973872","5fe98695ee49f87f395fa30573226a1c233f103cd49365d749df42a8101de9d7","3306a2cc97252f5f914d2a6ac6fbfdd7d314ec2fe4023d8ab0a46f9a30303f6e","25d1590e0ea122be559be7fc5c52782c4f2db402e2086ce22e55e042fcd40b19","942ddfcef69b8aa5009f7cd2ae945ad9e2974547e01e8795e4cf94f0964496a9","d03e6a84a2e3bb9cbb12540aefbf30d1846676734be3522f7c95425307983e04","ff5cdd5043d79642f96b894ba3eccc32d8b9816ee5ddebf536af5fcd6db201f1","72d9e151d9fc47b1140a5002a73ff5ab9ce00329e50a0495c4333519219346f5","3f2897e98790ed7c02b3c43f2f885bc7f4e5dfdfe25f374a0c70e7b986a2540b","736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","208bb742e0f201470da121bc73847c74b62cff4172f38ae5949ae77d6c9c6b71","062bd2910098fc059ba93e347649b3e126c555f7b144033d21d3f8ef63d3e39b","6581c067c58bb5f29183f88c1cb2d6804df65886f12a57cc36dbf50f9f15bf07","72f4ef29d37dc3312c758f5a0873e1eda8869d3d3a8961d023bf2b5af7fe8e17"],"options":{"declaration":true,"declarationMap":false,"esModuleInterop":true,"inlineSourceMap":true,"module":1,"noImplicitAny":true,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"strict":true,"strictPropertyInitialization":false,"target":2},"fileIdsList":[[45,73,87],[45,73],[42,45,73,82,83],[83,84,86,88],[43,73],[59,89],[45,65,73,517,518],[42,43,50,59],[34,42,50],[66],[38,43,51],[59],[40,42,50],[42],[42,44,59,65],[43],[50,59,65],[42,43,45,50,59,62,65],[45,59,62,65],[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,59,60,61,62,63,64,65,66,67,68,69,70,71,72],[65],[40,42,59],[32],[64],[57,66,68],[50],[56],[42,44,59,65,68],[45,73,85],[73],[59,73,503],[59,73,504],[45,59,73],[73,513,514],[513],[81,89],[90,91,92,93],[45,73,81,89],[81],[29,74,75,76,77,78,79,80],[59,73,501],[496,497],[497,498],[59,73,496,497,499,500,502],[59,73,497,498],[73,496],[509],[89,94,491,495,505,507,515],[38,89,94,491,495,505,507],[89,94,491,495,505,519],[89],[52,88,94,491,508],[509,511],[43,52,59,81,492,493,495],[506],[52,492,494],[468,469],[469,470],[468],[437,450,457,473],[437,475],[437,450,472],[437,450,473],[81,95,436],[437,450,452,453,454,455,459,471,473,475],[437],[437,450],[437,473],[437,450,451,454,455,459,462,464,466,467,472,474],[437,438,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,472,473,474,475],[437,450,472,473],[436,437,450,464,473],[437,450,458,459,460,464,466,472,473,474,476],[437,450,472,475],[437,450,456],[437,450,457],[97,436,437,448,449],[437,450,472,473,474],[437,450,458,472,473],[95,468,471,478,490],[447,448,449,450,454,455,458,462,464,472,473,474,475,476],[445,446,447,476,477],[475],[445,446],[81,438],[96],[95,436],[42,73,444,478],[96,97,99,100,439,440,441,479,480,481,482,483,484,485,486,487,488,489],[97],[81,97,468],[444],[81,97],[98],[42,73,442,443],[155,260],[174,436],[119,151,152,153,154,156,248],[119,154,156,158,163,174,175,187,204,205,207,209,210,211,212,213,245,246,247,253,260,277],[245,248],[215,217,219,220,229,231,232,233,234,235,236,237,239,241,242,243,244],[245],[110,112,113,139,358,359,360,361,362,363],[113],[110,113],[367,368],[373],[397],[385],[151],[384],[111],[110,111,112],[145],[141],[110],[103,104,105],[209],[436],[142,143],[106,174],[277],[399],[250,251],[104],[157],[157,238],[62],[157,214],[110,116,118,132,133,136,137,157,158,160,162,253,259,260],[157,177],[116,118,135,160,162,176,177,179,189,193,197,204,248,257,259,260],[176],[157,216],[157,230],[157,218],[157,240],[134],[221,222,223,224,225,226,227],[157,228],[168,169,170,171,172,173,174,175,177,199,201,202,203,205,207,208,209,211,248,260,277],[116,168,169,170,171,175,177,198,199,201,202,203,210,248,253],[210,248,260],[150],[110,111,139],[138,140,144,145,146,147,148,149,436],[102,103,104,105,141,142,143],[293],[253,293],[110,132,153,293],[175,293],[293,294,295,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356],[121,293],[121,253,293],[293,297],[163,293],[167],[169],[116,164,165,168],[116,166],[169,170,253,277],[116,167],[174,175,204,205,207,210,211,245,246,248,277,289,290],[95,106,110,111,113,116,118,119,138,140,141,143,144,145,151,152,153,154,158,162,163,165,166,167,168,169,170,171,172,173,174,175,177,179,180,181,182,183,184,185,186,187,193,197,200,201,202,203,204,205,207,210,211,212,213,245,248,253,257,259,260,269,270,271,272,274,275,276,277,290,291,292,357,364,365,366,369,370,371,372,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,398,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435],[152,154,260],[260],[113,114],[126],[175],[280],[109,115,122,123,127,129,191,195,249,252,254,278,279,280,281,282,283,284,285,286,287,288],[102,106,107,108],[145,146,436],[119,191,253],[110,111,115,116,121,131,248,253],[121,122,124,125,128,130,132,248,253,255],[116,126,127,131,253],[116,120,121,124,125,128,130,131,132,145,146,192,196,248,249,250,251,252,255,436],[119,195,253],[103,104,105,119,132,253],[119,131,132,253,254],[121,253,277,278],[116,121,123,253,277],[102,103,104,105,107,109,116,120,131,132,253],[132],[119,129,131,132,253],[212],[213,248,260],[119,259],[259],[116,121,132,253,296],[121,132,297],[42,43,59],[253],[270],[116,175,203,248,260,269,270,276],[116,132,175,199,201,276],[121,248,253,261,268],[116,132,175,199,248,253,260,261,267,268,269,271,272,273,274,275,277],[116,121,132,145,248,253,261,262,263,264,265,266,267],[121,253,268,277],[116,121,248,260],[276],[200],[116,200],[116,145,175,176,253,260,265,266,268,269,270,276],[116,145,175,202,248,260,269,270,276],[116,253],[116,145,199,202,248,260,269,270,276],[116,269],[116,118,135,160,162,176,179,189,193,197,200,209,210,248,257,259],[116,174,207,210,211,277],[168,169,170,171,172,173,174,177,199,201,202,203,211,248,277],[116,169,170,177,204,211,260,277],[116,168,169,170,171,172,173,177,199,201,202,203,210,253,260,277],[206,211,277],[117,161,178,190,194,256],[135],[118,162,163,179,193,197,253,257,258],[190,192],[117],[194,196],[120,161,163],[255,256],[130,178],[159,436],[116,121,132,187,188,253,260],[180,181,182,183,184,185,186],[210,248,253,260],[116,121,132,210,248,253,260]],"referencedMap":[[88,1],[87,2],[84,3],[89,4],[492,5],[506,6],[519,7],[34,8],[35,9],[36,10],[37,11],[38,12],[39,13],[41,14],[42,14],[43,15],[44,16],[45,17],[46,18],[47,19],[73,20],[48,14],[49,21],[50,22],[53,23],[54,24],[57,14],[58,25],[59,14],[62,26],[64,26],[65,27],[67,12],[70,28],[71,12],[86,29],[511,30],[493,12],[504,31],[505,32],[517,33],[515,34],[514,35],[513,30],[90,36],[94,37],[91,38],[92,39],[74,30],[81,40],[502,41],[498,42],[500,43],[503,44],[499,45],[497,46],[510,47],[516,48],[508,49],[520,50],[521,51],[509,52],[512,53],[494,54],[507,55],[495,56],[470,57],[471,58],[469,59],[458,60],[460,61],[461,62],[451,63],[437,64],[472,65],[438,66],[449,67],[462,68],[473,69],[468,70],[454,71],[474,72],[475,73],[463,66],[453,74],[452,62],[448,67],[464,68],[465,67],[466,68],[457,75],[456,76],[467,63],[450,77],[455,78],[459,79],[491,80],[477,81],[478,82],[476,83],[447,84],[439,85],[440,86],[441,87],[479,88],[490,89],[481,90],[482,90],[483,91],[484,92],[486,93],[99,94],[444,95],[98,30],[101,40],[156,96],[175,97],[157,98],[248,99],[290,100],[245,101],[433,102],[364,103],[365,104],[366,104],[375,104],[370,105],[369,106],[371,104],[372,104],[374,107],[398,108],[394,109],[396,104],[412,110],[407,111],[112,112],[113,113],[385,114],[142,115],[143,115],[367,116],[106,117],[399,118],[397,119],[386,115],[387,120],[388,121],[389,121],[390,121],[391,121],[392,122],[393,122],[400,123],[406,124],[404,125],[242,126],[239,127],[243,126],[244,126],[214,128],[215,129],[233,126],[163,130],[237,126],[232,131],[198,132],[177,133],[217,134],[236,126],[231,135],[218,128],[219,136],[235,126],[241,137],[135,138],[220,126],[234,126],[228,139],[229,140],[133,116],[210,141],[204,142],[246,143],[151,144],[140,145],[150,146],[144,147],[295,148],[318,148],[299,148],[302,149],[304,148],[355,148],[330,148],[294,148],[322,148],[352,148],[301,148],[331,148],[316,148],[319,148],[307,148],[342,150],[336,148],[329,148],[327,148],[311,151],[310,151],[337,148],[357,152],[343,153],[333,148],[314,148],[300,148],[303,148],[335,148],[320,149],[328,148],[325,154],[344,154],[326,149],[312,148],[339,148],[321,148],[356,148],[346,148],[332,148],[354,148],[334,148],[313,148],[350,148],[340,148],[315,148],[345,148],[353,148],[317,148],[338,151],[341,151],[323,148],[349,155],[298,155],[309,148],[308,148],[306,156],[305,148],[351,154],[347,154],[324,154],[348,154],[168,157],[170,158],[169,159],[167,160],[426,161],[413,157],[414,157],[415,157],[420,157],[416,157],[417,157],[418,157],[419,157],[421,157],[422,157],[423,157],[424,157],[425,162],[291,163],[436,164],[427,165],[429,165],[154,166],[428,165],[115,167],[127,168],[285,169],[283,104],[281,170],[289,171],[278,122],[123,122],[109,172],[249,173],[252,124],[192,174],[132,175],[131,176],[128,177],[253,178],[196,179],[120,180],[255,181],[125,182],[124,183],[121,184],[251,185],[130,186],[213,187],[434,188],[212,166],[435,189],[119,190],[297,191],[296,192],[176,193],[261,194],[269,195],[272,196],[274,197],[262,198],[276,199],[268,200],[264,201],[263,201],[247,202],[275,203],[203,204],[201,205],[202,205],[277,206],[273,207],[208,208],[271,209],[270,210],[260,211],[430,212],[431,213],[205,214],[211,215],[207,216],[258,217],[159,119],[136,218],[259,219],[193,220],[118,221],[197,222],[162,223],[257,224],[179,225],[160,226],[189,227],[187,228],[185,229],[186,229],[184,229],[180,143],[181,143],[182,143],[183,230]],"exportedModulesMap":[[88,1],[87,2],[84,3],[89,4],[492,5],[506,6],[519,7],[34,8],[35,9],[36,10],[37,11],[38,12],[39,13],[41,14],[42,14],[43,15],[44,16],[45,17],[46,18],[47,19],[73,20],[48,14],[49,21],[50,22],[53,23],[54,24],[57,14],[58,25],[59,14],[62,26],[64,26],[65,27],[67,12],[70,28],[71,12],[86,29],[511,30],[493,12],[504,31],[505,32],[517,33],[515,34],[514,35],[513,30],[90,36],[94,37],[91,38],[92,39],[74,30],[81,40],[502,41],[498,42],[500,43],[503,44],[499,45],[497,46],[510,47],[516,48],[508,49],[520,50],[521,51],[509,52],[512,53],[494,54],[507,55],[495,56],[470,57],[471,58],[469,59],[458,60],[460,61],[461,62],[451,63],[437,64],[472,65],[438,66],[449,67],[462,68],[473,69],[468,70],[454,71],[474,72],[475,73],[463,66],[453,74],[452,62],[448,67],[464,68],[465,67],[466,68],[457,75],[456,76],[467,63],[450,77],[455,78],[459,79],[491,80],[477,81],[478,82],[476,83],[447,84],[439,85],[440,86],[441,87],[479,88],[490,89],[481,90],[482,90],[483,91],[484,92],[486,93],[99,94],[444,95],[98,30],[101,40],[156,96],[175,97],[157,98],[248,99],[290,100],[245,101],[433,102],[364,103],[365,104],[366,104],[375,104],[370,105],[369,106],[371,104],[372,104],[374,107],[398,108],[394,109],[396,104],[412,110],[407,111],[112,112],[113,113],[385,114],[142,115],[143,115],[367,116],[106,117],[399,118],[397,119],[386,115],[387,120],[388,121],[389,121],[390,121],[391,121],[392,122],[393,122],[400,123],[406,124],[404,125],[242,126],[239,127],[243,126],[244,126],[214,128],[215,129],[233,126],[163,130],[237,126],[232,131],[198,132],[177,133],[217,134],[236,126],[231,135],[218,128],[219,136],[235,126],[241,137],[135,138],[220,126],[234,126],[228,139],[229,140],[133,116],[210,141],[204,142],[246,143],[151,144],[140,145],[150,146],[144,147],[295,148],[318,148],[299,148],[302,149],[304,148],[355,148],[330,148],[294,148],[322,148],[352,148],[301,148],[331,148],[316,148],[319,148],[307,148],[342,150],[336,148],[329,148],[327,148],[311,151],[310,151],[337,148],[357,152],[343,153],[333,148],[314,148],[300,148],[303,148],[335,148],[320,149],[328,148],[325,154],[344,154],[326,149],[312,148],[339,148],[321,148],[356,148],[346,148],[332,148],[354,148],[334,148],[313,148],[350,148],[340,148],[315,148],[345,148],[353,148],[317,148],[338,151],[341,151],[323,148],[349,155],[298,155],[309,148],[308,148],[306,156],[305,148],[351,154],[347,154],[324,154],[348,154],[168,157],[170,158],[169,159],[167,160],[426,161],[413,157],[414,157],[415,157],[420,157],[416,157],[417,157],[418,157],[419,157],[421,157],[422,157],[423,157],[424,157],[425,162],[291,163],[436,164],[427,165],[429,165],[154,166],[428,165],[115,167],[127,168],[285,169],[283,104],[281,170],[289,171],[278,122],[123,122],[109,172],[249,173],[252,124],[192,174],[132,175],[131,176],[128,177],[253,178],[196,179],[120,180],[255,181],[125,182],[124,183],[121,184],[251,185],[130,186],[213,187],[434,188],[212,166],[435,189],[119,190],[297,191],[296,192],[176,193],[261,194],[269,195],[272,196],[274,197],[262,198],[276,199],[268,200],[264,201],[263,201],[247,202],[275,203],[203,204],[201,205],[202,205],[277,206],[273,207],[208,208],[271,209],[270,210],[260,211],[430,212],[431,213],[205,214],[211,215],[207,216],[258,217],[159,119],[136,218],[259,219],[193,220],[118,221],[197,222],[162,223],[257,224],[179,225],[160,226],[189,227],[187,228],[185,229],[186,229],[184,229],[180,143],[181,143],[182,143],[183,230]],"semanticDiagnosticsPerFile":[496,88,87,84,89,492,85,506,518,519,30,32,33,34,35,36,37,38,39,40,41,42,43,44,31,72,45,46,47,73,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,83,82,86,511,493,504,505,517,515,514,513,90,93,94,91,92,29,80,74,81,75,76,77,78,79,501,502,498,500,503,499,497,6,8,7,2,9,10,11,12,13,14,15,16,3,4,20,17,18,19,21,22,23,5,24,25,26,27,1,28,510,516,508,520,521,509,512,494,507,495,470,471,469,458,460,461,451,437,472,438,449,462,473,468,454,474,475,463,453,452,448,464,465,466,457,456,467,450,455,459,491,445,477,478,476,447,446,96,489,97,100,439,440,441,480,479,490,481,482,483,484,485,486,487,488,99,444,443,442,98,101,95,156,155,171,164,175,116,174,157,248,290,245,433,292,409,364,365,366,375,370,369,371,372,374,398,395,394,396,412,410,411,407,376,377,378,379,380,381,382,383,112,361,360,362,359,113,358,363,385,384,141,142,143,367,368,106,139,399,111,373,397,386,387,388,389,390,391,392,393,400,401,402,406,405,403,404,408,242,238,239,243,244,214,215,233,163,237,232,198,177,216,217,236,230,231,218,219,134,235,240,241,135,220,234,222,223,224,225,226,221,227,432,228,229,110,153,137,209,133,158,210,204,246,151,148,140,149,138,150,144,147,295,318,299,302,304,355,330,294,322,352,301,331,316,319,307,342,336,329,327,311,310,337,357,343,333,314,300,303,335,320,328,325,344,326,312,339,321,356,346,332,354,334,313,350,340,315,345,353,317,338,341,323,349,298,309,308,306,293,305,351,347,324,348,168,170,169,167,166,426,206,165,413,414,415,420,416,417,418,419,421,422,423,424,425,145,291,436,427,429,154,152,428,191,115,284,122,127,285,282,195,288,254,283,280,281,289,279,278,123,109,249,286,287,252,114,129,192,132,131,128,253,196,120,255,125,124,121,251,103,126,104,105,107,108,102,146,250,130,213,434,212,435,119,297,296,176,261,269,272,274,262,276,268,199,264,263,247,275,203,201,202,265,277,266,273,208,271,267,270,200,260,430,431,205,173,211,172,207,190,117,194,161,256,258,178,159,136,259,193,118,197,162,257,179,160,189,188,187,185,186,184,180,181,182,183]},"version":"4.4.3"}
\ No newline at end of file
diff --git a/dashboard/.swcrc b/dashboard/.swcrc
new file mode 100644
index 00000000..dcf4af8e
--- /dev/null
+++ b/dashboard/.swcrc
@@ -0,0 +1,23 @@
+{
+    "jsc": {
+      "parser": {
+        "syntax": "ecmascript",
+        "jsx": false,
+        "dynamicImport": false,
+        "privateMethod": false,
+        "functionBind": false,
+        "exportDefaultFrom": false,
+        "exportNamespaceFrom": false,
+        "decorators": false,
+        "decoratorsBeforeExport": false,
+        "topLevelAwait": false,
+        "importMeta": false
+      },
+      "transform": null,
+      "target": "es2021",
+      "loose": false,
+      "externalHelpers": false,
+      // Requires v1.2.50 or upper and requires target to be es2016 or upper.
+      "keepClassNames": false
+    }
+  }
\ No newline at end of file
diff --git a/gateway/.swcrc b/gateway/.swcrc
new file mode 100644
index 00000000..f04801b8
--- /dev/null
+++ b/gateway/.swcrc
@@ -0,0 +1,9 @@
+{
+    "jsc": {
+        "parser": {
+            "syntax": "typescript",
+            "decorators": true
+        },
+        "target": "es2021"
+    }
+}
\ No newline at end of file
diff --git a/gateway/package-lock.json b/gateway/package-lock.json
index 65117a07..0a00ef64 100644
--- a/gateway/package-lock.json
+++ b/gateway/package-lock.json
@@ -19,11 +19,14 @@
 				"missing-native-js-functions": "^1.2.17",
 				"mongoose-autopopulate": "^0.12.3",
 				"node-fetch": "^2.6.1",
+				"swc": "^1.0.11",
 				"typeorm": "^0.2.37",
 				"uuid": "^8.3.2",
 				"ws": "^7.4.2"
 			},
 			"devDependencies": {
+				"@swc/cli": "^0.1.51",
+				"@swc/core": "^1.2.93",
 				"@types/amqplib": "^0.8.1",
 				"@types/jsonwebtoken": "^8.5.0",
 				"@types/mongodb": "^3.6.9",
@@ -63,12 +66,15 @@
 				"pg": "^8.7.1",
 				"reflect-metadata": "^0.1.13",
 				"sqlite3": "^5.0.2",
+				"swc": "^1.0.11",
 				"tsconfig-paths": "^3.11.0",
 				"typeorm": "^0.2.37",
 				"typescript": "^4.4.2",
 				"typescript-json-schema": "^0.50.1"
 			},
 			"devDependencies": {
+				"@swc/cli": "^0.1.51",
+				"@swc/core": "^1.2.93",
 				"@types/amqplib": "^0.8.1",
 				"@types/jsonwebtoken": "^8.5.0",
 				"@types/mongoose-autopopulate": "^0.10.1",
@@ -6810,10 +6816,299 @@
 				"node": ">=10"
 			}
 		},
+		"node_modules/@napi-rs/triples": {
+			"version": "1.0.3",
+			"resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz",
+			"integrity": "sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA=="
+		},
+		"node_modules/@node-rs/helper": {
+			"version": "1.2.1",
+			"resolved": "https://registry.npmjs.org/@node-rs/helper/-/helper-1.2.1.tgz",
+			"integrity": "sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg==",
+			"dependencies": {
+				"@napi-rs/triples": "^1.0.3"
+			}
+		},
+		"node_modules/@nodelib/fs.scandir": {
+			"version": "2.1.5",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+			"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+			"dependencies": {
+				"@nodelib/fs.stat": "2.0.5",
+				"run-parallel": "^1.1.9"
+			},
+			"engines": {
+				"node": ">= 8"
+			}
+		},
+		"node_modules/@nodelib/fs.stat": {
+			"version": "2.0.5",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+			"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+			"engines": {
+				"node": ">= 8"
+			}
+		},
+		"node_modules/@nodelib/fs.walk": {
+			"version": "1.2.8",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+			"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+			"dependencies": {
+				"@nodelib/fs.scandir": "2.1.5",
+				"fastq": "^1.6.0"
+			},
+			"engines": {
+				"node": ">= 8"
+			}
+		},
 		"node_modules/@sqltools/formatter": {
 			"version": "1.2.3",
 			"integrity": "sha512-O3uyB/JbkAEMZaP3YqyHH7TMnex7tWyCbCI4EfJdOCoN6HIhqdJBWTM6aCCiWQ/5f5wxjgU735QAIpJbjDvmzg=="
 		},
+		"node_modules/@swc/cli": {
+			"version": "0.1.51",
+			"resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.1.51.tgz",
+			"integrity": "sha512-7eqZGpkI4QOYfF+9FV4xpT/V/LSRDs5OMJcm4Z46JnPMvv+sxumAFdCe1hHRzHgnzwis9OtjI8Tt3Srf9JudQw==",
+			"dependencies": {
+				"commander": "^7.1.0",
+				"fast-glob": "^3.2.5",
+				"slash": "3.0.0",
+				"source-map": "^0.7.3"
+			},
+			"bin": {
+				"spack": "bin/spack.js",
+				"swc": "bin/swc.js"
+			},
+			"engines": {
+				"node": ">= 12.13"
+			},
+			"peerDependencies": {
+				"@swc/core": "^1.2.66",
+				"chokidar": "^3.5.1"
+			},
+			"peerDependenciesMeta": {
+				"chokidar": {
+					"optional": true
+				}
+			}
+		},
+		"node_modules/@swc/cli/node_modules/source-map": {
+			"version": "0.7.3",
+			"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+			"integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+			"engines": {
+				"node": ">= 8"
+			}
+		},
+		"node_modules/@swc/core": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core/-/core-1.2.93.tgz",
+			"integrity": "sha512-Lx9I+9GfUl2Mb7r23MVbSkc+NZE0+xZ4Xh787D1b82KMeFLz7QgYe4cNM9SzTjV/VlSQyNTVlzjES7ZThIUvtA==",
+			"dependencies": {
+				"@node-rs/helper": "^1.0.0"
+			},
+			"engines": {
+				"node": ">=10"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/swc"
+			},
+			"optionalDependencies": {
+				"@swc/core-android-arm64": "1.2.93",
+				"@swc/core-darwin-arm64": "1.2.93",
+				"@swc/core-darwin-x64": "1.2.93",
+				"@swc/core-freebsd-x64": "1.2.93",
+				"@swc/core-linux-arm-gnueabihf": "1.2.93",
+				"@swc/core-linux-arm64-gnu": "1.2.93",
+				"@swc/core-linux-arm64-musl": "1.2.93",
+				"@swc/core-linux-x64-gnu": "1.2.93",
+				"@swc/core-linux-x64-musl": "1.2.93",
+				"@swc/core-win32-arm64-msvc": "1.2.93",
+				"@swc/core-win32-ia32-msvc": "1.2.93",
+				"@swc/core-win32-x64-msvc": "1.2.93"
+			}
+		},
+		"node_modules/@swc/core-android-arm64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.93.tgz",
+			"integrity": "sha512-3F5A7QNR5+MI64W20QBADU0Z6knt8kJOxIoKw4Vuk7JQ6k0nnMemio3LtusHgAVZLXq0wMILZ4kv/+qnRzWb7A==",
+			"cpu": [
+				"arm64"
+			],
+			"optional": true,
+			"os": [
+				"android"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-darwin-arm64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.93.tgz",
+			"integrity": "sha512-a8tu9WCtnjiuKTscUu8N9z/vVuIldwo5US4WfYi2dtQNgf21n1ZKxwvsZzRz6mEC86zVE0k9pmslwEtMuuCJog==",
+			"cpu": [
+				"arm64"
+			],
+			"optional": true,
+			"os": [
+				"darwin"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-darwin-x64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.93.tgz",
+			"integrity": "sha512-ga8bpjauZYHWMjuPKcqOZFSgStvveMc/J7yqIlr9sF2pOr7Rt/MKLO4Ups95A2Aay90aCF9cPKQDtX71PmdlVw==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"darwin"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-freebsd-x64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.93.tgz",
+			"integrity": "sha512-qDBEZqHh6C2AMaxjdm/Am8MUwN94RS3na9VLYDMGUkgs2yvnSADfx7JOyZEJT1Ot7FZEuyGXcSfomUzNCU/5kw==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"freebsd"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-linux-arm-gnueabihf": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.93.tgz",
+			"integrity": "sha512-KlJsXOcZpuHXU8hMVDXfSyBQ9fdUpzwDV1JKpfIehG+P2kRdCbiN3irdv6kd3rVH/PUjiCSIP5SvpCMvwJzDNg==",
+			"cpu": [
+				"arm"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-linux-arm64-gnu": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.93.tgz",
+			"integrity": "sha512-UdQX3Tt7xLUgC4AFROw9wRaRA2vDHNnNFURkV//i/nsGay12JANBvXA/FOMge6yx32tPvcNUSRHnb3MYep0kzg==",
+			"cpu": [
+				"arm64"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-linux-arm64-musl": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.93.tgz",
+			"integrity": "sha512-O5W/cjnkP9nuKZsx03/DxVO+ILh5BUmfCjFzScXGuLMIZrBLyzBstcaSaZOxfd04wPEqael4VZiAGmWXornZ1g==",
+			"cpu": [
+				"arm64"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-linux-x64-gnu": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.93.tgz",
+			"integrity": "sha512-fDELNkklMzEI8KDr51XGajP7TVbZCLYkiPGAgbGadmkMFvlgJfzf1Qt1VzjGk5lTYdQO40vCe7u4xEpfdq6lLQ==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-linux-x64-musl": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.93.tgz",
+			"integrity": "sha512-ZdEi04dfj96XDjT+J2k/J/m3WoHqlfwz93dTlpWdlPvrSNtsMg2oorm0Zynx/x2Ghe3w1hJu3HdMaJF2UY3Ttw==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-win32-arm64-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.93.tgz",
+			"integrity": "sha512-NbIyBpOCEqxa+s3x8ijQGBOxQd5P63icf+6SK6MkO5E2zTgiR4g6ziihKCdhF9tJ6M4c0DHL/RqIV5SS9UX01w==",
+			"cpu": [
+				"arm64"
+			],
+			"optional": true,
+			"os": [
+				"win32"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-win32-ia32-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.93.tgz",
+			"integrity": "sha512-TrRfHzGBQL1fjTahfBLDYcjLx28tH7pN5co5fJmYgASey8McVWL6eW/q/9fxvZqOVyj2SF9wvLDYKm0IWz4f+g==",
+			"cpu": [
+				"ia32"
+			],
+			"optional": true,
+			"os": [
+				"win32"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-win32-x64-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.93.tgz",
+			"integrity": "sha512-VsqLVB7ytNYqEC21amMswC2c84NCVNW6KLhS9XeO6Vz1+7wx8uPu1rAo14oBu5/3yhv7/K3wgfMqJMKHZtXPMQ==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"win32"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
 		"node_modules/@types/amqplib": {
 			"version": "0.8.2",
 			"integrity": "sha512-p+TFLzo52f8UanB+Nq6gyUi65yecAcRY3nYowU6MPGFtaJvEDxcnFWrxssSTkF+ts1W3zyQDvgVICLQem5WxRA==",
@@ -7058,7 +7353,7 @@
 		"node_modules/anymatch": {
 			"version": "3.1.2",
 			"integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
-			"dev": true,
+			"devOptional": true,
 			"dependencies": {
 				"normalize-path": "^3.0.0",
 				"picomatch": "^2.0.4"
@@ -7169,7 +7464,7 @@
 		"node_modules/binary-extensions": {
 			"version": "2.2.0",
 			"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
-			"dev": true,
+			"devOptional": true,
 			"engines": {
 				"node": ">=8"
 			}
@@ -7265,7 +7560,6 @@
 		"node_modules/braces": {
 			"version": "3.0.2",
 			"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
-			"dev": true,
 			"dependencies": {
 				"fill-range": "^7.0.1"
 			},
@@ -7342,7 +7636,7 @@
 		"node_modules/chokidar": {
 			"version": "3.5.2",
 			"integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
-			"dev": true,
+			"devOptional": true,
 			"dependencies": {
 				"anymatch": "~3.1.2",
 				"braces": "~3.0.2",
@@ -7446,6 +7740,14 @@
 				"node": ">= 0.8"
 			}
 		},
+		"node_modules/commander": {
+			"version": "7.2.0",
+			"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+			"integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+			"engines": {
+				"node": ">= 10"
+			}
+		},
 		"node_modules/concat-map": {
 			"version": "0.0.1",
 			"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
@@ -7673,6 +7975,29 @@
 			"version": "3.1.3",
 			"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
 		},
+		"node_modules/fast-glob": {
+			"version": "3.2.7",
+			"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz",
+			"integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==",
+			"dependencies": {
+				"@nodelib/fs.stat": "^2.0.2",
+				"@nodelib/fs.walk": "^1.2.3",
+				"glob-parent": "^5.1.2",
+				"merge2": "^1.3.0",
+				"micromatch": "^4.0.4"
+			},
+			"engines": {
+				"node": ">=8"
+			}
+		},
+		"node_modules/fastq": {
+			"version": "1.13.0",
+			"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
+			"integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+			"dependencies": {
+				"reusify": "^1.0.4"
+			}
+		},
 		"node_modules/figlet": {
 			"version": "1.5.2",
 			"integrity": "sha512-WOn21V8AhyE1QqVfPIVxe3tupJacq1xGkPTB4iagT6o+P2cAgEOOwIxMftr4+ZCTI6d551ij9j61DFr0nsP2uQ==",
@@ -7683,7 +8008,6 @@
 		"node_modules/fill-range": {
 			"version": "7.0.1",
 			"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
-			"dev": true,
 			"dependencies": {
 				"to-regex-range": "^5.0.1"
 			},
@@ -7753,7 +8077,6 @@
 		"node_modules/fsevents": {
 			"version": "2.3.2",
 			"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-			"dev": true,
 			"hasInstallScript": true,
 			"optional": true,
 			"os": [
@@ -7859,7 +8182,6 @@
 		"node_modules/glob-parent": {
 			"version": "5.1.2",
 			"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-			"dev": true,
 			"dependencies": {
 				"is-glob": "^4.0.1"
 			},
@@ -8048,7 +8370,7 @@
 		"node_modules/is-binary-path": {
 			"version": "2.1.0",
 			"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-			"dev": true,
+			"devOptional": true,
 			"dependencies": {
 				"binary-extensions": "^2.0.0"
 			},
@@ -8070,7 +8392,6 @@
 		"node_modules/is-extglob": {
 			"version": "2.1.1",
 			"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
-			"dev": true,
 			"engines": {
 				"node": ">=0.10.0"
 			}
@@ -8085,7 +8406,6 @@
 		"node_modules/is-glob": {
 			"version": "4.0.1",
 			"integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
-			"dev": true,
 			"dependencies": {
 				"is-extglob": "^2.1.1"
 			},
@@ -8096,7 +8416,6 @@
 		"node_modules/is-number": {
 			"version": "7.0.0",
 			"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-			"dev": true,
 			"engines": {
 				"node": ">=0.12.0"
 			}
@@ -8277,6 +8596,14 @@
 			"version": "1.0.1",
 			"integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
 		},
+		"node_modules/merge2": {
+			"version": "1.4.1",
+			"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+			"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+			"engines": {
+				"node": ">= 8"
+			}
+		},
 		"node_modules/methods": {
 			"version": "1.1.2",
 			"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
@@ -8284,6 +8611,18 @@
 				"node": ">= 0.6"
 			}
 		},
+		"node_modules/micromatch": {
+			"version": "4.0.4",
+			"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
+			"integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
+			"dependencies": {
+				"braces": "^3.0.1",
+				"picomatch": "^2.2.3"
+			},
+			"engines": {
+				"node": ">=8.6"
+			}
+		},
 		"node_modules/mime": {
 			"version": "1.6.0",
 			"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
@@ -8568,7 +8907,7 @@
 		"node_modules/normalize-path": {
 			"version": "3.0.0",
 			"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-			"dev": true,
+			"devOptional": true,
 			"engines": {
 				"node": ">=0.10.0"
 			}
@@ -8674,7 +9013,6 @@
 		"node_modules/picomatch": {
 			"version": "2.3.0",
 			"integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
-			"dev": true,
 			"engines": {
 				"node": ">=8.6"
 			},
@@ -8715,6 +9053,25 @@
 			"version": "2.2.0",
 			"integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
 		},
+		"node_modules/queue-microtask": {
+			"version": "1.2.3",
+			"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+			"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/feross"
+				},
+				{
+					"type": "patreon",
+					"url": "https://www.patreon.com/feross"
+				},
+				{
+					"type": "consulting",
+					"url": "https://feross.org/support"
+				}
+			]
+		},
 		"node_modules/range-parser": {
 			"version": "1.2.1",
 			"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
@@ -8748,7 +9105,7 @@
 		"node_modules/readdirp": {
 			"version": "3.6.0",
 			"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
-			"dev": true,
+			"devOptional": true,
 			"dependencies": {
 				"picomatch": "^2.2.1"
 			},
@@ -8806,6 +9163,15 @@
 				"url": "https://github.com/sponsors/ljharb"
 			}
 		},
+		"node_modules/reusify": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+			"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+			"engines": {
+				"iojs": ">=1.0.0",
+				"node": ">=0.10.0"
+			}
+		},
 		"node_modules/rimraf": {
 			"version": "2.7.1",
 			"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
@@ -8817,6 +9183,28 @@
 				"rimraf": "bin.js"
 			}
 		},
+		"node_modules/run-parallel": {
+			"version": "1.2.0",
+			"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+			"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/feross"
+				},
+				{
+					"type": "patreon",
+					"url": "https://www.patreon.com/feross"
+				},
+				{
+					"type": "consulting",
+					"url": "https://feross.org/support"
+				}
+			],
+			"dependencies": {
+				"queue-microtask": "^1.2.2"
+			}
+		},
 		"node_modules/safe-buffer": {
 			"version": "5.2.1",
 			"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
@@ -8949,6 +9337,14 @@
 			"integrity": "sha512-rqYhcAnZ6d/vTPGghdrw7iumdcbXpsk1b8IG/rz+VWV51DM0p7XCtMoJ3qhPLIbp3tvyt3pKRbaaEMZYpHto8Q==",
 			"optional": true
 		},
+		"node_modules/slash": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+			"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+			"engines": {
+				"node": ">=8"
+			}
+		},
 		"node_modules/sliced": {
 			"version": "1.0.1",
 			"integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=",
@@ -9039,6 +9435,15 @@
 				"node": ">=8"
 			}
 		},
+		"node_modules/swc": {
+			"version": "1.0.11",
+			"resolved": "https://registry.npmjs.org/swc/-/swc-1.0.11.tgz",
+			"integrity": "sha512-YbG4eija7g/ajQ0lu4P2WPgKt5zCm743VgKn+buBrXXo1IETftO2r/8VdBPhv8wpTyg3CO+VU1z2wHuL4iohmw==",
+			"dependencies": {
+				"@swc/cli": "^0.1.26",
+				"@swc/core": "^1.2.12"
+			}
+		},
 		"node_modules/tar": {
 			"version": "6.1.11",
 			"resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz",
@@ -9076,7 +9481,6 @@
 		"node_modules/to-regex-range": {
 			"version": "5.0.1",
 			"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-			"dev": true,
 			"dependencies": {
 				"is-number": "^7.0.0"
 			},
@@ -9638,6 +10042,8 @@
 		"@fosscord/util": {
 			"version": "file:../util",
 			"requires": {
+				"@swc/cli": "^0.1.51",
+				"@swc/core": "^1.2.93",
 				"@types/amqplib": "^0.8.1",
 				"@types/jsonwebtoken": "^8.5.0",
 				"@types/mongoose-autopopulate": "^0.10.1",
@@ -9660,6 +10066,7 @@
 				"pg": "^8.7.1",
 				"reflect-metadata": "^0.1.13",
 				"sqlite3": "^5.0.2",
+				"swc": "^1.0.11",
 				"tsconfig-paths": "^3.11.0",
 				"typeorm": "^0.2.37",
 				"typescript": "^4.4.2",
@@ -14746,10 +15153,156 @@
 				}
 			}
 		},
+		"@napi-rs/triples": {
+			"version": "1.0.3",
+			"resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz",
+			"integrity": "sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA=="
+		},
+		"@node-rs/helper": {
+			"version": "1.2.1",
+			"resolved": "https://registry.npmjs.org/@node-rs/helper/-/helper-1.2.1.tgz",
+			"integrity": "sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg==",
+			"requires": {
+				"@napi-rs/triples": "^1.0.3"
+			}
+		},
+		"@nodelib/fs.scandir": {
+			"version": "2.1.5",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+			"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+			"requires": {
+				"@nodelib/fs.stat": "2.0.5",
+				"run-parallel": "^1.1.9"
+			}
+		},
+		"@nodelib/fs.stat": {
+			"version": "2.0.5",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+			"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
+		},
+		"@nodelib/fs.walk": {
+			"version": "1.2.8",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+			"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+			"requires": {
+				"@nodelib/fs.scandir": "2.1.5",
+				"fastq": "^1.6.0"
+			}
+		},
 		"@sqltools/formatter": {
 			"version": "1.2.3",
 			"integrity": "sha512-O3uyB/JbkAEMZaP3YqyHH7TMnex7tWyCbCI4EfJdOCoN6HIhqdJBWTM6aCCiWQ/5f5wxjgU735QAIpJbjDvmzg=="
 		},
+		"@swc/cli": {
+			"version": "0.1.51",
+			"resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.1.51.tgz",
+			"integrity": "sha512-7eqZGpkI4QOYfF+9FV4xpT/V/LSRDs5OMJcm4Z46JnPMvv+sxumAFdCe1hHRzHgnzwis9OtjI8Tt3Srf9JudQw==",
+			"requires": {
+				"commander": "^7.1.0",
+				"fast-glob": "^3.2.5",
+				"slash": "3.0.0",
+				"source-map": "^0.7.3"
+			},
+			"dependencies": {
+				"source-map": {
+					"version": "0.7.3",
+					"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+					"integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ=="
+				}
+			}
+		},
+		"@swc/core": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core/-/core-1.2.93.tgz",
+			"integrity": "sha512-Lx9I+9GfUl2Mb7r23MVbSkc+NZE0+xZ4Xh787D1b82KMeFLz7QgYe4cNM9SzTjV/VlSQyNTVlzjES7ZThIUvtA==",
+			"requires": {
+				"@node-rs/helper": "^1.0.0",
+				"@swc/core-android-arm64": "1.2.93",
+				"@swc/core-darwin-arm64": "1.2.93",
+				"@swc/core-darwin-x64": "1.2.93",
+				"@swc/core-freebsd-x64": "1.2.93",
+				"@swc/core-linux-arm-gnueabihf": "1.2.93",
+				"@swc/core-linux-arm64-gnu": "1.2.93",
+				"@swc/core-linux-arm64-musl": "1.2.93",
+				"@swc/core-linux-x64-gnu": "1.2.93",
+				"@swc/core-linux-x64-musl": "1.2.93",
+				"@swc/core-win32-arm64-msvc": "1.2.93",
+				"@swc/core-win32-ia32-msvc": "1.2.93",
+				"@swc/core-win32-x64-msvc": "1.2.93"
+			}
+		},
+		"@swc/core-android-arm64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.93.tgz",
+			"integrity": "sha512-3F5A7QNR5+MI64W20QBADU0Z6knt8kJOxIoKw4Vuk7JQ6k0nnMemio3LtusHgAVZLXq0wMILZ4kv/+qnRzWb7A==",
+			"optional": true
+		},
+		"@swc/core-darwin-arm64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.93.tgz",
+			"integrity": "sha512-a8tu9WCtnjiuKTscUu8N9z/vVuIldwo5US4WfYi2dtQNgf21n1ZKxwvsZzRz6mEC86zVE0k9pmslwEtMuuCJog==",
+			"optional": true
+		},
+		"@swc/core-darwin-x64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.93.tgz",
+			"integrity": "sha512-ga8bpjauZYHWMjuPKcqOZFSgStvveMc/J7yqIlr9sF2pOr7Rt/MKLO4Ups95A2Aay90aCF9cPKQDtX71PmdlVw==",
+			"optional": true
+		},
+		"@swc/core-freebsd-x64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.93.tgz",
+			"integrity": "sha512-qDBEZqHh6C2AMaxjdm/Am8MUwN94RS3na9VLYDMGUkgs2yvnSADfx7JOyZEJT1Ot7FZEuyGXcSfomUzNCU/5kw==",
+			"optional": true
+		},
+		"@swc/core-linux-arm-gnueabihf": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.93.tgz",
+			"integrity": "sha512-KlJsXOcZpuHXU8hMVDXfSyBQ9fdUpzwDV1JKpfIehG+P2kRdCbiN3irdv6kd3rVH/PUjiCSIP5SvpCMvwJzDNg==",
+			"optional": true
+		},
+		"@swc/core-linux-arm64-gnu": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.93.tgz",
+			"integrity": "sha512-UdQX3Tt7xLUgC4AFROw9wRaRA2vDHNnNFURkV//i/nsGay12JANBvXA/FOMge6yx32tPvcNUSRHnb3MYep0kzg==",
+			"optional": true
+		},
+		"@swc/core-linux-arm64-musl": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.93.tgz",
+			"integrity": "sha512-O5W/cjnkP9nuKZsx03/DxVO+ILh5BUmfCjFzScXGuLMIZrBLyzBstcaSaZOxfd04wPEqael4VZiAGmWXornZ1g==",
+			"optional": true
+		},
+		"@swc/core-linux-x64-gnu": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.93.tgz",
+			"integrity": "sha512-fDELNkklMzEI8KDr51XGajP7TVbZCLYkiPGAgbGadmkMFvlgJfzf1Qt1VzjGk5lTYdQO40vCe7u4xEpfdq6lLQ==",
+			"optional": true
+		},
+		"@swc/core-linux-x64-musl": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.93.tgz",
+			"integrity": "sha512-ZdEi04dfj96XDjT+J2k/J/m3WoHqlfwz93dTlpWdlPvrSNtsMg2oorm0Zynx/x2Ghe3w1hJu3HdMaJF2UY3Ttw==",
+			"optional": true
+		},
+		"@swc/core-win32-arm64-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.93.tgz",
+			"integrity": "sha512-NbIyBpOCEqxa+s3x8ijQGBOxQd5P63icf+6SK6MkO5E2zTgiR4g6ziihKCdhF9tJ6M4c0DHL/RqIV5SS9UX01w==",
+			"optional": true
+		},
+		"@swc/core-win32-ia32-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.93.tgz",
+			"integrity": "sha512-TrRfHzGBQL1fjTahfBLDYcjLx28tH7pN5co5fJmYgASey8McVWL6eW/q/9fxvZqOVyj2SF9wvLDYKm0IWz4f+g==",
+			"optional": true
+		},
+		"@swc/core-win32-x64-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.93.tgz",
+			"integrity": "sha512-VsqLVB7ytNYqEC21amMswC2c84NCVNW6KLhS9XeO6Vz1+7wx8uPu1rAo14oBu5/3yhv7/K3wgfMqJMKHZtXPMQ==",
+			"optional": true
+		},
 		"@types/amqplib": {
 			"version": "0.8.2",
 			"integrity": "sha512-p+TFLzo52f8UanB+Nq6gyUi65yecAcRY3nYowU6MPGFtaJvEDxcnFWrxssSTkF+ts1W3zyQDvgVICLQem5WxRA==",
@@ -14958,7 +15511,7 @@
 		"anymatch": {
 			"version": "3.1.2",
 			"integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
-			"dev": true,
+			"devOptional": true,
 			"requires": {
 				"normalize-path": "^3.0.0",
 				"picomatch": "^2.0.4"
@@ -15051,7 +15604,7 @@
 		"binary-extensions": {
 			"version": "2.2.0",
 			"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
-			"dev": true
+			"devOptional": true
 		},
 		"bitsyntax": {
 			"version": "0.1.0",
@@ -15142,7 +15695,6 @@
 		"braces": {
 			"version": "3.0.2",
 			"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
-			"dev": true,
 			"requires": {
 				"fill-range": "^7.0.1"
 			}
@@ -15190,7 +15742,7 @@
 		"chokidar": {
 			"version": "3.5.2",
 			"integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
-			"dev": true,
+			"devOptional": true,
 			"requires": {
 				"anymatch": "~3.1.2",
 				"braces": "~3.0.2",
@@ -15269,6 +15821,11 @@
 				"delayed-stream": "~1.0.0"
 			}
 		},
+		"commander": {
+			"version": "7.2.0",
+			"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+			"integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="
+		},
 		"concat-map": {
 			"version": "0.0.1",
 			"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
@@ -15453,6 +16010,26 @@
 			"version": "3.1.3",
 			"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
 		},
+		"fast-glob": {
+			"version": "3.2.7",
+			"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz",
+			"integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==",
+			"requires": {
+				"@nodelib/fs.stat": "^2.0.2",
+				"@nodelib/fs.walk": "^1.2.3",
+				"glob-parent": "^5.1.2",
+				"merge2": "^1.3.0",
+				"micromatch": "^4.0.4"
+			}
+		},
+		"fastq": {
+			"version": "1.13.0",
+			"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
+			"integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+			"requires": {
+				"reusify": "^1.0.4"
+			}
+		},
 		"figlet": {
 			"version": "1.5.2",
 			"integrity": "sha512-WOn21V8AhyE1QqVfPIVxe3tupJacq1xGkPTB4iagT6o+P2cAgEOOwIxMftr4+ZCTI6d551ij9j61DFr0nsP2uQ=="
@@ -15460,7 +16037,6 @@
 		"fill-range": {
 			"version": "7.0.1",
 			"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
-			"dev": true,
 			"requires": {
 				"to-regex-range": "^5.0.1"
 			}
@@ -15512,7 +16088,6 @@
 		"fsevents": {
 			"version": "2.3.2",
 			"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-			"dev": true,
 			"optional": true
 		},
 		"function-bind": {
@@ -15592,7 +16167,6 @@
 		"glob-parent": {
 			"version": "5.1.2",
 			"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-			"dev": true,
 			"requires": {
 				"is-glob": "^4.0.1"
 			}
@@ -15724,7 +16298,7 @@
 		"is-binary-path": {
 			"version": "2.1.0",
 			"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-			"dev": true,
+			"devOptional": true,
 			"requires": {
 				"binary-extensions": "^2.0.0"
 			}
@@ -15739,8 +16313,7 @@
 		},
 		"is-extglob": {
 			"version": "2.1.1",
-			"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
-			"dev": true
+			"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
 		},
 		"is-fullwidth-code-point": {
 			"version": "3.0.0",
@@ -15749,15 +16322,13 @@
 		"is-glob": {
 			"version": "4.0.1",
 			"integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
-			"dev": true,
 			"requires": {
 				"is-extglob": "^2.1.1"
 			}
 		},
 		"is-number": {
 			"version": "7.0.0",
-			"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-			"dev": true
+			"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
 		},
 		"isarray": {
 			"version": "0.0.1",
@@ -15914,10 +16485,24 @@
 			"version": "1.0.1",
 			"integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
 		},
+		"merge2": {
+			"version": "1.4.1",
+			"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+			"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
+		},
 		"methods": {
 			"version": "1.1.2",
 			"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
 		},
+		"micromatch": {
+			"version": "4.0.4",
+			"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
+			"integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
+			"requires": {
+				"braces": "^3.0.1",
+				"picomatch": "^2.2.3"
+			}
+		},
 		"mime": {
 			"version": "1.6.0",
 			"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
@@ -16121,7 +16706,7 @@
 		"normalize-path": {
 			"version": "3.0.0",
 			"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-			"dev": true
+			"devOptional": true
 		},
 		"npmlog": {
 			"version": "4.1.2",
@@ -16204,8 +16789,7 @@
 		},
 		"picomatch": {
 			"version": "2.3.0",
-			"integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
-			"dev": true
+			"integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw=="
 		},
 		"process-nextick-args": {
 			"version": "2.0.1",
@@ -16231,6 +16815,11 @@
 			"version": "2.2.0",
 			"integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
 		},
+		"queue-microtask": {
+			"version": "1.2.3",
+			"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+			"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
+		},
 		"range-parser": {
 			"version": "1.2.1",
 			"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
@@ -16258,7 +16847,7 @@
 		"readdirp": {
 			"version": "3.6.0",
 			"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
-			"dev": true,
+			"devOptional": true,
 			"requires": {
 				"picomatch": "^2.2.1"
 			}
@@ -16301,6 +16890,11 @@
 				"path-parse": "^1.0.6"
 			}
 		},
+		"reusify": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+			"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
+		},
 		"rimraf": {
 			"version": "2.7.1",
 			"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
@@ -16309,6 +16903,14 @@
 				"glob": "^7.1.3"
 			}
 		},
+		"run-parallel": {
+			"version": "1.2.0",
+			"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+			"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+			"requires": {
+				"queue-microtask": "^1.2.2"
+			}
+		},
 		"safe-buffer": {
 			"version": "5.2.1",
 			"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
@@ -16408,6 +17010,11 @@
 			"integrity": "sha512-rqYhcAnZ6d/vTPGghdrw7iumdcbXpsk1b8IG/rz+VWV51DM0p7XCtMoJ3qhPLIbp3tvyt3pKRbaaEMZYpHto8Q==",
 			"optional": true
 		},
+		"slash": {
+			"version": "3.0.0",
+			"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+			"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="
+		},
 		"sliced": {
 			"version": "1.0.1",
 			"integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=",
@@ -16477,6 +17084,15 @@
 				"has-flag": "^4.0.0"
 			}
 		},
+		"swc": {
+			"version": "1.0.11",
+			"resolved": "https://registry.npmjs.org/swc/-/swc-1.0.11.tgz",
+			"integrity": "sha512-YbG4eija7g/ajQ0lu4P2WPgKt5zCm743VgKn+buBrXXo1IETftO2r/8VdBPhv8wpTyg3CO+VU1z2wHuL4iohmw==",
+			"requires": {
+				"@swc/cli": "^0.1.26",
+				"@swc/core": "^1.2.12"
+			}
+		},
 		"tar": {
 			"version": "6.1.11",
 			"resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz",
@@ -16508,7 +17124,6 @@
 		"to-regex-range": {
 			"version": "5.0.1",
 			"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-			"dev": true,
 			"requires": {
 				"is-number": "^7.0.0"
 			}
diff --git a/gateway/package.json b/gateway/package.json
index b0119477..e3f3d172 100644
--- a/gateway/package.json
+++ b/gateway/package.json
@@ -7,13 +7,15 @@
 		"postinstall": "npx ts-patch install -s",
 		"test": "echo \"Error: no test specified\" && exit 1",
 		"start": "npm run build && node dist/start.js",
-		"build": "npx tsc -b .",
+		"build": "swc src --out-dir dist",
 		"dev": "tsnd --respawn src/start.ts"
 	},
 	"keywords": [],
 	"author": "Fosscord",
 	"license": "ISC",
 	"devDependencies": {
+		"@swc/cli": "^0.1.51",
+		"@swc/core": "^1.2.93",
 		"@types/amqplib": "^0.8.1",
 		"@types/jsonwebtoken": "^8.5.0",
 		"@types/mongodb": "^3.6.9",
@@ -38,6 +40,7 @@
 		"missing-native-js-functions": "^1.2.17",
 		"mongoose-autopopulate": "^0.12.3",
 		"node-fetch": "^2.6.1",
+		"swc": "^1.0.11",
 		"typeorm": "^0.2.37",
 		"uuid": "^8.3.2",
 		"ws": "^7.4.2"
diff --git a/gateway/tsconfig.json b/gateway/tsconfig.json
index 7143c8a3..e2ac5b0b 100644
--- a/gateway/tsconfig.json
+++ b/gateway/tsconfig.json
@@ -5,7 +5,7 @@
 		/* Visit https://aka.ms/tsconfig.json to read more about this file */
 
 		/* Basic Options */
-		// "incremental": true,                   /* Enable incremental compilation */
+		"incremental": true,                   /* Enable incremental compilation */
 		"target": "ES2020" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */,
 		"module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */,
 		"lib": ["ES2015", "ES2020.BigInt", "DOM"] /* Specify library files to be included in the compilation. */,
diff --git a/rtc/.swcrc b/rtc/.swcrc
new file mode 100644
index 00000000..f04801b8
--- /dev/null
+++ b/rtc/.swcrc
@@ -0,0 +1,9 @@
+{
+    "jsc": {
+        "parser": {
+            "syntax": "typescript",
+            "decorators": true
+        },
+        "target": "es2021"
+    }
+}
\ No newline at end of file
diff --git a/util/.swcrc b/util/.swcrc
new file mode 100644
index 00000000..f04801b8
--- /dev/null
+++ b/util/.swcrc
@@ -0,0 +1,9 @@
+{
+    "jsc": {
+        "parser": {
+            "syntax": "typescript",
+            "decorators": true
+        },
+        "target": "es2021"
+    }
+}
\ No newline at end of file
diff --git a/util/package-lock.json b/util/package-lock.json
index 7249b87d..aa2928e1 100644
--- a/util/package-lock.json
+++ b/util/package-lock.json
@@ -25,12 +25,15 @@
 				"pg": "^8.7.1",
 				"reflect-metadata": "^0.1.13",
 				"sqlite3": "^5.0.2",
+				"swc": "^1.0.11",
 				"tsconfig-paths": "^3.11.0",
 				"typeorm": "^0.2.37",
 				"typescript": "^4.4.2",
 				"typescript-json-schema": "^0.50.1"
 			},
 			"devDependencies": {
+				"@swc/cli": "^0.1.51",
+				"@swc/core": "^1.2.93",
 				"@types/amqplib": "^0.8.1",
 				"@types/jsonwebtoken": "^8.5.0",
 				"@types/mongoose-autopopulate": "^0.10.1",
@@ -977,6 +980,51 @@
 				"node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
 			}
 		},
+		"node_modules/@napi-rs/triples": {
+			"version": "1.0.3",
+			"resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz",
+			"integrity": "sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA=="
+		},
+		"node_modules/@node-rs/helper": {
+			"version": "1.2.1",
+			"resolved": "https://registry.npmjs.org/@node-rs/helper/-/helper-1.2.1.tgz",
+			"integrity": "sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg==",
+			"dependencies": {
+				"@napi-rs/triples": "^1.0.3"
+			}
+		},
+		"node_modules/@nodelib/fs.scandir": {
+			"version": "2.1.5",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+			"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+			"dependencies": {
+				"@nodelib/fs.stat": "2.0.5",
+				"run-parallel": "^1.1.9"
+			},
+			"engines": {
+				"node": ">= 8"
+			}
+		},
+		"node_modules/@nodelib/fs.stat": {
+			"version": "2.0.5",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+			"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+			"engines": {
+				"node": ">= 8"
+			}
+		},
+		"node_modules/@nodelib/fs.walk": {
+			"version": "1.2.8",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+			"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+			"dependencies": {
+				"@nodelib/fs.scandir": "2.1.5",
+				"fastq": "^1.6.0"
+			},
+			"engines": {
+				"node": ">= 8"
+			}
+		},
 		"node_modules/@sinonjs/commons": {
 			"version": "1.8.3",
 			"resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
@@ -1000,6 +1048,250 @@
 			"resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.3.tgz",
 			"integrity": "sha512-O3uyB/JbkAEMZaP3YqyHH7TMnex7tWyCbCI4EfJdOCoN6HIhqdJBWTM6aCCiWQ/5f5wxjgU735QAIpJbjDvmzg=="
 		},
+		"node_modules/@swc/cli": {
+			"version": "0.1.51",
+			"resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.1.51.tgz",
+			"integrity": "sha512-7eqZGpkI4QOYfF+9FV4xpT/V/LSRDs5OMJcm4Z46JnPMvv+sxumAFdCe1hHRzHgnzwis9OtjI8Tt3Srf9JudQw==",
+			"dependencies": {
+				"commander": "^7.1.0",
+				"fast-glob": "^3.2.5",
+				"slash": "3.0.0",
+				"source-map": "^0.7.3"
+			},
+			"bin": {
+				"spack": "bin/spack.js",
+				"swc": "bin/swc.js"
+			},
+			"engines": {
+				"node": ">= 12.13"
+			},
+			"peerDependencies": {
+				"@swc/core": "^1.2.66",
+				"chokidar": "^3.5.1"
+			},
+			"peerDependenciesMeta": {
+				"chokidar": {
+					"optional": true
+				}
+			}
+		},
+		"node_modules/@swc/cli/node_modules/source-map": {
+			"version": "0.7.3",
+			"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+			"integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+			"engines": {
+				"node": ">= 8"
+			}
+		},
+		"node_modules/@swc/core": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core/-/core-1.2.93.tgz",
+			"integrity": "sha512-Lx9I+9GfUl2Mb7r23MVbSkc+NZE0+xZ4Xh787D1b82KMeFLz7QgYe4cNM9SzTjV/VlSQyNTVlzjES7ZThIUvtA==",
+			"dependencies": {
+				"@node-rs/helper": "^1.0.0"
+			},
+			"engines": {
+				"node": ">=10"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/swc"
+			},
+			"optionalDependencies": {
+				"@swc/core-android-arm64": "1.2.93",
+				"@swc/core-darwin-arm64": "1.2.93",
+				"@swc/core-darwin-x64": "1.2.93",
+				"@swc/core-freebsd-x64": "1.2.93",
+				"@swc/core-linux-arm-gnueabihf": "1.2.93",
+				"@swc/core-linux-arm64-gnu": "1.2.93",
+				"@swc/core-linux-arm64-musl": "1.2.93",
+				"@swc/core-linux-x64-gnu": "1.2.93",
+				"@swc/core-linux-x64-musl": "1.2.93",
+				"@swc/core-win32-arm64-msvc": "1.2.93",
+				"@swc/core-win32-ia32-msvc": "1.2.93",
+				"@swc/core-win32-x64-msvc": "1.2.93"
+			}
+		},
+		"node_modules/@swc/core-android-arm64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.93.tgz",
+			"integrity": "sha512-3F5A7QNR5+MI64W20QBADU0Z6knt8kJOxIoKw4Vuk7JQ6k0nnMemio3LtusHgAVZLXq0wMILZ4kv/+qnRzWb7A==",
+			"cpu": [
+				"arm64"
+			],
+			"optional": true,
+			"os": [
+				"android"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-darwin-arm64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.93.tgz",
+			"integrity": "sha512-a8tu9WCtnjiuKTscUu8N9z/vVuIldwo5US4WfYi2dtQNgf21n1ZKxwvsZzRz6mEC86zVE0k9pmslwEtMuuCJog==",
+			"cpu": [
+				"arm64"
+			],
+			"optional": true,
+			"os": [
+				"darwin"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-darwin-x64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.93.tgz",
+			"integrity": "sha512-ga8bpjauZYHWMjuPKcqOZFSgStvveMc/J7yqIlr9sF2pOr7Rt/MKLO4Ups95A2Aay90aCF9cPKQDtX71PmdlVw==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"darwin"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-freebsd-x64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.93.tgz",
+			"integrity": "sha512-qDBEZqHh6C2AMaxjdm/Am8MUwN94RS3na9VLYDMGUkgs2yvnSADfx7JOyZEJT1Ot7FZEuyGXcSfomUzNCU/5kw==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"freebsd"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-linux-arm-gnueabihf": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.93.tgz",
+			"integrity": "sha512-KlJsXOcZpuHXU8hMVDXfSyBQ9fdUpzwDV1JKpfIehG+P2kRdCbiN3irdv6kd3rVH/PUjiCSIP5SvpCMvwJzDNg==",
+			"cpu": [
+				"arm"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-linux-arm64-gnu": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.93.tgz",
+			"integrity": "sha512-UdQX3Tt7xLUgC4AFROw9wRaRA2vDHNnNFURkV//i/nsGay12JANBvXA/FOMge6yx32tPvcNUSRHnb3MYep0kzg==",
+			"cpu": [
+				"arm64"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-linux-arm64-musl": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.93.tgz",
+			"integrity": "sha512-O5W/cjnkP9nuKZsx03/DxVO+ILh5BUmfCjFzScXGuLMIZrBLyzBstcaSaZOxfd04wPEqael4VZiAGmWXornZ1g==",
+			"cpu": [
+				"arm64"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-linux-x64-gnu": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.93.tgz",
+			"integrity": "sha512-fDELNkklMzEI8KDr51XGajP7TVbZCLYkiPGAgbGadmkMFvlgJfzf1Qt1VzjGk5lTYdQO40vCe7u4xEpfdq6lLQ==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-linux-x64-musl": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.93.tgz",
+			"integrity": "sha512-ZdEi04dfj96XDjT+J2k/J/m3WoHqlfwz93dTlpWdlPvrSNtsMg2oorm0Zynx/x2Ghe3w1hJu3HdMaJF2UY3Ttw==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-win32-arm64-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.93.tgz",
+			"integrity": "sha512-NbIyBpOCEqxa+s3x8ijQGBOxQd5P63icf+6SK6MkO5E2zTgiR4g6ziihKCdhF9tJ6M4c0DHL/RqIV5SS9UX01w==",
+			"cpu": [
+				"arm64"
+			],
+			"optional": true,
+			"os": [
+				"win32"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-win32-ia32-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.93.tgz",
+			"integrity": "sha512-TrRfHzGBQL1fjTahfBLDYcjLx28tH7pN5co5fJmYgASey8McVWL6eW/q/9fxvZqOVyj2SF9wvLDYKm0IWz4f+g==",
+			"cpu": [
+				"ia32"
+			],
+			"optional": true,
+			"os": [
+				"win32"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
+		"node_modules/@swc/core-win32-x64-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.93.tgz",
+			"integrity": "sha512-VsqLVB7ytNYqEC21amMswC2c84NCVNW6KLhS9XeO6Vz1+7wx8uPu1rAo14oBu5/3yhv7/K3wgfMqJMKHZtXPMQ==",
+			"cpu": [
+				"x64"
+			],
+			"optional": true,
+			"os": [
+				"win32"
+			],
+			"engines": {
+				"node": ">=10"
+			}
+		},
 		"node_modules/@tootallnate/once": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
@@ -2122,6 +2414,14 @@
 				"node": ">= 0.8"
 			}
 		},
+		"node_modules/commander": {
+			"version": "7.2.0",
+			"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+			"integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+			"engines": {
+				"node": ">= 10"
+			}
+		},
 		"node_modules/concat-map": {
 			"version": "0.0.1",
 			"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -2754,6 +3054,21 @@
 			"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
 			"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
 		},
+		"node_modules/fast-glob": {
+			"version": "3.2.7",
+			"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz",
+			"integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==",
+			"dependencies": {
+				"@nodelib/fs.stat": "^2.0.2",
+				"@nodelib/fs.walk": "^1.2.3",
+				"glob-parent": "^5.1.2",
+				"merge2": "^1.3.0",
+				"micromatch": "^4.0.4"
+			},
+			"engines": {
+				"node": ">=8"
+			}
+		},
 		"node_modules/fast-json-stable-stringify": {
 			"version": "2.1.0",
 			"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
@@ -2766,6 +3081,14 @@
 			"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
 			"dev": true
 		},
+		"node_modules/fastq": {
+			"version": "1.13.0",
+			"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
+			"integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+			"dependencies": {
+				"reusify": "^1.0.4"
+			}
+		},
 		"node_modules/fb-watchman": {
 			"version": "2.0.1",
 			"resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz",
@@ -3044,6 +3367,17 @@
 				"url": "https://github.com/sponsors/isaacs"
 			}
 		},
+		"node_modules/glob-parent": {
+			"version": "5.1.2",
+			"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+			"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+			"dependencies": {
+				"is-glob": "^4.0.1"
+			},
+			"engines": {
+				"node": ">= 6"
+			}
+		},
 		"node_modules/globals": {
 			"version": "11.12.0",
 			"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
@@ -3426,6 +3760,14 @@
 				"url": "https://github.com/sponsors/sindresorhus"
 			}
 		},
+		"node_modules/is-extglob": {
+			"version": "2.1.1",
+			"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+			"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
 		"node_modules/is-fullwidth-code-point": {
 			"version": "1.0.0",
 			"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
@@ -3446,6 +3788,17 @@
 				"node": ">=6"
 			}
 		},
+		"node_modules/is-glob": {
+			"version": "4.0.3",
+			"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+			"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+			"dependencies": {
+				"is-extglob": "^2.1.1"
+			},
+			"engines": {
+				"node": ">=0.10.0"
+			}
+		},
 		"node_modules/is-number": {
 			"version": "7.0.0",
 			"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
@@ -4619,6 +4972,14 @@
 			"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
 			"dev": true
 		},
+		"node_modules/merge2": {
+			"version": "1.4.1",
+			"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+			"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+			"engines": {
+				"node": ">= 8"
+			}
+		},
 		"node_modules/methods": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
@@ -5773,6 +6134,25 @@
 			"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
 			"integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
 		},
+		"node_modules/queue-microtask": {
+			"version": "1.2.3",
+			"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+			"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/feross"
+				},
+				{
+					"type": "patreon",
+					"url": "https://www.patreon.com/feross"
+				},
+				{
+					"type": "consulting",
+					"url": "https://feross.org/support"
+				}
+			]
+		},
 		"node_modules/range-parser": {
 			"version": "1.2.1",
 			"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
@@ -5963,6 +6343,15 @@
 				"node": ">=8"
 			}
 		},
+		"node_modules/reusify": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+			"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+			"engines": {
+				"iojs": ">=1.0.0",
+				"node": ">=0.10.0"
+			}
+		},
 		"node_modules/rimraf": {
 			"version": "3.0.2",
 			"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@@ -5978,6 +6367,28 @@
 				"url": "https://github.com/sponsors/isaacs"
 			}
 		},
+		"node_modules/run-parallel": {
+			"version": "1.2.0",
+			"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+			"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+			"funding": [
+				{
+					"type": "github",
+					"url": "https://github.com/sponsors/feross"
+				},
+				{
+					"type": "patreon",
+					"url": "https://www.patreon.com/feross"
+				},
+				{
+					"type": "consulting",
+					"url": "https://feross.org/support"
+				}
+			],
+			"dependencies": {
+				"queue-microtask": "^1.2.2"
+			}
+		},
 		"node_modules/safe-buffer": {
 			"version": "5.2.1",
 			"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
@@ -6141,7 +6552,6 @@
 			"version": "3.0.0",
 			"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
 			"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-			"dev": true,
 			"engines": {
 				"node": ">=8"
 			}
@@ -6393,6 +6803,15 @@
 				"node": ">=8"
 			}
 		},
+		"node_modules/swc": {
+			"version": "1.0.11",
+			"resolved": "https://registry.npmjs.org/swc/-/swc-1.0.11.tgz",
+			"integrity": "sha512-YbG4eija7g/ajQ0lu4P2WPgKt5zCm743VgKn+buBrXXo1IETftO2r/8VdBPhv8wpTyg3CO+VU1z2wHuL4iohmw==",
+			"dependencies": {
+				"@swc/cli": "^0.1.26",
+				"@swc/core": "^1.2.12"
+			}
+		},
 		"node_modules/symbol-tree": {
 			"version": "3.2.4",
 			"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
@@ -8117,6 +8536,42 @@
 				"chalk": "^4.0.0"
 			}
 		},
+		"@napi-rs/triples": {
+			"version": "1.0.3",
+			"resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz",
+			"integrity": "sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA=="
+		},
+		"@node-rs/helper": {
+			"version": "1.2.1",
+			"resolved": "https://registry.npmjs.org/@node-rs/helper/-/helper-1.2.1.tgz",
+			"integrity": "sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg==",
+			"requires": {
+				"@napi-rs/triples": "^1.0.3"
+			}
+		},
+		"@nodelib/fs.scandir": {
+			"version": "2.1.5",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+			"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+			"requires": {
+				"@nodelib/fs.stat": "2.0.5",
+				"run-parallel": "^1.1.9"
+			}
+		},
+		"@nodelib/fs.stat": {
+			"version": "2.0.5",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+			"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
+		},
+		"@nodelib/fs.walk": {
+			"version": "1.2.8",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+			"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+			"requires": {
+				"@nodelib/fs.scandir": "2.1.5",
+				"fastq": "^1.6.0"
+			}
+		},
 		"@sinonjs/commons": {
 			"version": "1.8.3",
 			"resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
@@ -8140,6 +8595,116 @@
 			"resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.3.tgz",
 			"integrity": "sha512-O3uyB/JbkAEMZaP3YqyHH7TMnex7tWyCbCI4EfJdOCoN6HIhqdJBWTM6aCCiWQ/5f5wxjgU735QAIpJbjDvmzg=="
 		},
+		"@swc/cli": {
+			"version": "0.1.51",
+			"resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.1.51.tgz",
+			"integrity": "sha512-7eqZGpkI4QOYfF+9FV4xpT/V/LSRDs5OMJcm4Z46JnPMvv+sxumAFdCe1hHRzHgnzwis9OtjI8Tt3Srf9JudQw==",
+			"requires": {
+				"commander": "^7.1.0",
+				"fast-glob": "^3.2.5",
+				"slash": "3.0.0",
+				"source-map": "^0.7.3"
+			},
+			"dependencies": {
+				"source-map": {
+					"version": "0.7.3",
+					"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+					"integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ=="
+				}
+			}
+		},
+		"@swc/core": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core/-/core-1.2.93.tgz",
+			"integrity": "sha512-Lx9I+9GfUl2Mb7r23MVbSkc+NZE0+xZ4Xh787D1b82KMeFLz7QgYe4cNM9SzTjV/VlSQyNTVlzjES7ZThIUvtA==",
+			"requires": {
+				"@node-rs/helper": "^1.0.0",
+				"@swc/core-android-arm64": "1.2.93",
+				"@swc/core-darwin-arm64": "1.2.93",
+				"@swc/core-darwin-x64": "1.2.93",
+				"@swc/core-freebsd-x64": "1.2.93",
+				"@swc/core-linux-arm-gnueabihf": "1.2.93",
+				"@swc/core-linux-arm64-gnu": "1.2.93",
+				"@swc/core-linux-arm64-musl": "1.2.93",
+				"@swc/core-linux-x64-gnu": "1.2.93",
+				"@swc/core-linux-x64-musl": "1.2.93",
+				"@swc/core-win32-arm64-msvc": "1.2.93",
+				"@swc/core-win32-ia32-msvc": "1.2.93",
+				"@swc/core-win32-x64-msvc": "1.2.93"
+			}
+		},
+		"@swc/core-android-arm64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.93.tgz",
+			"integrity": "sha512-3F5A7QNR5+MI64W20QBADU0Z6knt8kJOxIoKw4Vuk7JQ6k0nnMemio3LtusHgAVZLXq0wMILZ4kv/+qnRzWb7A==",
+			"optional": true
+		},
+		"@swc/core-darwin-arm64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.93.tgz",
+			"integrity": "sha512-a8tu9WCtnjiuKTscUu8N9z/vVuIldwo5US4WfYi2dtQNgf21n1ZKxwvsZzRz6mEC86zVE0k9pmslwEtMuuCJog==",
+			"optional": true
+		},
+		"@swc/core-darwin-x64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.93.tgz",
+			"integrity": "sha512-ga8bpjauZYHWMjuPKcqOZFSgStvveMc/J7yqIlr9sF2pOr7Rt/MKLO4Ups95A2Aay90aCF9cPKQDtX71PmdlVw==",
+			"optional": true
+		},
+		"@swc/core-freebsd-x64": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.93.tgz",
+			"integrity": "sha512-qDBEZqHh6C2AMaxjdm/Am8MUwN94RS3na9VLYDMGUkgs2yvnSADfx7JOyZEJT1Ot7FZEuyGXcSfomUzNCU/5kw==",
+			"optional": true
+		},
+		"@swc/core-linux-arm-gnueabihf": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.93.tgz",
+			"integrity": "sha512-KlJsXOcZpuHXU8hMVDXfSyBQ9fdUpzwDV1JKpfIehG+P2kRdCbiN3irdv6kd3rVH/PUjiCSIP5SvpCMvwJzDNg==",
+			"optional": true
+		},
+		"@swc/core-linux-arm64-gnu": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.93.tgz",
+			"integrity": "sha512-UdQX3Tt7xLUgC4AFROw9wRaRA2vDHNnNFURkV//i/nsGay12JANBvXA/FOMge6yx32tPvcNUSRHnb3MYep0kzg==",
+			"optional": true
+		},
+		"@swc/core-linux-arm64-musl": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.93.tgz",
+			"integrity": "sha512-O5W/cjnkP9nuKZsx03/DxVO+ILh5BUmfCjFzScXGuLMIZrBLyzBstcaSaZOxfd04wPEqael4VZiAGmWXornZ1g==",
+			"optional": true
+		},
+		"@swc/core-linux-x64-gnu": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.93.tgz",
+			"integrity": "sha512-fDELNkklMzEI8KDr51XGajP7TVbZCLYkiPGAgbGadmkMFvlgJfzf1Qt1VzjGk5lTYdQO40vCe7u4xEpfdq6lLQ==",
+			"optional": true
+		},
+		"@swc/core-linux-x64-musl": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.93.tgz",
+			"integrity": "sha512-ZdEi04dfj96XDjT+J2k/J/m3WoHqlfwz93dTlpWdlPvrSNtsMg2oorm0Zynx/x2Ghe3w1hJu3HdMaJF2UY3Ttw==",
+			"optional": true
+		},
+		"@swc/core-win32-arm64-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.93.tgz",
+			"integrity": "sha512-NbIyBpOCEqxa+s3x8ijQGBOxQd5P63icf+6SK6MkO5E2zTgiR4g6ziihKCdhF9tJ6M4c0DHL/RqIV5SS9UX01w==",
+			"optional": true
+		},
+		"@swc/core-win32-ia32-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.93.tgz",
+			"integrity": "sha512-TrRfHzGBQL1fjTahfBLDYcjLx28tH7pN5co5fJmYgASey8McVWL6eW/q/9fxvZqOVyj2SF9wvLDYKm0IWz4f+g==",
+			"optional": true
+		},
+		"@swc/core-win32-x64-msvc": {
+			"version": "1.2.93",
+			"resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.93.tgz",
+			"integrity": "sha512-VsqLVB7ytNYqEC21amMswC2c84NCVNW6KLhS9XeO6Vz1+7wx8uPu1rAo14oBu5/3yhv7/K3wgfMqJMKHZtXPMQ==",
+			"optional": true
+		},
 		"@tootallnate/once": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
@@ -9095,6 +9660,11 @@
 				"delayed-stream": "~1.0.0"
 			}
 		},
+		"commander": {
+			"version": "7.2.0",
+			"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+			"integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="
+		},
 		"concat-map": {
 			"version": "0.0.1",
 			"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -9600,6 +10170,18 @@
 			"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
 			"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
 		},
+		"fast-glob": {
+			"version": "3.2.7",
+			"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz",
+			"integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==",
+			"requires": {
+				"@nodelib/fs.stat": "^2.0.2",
+				"@nodelib/fs.walk": "^1.2.3",
+				"glob-parent": "^5.1.2",
+				"merge2": "^1.3.0",
+				"micromatch": "^4.0.4"
+			}
+		},
 		"fast-json-stable-stringify": {
 			"version": "2.1.0",
 			"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
@@ -9612,6 +10194,14 @@
 			"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
 			"dev": true
 		},
+		"fastq": {
+			"version": "1.13.0",
+			"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
+			"integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+			"requires": {
+				"reusify": "^1.0.4"
+			}
+		},
 		"fb-watchman": {
 			"version": "2.0.1",
 			"resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz",
@@ -9827,6 +10417,14 @@
 				"path-is-absolute": "^1.0.0"
 			}
 		},
+		"glob-parent": {
+			"version": "5.1.2",
+			"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+			"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+			"requires": {
+				"is-glob": "^4.0.1"
+			}
+		},
 		"globals": {
 			"version": "11.12.0",
 			"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
@@ -10108,6 +10706,11 @@
 			"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
 			"integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="
 		},
+		"is-extglob": {
+			"version": "2.1.1",
+			"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+			"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
+		},
 		"is-fullwidth-code-point": {
 			"version": "1.0.0",
 			"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
@@ -10122,6 +10725,14 @@
 			"integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
 			"dev": true
 		},
+		"is-glob": {
+			"version": "4.0.3",
+			"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+			"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+			"requires": {
+				"is-extglob": "^2.1.1"
+			}
+		},
 		"is-number": {
 			"version": "7.0.0",
 			"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
@@ -11062,6 +11673,11 @@
 			"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
 			"dev": true
 		},
+		"merge2": {
+			"version": "1.4.1",
+			"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+			"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
+		},
 		"methods": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
@@ -11934,6 +12550,11 @@
 			"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
 			"integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
 		},
+		"queue-microtask": {
+			"version": "1.2.3",
+			"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+			"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
+		},
 		"range-parser": {
 			"version": "1.2.1",
 			"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
@@ -12086,6 +12707,11 @@
 			"integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
 			"dev": true
 		},
+		"reusify": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+			"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
+		},
 		"rimraf": {
 			"version": "3.0.2",
 			"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@@ -12095,6 +12721,14 @@
 				"glob": "^7.1.3"
 			}
 		},
+		"run-parallel": {
+			"version": "1.2.0",
+			"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+			"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+			"requires": {
+				"queue-microtask": "^1.2.2"
+			}
+		},
 		"safe-buffer": {
 			"version": "5.2.1",
 			"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
@@ -12221,8 +12855,7 @@
 		"slash": {
 			"version": "3.0.0",
 			"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-			"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-			"dev": true
+			"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="
 		},
 		"source-map": {
 			"version": "0.6.1",
@@ -12411,6 +13044,15 @@
 				"supports-color": "^7.0.0"
 			}
 		},
+		"swc": {
+			"version": "1.0.11",
+			"resolved": "https://registry.npmjs.org/swc/-/swc-1.0.11.tgz",
+			"integrity": "sha512-YbG4eija7g/ajQ0lu4P2WPgKt5zCm743VgKn+buBrXXo1IETftO2r/8VdBPhv8wpTyg3CO+VU1z2wHuL4iohmw==",
+			"requires": {
+				"@swc/cli": "^0.1.26",
+				"@swc/core": "^1.2.12"
+			}
+		},
 		"symbol-tree": {
 			"version": "3.2.4",
 			"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
diff --git a/util/package.json b/util/package.json
index 33abf483..50049e23 100644
--- a/util/package.json
+++ b/util/package.json
@@ -8,7 +8,7 @@
 		"start": "npm run build && node dist/",
 		"test": "npm run build && jest",
 		"postinstall": "npm run build",
-		"build": "npx tsc -b ."
+		"build": "swc src --out-dir dist"
 	},
 	"repository": {
 		"type": "git",
@@ -28,6 +28,8 @@
 	},
 	"homepage": "https://docs.fosscord.com/",
 	"devDependencies": {
+		"@swc/cli": "^0.1.51",
+		"@swc/core": "^1.2.93",
 		"@types/amqplib": "^0.8.1",
 		"@types/jsonwebtoken": "^8.5.0",
 		"@types/mongoose-autopopulate": "^0.10.1",
@@ -52,6 +54,7 @@
 		"pg": "^8.7.1",
 		"reflect-metadata": "^0.1.13",
 		"sqlite3": "^5.0.2",
+		"swc": "^1.0.11",
 		"tsconfig-paths": "^3.11.0",
 		"typeorm": "^0.2.37",
 		"typescript": "^4.4.2",
diff --git a/util/tsconfig.json b/util/tsconfig.json
index 7fbe3bac..cbd5db32 100644
--- a/util/tsconfig.json
+++ b/util/tsconfig.json
@@ -4,10 +4,10 @@
 		/* Visit https://aka.ms/tsconfig.json to read more about this file */
 
 		/* Basic Options */
-		// "incremental": true,                   /* Enable incremental compilation */
+		"incremental": true,                   /* Enable incremental compilation */
 		"target": "ES6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */,
 		"module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */,
-		"lib": ["ES2020"] /* Specify library files to be included in the compilation. */,
+		"lib": ["ES2021"] /* Specify library files to be included in the compilation. */,
 		"allowJs": true /* Allow javascript files to be compiled. */,
 		"checkJs": true /* Report errors in .js files. */,
 		// "jsx": "preserve",                     /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
diff --git a/webrtc/.swcrc b/webrtc/.swcrc
new file mode 100644
index 00000000..f04801b8
--- /dev/null
+++ b/webrtc/.swcrc
@@ -0,0 +1,9 @@
+{
+    "jsc": {
+        "parser": {
+            "syntax": "typescript",
+            "decorators": true
+        },
+        "target": "es2021"
+    }
+}
\ No newline at end of file
diff --git a/webrtc/tsconfig.json b/webrtc/tsconfig.json
index 6bf2e6b7..70631fca 100644
--- a/webrtc/tsconfig.json
+++ b/webrtc/tsconfig.json
@@ -7,7 +7,7 @@
 		// "incremental": true,                   /* Enable incremental compilation */
 		"target": "ESNext" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */,
 		"module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */,
-		"lib": ["ES2020"] /* Specify library files to be included in the compilation. */,
+		"lib": ["ES2021"] /* Specify library files to be included in the compilation. */,
 		"allowJs": true /* Allow javascript files to be compiled. */,
 		"checkJs": true /* Report errors in .js files. */,
 		// "jsx": "preserve",                     /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */