diff --git a/CI/coverage-dead-code-deletion.js b/CI/coverage-dead-code-deletion.mjs
similarity index 97%
rename from CI/coverage-dead-code-deletion.js
rename to CI/coverage-dead-code-deletion.mjs
index a1a076870f6807abacb68870a2006a6aa83d341f..55e3da9dd7b937f11a7a20c30f6d90856a649f48 100644
--- a/CI/coverage-dead-code-deletion.js
+++ b/CI/coverage-dead-code-deletion.mjs
@@ -1,4 +1,4 @@
-const fs = require('fs');
+import * as fs from 'fs';
 
 const covData = JSON.parse(fs.readFileSync('generated/cov-dead-code-deletion/coverage-final.json', 'utf8'));
 const files = Object.keys(covData);
diff --git a/CI/cp-src-to-context-specific.js b/CI/cp-src-to-context-specific.mjs
similarity index 98%
rename from CI/cp-src-to-context-specific.js
rename to CI/cp-src-to-context-specific.mjs
index b94ccb61f76c211d866b7279b96dc963c79b94e7..5c8cddea2479b80961a4ca796a393c02374a689c 100644
--- a/CI/cp-src-to-context-specific.js
+++ b/CI/cp-src-to-context-specific.mjs
@@ -1,4 +1,4 @@
-const fs = require('fs');
+import * as fs from 'fs';
 
 const allModules = [];
 fs.readdirSync('src/').forEach(fileName => {
diff --git a/CI/vendors.js b/CI/vendors.mjs
similarity index 98%
rename from CI/vendors.js
rename to CI/vendors.mjs
index 240dda8d420814dd9f967f1b88587b257d190f69..5256c03f8d07b0ca45a8f7099043bf1d073717e7 100644
--- a/CI/vendors.js
+++ b/CI/vendors.mjs
@@ -1,4 +1,4 @@
-const fs = require('fs');
+import * as fs from 'fs';
 try {
 	fs.writeFileSync('generated/vendors/tweetnacl+ed2curve.mjs',
 		(fs.readFileSync('node_modules/tweetnacl/nacl-fast.js', 'utf8'))
diff --git a/npm/package.json b/npm/package.json
index 973ba3fd8dad31ec06610ac2ea9af240bc6aabc1..a3e3bd9616d84b5d4ef684d59efe5b87e12c631e 100644
--- a/npm/package.json
+++ b/npm/package.json
@@ -2,7 +2,8 @@
   "name": "g1lib",
   "version": "3.5.8",
   "description": "An ubiquitous static javascript toolbox lib for Ǧ1 / Duniter ecosystem with reliability in mind.",
-  "main": "nodejs/all.mjs",
+	"type": "module",
+	"main": "nodejs/all.mjs",
 	"browser": "browser/all.mjs",
   "author": {
     "name": "[1000i100] Millicent Billette",
diff --git a/package-lock.json b/package-lock.json
index 37285bc187e831254bf926361be489d0f89a419a..859425f1bf1658b097ea6597d568260b9dea16d0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6,11 +6,11 @@
 		"": {
 			"hasInstallScript": true,
 			"dependencies": {
-				"@noble/ed25519": "^1.7.1",
+				"@noble/ed25519": "^1.7.3",
 				"cross-fetch": "^3.1.5",
 				"ed2curve": "https://github.com/1000i100/ed2curve#master",
 				"js-sha256": "github:1000i100/js-sha256#master",
-				"latinize-to-ascii": "^0.5.2",
+				"latinize-to-ascii": "^0.5.3",
 				"node-fetch": "^2.6.7",
 				"scrypt-async-modern": "^3.0.12",
 				"tweetnacl": "^1.0.3"
@@ -20,20 +20,20 @@
 				"@jscpd/badge-reporter": "^3.4.5",
 				"ava": "^5.2.0",
 				"badgen": "^3.2.2",
-				"browser-ava": "^1.3.22",
-				"c8": "^7.12.0",
+				"browser-ava": "^1.3.25",
+				"c8": "^7.13.0",
 				"chokidar-cli": "^3.0.0",
-				"codehawk-cli": "^10.0.1",
+				"codehawk-cli": "^10.1.0",
 				"es6-plato": "https://github.com/1000i100/es6-plato#master",
-				"esbuild": "^0.16.12",
-				"eslint-plugin-ava": "^13.2.0",
+				"esbuild": "^0.17.10",
+				"eslint-plugin-ava": "^14.0.0",
 				"eslint-plugin-promise": "^6.1.1",
 				"eslint-plugin-unicorn": "^45.0.2",
 				"jscpd": "^3.5.3",
-				"mkdirp": "^1.0.4",
+				"mkdirp": "^2.1.3",
 				"npm-run-all": "^4.1.5",
-				"rollup": "^3.9.0",
-				"ts-node": "^10.9.1",
+				"rollup": "^3.17.3",
+				"tsx": "^3.12.3",
 				"typescript": "^4.9.5",
 				"xo": "^0.44.0"
 			}
@@ -146,34 +146,34 @@
 			}
 		},
 		"node_modules/@babel/compat-data": {
-			"version": "7.20.5",
-			"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz",
-			"integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==",
+			"version": "7.21.0",
+			"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz",
+			"integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==",
 			"dev": true,
 			"engines": {
 				"node": ">=6.9.0"
 			}
 		},
 		"node_modules/@babel/core": {
-			"version": "7.20.5",
-			"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.5.tgz",
-			"integrity": "sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==",
+			"version": "7.21.0",
+			"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz",
+			"integrity": "sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==",
 			"dev": true,
 			"dependencies": {
-				"@ampproject/remapping": "^2.1.0",
+				"@ampproject/remapping": "^2.2.0",
 				"@babel/code-frame": "^7.18.6",
-				"@babel/generator": "^7.20.5",
-				"@babel/helper-compilation-targets": "^7.20.0",
-				"@babel/helper-module-transforms": "^7.20.2",
-				"@babel/helpers": "^7.20.5",
-				"@babel/parser": "^7.20.5",
-				"@babel/template": "^7.18.10",
-				"@babel/traverse": "^7.20.5",
-				"@babel/types": "^7.20.5",
+				"@babel/generator": "^7.21.0",
+				"@babel/helper-compilation-targets": "^7.20.7",
+				"@babel/helper-module-transforms": "^7.21.0",
+				"@babel/helpers": "^7.21.0",
+				"@babel/parser": "^7.21.0",
+				"@babel/template": "^7.20.7",
+				"@babel/traverse": "^7.21.0",
+				"@babel/types": "^7.21.0",
 				"convert-source-map": "^1.7.0",
 				"debug": "^4.1.0",
 				"gensync": "^1.0.0-beta.2",
-				"json5": "^2.2.1",
+				"json5": "^2.2.2",
 				"semver": "^6.3.0"
 			},
 			"engines": {
@@ -230,13 +230,14 @@
 			}
 		},
 		"node_modules/@babel/generator": {
-			"version": "7.20.5",
-			"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz",
-			"integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==",
+			"version": "7.21.1",
+			"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz",
+			"integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==",
 			"dev": true,
 			"dependencies": {
-				"@babel/types": "^7.20.5",
+				"@babel/types": "^7.21.0",
 				"@jridgewell/gen-mapping": "^0.3.2",
+				"@jridgewell/trace-mapping": "^0.3.17",
 				"jsesc": "^2.5.1"
 			},
 			"engines": {
@@ -268,14 +269,15 @@
 			}
 		},
 		"node_modules/@babel/helper-compilation-targets": {
-			"version": "7.20.0",
-			"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz",
-			"integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==",
+			"version": "7.20.7",
+			"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz",
+			"integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==",
 			"dev": true,
 			"dependencies": {
-				"@babel/compat-data": "^7.20.0",
+				"@babel/compat-data": "^7.20.5",
 				"@babel/helper-validator-option": "^7.18.6",
 				"browserslist": "^4.21.3",
+				"lru-cache": "^5.1.1",
 				"semver": "^6.3.0"
 			},
 			"engines": {
@@ -285,6 +287,15 @@
 				"@babel/core": "^7.0.0"
 			}
 		},
+		"node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": {
+			"version": "5.1.1",
+			"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+			"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+			"dev": true,
+			"dependencies": {
+				"yallist": "^3.0.2"
+			}
+		},
 		"node_modules/@babel/helper-compilation-targets/node_modules/semver": {
 			"version": "6.3.0",
 			"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
@@ -294,18 +305,25 @@
 				"semver": "bin/semver.js"
 			}
 		},
+		"node_modules/@babel/helper-compilation-targets/node_modules/yallist": {
+			"version": "3.1.1",
+			"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+			"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+			"dev": true
+		},
 		"node_modules/@babel/helper-create-class-features-plugin": {
-			"version": "7.20.5",
-			"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.5.tgz",
-			"integrity": "sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww==",
+			"version": "7.21.0",
+			"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz",
+			"integrity": "sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==",
 			"dev": true,
 			"dependencies": {
 				"@babel/helper-annotate-as-pure": "^7.18.6",
 				"@babel/helper-environment-visitor": "^7.18.9",
-				"@babel/helper-function-name": "^7.19.0",
-				"@babel/helper-member-expression-to-functions": "^7.18.9",
+				"@babel/helper-function-name": "^7.21.0",
+				"@babel/helper-member-expression-to-functions": "^7.21.0",
 				"@babel/helper-optimise-call-expression": "^7.18.6",
-				"@babel/helper-replace-supers": "^7.19.1",
+				"@babel/helper-replace-supers": "^7.20.7",
+				"@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
 				"@babel/helper-split-export-declaration": "^7.18.6"
 			},
 			"engines": {
@@ -325,13 +343,13 @@
 			}
 		},
 		"node_modules/@babel/helper-function-name": {
-			"version": "7.19.0",
-			"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz",
-			"integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==",
+			"version": "7.21.0",
+			"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz",
+			"integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==",
 			"dev": true,
 			"dependencies": {
-				"@babel/template": "^7.18.10",
-				"@babel/types": "^7.19.0"
+				"@babel/template": "^7.20.7",
+				"@babel/types": "^7.21.0"
 			},
 			"engines": {
 				"node": ">=6.9.0"
@@ -350,12 +368,12 @@
 			}
 		},
 		"node_modules/@babel/helper-member-expression-to-functions": {
-			"version": "7.18.9",
-			"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz",
-			"integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==",
+			"version": "7.21.0",
+			"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz",
+			"integrity": "sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==",
 			"dev": true,
 			"dependencies": {
-				"@babel/types": "^7.18.9"
+				"@babel/types": "^7.21.0"
 			},
 			"engines": {
 				"node": ">=6.9.0"
@@ -374,9 +392,9 @@
 			}
 		},
 		"node_modules/@babel/helper-module-transforms": {
-			"version": "7.20.2",
-			"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz",
-			"integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==",
+			"version": "7.21.2",
+			"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz",
+			"integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==",
 			"dev": true,
 			"dependencies": {
 				"@babel/helper-environment-visitor": "^7.18.9",
@@ -384,9 +402,9 @@
 				"@babel/helper-simple-access": "^7.20.2",
 				"@babel/helper-split-export-declaration": "^7.18.6",
 				"@babel/helper-validator-identifier": "^7.19.1",
-				"@babel/template": "^7.18.10",
-				"@babel/traverse": "^7.20.1",
-				"@babel/types": "^7.20.2"
+				"@babel/template": "^7.20.7",
+				"@babel/traverse": "^7.21.2",
+				"@babel/types": "^7.21.2"
 			},
 			"engines": {
 				"node": ">=6.9.0"
@@ -414,16 +432,17 @@
 			}
 		},
 		"node_modules/@babel/helper-replace-supers": {
-			"version": "7.19.1",
-			"resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz",
-			"integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==",
+			"version": "7.20.7",
+			"resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz",
+			"integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==",
 			"dev": true,
 			"dependencies": {
 				"@babel/helper-environment-visitor": "^7.18.9",
-				"@babel/helper-member-expression-to-functions": "^7.18.9",
+				"@babel/helper-member-expression-to-functions": "^7.20.7",
 				"@babel/helper-optimise-call-expression": "^7.18.6",
-				"@babel/traverse": "^7.19.1",
-				"@babel/types": "^7.19.0"
+				"@babel/template": "^7.20.7",
+				"@babel/traverse": "^7.20.7",
+				"@babel/types": "^7.20.7"
 			},
 			"engines": {
 				"node": ">=6.9.0"
@@ -441,6 +460,18 @@
 				"node": ">=6.9.0"
 			}
 		},
+		"node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+			"version": "7.20.0",
+			"resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz",
+			"integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==",
+			"dev": true,
+			"dependencies": {
+				"@babel/types": "^7.20.0"
+			},
+			"engines": {
+				"node": ">=6.9.0"
+			}
+		},
 		"node_modules/@babel/helper-split-export-declaration": {
 			"version": "7.18.6",
 			"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
@@ -472,23 +503,23 @@
 			}
 		},
 		"node_modules/@babel/helper-validator-option": {
-			"version": "7.18.6",
-			"resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
-			"integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
+			"version": "7.21.0",
+			"resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz",
+			"integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==",
 			"dev": true,
 			"engines": {
 				"node": ">=6.9.0"
 			}
 		},
 		"node_modules/@babel/helpers": {
-			"version": "7.20.6",
-			"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.6.tgz",
-			"integrity": "sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==",
+			"version": "7.21.0",
+			"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz",
+			"integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==",
 			"dev": true,
 			"dependencies": {
-				"@babel/template": "^7.18.10",
-				"@babel/traverse": "^7.20.5",
-				"@babel/types": "^7.20.5"
+				"@babel/template": "^7.20.7",
+				"@babel/traverse": "^7.21.0",
+				"@babel/types": "^7.21.0"
 			},
 			"engines": {
 				"node": ">=6.9.0"
@@ -565,9 +596,9 @@
 			}
 		},
 		"node_modules/@babel/parser": {
-			"version": "7.20.5",
-			"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz",
-			"integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==",
+			"version": "7.21.2",
+			"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.2.tgz",
+			"integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==",
 			"dev": true,
 			"bin": {
 				"parser": "bin/babel-parser.js"
@@ -592,12 +623,12 @@
 			}
 		},
 		"node_modules/@babel/plugin-transform-typescript": {
-			"version": "7.20.2",
-			"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.2.tgz",
-			"integrity": "sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag==",
+			"version": "7.21.0",
+			"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.0.tgz",
+			"integrity": "sha512-xo///XTPp3mDzTtrqXoBlK9eiAYW3wv9JXglcn/u1bi60RW11dEUxIgA8cbnDhutS1zacjMRmAwxE0gMklLnZg==",
 			"dev": true,
 			"dependencies": {
-				"@babel/helper-create-class-features-plugin": "^7.20.2",
+				"@babel/helper-create-class-features-plugin": "^7.21.0",
 				"@babel/helper-plugin-utils": "^7.20.2",
 				"@babel/plugin-syntax-typescript": "^7.20.0"
 			},
@@ -609,33 +640,33 @@
 			}
 		},
 		"node_modules/@babel/template": {
-			"version": "7.18.10",
-			"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz",
-			"integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==",
+			"version": "7.20.7",
+			"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz",
+			"integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==",
 			"dev": true,
 			"dependencies": {
 				"@babel/code-frame": "^7.18.6",
-				"@babel/parser": "^7.18.10",
-				"@babel/types": "^7.18.10"
+				"@babel/parser": "^7.20.7",
+				"@babel/types": "^7.20.7"
 			},
 			"engines": {
 				"node": ">=6.9.0"
 			}
 		},
 		"node_modules/@babel/traverse": {
-			"version": "7.20.5",
-			"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz",
-			"integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==",
+			"version": "7.21.2",
+			"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.2.tgz",
+			"integrity": "sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==",
 			"dev": true,
 			"dependencies": {
 				"@babel/code-frame": "^7.18.6",
-				"@babel/generator": "^7.20.5",
+				"@babel/generator": "^7.21.1",
 				"@babel/helper-environment-visitor": "^7.18.9",
-				"@babel/helper-function-name": "^7.19.0",
+				"@babel/helper-function-name": "^7.21.0",
 				"@babel/helper-hoist-variables": "^7.18.6",
 				"@babel/helper-split-export-declaration": "^7.18.6",
-				"@babel/parser": "^7.20.5",
-				"@babel/types": "^7.20.5",
+				"@babel/parser": "^7.21.2",
+				"@babel/types": "^7.21.2",
 				"debug": "^4.1.0",
 				"globals": "^11.1.0"
 			},
@@ -653,9 +684,9 @@
 			}
 		},
 		"node_modules/@babel/types": {
-			"version": "7.20.5",
-			"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz",
-			"integrity": "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==",
+			"version": "7.21.2",
+			"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.2.tgz",
+			"integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==",
 			"dev": true,
 			"dependencies": {
 				"@babel/helper-string-parser": "^7.19.4",
@@ -682,32 +713,40 @@
 				"node": ">=0.1.90"
 			}
 		},
