diff --git a/.github/package-lock.json b/.github/package-lock.json
index 4cf963e..fbe8e34 100644
--- a/.github/package-lock.json
+++ b/.github/package-lock.json
@@ -15,7 +15,7 @@
                 "@types/node": "16.18.31",
                 "jest": "29.5.0",
                 "prettier": "2.8.8",
-                "ts-jest": "29.1.0",
+                "ts-jest": "29.3.0",
                 "ts-loader": "9.4.3",
                 "typescript": "4.9.5"
             }
@@ -1789,6 +1789,13 @@
                 "sprintf-js": "~1.0.2"
             }
         },
+        "node_modules/async": {
+            "version": "3.2.6",
+            "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
+            "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
+            "dev": true,
+            "license": "MIT"
+        },
         "node_modules/babel-jest": {
             "version": "29.5.0",
             "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz",
@@ -2208,6 +2215,22 @@
                 "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
             }
         },
+        "node_modules/ejs": {
+            "version": "3.1.10",
+            "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
+            "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
+            "dev": true,
+            "license": "Apache-2.0",
+            "dependencies": {
+                "jake": "^10.8.5"
+            },
+            "bin": {
+                "ejs": "bin/cli.js"
+            },
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
         "node_modules/electron-to-chromium": {
             "version": "1.4.402",
             "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.402.tgz",
@@ -2441,6 +2464,39 @@
                 "node": "^12.20 || >= 14.13"
             }
         },
+        "node_modules/filelist": {
+            "version": "1.0.4",
+            "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
+            "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
+            "dev": true,
+            "license": "Apache-2.0",
+            "dependencies": {
+                "minimatch": "^5.0.1"
+            }
+        },
+        "node_modules/filelist/node_modules/brace-expansion": {
+            "version": "2.0.1",
+            "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+            "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "balanced-match": "^1.0.0"
+            }
+        },
+        "node_modules/filelist/node_modules/minimatch": {
+            "version": "5.1.6",
+            "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+            "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+            "dev": true,
+            "license": "ISC",
+            "dependencies": {
+                "brace-expansion": "^2.0.1"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
         "node_modules/fill-range": {
             "version": "7.0.1",
             "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -2846,6 +2902,25 @@
                 "node": ">=8"
             }
         },
+        "node_modules/jake": {
+            "version": "10.9.2",
+            "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz",
+            "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==",
+            "dev": true,
+            "license": "Apache-2.0",
+            "dependencies": {
+                "async": "^3.2.3",
+                "chalk": "^4.0.2",
+                "filelist": "^1.0.4",
+                "minimatch": "^3.1.2"
+            },
+            "bin": {
+                "jake": "bin/cli.js"
+            },
+            "engines": {
+                "node": ">=10"
+            }
+        },
         "node_modules/jest": {
             "version": "29.5.0",
             "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz",
@@ -4432,28 +4507,32 @@
             "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
         },
         "node_modules/ts-jest": {
-            "version": "29.1.0",
-            "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz",
-            "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==",
+            "version": "29.3.0",
+            "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.0.tgz",
+            "integrity": "sha512-4bfGBX7Gd1Aqz3SyeDS9O276wEU/BInZxskPrbhZLyv+c1wskDCqDFMJQJLWrIr/fKoAH4GE5dKUlrdyvo+39A==",
             "dev": true,
+            "license": "MIT",
             "dependencies": {
-                "bs-logger": "0.x",
-                "fast-json-stable-stringify": "2.x",
+                "bs-logger": "^0.2.6",
+                "ejs": "^3.1.10",
+                "fast-json-stable-stringify": "^2.1.0",
                 "jest-util": "^29.0.0",
                 "json5": "^2.2.3",
-                "lodash.memoize": "4.x",
-                "make-error": "1.x",
-                "semver": "7.x",
-                "yargs-parser": "^21.0.1"
+                "lodash.memoize": "^4.1.2",
+                "make-error": "^1.3.6",
+                "semver": "^7.7.1",
+                "type-fest": "^4.37.0",
+                "yargs-parser": "^21.1.1"
             },
             "bin": {
                 "ts-jest": "cli.js"
             },
             "engines": {
-                "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+                "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0"
             },
             "peerDependencies": {
                 "@babel/core": ">=7.0.0-beta.0 <8",
+                "@jest/transform": "^29.0.0",
                 "@jest/types": "^29.0.0",
                 "babel-jest": "^29.0.0",
                 "jest": "^29.0.0",
@@ -4463,6 +4542,9 @@
                 "@babel/core": {
                     "optional": true
                 },
+                "@jest/transform": {
+                    "optional": true
+                },
                 "@jest/types": {
                     "optional": true
                 },
@@ -4474,26 +4556,12 @@
                 }
             }
         },
-        "node_modules/ts-jest/node_modules/lru-cache": {
-            "version": "6.0.0",
-            "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-            "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-            "dev": true,
-            "dependencies": {
-                "yallist": "^4.0.0"
-            },
-            "engines": {
-                "node": ">=10"
-            }
-        },
         "node_modules/ts-jest/node_modules/semver": {
-            "version": "7.5.1",
-            "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
-            "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
+            "version": "7.7.1",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+            "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
             "dev": true,
-            "dependencies": {
-                "lru-cache": "^6.0.0"
-            },
+            "license": "ISC",
             "bin": {
                 "semver": "bin/semver.js"
             },
@@ -4501,11 +4569,18 @@
                 "node": ">=10"
             }
         },
-        "node_modules/ts-jest/node_modules/yallist": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
-            "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
-            "dev": true
+        "node_modules/ts-jest/node_modules/type-fest": {
+            "version": "4.38.0",
+            "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.38.0.tgz",
+            "integrity": "sha512-2dBz5D5ycHIoliLYLi0Q2V7KRaDlH0uWIvmk7TYlAg5slqwiPv1ezJdZm1QEM0xgk29oYWMCbIG7E6gHpvChlg==",
+            "dev": true,
+            "license": "(MIT OR CC0-1.0)",
+            "engines": {
+                "node": ">=16"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
         },
         "node_modules/ts-loader": {
             "version": "9.4.3",
diff --git a/.github/package.json b/.github/package.json
index c92022d..c9ba362 100644
--- a/.github/package.json
+++ b/.github/package.json
@@ -21,7 +21,7 @@
         "@types/node": "16.18.31",
         "jest": "29.5.0",
         "prettier": "2.8.8",
-        "ts-jest": "29.1.0",
+        "ts-jest": "29.3.0",
         "ts-loader": "9.4.3",
         "typescript": "4.9.5"
     }