-		"node_modules/@cspotcode/source-map-support": {
-			"version": "0.8.1",
-			"resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
-			"integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
+		"node_modules/@esbuild-kit/cjs-loader": {
+			"version": "2.4.2",
+			"resolved": "https://registry.npmjs.org/@esbuild-kit/cjs-loader/-/cjs-loader-2.4.2.tgz",
+			"integrity": "sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==",
 			"dev": true,
 			"dependencies": {
-				"@jridgewell/trace-mapping": "0.3.9"
-			},
-			"engines": {
-				"node": ">=12"
+				"@esbuild-kit/core-utils": "^3.0.0",
+				"get-tsconfig": "^4.4.0"
 			}
 		},
-		"node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": {
-			"version": "0.3.9",
-			"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
-			"integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
+		"node_modules/@esbuild-kit/core-utils": {
+			"version": "3.1.0",
+			"resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.1.0.tgz",
+			"integrity": "sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==",
 			"dev": true,
 			"dependencies": {
-				"@jridgewell/resolve-uri": "^3.0.3",
-				"@jridgewell/sourcemap-codec": "^1.4.10"
+				"esbuild": "~0.17.6",
+				"source-map-support": "^0.5.21"
+			}
+		},
+		"node_modules/@esbuild-kit/esm-loader": {
+			"version": "2.5.5",
+			"resolved": "https://registry.npmjs.org/@esbuild-kit/esm-loader/-/esm-loader-2.5.5.tgz",
+			"integrity": "sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==",
+			"dev": true,
+			"dependencies": {
+				"@esbuild-kit/core-utils": "^3.0.0",
+				"get-tsconfig": "^4.4.0"
 			}
 		},
 		"node_modules/@esbuild/android-arm": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.12.tgz",
-			"integrity": "sha512-CTWgMJtpCyCltrvipZrrcjjRu+rzm6pf9V8muCsJqtKujR3kPmU4ffbckvugNNaRmhxAF1ZI3J+0FUIFLFg8KA==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.10.tgz",
+			"integrity": "sha512-7YEBfZ5lSem9Tqpsz+tjbdsEshlO9j/REJrfv4DXgKTt1+/MHqGwbtlyxQuaSlMeUZLxUKBaX8wdzlTfHkmnLw==",
 			"cpu": [
 				"arm"
 			],
@@ -721,9 +760,9 @@
 			}
 		},
 		"node_modules/@esbuild/android-arm64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.12.tgz",
-			"integrity": "sha512-0LacmiIW+X0/LOLMZqYtZ7d4uY9fxYABAYhSSOu+OGQVBqH4N5eIYgkT7bBFnR4Nm3qo6qS3RpHKVrDASqj/uQ==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.10.tgz",
+			"integrity": "sha512-ht1P9CmvrPF5yKDtyC+z43RczVs4rrHpRqrmIuoSvSdn44Fs1n6DGlpZKdK6rM83pFLbVaSUwle8IN+TPmkv7g==",
 			"cpu": [
 				"arm64"
 			],
@@ -737,9 +776,9 @@
 			}
 		},
 		"node_modules/@esbuild/android-x64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.12.tgz",
-			"integrity": "sha512-sS5CR3XBKQXYpSGMM28VuiUnbX83Z+aWPZzClW+OB2JquKqxoiwdqucJ5qvXS8pM6Up3RtJfDnRQZkz3en2z5g==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.10.tgz",
+			"integrity": "sha512-CYzrm+hTiY5QICji64aJ/xKdN70IK8XZ6iiyq0tZkd3tfnwwSWTYH1t3m6zyaaBxkuj40kxgMyj1km/NqdjQZA==",
 			"cpu": [
 				"x64"
 			],
@@ -753,9 +792,9 @@
 			}
 		},
 		"node_modules/@esbuild/darwin-arm64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.12.tgz",
-			"integrity": "sha512-Dpe5hOAQiQRH20YkFAg+wOpcd4PEuXud+aGgKBQa/VriPJA8zuVlgCOSTwna1CgYl05lf6o5els4dtuyk1qJxQ==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.10.tgz",
+			"integrity": "sha512-3HaGIowI+nMZlopqyW6+jxYr01KvNaLB5znXfbyyjuo4lE0VZfvFGcguIJapQeQMS4cX/NEispwOekJt3gr5Dg==",
 			"cpu": [
 				"arm64"
 			],
@@ -769,9 +808,9 @@
 			}
 		},
 		"node_modules/@esbuild/darwin-x64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.12.tgz",
-			"integrity": "sha512-ApGRA6X5txIcxV0095X4e4KKv87HAEXfuDRcGTniDWUUN+qPia8sl/BqG/0IomytQWajnUn4C7TOwHduk/FXBQ==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.10.tgz",
+			"integrity": "sha512-J4MJzGchuCRG5n+B4EHpAMoJmBeAE1L3wGYDIN5oWNqX0tEr7VKOzw0ymSwpoeSpdCa030lagGUfnfhS7OvzrQ==",
 			"cpu": [
 				"x64"
 			],
@@ -785,9 +824,9 @@
 			}
 		},
 		"node_modules/@esbuild/freebsd-arm64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.12.tgz",
-			"integrity": "sha512-AMdK2gA9EU83ccXCWS1B/KcWYZCj4P3vDofZZkl/F/sBv/fphi2oUqUTox/g5GMcIxk8CF1CVYTC82+iBSyiUg==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.10.tgz",
+			"integrity": "sha512-ZkX40Z7qCbugeK4U5/gbzna/UQkM9d9LNV+Fro8r7HA7sRof5Rwxc46SsqeMvB5ZaR0b1/ITQ/8Y1NmV2F0fXQ==",
 			"cpu": [
 				"arm64"
 			],
@@ -801,9 +840,9 @@
 			}
 		},
 		"node_modules/@esbuild/freebsd-x64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.12.tgz",
-			"integrity": "sha512-KUKB9w8G/xaAbD39t6gnRBuhQ8vIYYlxGT2I+mT6UGRnCGRr1+ePFIGBQmf5V16nxylgUuuWVW1zU2ktKkf6WQ==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.10.tgz",
+			"integrity": "sha512-0m0YX1IWSLG9hWh7tZa3kdAugFbZFFx9XrvfpaCMMvrswSTvUZypp0NFKriUurHpBA3xsHVE9Qb/0u2Bbi/otg==",
 			"cpu": [
 				"x64"
 			],
@@ -817,9 +856,9 @@
 			}
 		},
 		"node_modules/@esbuild/linux-arm": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.12.tgz",
-			"integrity": "sha512-vhDdIv6z4eL0FJyNVfdr3C/vdd/Wc6h1683GJsFoJzfKb92dU/v88FhWdigg0i6+3TsbSDeWbsPUXb4dif2abg==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.10.tgz",
+			"integrity": "sha512-whRdrrl0X+9D6o5f0sTZtDM9s86Xt4wk1bf7ltx6iQqrIIOH+sre1yjpcCdrVXntQPCNw/G+XqsD4HuxeS+2QA==",
 			"cpu": [
 				"arm"
 			],
@@ -833,9 +872,9 @@
 			}
 		},
 		"node_modules/@esbuild/linux-arm64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.12.tgz",
-			"integrity": "sha512-29HXMLpLklDfmw7T2buGqq3HImSUaZ1ArmrPOMaNiZZQptOSZs32SQtOHEl8xWX5vfdwZqrBfNf8Te4nArVzKQ==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.10.tgz",
+			"integrity": "sha512-g1EZJR1/c+MmCgVwpdZdKi4QAJ8DCLP5uTgLWSAVd9wlqk9GMscaNMEViG3aE1wS+cNMzXXgdWiW/VX4J+5nTA==",
 			"cpu": [
 				"arm64"
 			],
@@ -849,9 +888,9 @@
 			}
 		},
 		"node_modules/@esbuild/linux-ia32": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.12.tgz",
-			"integrity": "sha512-JFDuNDTTfgD1LJg7wHA42o2uAO/9VzHYK0leAVnCQE/FdMB599YMH73ux+nS0xGr79pv/BK+hrmdRin3iLgQjg==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.10.tgz",
+			"integrity": "sha512-1vKYCjfv/bEwxngHERp7huYfJ4jJzldfxyfaF7hc3216xiDA62xbXJfRlradiMhGZbdNLj2WA1YwYFzs9IWNPw==",
 			"cpu": [
 				"ia32"
 			],
@@ -865,9 +904,9 @@
 			}
 		},
 		"node_modules/@esbuild/linux-loong64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.12.tgz",
-			"integrity": "sha512-xTGzVPqm6WKfCC0iuj1fryIWr1NWEM8DMhAIo+4rFgUtwy/lfHl+Obvus4oddzRDbBetLLmojfVZGmt/g/g+Rw==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.10.tgz",
+			"integrity": "sha512-mvwAr75q3Fgc/qz3K6sya3gBmJIYZCgcJ0s7XshpoqIAIBszzfXsqhpRrRdVFAyV1G9VUjj7VopL2HnAS8aHFA==",
 			"cpu": [
 				"loong64"
 			],
@@ -881,9 +920,9 @@
 			}
 		},
 		"node_modules/@esbuild/linux-mips64el": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.12.tgz",
-			"integrity": "sha512-zI1cNgHa3Gol+vPYjIYHzKhU6qMyOQrvZ82REr5Fv7rlh5PG6SkkuCoH7IryPqR+BK2c/7oISGsvPJPGnO2bHQ==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.10.tgz",
+			"integrity": "sha512-XilKPgM2u1zR1YuvCsFQWl9Fc35BqSqktooumOY2zj7CSn5czJn279j9TE1JEqSqz88izJo7yE4x3LSf7oxHzg==",
 			"cpu": [
 				"mips64el"
 			],
@@ -897,9 +936,9 @@
 			}
 		},
 		"node_modules/@esbuild/linux-ppc64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.12.tgz",
-			"integrity": "sha512-/C8OFXExoMmvTDIOAM54AhtmmuDHKoedUd0Otpfw3+AuuVGemA1nQK99oN909uZbLEU6Bi+7JheFMG3xGfZluQ==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.10.tgz",
+			"integrity": "sha512-kM4Rmh9l670SwjlGkIe7pYWezk8uxKHX4Lnn5jBZYBNlWpKMBCVfpAgAJqp5doLobhzF3l64VZVrmGeZ8+uKmQ==",
 			"cpu": [
 				"ppc64"
 			],
@@ -913,9 +952,9 @@
 			}
 		},
 		"node_modules/@esbuild/linux-riscv64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.12.tgz",
-			"integrity": "sha512-qeouyyc8kAGV6Ni6Isz8hUsKMr00EHgVwUKWNp1r4l88fHEoNTDB8mmestvykW6MrstoGI7g2EAsgr0nxmuGYg==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.10.tgz",
+			"integrity": "sha512-r1m9ZMNJBtOvYYGQVXKy+WvWd0BPvSxMsVq8Hp4GzdMBQvfZRvRr5TtX/1RdN6Va8JMVQGpxqde3O+e8+khNJQ==",
 			"cpu": [
 				"riscv64"
 			],
@@ -929,9 +968,9 @@
 			}
 		},
 		"node_modules/@esbuild/linux-s390x": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.12.tgz",
-			"integrity": "sha512-s9AyI/5vz1U4NNqnacEGFElqwnHusWa81pskAf8JNDM2eb6b2E6PpBmT8RzeZv6/TxE6/TADn2g9bb0jOUmXwQ==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.10.tgz",
+			"integrity": "sha512-LsY7QvOLPw9WRJ+fU5pNB3qrSfA00u32ND5JVDrn/xG5hIQo3kvTxSlWFRP0NJ0+n6HmhPGG0Q4jtQsb6PFoyg==",
 			"cpu": [
 				"s390x"
 			],
@@ -945,9 +984,9 @@
 			}
 		},
 		"node_modules/@esbuild/linux-x64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.12.tgz",
-			"integrity": "sha512-e8YA7GQGLWhvakBecLptUiKxOk4E/EPtSckS1i0MGYctW8ouvNUoh7xnU15PGO2jz7BYl8q1R6g0gE5HFtzpqQ==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.10.tgz",
+			"integrity": "sha512-zJUfJLebCYzBdIz/Z9vqwFjIA7iSlLCFvVi7glMgnu2MK7XYigwsonXshy9wP9S7szF+nmwrelNaP3WGanstEg==",
 			"cpu": [
 				"x64"
 			],
@@ -961,9 +1000,9 @@
 			}
 		},
 		"node_modules/@esbuild/netbsd-x64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.12.tgz",
-			"integrity": "sha512-z2+kUxmOqBS+6SRVd57iOLIHE8oGOoEnGVAmwjm2aENSP35HPS+5cK+FL1l+rhrsJOFIPrNHqDUNechpuG96Sg==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.10.tgz",
+			"integrity": "sha512-lOMkailn4Ok9Vbp/q7uJfgicpDTbZFlXlnKT2DqC8uBijmm5oGtXAJy2ZZVo5hX7IOVXikV9LpCMj2U8cTguWA==",
 			"cpu": [
 				"x64"
 			],
@@ -977,9 +1016,9 @@
 			}
 		},
 		"node_modules/@esbuild/openbsd-x64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.12.tgz",
-			"integrity": "sha512-PAonw4LqIybwn2/vJujhbg1N9W2W8lw9RtXIvvZoyzoA/4rA4CpiuahVbASmQohiytRsixbNoIOUSjRygKXpyA==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.10.tgz",
+			"integrity": "sha512-/VE0Kx6y7eekqZ+ZLU4AjMlB80ov9tEz4H067Y0STwnGOYL8CsNg4J+cCmBznk1tMpxMoUOf0AbWlb1d2Pkbig==",
 			"cpu": [
 				"x64"
 			],
@@ -993,9 +1032,9 @@
 			}
 		},
 		"node_modules/@esbuild/sunos-x64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.12.tgz",
-			"integrity": "sha512-+wr1tkt1RERi+Zi/iQtkzmMH4nS8+7UIRxjcyRz7lur84wCkAITT50Olq/HiT4JN2X2bjtlOV6vt7ptW5Gw60Q==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.10.tgz",
+			"integrity": "sha512-ERNO0838OUm8HfUjjsEs71cLjLMu/xt6bhOlxcJ0/1MG3hNqCmbWaS+w/8nFLa0DDjbwZQuGKVtCUJliLmbVgg==",
 			"cpu": [
 				"x64"
 			],
@@ -1009,9 +1048,9 @@
 			}
 		},
 		"node_modules/@esbuild/win32-arm64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.12.tgz",
-			"integrity": "sha512-XEjeUSHmjsAOJk8+pXJu9pFY2O5KKQbHXZWQylJzQuIBeiGrpMeq9sTVrHefHxMOyxUgoKQTcaTS+VK/K5SviA==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.10.tgz",
+			"integrity": "sha512-fXv+L+Bw2AeK+XJHwDAQ9m3NRlNemG6Z6ijLwJAAVdu4cyoFbBWbEtyZzDeL+rpG2lWI51cXeMt70HA8g2MqIg==",
 			"cpu": [
 				"arm64"
 			],
@@ -1025,9 +1064,9 @@
 			}
 		},
 		"node_modules/@esbuild/win32-ia32": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.12.tgz",
-			"integrity": "sha512-eRKPM7e0IecUAUYr2alW7JGDejrFJXmpjt4MlfonmQ5Rz9HWpKFGCjuuIRgKO7W9C/CWVFXdJ2GjddsBXqQI4A==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.10.tgz",
+			"integrity": "sha512-3s+HADrOdCdGOi5lnh5DMQEzgbsFsd4w57L/eLKKjMnN0CN4AIEP0DCP3F3N14xnxh3ruNc32A0Na9zYe1Z/AQ==",
 			"cpu": [
 				"ia32"
 			],
@@ -1041,9 +1080,9 @@
 			}
 		},
 		"node_modules/@esbuild/win32-x64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.12.tgz",
-			"integrity": "sha512-iPYKN78t3op2+erv2frW568j1q0RpqX6JOLZ7oPPaAV1VaF7dDstOrNw37PVOYoTWE11pV4A1XUitpdEFNIsPg==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.10.tgz",
+			"integrity": "sha512-oP+zFUjYNaMNmjTwlFtWep85hvwUu19cZklB3QsBOcZSs6y7hmH4LNCJ7075bsqzYaNvZFXJlAVaQ2ApITDXtw==",
 			"cpu": [
 				"x64"
 			],
@@ -1188,13 +1227,13 @@
 			"dev": true
 		},
 		"node_modules/@jridgewell/trace-mapping": {
-			"version": "0.3.15",
-			"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz",
-			"integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==",
+			"version": "0.3.17",
+			"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
+			"integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
 			"dev": true,
 			"dependencies": {
-				"@jridgewell/resolve-uri": "^3.0.3",
-				"@jridgewell/sourcemap-codec": "^1.4.10"
+				"@jridgewell/resolve-uri": "3.1.0",
+				"@jridgewell/sourcemap-codec": "1.4.14"
 			}
 		},
 		"node_modules/@jscpd/badge-reporter": {
@@ -1299,9 +1338,9 @@
 			}
 		},
 		"node_modules/@noble/ed25519": {
-			"version": "1.7.1",
-			"resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.1.tgz",
-			"integrity": "sha512-Rk4SkJFaXZiznFyC/t77Q0NKS4FL7TLJJsVG2V2oiEq3kJVeTdxysEe/yRWSpnWMe808XRDJ+VFh5pt/FN5plw==",
+			"version": "1.7.3",
+			"resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.3.tgz",
+			"integrity": "sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==",
 			"funding": [
 				{
 					"type": "individual",
@@ -1344,30 +1383,6 @@
 				"node": ">= 8"
 			}
 		},
-		"node_modules/@tsconfig/node10": {
-			"version": "1.0.9",
-			"resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
-			"integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==",
-			"dev": true
-		},
-		"node_modules/@tsconfig/node12": {
-			"version": "1.0.11",
-			"resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
-			"integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
-			"dev": true
-		},
-		"node_modules/@tsconfig/node14": {
-			"version": "1.0.3",
-			"resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
-			"integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
-			"dev": true
-		},
-		"node_modules/@tsconfig/node16": {
-			"version": "1.0.3",
-			"resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz",
-			"integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==",
-			"dev": true
-		},
 		"node_modules/@types/eslint": {
 			"version": "7.29.0",
 			"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz",
@@ -1955,12 +1970,6 @@
 				"node": ">= 8"
 			}
 		},
-		"node_modules/arg": {
-			"version": "4.1.3",
-			"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
-			"integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
-			"dev": true
-		},
 		"node_modules/argparse": {
 			"version": "2.0.1",
 			"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
@@ -2250,20 +2259,20 @@
 			}
 		},
 		"node_modules/browser-ava": {
-			"version": "1.3.22",
-			"resolved": "https://registry.npmjs.org/browser-ava/-/browser-ava-1.3.22.tgz",
-			"integrity": "sha512-7UDfansTCp1qgOxzoXDNQlWGgp1Qw4SVsAuP2SUnrzsVysbC8eJpXbJljBqGbB6PS58irpcnApGTlOgs4sX3jg==",
+			"version": "1.3.25",
+			"resolved": "https://registry.npmjs.org/browser-ava/-/browser-ava-1.3.25.tgz",
+			"integrity": "sha512-yFtKjsNJlNjGV+nJUFEGOMJHeDKZEQw+ZXoJGHMdF0itrIAA45cw421cedSaRN5DdTe+tuEZB3TTJcbq35Sqhw==",
 			"dev": true,
 			"dependencies": {
 				"@koa/cors": "^4.0.0",
 				"chalk": "^5.2.0",
 				"commander": "^10.0.0",
-				"es-module-lexer": "^1.0.5",
+				"es-module-lexer": "^1.2.0",
 				"globby": "^13.1.3",
 				"koa": "^2.14.1",
 				"koa-static": "^5.0.0",
-				"playwright": "^1.29.2",
-				"ws": "^8.12.0"
+				"playwright": "^1.31.1",
+				"ws": "^8.12.1"
 			},
 			"bin": {
 				"browser-ava": "src/browser-ava-cli.mjs"
@@ -2282,9 +2291,9 @@
 			}
 		},
 		"node_modules/browser-ava/node_modules/es-module-lexer": {
-			"version": "1.1.0",
-			"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.1.0.tgz",
-			"integrity": "sha512-fJg+1tiyEeS8figV+fPcPpm8WqJEflG3yPU0NOm5xMvrNkuiy7HzX/Ljng4Y0hAoiw4/3hQTCFYw+ub8+a2pRA==",
+			"version": "1.2.0",
+			"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.0.tgz",
+			"integrity": "sha512-2BMfqBDeVCcOlLaL1ZAfp+D868SczNpKArrTM3dhpd7dK/OVlogzY15qpUngt+LMTq5UC/csb9vVQAgupucSbA==",
 			"dev": true
 		},
 		"node_modules/browserslist": {
@@ -2328,8 +2337,7 @@
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
 			"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
-			"dev": true,
-			"peer": true
+			"dev": true
 		},
 		"node_modules/builtin-modules": {
 			"version": "3.3.0",
@@ -2353,9 +2361,9 @@
 			}
 		},
 		"node_modules/c8": {
-			"version": "7.12.0",
-			"resolved": "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz",
-			"integrity": "sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==",
+			"version": "7.13.0",
+			"resolved": "https://registry.npmjs.org/c8/-/c8-7.13.0.tgz",
+			"integrity": "sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA==",
 			"dev": true,
 			"dependencies": {
 				"@bcoe/v8-coverage": "^0.2.3",
@@ -3117,13 +3125,13 @@
 			}
 		},
 		"node_modules/codehawk-cli": {
-			"version": "10.0.1",
-			"resolved": "https://registry.npmjs.org/codehawk-cli/-/codehawk-cli-10.0.1.tgz",
-			"integrity": "sha512-L8c0gkA1CwJEILFg4SL4t1xOhhvCc+pZtrlaJoBA427kjZZPwepx9E9jWxiz2E5K+5GZZ9VhoAchfClIBHZVEg==",
+			"version": "10.1.0",
+			"resolved": "https://registry.npmjs.org/codehawk-cli/-/codehawk-cli-10.1.0.tgz",
+			"integrity": "sha512-fCzj5Rm0Cbw6IeyaQ3NS1J3kMrO1mM3v6x7zmgXVmL4CI29YM7KdhUGwWXDRUEqA08V9xCg8TS8uOxSC/NjxSg==",
 			"dev": true,
 			"dependencies": {
-				"@babel/core": "^7.18.6",
-				"@babel/plugin-transform-typescript": "^7.18.6",
+				"@babel/core": "^7.20.12",
+				"@babel/plugin-transform-typescript": "^7.20.7",
 				"badgen": "^3.2.2",
 				"flow-remove-types": "^2.111.3",
 				"is-dotdir": "^1.0.1",
@@ -3517,12 +3525,6 @@
 				"node": ">=10"
 			}
 		},
-		"node_modules/create-require": {
-			"version": "1.1.1",
-			"resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
-			"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
-			"dev": true
-		},
 		"node_modules/cross-fetch": {
 			"version": "3.1.5",
 			"resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
@@ -3749,15 +3751,6 @@
 				"npm": "1.2.8000 || >= 1.4.16"
 			}
 		},
-		"node_modules/diff": {
-			"version": "4.0.2",
-			"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
-			"integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
-			"dev": true,
-			"engines": {
-				"node": ">=0.3.1"
-			}
-		},
 		"node_modules/dir-glob": {
 			"version": "3.0.1",
 			"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
@@ -4534,9 +4527,9 @@
 			}
 		},
 		"node_modules/esbuild": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.12.tgz",
-			"integrity": "sha512-eq5KcuXajf2OmivCl4e89AD3j8fbV+UTE9vczEzq5haA07U9oOTzBWlh3+6ZdjJR7Rz2QfWZ2uxZyhZxBgJ4+g==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.10.tgz",
+			"integrity": "sha512-n7V3v29IuZy5qgxx25TKJrEm0FHghAlS6QweUcyIgh/U0zYmQcvogWROitrTyZId1mHSkuhhuyEXtI9OXioq7A==",
 			"dev": true,
 			"hasInstallScript": true,
 			"bin": {
@@ -4546,28 +4539,28 @@
 				"node": ">=12"
 			},
 			"optionalDependencies": {
-				"@esbuild/android-arm": "0.16.12",
-				"@esbuild/android-arm64": "0.16.12",
-				"@esbuild/android-x64": "0.16.12",
-				"@esbuild/darwin-arm64": "0.16.12",
-				"@esbuild/darwin-x64": "0.16.12",
-				"@esbuild/freebsd-arm64": "0.16.12",
-				"@esbuild/freebsd-x64": "0.16.12",
-				"@esbuild/linux-arm": "0.16.12",
-				"@esbuild/linux-arm64": "0.16.12",
-				"@esbuild/linux-ia32": "0.16.12",
-				"@esbuild/linux-loong64": "0.16.12",
-				"@esbuild/linux-mips64el": "0.16.12",
-				"@esbuild/linux-ppc64": "0.16.12",
-				"@esbuild/linux-riscv64": "0.16.12",
-				"@esbuild/linux-s390x": "0.16.12",
-				"@esbuild/linux-x64": "0.16.12",
-				"@esbuild/netbsd-x64": "0.16.12",
-				"@esbuild/openbsd-x64": "0.16.12",
-				"@esbuild/sunos-x64": "0.16.12",
-				"@esbuild/win32-arm64": "0.16.12",
-				"@esbuild/win32-ia32": "0.16.12",
-				"@esbuild/win32-x64": "0.16.12"
+				"@esbuild/android-arm": "0.17.10",
+				"@esbuild/android-arm64": "0.17.10",
+				"@esbuild/android-x64": "0.17.10",
+				"@esbuild/darwin-arm64": "0.17.10",
+				"@esbuild/darwin-x64": "0.17.10",
+				"@esbuild/freebsd-arm64": "0.17.10",
+				"@esbuild/freebsd-x64": "0.17.10",
+				"@esbuild/linux-arm": "0.17.10",
+				"@esbuild/linux-arm64": "0.17.10",
+				"@esbuild/linux-ia32": "0.17.10",
+				"@esbuild/linux-loong64": "0.17.10",
+				"@esbuild/linux-mips64el": "0.17.10",
+				"@esbuild/linux-ppc64": "0.17.10",
+				"@esbuild/linux-riscv64": "0.17.10",
+				"@esbuild/linux-s390x": "0.17.10",
+				"@esbuild/linux-x64": "0.17.10",
+				"@esbuild/netbsd-x64": "0.17.10",
+				"@esbuild/openbsd-x64": "0.17.10",
+				"@esbuild/sunos-x64": "0.17.10",
+				"@esbuild/win32-arm64": "0.17.10",
+				"@esbuild/win32-ia32": "0.17.10",
+				"@esbuild/win32-x64": "0.17.10"
 			}
 		},
 		"node_modules/escalade": {
@@ -4947,9 +4940,9 @@
 			}
 		},
 		"node_modules/eslint-plugin-ava": {
-			"version": "13.2.0",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-ava/-/eslint-plugin-ava-13.2.0.tgz",
-			"integrity": "sha512-i5B5izsEdERKQLruk1nIWzTTE7C26/ju8qQf7JeyRv32XT2lRMW0zMFZNhIrEf5/5VvpSz2rqrV7UcjClGbKsw==",
+			"version": "14.0.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-ava/-/eslint-plugin-ava-14.0.0.tgz",
+			"integrity": "sha512-XmKT6hppaipwwnLVwwvQliSU6AF1QMHiNoLD5JQfzhUhf0jY7CO0O624fQrE+Y/fTb9vbW8r77nKf7M/oHulxw==",
 			"dev": true,
 			"dependencies": {
 				"enhance-visitors": "^1.0.0",
@@ -4962,10 +4955,10 @@
 				"resolve-from": "^5.0.0"
 			},
 			"engines": {
-				"node": ">=12.22 <13 || >=14.17 <15 || >=16.4"
+				"node": ">=14.17 <15 || >=16.4"
 			},
 			"peerDependencies": {
-				"eslint": ">=7.22.0"
+				"eslint": ">=8.26.0"
 			}
 		},
 		"node_modules/eslint-plugin-es": {
@@ -5986,6 +5979,15 @@
 				"url": "https://github.com/sponsors/ljharb"
 			}
 		},
+		"node_modules/get-tsconfig": {
+			"version": "4.4.0",
+			"resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.4.0.tgz",
+			"integrity": "sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ==",
+			"dev": true,
+			"funding": {
+				"url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
+			}
+		},
 		"node_modules/gitignore-to-glob": {
 			"version": "0.3.0",
 			"resolved": "https://registry.npmjs.org/gitignore-to-glob/-/gitignore-to-glob-0.3.0.tgz",
@@ -7376,9 +7378,9 @@
 			}
 		},
 		"node_modules/latinize-to-ascii": {
-			"version": "0.5.2",
-			"resolved": "https://registry.npmjs.org/latinize-to-ascii/-/latinize-to-ascii-0.5.2.tgz",
-			"integrity": "sha512-UuNPxcWKxXtxFOgBJG4/u68PLOW+Hab8wSOU6BW4BMos+mZNQ9/z7LdVZz0kQWpmvm0RKyysGHTK9SRbIX7eeA=="
+			"version": "0.5.3",
+			"resolved": "https://registry.npmjs.org/latinize-to-ascii/-/latinize-to-ascii-0.5.3.tgz",
+			"integrity": "sha512-kbookFW78ffs382xKdDAZ2WqrqE13Vivt7U8FUrcWxY5FOhD9LaKrD9zOj+iv/K7aTfD7cyOuiCa2A7el1/wkA=="
 		},
 		"node_modules/levn": {
 			"version": "0.4.1",
@@ -7627,12 +7629,6 @@
 				"semver": "bin/semver.js"
 			}
 		},
-		"node_modules/make-error": {
-			"version": "1.3.6",
-			"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
-			"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
-			"dev": true
-		},
 		"node_modules/map-age-cleaner": {
 			"version": "0.1.3",
 			"resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
@@ -7967,15 +7963,18 @@
 			}
 		},
 		"node_modules/mkdirp": {
-			"version": "1.0.4",
-			"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
-			"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+			"version": "2.1.3",
+			"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.3.tgz",
+			"integrity": "sha512-sjAkg21peAG9HS+Dkx7hlG9Ztx7HLeKnvB3NQRcu/mltCVmvkF0pisbiTSfDVYTT86XEfZrTUosLdZLStquZUw==",
 			"dev": true,
 			"bin": {
-				"mkdirp": "bin/cmd.js"
+				"mkdirp": "dist/cjs/src/bin.js"
 			},
 			"engines": {
 				"node": ">=10"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/isaacs"
 			}
 		},
 		"node_modules/ms": {
@@ -8868,13 +8867,13 @@
 			}
 		},
 		"node_modules/playwright": {
-			"version": "1.30.0",
-			"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.30.0.tgz",
-			"integrity": "sha512-ENbW5o75HYB3YhnMTKJLTErIBExrSlX2ZZ1C/FzmHjUYIfxj/UnI+DWpQr992m+OQVSg0rCExAOlRwB+x+yyIg==",
+			"version": "1.31.1",
+			"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.31.1.tgz",
+			"integrity": "sha512-zKJabsIA2rvOwJ12lGTqWv4HVJzlfw2JtUvO4hAr7J8UXQZ1qEPpX20E1vcz/9fotnTkwgqp3CVdIBwptBN3Fg==",
 			"dev": true,
 			"hasInstallScript": true,
 			"dependencies": {
-				"playwright-core": "1.30.0"
+				"playwright-core": "1.31.1"
 			},
 			"bin": {
 				"playwright": "cli.js"
@@ -8884,9 +8883,9 @@
 			}
 		},
 		"node_modules/playwright-core": {
-			"version": "1.30.0",
-			"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.30.0.tgz",
-			"integrity": "sha512-7AnRmTCf+GVYhHbLJsGUtskWTE33SwMZkybJ0v6rqR1boxq2x36U7p1vDRV7HO2IwTZgmycracLxPEJI49wu4g==",
+			"version": "1.31.1",
+			"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.31.1.tgz",
+			"integrity": "sha512-JTyX4kV3/LXsvpHkLzL2I36aCdml4zeE35x+G5aPc4bkLsiRiQshU5lWeVpHFAuC8xAcbI6FDcw/8z3q2xtJSQ==",
 			"dev": true,
 			"bin": {
 				"playwright": "cli.js"
@@ -9664,9 +9663,9 @@
 			}
 		},
 		"node_modules/rollup": {
-			"version": "3.9.0",
-			"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.9.0.tgz",
-			"integrity": "sha512-nGGylpmblyjTpF4lEUPgmOw6OVxRvnI6Iuuh6Lz4O/X66cVOX1XJSsqP1YamxQ+mPuFE7qJxLFDSCk8rNv5dDw==",
+			"version": "3.17.3",
+			"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.17.3.tgz",
+			"integrity": "sha512-p5LaCXiiOL/wrOkj8djsIDFmyU9ysUxcyW+EKRLHb6TKldJzXpImjcRSR+vgo09DBdofGcOoLOsRyxxG2n5/qQ==",
 			"dev": true,
 			"bin": {
 				"rollup": "dist/bin/rollup"
@@ -9929,7 +9928,6 @@
 			"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
 			"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
 			"dev": true,
-			"peer": true,
 			"engines": {
 				"node": ">=0.10.0"
 			}
@@ -9939,7 +9937,6 @@
 			"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
 			"integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
 			"dev": true,
-			"peer": true,
 			"dependencies": {
 				"buffer-from": "^1.0.0",
 				"source-map": "^0.6.0"
@@ -10495,49 +10492,6 @@
 				"url": "https://github.com/sponsors/sindresorhus"
 			}
 		},
-		"node_modules/ts-node": {
-			"version": "10.9.1",
-			"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
-			"integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
-			"dev": true,
-			"dependencies": {
-				"@cspotcode/source-map-support": "^0.8.0",
-				"@tsconfig/node10": "^1.0.7",
-				"@tsconfig/node12": "^1.0.7",
-				"@tsconfig/node14": "^1.0.0",
-				"@tsconfig/node16": "^1.0.2",
-				"acorn": "^8.4.1",
-				"acorn-walk": "^8.1.1",
-				"arg": "^4.1.0",
-				"create-require": "^1.1.0",
-				"diff": "^4.0.1",
-				"make-error": "^1.1.1",
-				"v8-compile-cache-lib": "^3.0.1",
-				"yn": "3.1.1"
-			},
-			"bin": {
-				"ts-node": "dist/bin.js",
-				"ts-node-cwd": "dist/bin-cwd.js",
-				"ts-node-esm": "dist/bin-esm.js",
-				"ts-node-script": "dist/bin-script.js",
-				"ts-node-transpile-only": "dist/bin-transpile.js",
-				"ts-script": "dist/bin-script-deprecated.js"
-			},
-			"peerDependencies": {
-				"@swc/core": ">=1.2.50",
-				"@swc/wasm": ">=1.2.50",
-				"@types/node": "*",
-				"typescript": ">=2.7"
-			},
-			"peerDependenciesMeta": {
-				"@swc/core": {
-					"optional": true
-				},
-				"@swc/wasm": {
-					"optional": true
-				}
-			}
-		},
 		"node_modules/tsconfig-paths": {
 			"version": "3.14.1",
 			"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz",
@@ -10551,9 +10505,9 @@
 			}
 		},
 		"node_modules/tsconfig-paths/node_modules/json5": {
-			"version": "1.0.1",
-			"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
-			"integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+			"version": "1.0.2",
+			"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+			"integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
 			"dev": true,
 			"dependencies": {
 				"minimist": "^1.2.0"
@@ -10592,6 +10546,23 @@
 				"typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
 			}
 		},
+		"node_modules/tsx": {
+			"version": "3.12.3",
+			"resolved": "https://registry.npmjs.org/tsx/-/tsx-3.12.3.tgz",
+			"integrity": "sha512-Wc5BFH1xccYTXaQob+lEcimkcb/Pq+0en2s+ruiX0VEIC80nV7/0s7XRahx8NnsoCnpCVUPz8wrqVSPi760LkA==",
+			"dev": true,
+			"dependencies": {
+				"@esbuild-kit/cjs-loader": "^2.4.2",
+				"@esbuild-kit/core-utils": "^3.0.0",
+				"@esbuild-kit/esm-loader": "^2.5.5"
+			},
+			"bin": {
+				"tsx": "dist/cli.js"
+			},
+			"optionalDependencies": {
+				"fsevents": "~2.3.2"
+			}
+		},
 		"node_modules/tweetnacl": {
 			"version": "1.0.3",
 			"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz",
@@ -10815,12 +10786,6 @@
 			"integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
 			"dev": true
 		},
-		"node_modules/v8-compile-cache-lib": {
-			"version": "3.0.1",
-			"resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
-			"integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
-			"dev": true
-		},
 		"node_modules/v8-to-istanbul": {
 			"version": "9.0.1",
 			"resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz",
@@ -12052,15 +12017,6 @@
 				"node": ">= 4.0.0"
 			}
 		},
-		"node_modules/yn": {
-			"version": "3.1.1",
-			"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
-			"integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
-			"dev": true,
-			"engines": {
-				"node": ">=6"
-			}
-		},
 		"node_modules/yocto-queue": {
 			"version": "0.1.0",
 			"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
@@ -12154,31 +12110,31 @@
 			}
 		},
 		"@babel/compat-data": {
-			"version": "7.20.5",
-			"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz",
-			"integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==",
+			"version": "7.21.0",
+			"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz",
+			"integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==",
 			"dev": true
 		},
 		"@babel/core": {
-			"version": "7.20.5",
-			"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.5.tgz",
-			"integrity": "sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==",
+			"version": "7.21.0",
+			"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz",
+			"integrity": "sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==",
 			"dev": true,
 			"requires": {
-				"@ampproject/remapping": "^2.1.0",
+				"@ampproject/remapping": "^2.2.0",
 				"@babel/code-frame": "^7.18.6",
-				"@babel/generator": "^7.20.5",
-				"@babel/helper-compilation-targets": "^7.20.0",
-				"@babel/helper-module-transforms": "^7.20.2",
-				"@babel/helpers": "^7.20.5",
-				"@babel/parser": "^7.20.5",
-				"@babel/template": "^7.18.10",
-				"@babel/traverse": "^7.20.5",
-				"@babel/types": "^7.20.5",
+				"@babel/generator": "^7.21.0",
+				"@babel/helper-compilation-targets": "^7.20.7",
+				"@babel/helper-module-transforms": "^7.21.0",
+				"@babel/helpers": "^7.21.0",
+				"@babel/parser": "^7.21.0",
+				"@babel/template": "^7.20.7",
+				"@babel/traverse": "^7.21.0",
+				"@babel/types": "^7.21.0",
 				"convert-source-map": "^1.7.0",
 				"debug": "^4.1.0",
 				"gensync": "^1.0.0-beta.2",
-				"json5": "^2.2.1",
+				"json5": "^2.2.2",
 				"semver": "^6.3.0"
 			},
 			"dependencies": {
@@ -12216,13 +12172,14 @@
 			}
 		},
 		"@babel/generator": {
-			"version": "7.20.5",
-			"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz",
-			"integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==",
+			"version": "7.21.1",
+			"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz",
+			"integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==",
 			"dev": true,
 			"requires": {
-				"@babel/types": "^7.20.5",
+				"@babel/types": "^7.21.0",
 				"@jridgewell/gen-mapping": "^0.3.2",
+				"@jridgewell/trace-mapping": "^0.3.17",
 				"jsesc": "^2.5.1"
 			},
 			"dependencies": {
@@ -12244,37 +12201,54 @@
 			}
 		},
 		"@babel/helper-compilation-targets": {
-			"version": "7.20.0",
-			"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz",
-			"integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==",
+			"version": "7.20.7",
+			"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz",
+			"integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==",
 			"dev": true,
 			"requires": {
-				"@babel/compat-data": "^7.20.0",
+				"@babel/compat-data": "^7.20.5",
 				"@babel/helper-validator-option": "^7.18.6",
 				"browserslist": "^4.21.3",
+				"lru-cache": "^5.1.1",
 				"semver": "^6.3.0"
 			},
 			"dependencies": {
+				"lru-cache": {
+					"version": "5.1.1",
+					"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+					"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+					"dev": true,
+					"requires": {
+						"yallist": "^3.0.2"
+					}
+				},
 				"semver": {
 					"version": "6.3.0",
 					"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
 					"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
 					"dev": true
+				},
+				"yallist": {
+					"version": "3.1.1",
+					"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+					"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+					"dev": true
 				}
 			}
 		},
 		"@babel/helper-create-class-features-plugin": {
-			"version": "7.20.5",
-			"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.5.tgz",
-			"integrity": "sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww==",
+			"version": "7.21.0",
+			"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz",
+			"integrity": "sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==",
 			"dev": true,
 			"requires": {
 				"@babel/helper-annotate-as-pure": "^7.18.6",
 				"@babel/helper-environment-visitor": "^7.18.9",
-				"@babel/helper-function-name": "^7.19.0",
-				"@babel/helper-member-expression-to-functions": "^7.18.9",
+				"@babel/helper-function-name": "^7.21.0",
+				"@babel/helper-member-expression-to-functions": "^7.21.0",
 				"@babel/helper-optimise-call-expression": "^7.18.6",
-				"@babel/helper-replace-supers": "^7.19.1",
+				"@babel/helper-replace-supers": "^7.20.7",
+				"@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
 				"@babel/helper-split-export-declaration": "^7.18.6"
 			}
 		},
@@ -12285,13 +12259,13 @@
 			"dev": true
 		},
 		"@babel/helper-function-name": {
-			"version": "7.19.0",
-			"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz",
-			"integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==",
+			"version": "7.21.0",
+			"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz",
+			"integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==",
 			"dev": true,
 			"requires": {
-				"@babel/template": "^7.18.10",
-				"@babel/types": "^7.19.0"
+				"@babel/template": "^7.20.7",
+				"@babel/types": "^7.21.0"
 			}
 		},
 		"@babel/helper-hoist-variables": {
@@ -12304,12 +12278,12 @@
 			}
 		},
 		"@babel/helper-member-expression-to-functions": {
-			"version": "7.18.9",
-			"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz",
-			"integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==",
+			"version": "7.21.0",
+			"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz",
+			"integrity": "sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==",
 			"dev": true,
 			"requires": {
-				"@babel/types": "^7.18.9"
+				"@babel/types": "^7.21.0"
 			}
 		},
 		"@babel/helper-module-imports": {
@@ -12322,9 +12296,9 @@
 			}
 		},
 		"@babel/helper-module-transforms": {
-			"version": "7.20.2",
-			"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz",
-			"integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==",
+			"version": "7.21.2",
+			"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz",
+			"integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==",
 			"dev": true,
 			"requires": {
 				"@babel/helper-environment-visitor": "^7.18.9",
@@ -12332,9 +12306,9 @@
 				"@babel/helper-simple-access": "^7.20.2",
 				"@babel/helper-split-export-declaration": "^7.18.6",
 				"@babel/helper-validator-identifier": "^7.19.1",
-				"@babel/template": "^7.18.10",
-				"@babel/traverse": "^7.20.1",
-				"@babel/types": "^7.20.2"
+				"@babel/template": "^7.20.7",
+				"@babel/traverse": "^7.21.2",
+				"@babel/types": "^7.21.2"
 			}
 		},
 		"@babel/helper-optimise-call-expression": {
@@ -12353,16 +12327,17 @@
 			"dev": true
 		},
 		"@babel/helper-replace-supers": {
-			"version": "7.19.1",
-			"resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz",
-			"integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==",
+			"version": "7.20.7",
+			"resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz",
+			"integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==",
 			"dev": true,
 			"requires": {
 				"@babel/helper-environment-visitor": "^7.18.9",
-				"@babel/helper-member-expression-to-functions": "^7.18.9",
+				"@babel/helper-member-expression-to-functions": "^7.20.7",
 				"@babel/helper-optimise-call-expression": "^7.18.6",
-				"@babel/traverse": "^7.19.1",
-				"@babel/types": "^7.19.0"
+				"@babel/template": "^7.20.7",
+				"@babel/traverse": "^7.20.7",
+				"@babel/types": "^7.20.7"
 			}
 		},
 		"@babel/helper-simple-access": {
@@ -12374,6 +12349,15 @@
 				"@babel/types": "^7.20.2"
 			}
 		},
+		"@babel/helper-skip-transparent-expression-wrappers": {
+			"version": "7.20.0",
+			"resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz",
+			"integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==",
+			"dev": true,
+			"requires": {
+				"@babel/types": "^7.20.0"
+			}
+		},
 		"@babel/helper-split-export-declaration": {
 			"version": "7.18.6",
 			"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
@@ -12396,20 +12380,20 @@
 			"dev": true
 		},
 		"@babel/helper-validator-option": {
-			"version": "7.18.6",
-			"resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
-			"integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
+			"version": "7.21.0",
+			"resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz",
+			"integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==",
 			"dev": true
 		},
 		"@babel/helpers": {
-			"version": "7.20.6",
-			"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.6.tgz",
-			"integrity": "sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==",
+			"version": "7.21.0",
+			"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz",
+			"integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==",
 			"dev": true,
 			"requires": {
-				"@babel/template": "^7.18.10",
-				"@babel/traverse": "^7.20.5",
-				"@babel/types": "^7.20.5"
+				"@babel/template": "^7.20.7",
+				"@babel/traverse": "^7.21.0",
+				"@babel/types": "^7.21.0"
 			}
 		},
 		"@babel/highlight": {
@@ -12467,9 +12451,9 @@
 			}
 		},
 		"@babel/parser": {
-			"version": "7.20.5",
-			"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz",
-			"integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==",
+			"version": "7.21.2",
+			"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.2.tgz",
+			"integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==",
 			"dev": true
 		},
 		"@babel/plugin-syntax-typescript": {
@@ -12482,41 +12466,41 @@
 			}
 		},
 		"@babel/plugin-transform-typescript": {
-			"version": "7.20.2",
-			"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.2.tgz",
-			"integrity": "sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag==",
+			"version": "7.21.0",
+			"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.0.tgz",
+			"integrity": "sha512-xo///XTPp3mDzTtrqXoBlK9eiAYW3wv9JXglcn/u1bi60RW11dEUxIgA8cbnDhutS1zacjMRmAwxE0gMklLnZg==",
 			"dev": true,
 			"requires": {
-				"@babel/helper-create-class-features-plugin": "^7.20.2",
+				"@babel/helper-create-class-features-plugin": "^7.21.0",
 				"@babel/helper-plugin-utils": "^7.20.2",
 				"@babel/plugin-syntax-typescript": "^7.20.0"
 			}
 		},
 		"@babel/template": {
-			"version": "7.18.10",
-			"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz",
-			"integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==",
+			"version": "7.20.7",
+			"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz",
+			"integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==",
 			"dev": true,
 			"requires": {
 				"@babel/code-frame": "^7.18.6",
-				"@babel/parser": "^7.18.10",
-				"@babel/types": "^7.18.10"
+				"@babel/parser": "^7.20.7",
+				"@babel/types": "^7.20.7"
 			}
 		},
 		"@babel/traverse": {
-			"version": "7.20.5",
-			"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz",
-			"integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==",
+			"version": "7.21.2",
+			"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.2.tgz",
+			"integrity": "sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==",
 			"dev": true,
 			"requires": {
 				"@babel/code-frame": "^7.18.6",
-				"@babel/generator": "^7.20.5",
+				"@babel/generator": "^7.21.1",
 				"@babel/helper-environment-visitor": "^7.18.9",
-				"@babel/helper-function-name": "^7.19.0",
+				"@babel/helper-function-name": "^7.21.0",
 				"@babel/helper-hoist-variables": "^7.18.6",
 				"@babel/helper-split-export-declaration": "^7.18.6",
-				"@babel/parser": "^7.20.5",
-				"@babel/types": "^7.20.5",
+				"@babel/parser": "^7.21.2",
+				"@babel/types": "^7.21.2",
 				"debug": "^4.1.0",
 				"globals": "^11.1.0"
 			},
@@ -12530,9 +12514,9 @@
 			}
 		},
 		"@babel/types": {
-			"version": "7.20.5",
-			"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz",
-			"integrity": "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==",
+			"version": "7.21.2",
+			"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.2.tgz",
+			"integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==",
 			"dev": true,
 			"requires": {
 				"@babel/helper-string-parser": "^7.19.4",
@@ -12553,178 +12537,187 @@
 			"dev": true,
 			"optional": true
 		},
-		"@cspotcode/source-map-support": {
-			"version": "0.8.1",
-			"resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
-			"integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
+		"@esbuild-kit/cjs-loader": {
+			"version": "2.4.2",
+			"resolved": "https://registry.npmjs.org/@esbuild-kit/cjs-loader/-/cjs-loader-2.4.2.tgz",
+			"integrity": "sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==",
 			"dev": true,
 			"requires": {
-				"@jridgewell/trace-mapping": "0.3.9"
-			},
-			"dependencies": {
-				"@jridgewell/trace-mapping": {
-					"version": "0.3.9",
-					"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
-					"integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
-					"dev": true,
-					"requires": {
-						"@jridgewell/resolve-uri": "^3.0.3",
-						"@jridgewell/sourcemap-codec": "^1.4.10"
-					}
-				}
+				"@esbuild-kit/core-utils": "^3.0.0",
+				"get-tsconfig": "^4.4.0"
+			}
+		},
+		"@esbuild-kit/core-utils": {
+			"version": "3.1.0",
+			"resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.1.0.tgz",
+			"integrity": "sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==",
+			"dev": true,
+			"requires": {
+				"esbuild": "~0.17.6",
+				"source-map-support": "^0.5.21"
+			}
+		},
+		"@esbuild-kit/esm-loader": {
+			"version": "2.5.5",
+			"resolved": "https://registry.npmjs.org/@esbuild-kit/esm-loader/-/esm-loader-2.5.5.tgz",
+			"integrity": "sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==",
+			"dev": true,
+			"requires": {
+				"@esbuild-kit/core-utils": "^3.0.0",
+				"get-tsconfig": "^4.4.0"
 			}
 		},
 		"@esbuild/android-arm": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.12.tgz",
-			"integrity": "sha512-CTWgMJtpCyCltrvipZrrcjjRu+rzm6pf9V8muCsJqtKujR3kPmU4ffbckvugNNaRmhxAF1ZI3J+0FUIFLFg8KA==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.10.tgz",
+			"integrity": "sha512-7YEBfZ5lSem9Tqpsz+tjbdsEshlO9j/REJrfv4DXgKTt1+/MHqGwbtlyxQuaSlMeUZLxUKBaX8wdzlTfHkmnLw==",
 			"dev": true,
 			"optional": true
 		},
 		"@esbuild/android-arm64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.12.tgz",
-			"integrity": "sha512-0LacmiIW+X0/LOLMZqYtZ7d4uY9fxYABAYhSSOu+OGQVBqH4N5eIYgkT7bBFnR4Nm3qo6qS3RpHKVrDASqj/uQ==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.10.tgz",
+			"integrity": "sha512-ht1P9CmvrPF5yKDtyC+z43RczVs4rrHpRqrmIuoSvSdn44Fs1n6DGlpZKdK6rM83pFLbVaSUwle8IN+TPmkv7g==",
 			"dev": true,
 			"optional": true
 		},
 		"@esbuild/android-x64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.12.tgz",
-			"integrity": "sha512-sS5CR3XBKQXYpSGMM28VuiUnbX83Z+aWPZzClW+OB2JquKqxoiwdqucJ5qvXS8pM6Up3RtJfDnRQZkz3en2z5g==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.10.tgz",
+			"integrity": "sha512-CYzrm+hTiY5QICji64aJ/xKdN70IK8XZ6iiyq0tZkd3tfnwwSWTYH1t3m6zyaaBxkuj40kxgMyj1km/NqdjQZA==",
 			"dev": true,
 			"optional": true
 		},
 		"@esbuild/darwin-arm64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.12.tgz",
-			"integrity": "sha512-Dpe5hOAQiQRH20YkFAg+wOpcd4PEuXud+aGgKBQa/VriPJA8zuVlgCOSTwna1CgYl05lf6o5els4dtuyk1qJxQ==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.10.tgz",
+			"integrity": "sha512-3HaGIowI+nMZlopqyW6+jxYr01KvNaLB5znXfbyyjuo4lE0VZfvFGcguIJapQeQMS4cX/NEispwOekJt3gr5Dg==",
 			"dev": true,
 			"optional": true
 		},
 		"@esbuild/darwin-x64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.12.tgz",
-			"integrity": "sha512-ApGRA6X5txIcxV0095X4e4KKv87HAEXfuDRcGTniDWUUN+qPia8sl/BqG/0IomytQWajnUn4C7TOwHduk/FXBQ==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.10.tgz",
+			"integrity": "sha512-J4MJzGchuCRG5n+B4EHpAMoJmBeAE1L3wGYDIN5oWNqX0tEr7VKOzw0ymSwpoeSpdCa030lagGUfnfhS7OvzrQ==",
 			"dev": true,
 			"optional": true
 		},
 		"@esbuild/freebsd-arm64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.12.tgz",
-			"integrity": "sha512-AMdK2gA9EU83ccXCWS1B/KcWYZCj4P3vDofZZkl/F/sBv/fphi2oUqUTox/g5GMcIxk8CF1CVYTC82+iBSyiUg==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.10.tgz",
+			"integrity": "sha512-ZkX40Z7qCbugeK4U5/gbzna/UQkM9d9LNV+Fro8r7HA7sRof5Rwxc46SsqeMvB5ZaR0b1/ITQ/8Y1NmV2F0fXQ==",
 			"dev": true,
 			"optional": true
 		},
 		"@esbuild/freebsd-x64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.12.tgz",
-			"integrity": "sha512-KUKB9w8G/xaAbD39t6gnRBuhQ8vIYYlxGT2I+mT6UGRnCGRr1+ePFIGBQmf5V16nxylgUuuWVW1zU2ktKkf6WQ==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.10.tgz",
+			"integrity": "sha512-0m0YX1IWSLG9hWh7tZa3kdAugFbZFFx9XrvfpaCMMvrswSTvUZypp0NFKriUurHpBA3xsHVE9Qb/0u2Bbi/otg==",
 			"dev": true,
 			"optional": true
 		},
 		"@esbuild/linux-arm": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.12.tgz",
-			"integrity": "sha512-vhDdIv6z4eL0FJyNVfdr3C/vdd/Wc6h1683GJsFoJzfKb92dU/v88FhWdigg0i6+3TsbSDeWbsPUXb4dif2abg==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.10.tgz",
+			"integrity": "sha512-whRdrrl0X+9D6o5f0sTZtDM9s86Xt4wk1bf7ltx6iQqrIIOH+sre1yjpcCdrVXntQPCNw/G+XqsD4HuxeS+2QA==",
 			"dev": true,
 			"optional": true
 		},
 		"@esbuild/linux-arm64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.12.tgz",
-			"integrity": "sha512-29HXMLpLklDfmw7T2buGqq3HImSUaZ1ArmrPOMaNiZZQptOSZs32SQtOHEl8xWX5vfdwZqrBfNf8Te4nArVzKQ==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.10.tgz",
+			"integrity": "sha512-g1EZJR1/c+MmCgVwpdZdKi4QAJ8DCLP5uTgLWSAVd9wlqk9GMscaNMEViG3aE1wS+cNMzXXgdWiW/VX4J+5nTA==",
 			"dev": true,
 			"optional": true
 		},
 		"@esbuild/linux-ia32": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.12.tgz",
-			"integrity": "sha512-JFDuNDTTfgD1LJg7wHA42o2uAO/9VzHYK0leAVnCQE/FdMB599YMH73ux+nS0xGr79pv/BK+hrmdRin3iLgQjg==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.10.tgz",
+			"integrity": "sha512-1vKYCjfv/bEwxngHERp7huYfJ4jJzldfxyfaF7hc3216xiDA62xbXJfRlradiMhGZbdNLj2WA1YwYFzs9IWNPw==",
 			"dev": true,
 			"optional": true
 		},
 		"@esbuild/linux-loong64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.12.tgz",
-			"integrity": "sha512-xTGzVPqm6WKfCC0iuj1fryIWr1NWEM8DMhAIo+4rFgUtwy/lfHl+Obvus4oddzRDbBetLLmojfVZGmt/g/g+Rw==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.10.tgz",
+			"integrity": "sha512-mvwAr75q3Fgc/qz3K6sya3gBmJIYZCgcJ0s7XshpoqIAIBszzfXsqhpRrRdVFAyV1G9VUjj7VopL2HnAS8aHFA==",
 			"dev": true,
 			"optional": true
 		},
 		"@esbuild/linux-mips64el": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.12.tgz",
-			"integrity": "sha512-zI1cNgHa3Gol+vPYjIYHzKhU6qMyOQrvZ82REr5Fv7rlh5PG6SkkuCoH7IryPqR+BK2c/7oISGsvPJPGnO2bHQ==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.10.tgz",
+			"integrity": "sha512-XilKPgM2u1zR1YuvCsFQWl9Fc35BqSqktooumOY2zj7CSn5czJn279j9TE1JEqSqz88izJo7yE4x3LSf7oxHzg==",
 			"dev": true,
 			"optional": true
 		},
 		"@esbuild/linux-ppc64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.12.tgz",
-			"integrity": "sha512-/C8OFXExoMmvTDIOAM54AhtmmuDHKoedUd0Otpfw3+AuuVGemA1nQK99oN909uZbLEU6Bi+7JheFMG3xGfZluQ==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.10.tgz",
+			"integrity": "sha512-kM4Rmh9l670SwjlGkIe7pYWezk8uxKHX4Lnn5jBZYBNlWpKMBCVfpAgAJqp5doLobhzF3l64VZVrmGeZ8+uKmQ==",
 			"dev": true,
 			"optional": true
 		},
 		"@esbuild/linux-riscv64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.12.tgz",
-			"integrity": "sha512-qeouyyc8kAGV6Ni6Isz8hUsKMr00EHgVwUKWNp1r4l88fHEoNTDB8mmestvykW6MrstoGI7g2EAsgr0nxmuGYg==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.10.tgz",
+			"integrity": "sha512-r1m9ZMNJBtOvYYGQVXKy+WvWd0BPvSxMsVq8Hp4GzdMBQvfZRvRr5TtX/1RdN6Va8JMVQGpxqde3O+e8+khNJQ==",
 			"dev": true,
 			"optional": true
 		},
 		"@esbuild/linux-s390x": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.12.tgz",
-			"integrity": "sha512-s9AyI/5vz1U4NNqnacEGFElqwnHusWa81pskAf8JNDM2eb6b2E6PpBmT8RzeZv6/TxE6/TADn2g9bb0jOUmXwQ==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.10.tgz",
+			"integrity": "sha512-LsY7QvOLPw9WRJ+fU5pNB3qrSfA00u32ND5JVDrn/xG5hIQo3kvTxSlWFRP0NJ0+n6HmhPGG0Q4jtQsb6PFoyg==",
 			"dev": true,
 			"optional": true
 		},
 		"@esbuild/linux-x64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.12.tgz",
-			"integrity": "sha512-e8YA7GQGLWhvakBecLptUiKxOk4E/EPtSckS1i0MGYctW8ouvNUoh7xnU15PGO2jz7BYl8q1R6g0gE5HFtzpqQ==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.10.tgz",
+			"integrity": "sha512-zJUfJLebCYzBdIz/Z9vqwFjIA7iSlLCFvVi7glMgnu2MK7XYigwsonXshy9wP9S7szF+nmwrelNaP3WGanstEg==",
 			"dev": true,
 			"optional": true
 		},
 		"@esbuild/netbsd-x64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.12.tgz",
-			"integrity": "sha512-z2+kUxmOqBS+6SRVd57iOLIHE8oGOoEnGVAmwjm2aENSP35HPS+5cK+FL1l+rhrsJOFIPrNHqDUNechpuG96Sg==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.10.tgz",
+			"integrity": "sha512-lOMkailn4Ok9Vbp/q7uJfgicpDTbZFlXlnKT2DqC8uBijmm5oGtXAJy2ZZVo5hX7IOVXikV9LpCMj2U8cTguWA==",
 			"dev": true,
 			"optional": true
 		},
 		"@esbuild/openbsd-x64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.12.tgz",
-			"integrity": "sha512-PAonw4LqIybwn2/vJujhbg1N9W2W8lw9RtXIvvZoyzoA/4rA4CpiuahVbASmQohiytRsixbNoIOUSjRygKXpyA==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.10.tgz",
+			"integrity": "sha512-/VE0Kx6y7eekqZ+ZLU4AjMlB80ov9tEz4H067Y0STwnGOYL8CsNg4J+cCmBznk1tMpxMoUOf0AbWlb1d2Pkbig==",
 			"dev": true,
 			"optional": true
 		},
 		"@esbuild/sunos-x64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.12.tgz",
-			"integrity": "sha512-+wr1tkt1RERi+Zi/iQtkzmMH4nS8+7UIRxjcyRz7lur84wCkAITT50Olq/HiT4JN2X2bjtlOV6vt7ptW5Gw60Q==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.10.tgz",
+			"integrity": "sha512-ERNO0838OUm8HfUjjsEs71cLjLMu/xt6bhOlxcJ0/1MG3hNqCmbWaS+w/8nFLa0DDjbwZQuGKVtCUJliLmbVgg==",
 			"dev": true,
 			"optional": true
 		},
 		"@esbuild/win32-arm64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.12.tgz",
-			"integrity": "sha512-XEjeUSHmjsAOJk8+pXJu9pFY2O5KKQbHXZWQylJzQuIBeiGrpMeq9sTVrHefHxMOyxUgoKQTcaTS+VK/K5SviA==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.10.tgz",
+			"integrity": "sha512-fXv+L+Bw2AeK+XJHwDAQ9m3NRlNemG6Z6ijLwJAAVdu4cyoFbBWbEtyZzDeL+rpG2lWI51cXeMt70HA8g2MqIg==",
 			"dev": true,
 			"optional": true
 		},
 		"@esbuild/win32-ia32": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.12.tgz",
-			"integrity": "sha512-eRKPM7e0IecUAUYr2alW7JGDejrFJXmpjt4MlfonmQ5Rz9HWpKFGCjuuIRgKO7W9C/CWVFXdJ2GjddsBXqQI4A==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.10.tgz",
+			"integrity": "sha512-3s+HADrOdCdGOi5lnh5DMQEzgbsFsd4w57L/eLKKjMnN0CN4AIEP0DCP3F3N14xnxh3ruNc32A0Na9zYe1Z/AQ==",
 			"dev": true,
 			"optional": true
 		},
 		"@esbuild/win32-x64": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.12.tgz",
-			"integrity": "sha512-iPYKN78t3op2+erv2frW568j1q0RpqX6JOLZ7oPPaAV1VaF7dDstOrNw37PVOYoTWE11pV4A1XUitpdEFNIsPg==",
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.10.tgz",
+			"integrity": "sha512-oP+zFUjYNaMNmjTwlFtWep85hvwUu19cZklB3QsBOcZSs6y7hmH4LNCJ7075bsqzYaNvZFXJlAVaQ2ApITDXtw==",
 			"dev": true,
 			"optional": true
 		},
@@ -12826,13 +12819,13 @@
 			"dev": true
 		},
 		"@jridgewell/trace-mapping": {
-			"version": "0.3.15",
-			"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz",
-			"integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==",
+			"version": "0.3.17",
+			"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
+			"integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
 			"dev": true,
 			"requires": {
-				"@jridgewell/resolve-uri": "^3.0.3",
-				"@jridgewell/sourcemap-codec": "^1.4.10"
+				"@jridgewell/resolve-uri": "3.1.0",
+				"@jridgewell/sourcemap-codec": "1.4.14"
 			}
 		},
 		"@jscpd/badge-reporter": {
@@ -12930,9 +12923,9 @@
 			}
 		},
 		"@noble/ed25519": {
-			"version": "1.7.1",
-			"resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.1.tgz",
-			"integrity": "sha512-Rk4SkJFaXZiznFyC/t77Q0NKS4FL7TLJJsVG2V2oiEq3kJVeTdxysEe/yRWSpnWMe808XRDJ+VFh5pt/FN5plw=="
+			"version": "1.7.3",
+			"resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.3.tgz",
+			"integrity": "sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ=="
 		},
 		"@nodelib/fs.scandir": {
 			"version": "2.1.5",
@@ -12960,30 +12953,6 @@
 				"fastq": "^1.6.0"
 			}
 		},
-		"@tsconfig/node10": {
-			"version": "1.0.9",
-			"resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
-			"integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==",
-			"dev": true
-		},
-		"@tsconfig/node12": {
-			"version": "1.0.11",
-			"resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
-			"integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
-			"dev": true
-		},
-		"@tsconfig/node14": {
-			"version": "1.0.3",
-			"resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
-			"integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
-			"dev": true
-		},
-		"@tsconfig/node16": {
-			"version": "1.0.3",
-			"resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz",
-			"integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==",
-			"dev": true
-		},
 		"@types/eslint": {
 			"version": "7.29.0",
 			"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz",
@@ -13463,12 +13432,6 @@
 				"picomatch": "^2.0.4"
 			}
 		},
-		"arg": {
-			"version": "4.1.3",
-			"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
-			"integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
-			"dev": true
-		},
 		"argparse": {
 			"version": "2.0.1",
 			"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
@@ -13696,20 +13659,20 @@
 			}
 		},
 		"browser-ava": {
-			"version": "1.3.22",
-			"resolved": "https://registry.npmjs.org/browser-ava/-/browser-ava-1.3.22.tgz",
-			"integrity": "sha512-7UDfansTCp1qgOxzoXDNQlWGgp1Qw4SVsAuP2SUnrzsVysbC8eJpXbJljBqGbB6PS58irpcnApGTlOgs4sX3jg==",
+			"version": "1.3.25",
+			"resolved": "https://registry.npmjs.org/browser-ava/-/browser-ava-1.3.25.tgz",
+			"integrity": "sha512-yFtKjsNJlNjGV+nJUFEGOMJHeDKZEQw+ZXoJGHMdF0itrIAA45cw421cedSaRN5DdTe+tuEZB3TTJcbq35Sqhw==",
 			"dev": true,
 			"requires": {
 				"@koa/cors": "^4.0.0",
 				"chalk": "^5.2.0",
 				"commander": "^10.0.0",
-				"es-module-lexer": "^1.0.5",
+				"es-module-lexer": "^1.2.0",
 				"globby": "^13.1.3",
 				"koa": "^2.14.1",
 				"koa-static": "^5.0.0",
-				"playwright": "^1.29.2",
-				"ws": "^8.12.0"
+				"playwright": "^1.31.1",
+				"ws": "^8.12.1"
 			},
 			"dependencies": {
 				"commander": {
@@ -13719,9 +13682,9 @@
 					"dev": true
 				},
 				"es-module-lexer": {
-					"version": "1.1.0",
-					"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.1.0.tgz",
-					"integrity": "sha512-fJg+1tiyEeS8figV+fPcPpm8WqJEflG3yPU0NOm5xMvrNkuiy7HzX/Ljng4Y0hAoiw4/3hQTCFYw+ub8+a2pRA==",
+					"version": "1.2.0",
+					"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.0.tgz",
+					"integrity": "sha512-2BMfqBDeVCcOlLaL1ZAfp+D868SczNpKArrTM3dhpd7dK/OVlogzY15qpUngt+LMTq5UC/csb9vVQAgupucSbA==",
 					"dev": true
 				}
 			}
@@ -13748,8 +13711,7 @@
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
 			"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
-			"dev": true,
-			"peer": true
+			"dev": true
 		},
 		"builtin-modules": {
 			"version": "3.3.0",
@@ -13764,9 +13726,9 @@
 			"dev": true
 		},
 		"c8": {
-			"version": "7.12.0",
-			"resolved": "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz",
-			"integrity": "sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==",
+			"version": "7.13.0",
+			"resolved": "https://registry.npmjs.org/c8/-/c8-7.13.0.tgz",
+			"integrity": "sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA==",
 			"dev": true,
 			"requires": {
 				"@bcoe/v8-coverage": "^0.2.3",
@@ -14332,13 +14294,13 @@
 			}
 		},
 		"codehawk-cli": {
-			"version": "10.0.1",
-			"resolved": "https://registry.npmjs.org/codehawk-cli/-/codehawk-cli-10.0.1.tgz",
-			"integrity": "sha512-L8c0gkA1CwJEILFg4SL4t1xOhhvCc+pZtrlaJoBA427kjZZPwepx9E9jWxiz2E5K+5GZZ9VhoAchfClIBHZVEg==",
+			"version": "10.1.0",
+			"resolved": "https://registry.npmjs.org/codehawk-cli/-/codehawk-cli-10.1.0.tgz",
+			"integrity": "sha512-fCzj5Rm0Cbw6IeyaQ3NS1J3kMrO1mM3v6x7zmgXVmL4CI29YM7KdhUGwWXDRUEqA08V9xCg8TS8uOxSC/NjxSg==",
 			"dev": true,
 			"requires": {
-				"@babel/core": "^7.18.6",
-				"@babel/plugin-transform-typescript": "^7.18.6",
+				"@babel/core": "^7.20.12",
+				"@babel/plugin-transform-typescript": "^7.20.7",
 				"badgen": "^3.2.2",
 				"flow-remove-types": "^2.111.3",
 				"is-dotdir": "^1.0.1",
@@ -14671,12 +14633,6 @@
 				"yaml": "^1.10.0"
 			}
 		},
-		"create-require": {
-			"version": "1.1.1",
-			"resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
-			"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
-			"dev": true
-		},
 		"cross-fetch": {
 			"version": "3.1.5",
 			"resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
@@ -14840,12 +14796,6 @@
 			"integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
 			"dev": true
 		},
-		"diff": {
-			"version": "4.0.2",
-			"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
-			"integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
-			"dev": true
-		},
 		"dir-glob": {
 			"version": "3.0.1",
 			"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
@@ -15453,33 +15403,33 @@
 			}
 		},
 		"esbuild": {
-			"version": "0.16.12",
-			"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.12.tgz",
-			"integrity": "sha512-eq5KcuXajf2OmivCl4e89AD3j8fbV+UTE9vczEzq5haA07U9oOTzBWlh3+6ZdjJR7Rz2QfWZ2uxZyhZxBgJ4+g==",
-			"dev": true,
-			"requires": {
-				"@esbuild/android-arm": "0.16.12",
-				"@esbuild/android-arm64": "0.16.12",
-				"@esbuild/android-x64": "0.16.12",
-				"@esbuild/darwin-arm64": "0.16.12",
-				"@esbuild/darwin-x64": "0.16.12",
-				"@esbuild/freebsd-arm64": "0.16.12",
-				"@esbuild/freebsd-x64": "0.16.12",
-				"@esbuild/linux-arm": "0.16.12",
-				"@esbuild/linux-arm64": "0.16.12",
-				"@esbuild/linux-ia32": "0.16.12",
-				"@esbuild/linux-loong64": "0.16.12",
-				"@esbuild/linux-mips64el": "0.16.12",
-				"@esbuild/linux-ppc64": "0.16.12",
-				"@esbuild/linux-riscv64": "0.16.12",
-				"@esbuild/linux-s390x": "0.16.12",
-				"@esbuild/linux-x64": "0.16.12",
-				"@esbuild/netbsd-x64": "0.16.12",
-				"@esbuild/openbsd-x64": "0.16.12",
-				"@esbuild/sunos-x64": "0.16.12",
-				"@esbuild/win32-arm64": "0.16.12",
-				"@esbuild/win32-ia32": "0.16.12",
-				"@esbuild/win32-x64": "0.16.12"
+			"version": "0.17.10",
+			"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.10.tgz",
+			"integrity": "sha512-n7V3v29IuZy5qgxx25TKJrEm0FHghAlS6QweUcyIgh/U0zYmQcvogWROitrTyZId1mHSkuhhuyEXtI9OXioq7A==",
+			"dev": true,
+			"requires": {
+				"@esbuild/android-arm": "0.17.10",
+				"@esbuild/android-arm64": "0.17.10",
+				"@esbuild/android-x64": "0.17.10",
+				"@esbuild/darwin-arm64": "0.17.10",
+				"@esbuild/darwin-x64": "0.17.10",
+				"@esbuild/freebsd-arm64": "0.17.10",
+				"@esbuild/freebsd-x64": "0.17.10",
+				"@esbuild/linux-arm": "0.17.10",
+				"@esbuild/linux-arm64": "0.17.10",
+				"@esbuild/linux-ia32": "0.17.10",
+				"@esbuild/linux-loong64": "0.17.10",
+				"@esbuild/linux-mips64el": "0.17.10",
+				"@esbuild/linux-ppc64": "0.17.10",
+				"@esbuild/linux-riscv64": "0.17.10",
+				"@esbuild/linux-s390x": "0.17.10",
+				"@esbuild/linux-x64": "0.17.10",
+				"@esbuild/netbsd-x64": "0.17.10",
+				"@esbuild/openbsd-x64": "0.17.10",
+				"@esbuild/sunos-x64": "0.17.10",
+				"@esbuild/win32-arm64": "0.17.10",
+				"@esbuild/win32-ia32": "0.17.10",
+				"@esbuild/win32-x64": "0.17.10"
 			}
 		},
 		"escalade": {
@@ -15852,9 +15802,9 @@
 			}
 		},
 		"eslint-plugin-ava": {
-			"version": "13.2.0",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-ava/-/eslint-plugin-ava-13.2.0.tgz",
-			"integrity": "sha512-i5B5izsEdERKQLruk1nIWzTTE7C26/ju8qQf7JeyRv32XT2lRMW0zMFZNhIrEf5/5VvpSz2rqrV7UcjClGbKsw==",
+			"version": "14.0.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-ava/-/eslint-plugin-ava-14.0.0.tgz",
+			"integrity": "sha512-XmKT6hppaipwwnLVwwvQliSU6AF1QMHiNoLD5JQfzhUhf0jY7CO0O624fQrE+Y/fTb9vbW8r77nKf7M/oHulxw==",
 			"dev": true,
 			"requires": {
 				"enhance-visitors": "^1.0.0",
@@ -16532,6 +16482,12 @@
 				"get-intrinsic": "^1.1.1"
 			}
 		},
+		"get-tsconfig": {
+			"version": "4.4.0",
+			"resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.4.0.tgz",
+			"integrity": "sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ==",
+			"dev": true
+		},
 		"gitignore-to-glob": {
 			"version": "0.3.0",
 			"resolved": "https://registry.npmjs.org/gitignore-to-glob/-/gitignore-to-glob-0.3.0.tgz",
@@ -17562,9 +17518,9 @@
 			}
 		},
 		"latinize-to-ascii": {
-			"version": "0.5.2",
-			"resolved": "https://registry.npmjs.org/latinize-to-ascii/-/latinize-to-ascii-0.5.2.tgz",
-			"integrity": "sha512-UuNPxcWKxXtxFOgBJG4/u68PLOW+Hab8wSOU6BW4BMos+mZNQ9/z7LdVZz0kQWpmvm0RKyysGHTK9SRbIX7eeA=="
+			"version": "0.5.3",
+			"resolved": "https://registry.npmjs.org/latinize-to-ascii/-/latinize-to-ascii-0.5.3.tgz",
+			"integrity": "sha512-kbookFW78ffs382xKdDAZ2WqrqE13Vivt7U8FUrcWxY5FOhD9LaKrD9zOj+iv/K7aTfD7cyOuiCa2A7el1/wkA=="
 		},
 		"levn": {
 			"version": "0.4.1",
@@ -17750,12 +17706,6 @@
 				}
 			}
 		},
-		"make-error": {
-			"version": "1.3.6",
-			"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
-			"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
-			"dev": true
-		},
 		"map-age-cleaner": {
 			"version": "0.1.3",
 			"resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
@@ -17996,9 +17946,9 @@
 			}
 		},
 		"mkdirp": {
-			"version": "1.0.4",
-			"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
-			"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+			"version": "2.1.3",
+			"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.3.tgz",
+			"integrity": "sha512-sjAkg21peAG9HS+Dkx7hlG9Ztx7HLeKnvB3NQRcu/mltCVmvkF0pisbiTSfDVYTT86XEfZrTUosLdZLStquZUw==",
 			"dev": true
 		},
 		"ms": {
@@ -18626,18 +18576,18 @@
 			}
 		},
 		"playwright": {
-			"version": "1.30.0",
-			"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.30.0.tgz",
-			"integrity": "sha512-ENbW5o75HYB3YhnMTKJLTErIBExrSlX2ZZ1C/FzmHjUYIfxj/UnI+DWpQr992m+OQVSg0rCExAOlRwB+x+yyIg==",
+			"version": "1.31.1",
+			"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.31.1.tgz",
+			"integrity": "sha512-zKJabsIA2rvOwJ12lGTqWv4HVJzlfw2JtUvO4hAr7J8UXQZ1qEPpX20E1vcz/9fotnTkwgqp3CVdIBwptBN3Fg==",
 			"dev": true,
 			"requires": {
-				"playwright-core": "1.30.0"
+				"playwright-core": "1.31.1"
 			}
 		},
 		"playwright-core": {
-			"version": "1.30.0",
-			"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.30.0.tgz",
-			"integrity": "sha512-7AnRmTCf+GVYhHbLJsGUtskWTE33SwMZkybJ0v6rqR1boxq2x36U7p1vDRV7HO2IwTZgmycracLxPEJI49wu4g==",
+			"version": "1.31.1",
+			"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.31.1.tgz",
+			"integrity": "sha512-JTyX4kV3/LXsvpHkLzL2I36aCdml4zeE35x+G5aPc4bkLsiRiQshU5lWeVpHFAuC8xAcbI6FDcw/8z3q2xtJSQ==",
 			"dev": true
 		},
 		"plur": {
@@ -19234,9 +19184,9 @@
 			}
 		},
 		"rollup": {
-			"version": "3.9.0",
-			"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.9.0.tgz",
-			"integrity": "sha512-nGGylpmblyjTpF4lEUPgmOw6OVxRvnI6Iuuh6Lz4O/X66cVOX1XJSsqP1YamxQ+mPuFE7qJxLFDSCk8rNv5dDw==",
+			"version": "3.17.3",
+			"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.17.3.tgz",
+			"integrity": "sha512-p5LaCXiiOL/wrOkj8djsIDFmyU9ysUxcyW+EKRLHb6TKldJzXpImjcRSR+vgo09DBdofGcOoLOsRyxxG2n5/qQ==",
 			"dev": true,
 			"requires": {
 				"fsevents": "~2.3.2"
@@ -19427,15 +19377,13 @@
 			"version": "0.6.1",
 			"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
 			"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-			"dev": true,
-			"peer": true
+			"dev": true
 		},
 		"source-map-support": {
 			"version": "0.5.21",
 			"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
 			"integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
 			"dev": true,
-			"peer": true,
 			"requires": {
 				"buffer-from": "^1.0.0",
 				"source-map": "^0.6.0"
@@ -19852,27 +19800,6 @@
 			"integrity": "sha512-GJtWyq9InR/2HRiLZgpIKv+ufIKrVrvjQWEj7PxAXNc5dwbNJkqhAUoAGgzRmULAnoOM5EIpveYd3J2VeSAIew==",
 			"dev": true
 		},
-		"ts-node": {
-			"version": "10.9.1",
-			"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
-			"integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
-			"dev": true,
-			"requires": {
-				"@cspotcode/source-map-support": "^0.8.0",
-				"@tsconfig/node10": "^1.0.7",
-				"@tsconfig/node12": "^1.0.7",
-				"@tsconfig/node14": "^1.0.0",
-				"@tsconfig/node16": "^1.0.2",
-				"acorn": "^8.4.1",
-				"acorn-walk": "^8.1.1",
-				"arg": "^4.1.0",
-				"create-require": "^1.1.0",
-				"diff": "^4.0.1",
-				"make-error": "^1.1.1",
-				"v8-compile-cache-lib": "^3.0.1",
-				"yn": "3.1.1"
-			}
-		},
 		"tsconfig-paths": {
 			"version": "3.14.1",
 			"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz",
@@ -19886,9 +19813,9 @@
 			},
 			"dependencies": {
 				"json5": {
-					"version": "1.0.1",
-					"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
-					"integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+					"version": "1.0.2",
+					"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+					"integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
 					"dev": true,
 					"requires": {
 						"minimist": "^1.2.0"
@@ -19917,6 +19844,18 @@
 				"tslib": "^1.8.1"
 			}
 		},
+		"tsx": {
+			"version": "3.12.3",
+			"resolved": "https://registry.npmjs.org/tsx/-/tsx-3.12.3.tgz",
+			"integrity": "sha512-Wc5BFH1xccYTXaQob+lEcimkcb/Pq+0en2s+ruiX0VEIC80nV7/0s7XRahx8NnsoCnpCVUPz8wrqVSPi760LkA==",
+			"dev": true,
+			"requires": {
+				"@esbuild-kit/cjs-loader": "^2.4.2",
+				"@esbuild-kit/core-utils": "^3.0.0",
+				"@esbuild-kit/esm-loader": "^2.5.5",
+				"fsevents": "~2.3.2"
+			}
+		},
 		"tweetnacl": {
 			"version": "1.0.3",
 			"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz",
@@ -20094,12 +20033,6 @@
 			"integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
 			"dev": true
 		},
-		"v8-compile-cache-lib": {
-			"version": "3.0.1",
-			"resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
-			"integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
-			"dev": true
-		},
 		"v8-to-istanbul": {
 			"version": "9.0.1",
 			"resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz",
@@ -21010,12 +20943,6 @@
 			"integrity": "sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==",
 			"dev": true
 		},
-		"yn": {
-			"version": "3.1.1",
-			"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
-			"integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
-			"dev": true
-		},
 		"yocto-queue": {
 			"version": "0.1.0",
 			"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
diff --git a/package.json b/package.json
index ef859cb1354c7854c5b07ce40d77bd1ed1ca40e0..889022d54487ca610d94cfc9ecec3d1ba23c074b 100644
--- a/package.json
+++ b/package.json
@@ -1,13 +1,14 @@
 {
 	"private": true,
 	"author": "[1000i100] Millicent Billette <git@1000i100.fr> (https://1forma-tic.fr/)",
+	"type": "module",
 	"scripts": {
 		"postinstall": "run-s clean build",
 		"clean": "rm -rf generated*",
 		"build": "run-s build:**",
 		"build:mk": "node CI/mk-generated.mjs",
-		"build:vendors": "node CI/vendors.js",
-		"build:cpSrcToContextSpecific": "node CI/cp-src-to-context-specific.js",
+		"build:vendors": "node CI/vendors.mjs",
+		"build:cpSrcToContextSpecific": "node CI/cp-src-to-context-specific.mjs",
 		"build:npm:rollup": "rollup --config CI/rollup.config.mjs",
 		"build:npm:cp": "cp npm/* generated/npm/",
 		"build:npm:cp:readme": "cp README* generated/npm/",
@@ -39,11 +40,11 @@
 		"watch2null": "chokidar src/* -c \"npm run test:dev:runTests 2>/dev/null\""
 	},
 	"dependencies": {
-		"@noble/ed25519": "^1.7.1",
+		"@noble/ed25519": "^1.7.3",
 		"cross-fetch": "^3.1.5",
 		"ed2curve": "https://github.com/1000i100/ed2curve#master",
 		"js-sha256": "github:1000i100/js-sha256#master",
-		"latinize-to-ascii": "^0.5.2",
+		"latinize-to-ascii": "^0.5.3",
 		"node-fetch": "^2.6.7",
 		"scrypt-async-modern": "^3.0.12",
 		"tweetnacl": "^1.0.3"
@@ -53,20 +54,20 @@
 		"@jscpd/badge-reporter": "^3.4.5",
 		"ava": "^5.2.0",
 		"badgen": "^3.2.2",
-		"browser-ava": "^1.3.22",
-		"c8": "^7.12.0",
+		"browser-ava": "^1.3.25",
+		"c8": "^7.13.0",
 		"chokidar-cli": "^3.0.0",
-		"codehawk-cli": "^10.0.1",
+		"codehawk-cli": "^10.1.0",
 		"es6-plato": "https://github.com/1000i100/es6-plato#master",
-		"esbuild": "^0.16.12",
-		"eslint-plugin-ava": "^13.2.0",
+		"esbuild": "^0.17.10",
+		"eslint-plugin-ava": "^14.0.0",
 		"eslint-plugin-promise": "^6.1.1",
 		"eslint-plugin-unicorn": "^45.0.2",
 		"jscpd": "^3.5.3",
-		"mkdirp": "^1.0.4",
+		"mkdirp": "^2.1.3",
 		"npm-run-all": "^4.1.5",
-		"rollup": "^3.9.0",
-		"ts-node": "^10.9.1",
+		"rollup": "^3.17.3",
+		"tsx": "^3.12.3",
 		"typescript": "^4.9.5",
 		"xo": "^0.44.0"
 	},
@@ -84,7 +85,7 @@
 			"ts": "module"
 		},
 		"nodeArguments": [
-			"--loader=ts-node/esm"
+			"--loader=tsx"
 		]
 	},
 	"c8": {
diff --git a/src/crypto.test.mjs b/src/crypto.test.mjs
index 745321615935a8751dd05842cd860dbe5e616539..9efdfd71b926f859cea5bc17d1f5887b851af896 100644
--- a/src/crypto.test.mjs
+++ b/src/crypto.test.mjs
@@ -151,26 +151,34 @@ app.mockRandom((u8a, n)=>{
 	return u8a;
 });
 
-const user1 = await app.idSecPass2cleanKeys('1','1');
-const user2 = await app.idSecPass2cleanKeys('2','2');
-const timestampInSeconds = 1222111000;
-const sampleMessage = {title:"Mon Titre",content:"Mon message"};
-const cryptedMessage =    {
-	content: 'G0ZAirsaoeAt/pOcsjg0milDkeBu8Uo3BgrZ',
-	hash: '65EC1622D2C38422EA21124397AB7A9F36A94BB6FC2C474C706ECAC33658114C',
-	issuer: 'BUhLyJT17bzDVXW66xxfk1F7947vytmwJVadTaWb8sJS',
-	nonce: 'TYPjCiGbKiwP6r12cdkmVjySbQpSHavp',
-	recipient: '7nge6q7F4k7FQ2q4FRMMPvt2tK7AEx8gNNRLr6LwZN38',
-	signature: 'u4m2YHp5nVxcXxMjQvv9H4kfSV8Q3/Jh68jHplbCjizXlA9XXksu+YuFrS9B5KuQ2HX68g9+kRdLoCspMuWtBg==',
-	time: timestampInSeconds,
-	title: 'yV5cDZCuJWqMBXsFmEm1FSlDkeBX/U02Ag==',
-	version: 2
-};
-
-test('textEncrypt(jsonMessage, senderPrivateKey, receiverPubKey) encrypt to cesium+ message format',
-		t => t.deepEqual(
-			app.textEncrypt(sampleMessage, user1.secretKey, user2.publicKey,timestampInSeconds),
-			cryptedMessage)
+async function exampleData(){
+	const user1 = await app.idSecPass2cleanKeys('1','1');
+	const user2 = await app.idSecPass2cleanKeys('2','2');
+	const timestampInSeconds = 1222111000;
+	const sampleMessage = {title:"Mon Titre",content:"Mon message"};
+	const cryptedMessage =    {
+		content: 'G0ZAirsaoeAt/pOcsjg0milDkeBu8Uo3BgrZ',
+		hash: '65EC1622D2C38422EA21124397AB7A9F36A94BB6FC2C474C706ECAC33658114C',
+		issuer: 'BUhLyJT17bzDVXW66xxfk1F7947vytmwJVadTaWb8sJS',
+		nonce: 'TYPjCiGbKiwP6r12cdkmVjySbQpSHavp',
+		recipient: '7nge6q7F4k7FQ2q4FRMMPvt2tK7AEx8gNNRLr6LwZN38',
+		signature: 'u4m2YHp5nVxcXxMjQvv9H4kfSV8Q3/Jh68jHplbCjizXlA9XXksu+YuFrS9B5KuQ2HX68g9+kRdLoCspMuWtBg==',
+		time: timestampInSeconds,
+		title: 'yV5cDZCuJWqMBXsFmEm1FSlDkeBX/U02Ag==',
+		version: 2
+	};
+	return {user1, user2, timestampInSeconds, sampleMessage, cryptedMessage};
+}
+
+
+test('textEncrypt(jsonMessage, senderPrivateKey, receiverPubKey) encrypt to cesium+ message format', async t => {
+	const {user1, user2, timestampInSeconds, sampleMessage, cryptedMessage} =	await exampleData();
+	t.deepEqual(
+				app.textEncrypt(sampleMessage, user1.secretKey, user2.publicKey,timestampInSeconds),
+				cryptedMessage)
+		}
 );
-test('textDecrypt(jsonMessage, receiverPrivateKey)', t => t.deepEqual(app.textDecrypt(cryptedMessage, user2.secretKey),
-	{title:"Mon Titre",content:"Mon message"}));
+test('textDecrypt(jsonMessage, receiverPrivateKey)', async t => {
+	const {user2, sampleMessage, cryptedMessage} =	exampleData();
+	t.deepEqual(app.textDecrypt(cryptedMessage, user2.secretKey), sampleMessage)
+});
diff --git a/src/dictionary-parser.mjs b/src/dictionary-parser.mjs
index af2883197dd98b80dfe189a47d9c6719ea81a63a..ce07e38094080aa5baedd84c656b41efff8fc865 100644
--- a/src/dictionary-parser.mjs
+++ b/src/dictionary-parser.mjs
@@ -1,4 +1,4 @@
-import latinize from '../node_modules/latinize-to-ascii/latinize.mjs';
+import {latinize} from 'latinize-to-ascii/latinize.mjs';
 import * as tree from './dictionary-tree.mjs';
 import {escape2utfSpecial, escapeAll, utfSpecial2escaped} from "./dictionary-escaper.mjs";
 
@@ -63,6 +63,7 @@ function parseEnd(str,allLines,options) {
 	return utfSpecial2escaped(flattenIt(theString));
 }
 function zeroVariant(str,func){
+	if(typeof func !== "function") console.error(func);
 	const zero = func(str);
 	if(zero===str) return str;
 	return `(${str}|${zero})`;
diff --git a/tsconfig.json b/tsconfig.json
index 13ac53f354aef4bd26892b8d7565556488c19528..92a99e2616483a516600c4c6c714c369471bc379 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,7 +1,7 @@
 {
 	"compilerOptions": {
+		"target": "ES2020",
 		"module": "ES2020",
-		"moduleResolution": "node",
-		"target": "ES2020"
+		"moduleResolution": "node"
 	}
 }