Przeglądaj źródła

[CE/SP] Hotfix 5.5.1 (#26091)

* [CE/SP] Hotfix 5.5.1

* [web] Fix License tab in CE/SP

* Added patch to improve logging

* Added patch to fix create-user.mjs

* Added check for `featureCompatibilityVersion` on CE/SP startup

* Patch with `multer` and `tar-fs` updates

* Install manually missing @paralleldrive/cuid2 on CE 5.1.1

GitOrigin-RevId: 0138dffdcb171382014a383bee13676fc873b1dd
Miguel Serrano 1 rok temu
rodzic
commit
9601eeb7c9

+ 28 - 0
server-ce/hotfix/5.5.1/Dockerfile

@@ -0,0 +1,28 @@
+FROM sharelatex/sharelatex:5.5.0
+
+
+# fix tls configuration in redis for history-v1
+COPY pr_25168.patch .
+RUN patch -p1 < pr_25168.patch && rm pr_25168.patch
+
+# improve logging in history system
+COPY pr_26086.patch .
+RUN patch -p1 < pr_26086.patch && rm pr_26086.patch
+
+# fix create-user.mjs script
+COPY pr_26152.patch .
+RUN patch -p1 < pr_26152.patch && rm pr_26152.patch
+
+# check mongo featureCompatibilityVersion
+COPY pr_26091.patch .
+RUN patch -p1 < pr_26091.patch && rm pr_26091.patch
+
+# update multer and tar-fs
+RUN sed -i 's/"multer": "2.0.0"/"multer": "2.0.1"/g' package.json
+RUN sed -i 's/"dockerode": "^4.0.5"/"dockerode": "^4.0.7"/g' services/clsi/package.json
+RUN sed -i 's/"tar-fs": "^3.0.4"/"tar-fs": "^3.0.9"/g' services/clsi/package.json
+RUN sed -i 's/199c5ff05bd375c508f4074498237baead7f5148/4dbceda355efc3fc8ac3cf5c66c3778c8a6fdb23/g' services/web/package.json
+COPY package-lock.json.diff .
+RUN patch package-lock.json < package-lock.json.diff
+RUN npm install --omit=dev
+RUN npm install  @paralleldrive/cuid2@2.2.2 -w services/history-v1

+ 2202 - 0
server-ce/hotfix/5.5.1/package-lock.json.diff

@@ -0,0 +1,2202 @@
+4954,4956c4954,4957
+<       "version": "1.8.22",
+<       "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.22.tgz",
+<       "integrity": "sha512-oAjDdN7fzbUi+4hZjKG96MR6KTEubAeMpQEb+77qy+3r0Ua5xTFuie6JOLr4ZZgl5g+W5/uRTS2M1V8mVAFPuA==",
+---
+>       "version": "1.13.4",
+>       "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.13.4.tgz",
+>       "integrity": "sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg==",
+>       "license": "Apache-2.0",
+4958,4959c4959,4960
+<         "@grpc/proto-loader": "^0.7.0",
+<         "@types/node": ">=12.12.47"
+---
+>         "@grpc/proto-loader": "^0.7.13",
+>         "@js-sdsl/ordered-map": "^4.4.2"
+4962c4963
+<         "node": "^8.13.0 || >=10.10.0"
+---
+>         "node": ">=12.10.0"
+5915a5917,5928
+>     "node_modules/@noble/hashes": {
+>       "version": "1.8.0",
+>       "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
+>       "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
+>       "license": "MIT",
+>       "engines": {
+>         "node": "^14.21.3 || >=16"
+>       },
+>       "funding": {
+>         "url": "https://paulmillr.com/funding/"
+>       }
+>     },
+7528a7542,7550
+>     "node_modules/@paralleldrive/cuid2": {
+>       "version": "2.2.2",
+>       "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz",
+>       "integrity": "sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==",
+>       "license": "MIT",
+>       "dependencies": {
+>         "@noble/hashes": "^1.1.5"
+>       }
+>     },
+13479,13481c13501,13503
+<       "version": "1.0.1",
+<       "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
+<       "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==",
+---
+>       "version": "1.0.2",
+>       "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz",
+>       "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==",
+13484,13485c13506,13507
+<         "call-bind": "^1.0.5",
+<         "is-array-buffer": "^3.0.4"
+---
+>         "call-bound": "^1.0.3",
+>         "is-array-buffer": "^3.0.5"
+13601,13603c13623,13625
+<       "version": "1.0.3",
+<       "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz",
+<       "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==",
+---
+>       "version": "1.0.4",
+>       "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz",
+>       "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==",
+13607c13629
+<         "call-bind": "^1.0.5",
+---
+>         "call-bind": "^1.0.8",
+13609,13613c13631,13634
+<         "es-abstract": "^1.22.3",
+<         "es-errors": "^1.2.1",
+<         "get-intrinsic": "^1.2.3",
+<         "is-array-buffer": "^3.0.4",
+<         "is-shared-array-buffer": "^1.0.2"
+---
+>         "es-abstract": "^1.23.5",
+>         "es-errors": "^1.3.0",
+>         "get-intrinsic": "^1.2.6",
+>         "is-array-buffer": "^3.0.4"
+13706a13728,13736
+>     "node_modules/async-function": {
+>       "version": "1.0.0",
+>       "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz",
+>       "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==",
+>       "license": "MIT",
+>       "engines": {
+>         "node": ">= 0.4"
+>       }
+>     },
+14255,14257c14285,14287
+<       "version": "4.0.1",
+<       "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.0.1.tgz",
+<       "integrity": "sha512-ilQs4fm/l9eMfWY2dY0WCIUplSUp7U0CT1vrqMg1MUdeZl4fypu5UP0XcDBK5WBQPJAKP1b7XEodISmekH/CEg==",
+---
+>       "version": "4.1.5",
+>       "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.5.tgz",
+>       "integrity": "sha512-1zccWBMypln0jEE05LzZt+V/8y8AQsQQqxtklqaIyg5nu6OAYFhZxPXinJTSG+kU5qyNmeLgcn9AW7eHiCHVLA==",
+14261c14291
+<         "bare-events": "^2.0.0",
+---
+>         "bare-events": "^2.5.4",
+14263c14293
+<         "bare-stream": "^2.0.0"
+---
+>         "bare-stream": "^2.6.4"
+14266c14296,14304
+<         "bare": ">=1.7.0"
+---
+>         "bare": ">=1.16.0"
+>       },
+>       "peerDependencies": {
+>         "bare-buffer": "*"
+>       },
+>       "peerDependenciesMeta": {
+>         "bare-buffer": {
+>           "optional": true
+>         }
+14270,14272c14308,14310
+<       "version": "3.6.0",
+<       "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.0.tgz",
+<       "integrity": "sha512-BUrFS5TqSBdA0LwHop4OjPJwisqxGy6JsWVqV6qaFoe965qqtaKfDzHY5T2YA1gUL0ZeeQeA+4BBc1FJTcHiPw==",
+---
+>       "version": "3.6.1",
+>       "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz",
+>       "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==",
+15110,15112c15148,15151
+<       "version": "1.0.7",
+<       "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+<       "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+---
+>       "version": "1.0.8",
+>       "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
+>       "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
+>       "license": "MIT",
+15113a15153
+>         "call-bind-apply-helpers": "^1.0.0",
+15115,15116d15154
+<         "es-errors": "^1.3.0",
+<         "function-bind": "^1.1.2",
+15118c15156,15185
+<         "set-function-length": "^1.2.1"
+---
+>         "set-function-length": "^1.2.2"
+>       },
+>       "engines": {
+>         "node": ">= 0.4"
+>       },
+>       "funding": {
+>         "url": "https://github.com/sponsors/ljharb"
+>       }
+>     },
+>     "node_modules/call-bind-apply-helpers": {
+>       "version": "1.0.2",
+>       "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+>       "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+>       "license": "MIT",
+>       "dependencies": {
+>         "es-errors": "^1.3.0",
+>         "function-bind": "^1.1.2"
+>       },
+>       "engines": {
+>         "node": ">= 0.4"
+>       }
+>     },
+>     "node_modules/call-bound": {
+>       "version": "1.0.4",
+>       "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
+>       "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+>       "license": "MIT",
+>       "dependencies": {
+>         "call-bind-apply-helpers": "^1.0.2",
+>         "get-intrinsic": "^1.3.0"
+15423c15490,15491
+<       "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
+---
+>       "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
+>       "license": "ISC"
+15751,15756c15819,15822
+<       "version": "4.1.1",
+<       "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
+<       "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+<       "engines": {
+<         "node": ">= 6"
+<       }
+---
+>       "version": "2.11.0",
+>       "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
+>       "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==",
+>       "license": "MIT"
+15871,15873c15937,15939
+<       "version": "1.6.2",
+<       "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+<       "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+---
+>       "version": "2.0.0",
+>       "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
+>       "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
+15875c15941
+<         "node >= 0.8"
+---
+>         "node >= 6.0"
+15876a15943
+>       "license": "MIT",
+15880c15947
+<         "readable-stream": "^2.2.2",
+---
+>         "readable-stream": "^3.0.2",
+15884,15910d15950
+<     "node_modules/concat-stream/node_modules/isarray": {
+<       "version": "1.0.0",
+<       "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+<       "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+<     },
+<     "node_modules/concat-stream/node_modules/readable-stream": {
+<       "version": "2.3.8",
+<       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+<       "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+<       "dependencies": {
+<         "core-util-is": "~1.0.0",
+<         "inherits": "~2.0.3",
+<         "isarray": "~1.0.0",
+<         "process-nextick-args": "~2.0.0",
+<         "safe-buffer": "~5.1.1",
+<         "string_decoder": "~1.1.1",
+<         "util-deprecate": "~1.0.1"
+<       }
+<     },
+<     "node_modules/concat-stream/node_modules/string_decoder": {
+<       "version": "1.1.1",
+<       "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+<       "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+<       "dependencies": {
+<         "safe-buffer": "~5.1.0"
+<       }
+<     },
+16125c16165,16166
+<       "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw=="
+---
+>       "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==",
+>       "license": "MIT"
+16337a16379,16392
+>     "node_modules/cpu-features": {
+>       "version": "0.0.10",
+>       "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.10.tgz",
+>       "integrity": "sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA==",
+>       "hasInstallScript": true,
+>       "optional": true,
+>       "dependencies": {
+>         "buildcheck": "~0.0.6",
+>         "nan": "^2.19.0"
+>       },
+>       "engines": {
+>         "node": ">=10.0.0"
+>       }
+>     },
+17268,17270c17323,17325
+<       "version": "1.0.1",
+<       "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
+<       "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==",
+---
+>       "version": "1.0.2",
+>       "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz",
+>       "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==",
+17273c17328
+<         "call-bind": "^1.0.6",
+---
+>         "call-bound": "^1.0.3",
+17275c17330
+<         "is-data-view": "^1.0.1"
+---
+>         "is-data-view": "^1.0.2"
+17285,17287c17340,17342
+<       "version": "1.0.1",
+<       "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz",
+<       "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==",
+---
+>       "version": "1.0.2",
+>       "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz",
+>       "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==",
+17290c17345
+<         "call-bind": "^1.0.7",
+---
+>         "call-bound": "^1.0.3",
+17292c17347
+<         "is-data-view": "^1.0.1"
+---
+>         "is-data-view": "^1.0.2"
+17298c17353
+<         "url": "https://github.com/sponsors/ljharb"
+---
+>         "url": "https://github.com/sponsors/inspect-js"
+17302,17304c17357,17359
+<       "version": "1.0.0",
+<       "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz",
+<       "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==",
+---
+>       "version": "1.0.1",
+>       "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz",
+>       "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==",
+17307c17362
+<         "call-bind": "^1.0.6",
+---
+>         "call-bound": "^1.0.2",
+17666a17722,17731
+>     "node_modules/dezalgo": {
+>       "version": "1.0.4",
+>       "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
+>       "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==",
+>       "license": "ISC",
+>       "dependencies": {
+>         "asap": "^2.0.0",
+>         "wrappy": "1"
+>       }
+>     },
+17725a17791,17872
+>     "node_modules/docker-modem": {
+>       "version": "5.0.6",
+>       "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-5.0.6.tgz",
+>       "integrity": "sha512-ens7BiayssQz/uAxGzH8zGXCtiV24rRWXdjNha5V4zSOcxmAZsfGVm/PPFbwQdqEkDnhG+SyR9E3zSHUbOKXBQ==",
+>       "license": "Apache-2.0",
+>       "dependencies": {
+>         "debug": "^4.1.1",
+>         "readable-stream": "^3.5.0",
+>         "split-ca": "^1.0.1",
+>         "ssh2": "^1.15.0"
+>       },
+>       "engines": {
+>         "node": ">= 8.0"
+>       }
+>     },
+>     "node_modules/dockerode": {
+>       "version": "4.0.7",
+>       "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-4.0.7.tgz",
+>       "integrity": "sha512-R+rgrSRTRdU5mH14PZTCPZtW/zw3HDWNTS/1ZAQpL/5Upe/ye5K9WQkIysu4wBoiMwKynsz0a8qWuGsHgEvSAA==",
+>       "license": "Apache-2.0",
+>       "dependencies": {
+>         "@balena/dockerignore": "^1.0.2",
+>         "@grpc/grpc-js": "^1.11.1",
+>         "@grpc/proto-loader": "^0.7.13",
+>         "docker-modem": "^5.0.6",
+>         "protobufjs": "^7.3.2",
+>         "tar-fs": "~2.1.2",
+>         "uuid": "^10.0.0"
+>       },
+>       "engines": {
+>         "node": ">= 8.0"
+>       }
+>     },
+>     "node_modules/dockerode/node_modules/protobufjs": {
+>       "version": "7.5.3",
+>       "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.3.tgz",
+>       "integrity": "sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw==",
+>       "hasInstallScript": true,
+>       "license": "BSD-3-Clause",
+>       "dependencies": {
+>         "@protobufjs/aspromise": "^1.1.2",
+>         "@protobufjs/base64": "^1.1.2",
+>         "@protobufjs/codegen": "^2.0.4",
+>         "@protobufjs/eventemitter": "^1.1.0",
+>         "@protobufjs/fetch": "^1.1.0",
+>         "@protobufjs/float": "^1.0.2",
+>         "@protobufjs/inquire": "^1.1.0",
+>         "@protobufjs/path": "^1.1.2",
+>         "@protobufjs/pool": "^1.1.0",
+>         "@protobufjs/utf8": "^1.1.0",
+>         "@types/node": ">=13.7.0",
+>         "long": "^5.0.0"
+>       },
+>       "engines": {
+>         "node": ">=12.0.0"
+>       }
+>     },
+>     "node_modules/dockerode/node_modules/tar-fs": {
+>       "version": "2.1.3",
+>       "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.3.tgz",
+>       "integrity": "sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==",
+>       "license": "MIT",
+>       "dependencies": {
+>         "chownr": "^1.1.1",
+>         "mkdirp-classic": "^0.5.2",
+>         "pump": "^3.0.0",
+>         "tar-stream": "^2.1.4"
+>       }
+>     },
+>     "node_modules/dockerode/node_modules/uuid": {
+>       "version": "10.0.0",
+>       "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz",
+>       "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==",
+>       "funding": [
+>         "https://github.com/sponsors/broofa",
+>         "https://github.com/sponsors/ctavan"
+>       ],
+>       "license": "MIT",
+>       "bin": {
+>         "uuid": "dist/bin/uuid"
+>       }
+>     },
+17926a18074,18087
+>     "node_modules/dunder-proto": {
+>       "version": "1.0.1",
+>       "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+>       "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+>       "license": "MIT",
+>       "dependencies": {
+>         "call-bind-apply-helpers": "^1.0.1",
+>         "es-errors": "^1.3.0",
+>         "gopd": "^1.2.0"
+>       },
+>       "engines": {
+>         "node": ">= 0.4"
+>       }
+>     },
+18212,18214c18373,18375
+<       "version": "1.23.3",
+<       "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz",
+<       "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==",
+---
+>       "version": "1.24.0",
+>       "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz",
+>       "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==",
+18217,18218c18378,18379
+<         "array-buffer-byte-length": "^1.0.1",
+<         "arraybuffer.prototype.slice": "^1.0.3",
+---
+>         "array-buffer-byte-length": "^1.0.2",
+>         "arraybuffer.prototype.slice": "^1.0.4",
+18220,18224c18381,18386
+<         "call-bind": "^1.0.7",
+<         "data-view-buffer": "^1.0.1",
+<         "data-view-byte-length": "^1.0.1",
+<         "data-view-byte-offset": "^1.0.0",
+<         "es-define-property": "^1.0.0",
+---
+>         "call-bind": "^1.0.8",
+>         "call-bound": "^1.0.4",
+>         "data-view-buffer": "^1.0.2",
+>         "data-view-byte-length": "^1.0.2",
+>         "data-view-byte-offset": "^1.0.1",
+>         "es-define-property": "^1.0.1",
+18226,18233c18388,18396
+<         "es-object-atoms": "^1.0.0",
+<         "es-set-tostringtag": "^2.0.3",
+<         "es-to-primitive": "^1.2.1",
+<         "function.prototype.name": "^1.1.6",
+<         "get-intrinsic": "^1.2.4",
+<         "get-symbol-description": "^1.0.2",
+<         "globalthis": "^1.0.3",
+<         "gopd": "^1.0.1",
+---
+>         "es-object-atoms": "^1.1.1",
+>         "es-set-tostringtag": "^2.1.0",
+>         "es-to-primitive": "^1.3.0",
+>         "function.prototype.name": "^1.1.8",
+>         "get-intrinsic": "^1.3.0",
+>         "get-proto": "^1.0.1",
+>         "get-symbol-description": "^1.1.0",
+>         "globalthis": "^1.0.4",
+>         "gopd": "^1.2.0",
+18235,18236c18398,18399
+<         "has-proto": "^1.0.3",
+<         "has-symbols": "^1.0.3",
+---
+>         "has-proto": "^1.2.0",
+>         "has-symbols": "^1.1.0",
+18238,18239c18401,18402
+<         "internal-slot": "^1.0.7",
+<         "is-array-buffer": "^3.0.4",
+---
+>         "internal-slot": "^1.1.0",
+>         "is-array-buffer": "^3.0.5",
+18241c18404
+<         "is-data-view": "^1.0.1",
+---
+>         "is-data-view": "^1.0.2",
+18243,18248c18406,18413
+<         "is-regex": "^1.1.4",
+<         "is-shared-array-buffer": "^1.0.3",
+<         "is-string": "^1.0.7",
+<         "is-typed-array": "^1.1.13",
+<         "is-weakref": "^1.0.2",
+<         "object-inspect": "^1.13.1",
+---
+>         "is-regex": "^1.2.1",
+>         "is-set": "^2.0.3",
+>         "is-shared-array-buffer": "^1.0.4",
+>         "is-string": "^1.1.1",
+>         "is-typed-array": "^1.1.15",
+>         "is-weakref": "^1.1.1",
+>         "math-intrinsics": "^1.1.0",
+>         "object-inspect": "^1.13.4",
+18250,18255c18415,18424
+<         "object.assign": "^4.1.5",
+<         "regexp.prototype.flags": "^1.5.2",
+<         "safe-array-concat": "^1.1.2",
+<         "safe-regex-test": "^1.0.3",
+<         "string.prototype.trim": "^1.2.9",
+<         "string.prototype.trimend": "^1.0.8",
+---
+>         "object.assign": "^4.1.7",
+>         "own-keys": "^1.0.1",
+>         "regexp.prototype.flags": "^1.5.4",
+>         "safe-array-concat": "^1.1.3",
+>         "safe-push-apply": "^1.0.0",
+>         "safe-regex-test": "^1.1.0",
+>         "set-proto": "^1.0.0",
+>         "stop-iteration-iterator": "^1.1.0",
+>         "string.prototype.trim": "^1.2.10",
+>         "string.prototype.trimend": "^1.0.9",
+18257,18262c18426,18431
+<         "typed-array-buffer": "^1.0.2",
+<         "typed-array-byte-length": "^1.0.1",
+<         "typed-array-byte-offset": "^1.0.2",
+<         "typed-array-length": "^1.0.6",
+<         "unbox-primitive": "^1.0.2",
+<         "which-typed-array": "^1.1.15"
+---
+>         "typed-array-buffer": "^1.0.3",
+>         "typed-array-byte-length": "^1.0.3",
+>         "typed-array-byte-offset": "^1.0.4",
+>         "typed-array-length": "^1.0.7",
+>         "unbox-primitive": "^1.1.0",
+>         "which-typed-array": "^1.1.19"
+18272,18277c18441,18444
+<       "version": "1.0.0",
+<       "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+<       "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+<       "dependencies": {
+<         "get-intrinsic": "^1.2.4"
+<       },
+---
+>       "version": "1.0.1",
+>       "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+>       "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+>       "license": "MIT",
+18318,18320c18485,18487
+<       "version": "1.0.0",
+<       "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
+<       "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
+---
+>       "version": "1.1.1",
+>       "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+>       "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+18330,18332c18497,18499
+<       "version": "2.0.3",
+<       "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz",
+<       "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==",
+---
+>       "version": "2.1.0",
+>       "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
+>       "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
+18335c18502,18503
+<         "get-intrinsic": "^1.2.4",
+---
+>         "es-errors": "^1.3.0",
+>         "get-intrinsic": "^1.2.6",
+18337c18505
+<         "hasown": "^2.0.1"
+---
+>         "hasown": "^2.0.2"
+18353,18355c18521,18524
+<       "version": "1.2.1",
+<       "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+<       "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+---
+>       "version": "1.3.0",
+>       "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz",
+>       "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==",
+>       "license": "MIT",
+18357,18359c18526,18528
+<         "is-callable": "^1.1.4",
+<         "is-date-object": "^1.0.1",
+<         "is-symbol": "^1.0.2"
+---
+>         "is-callable": "^1.2.7",
+>         "is-date-object": "^1.0.5",
+>         "is-symbol": "^1.0.4"
+20463a20633,20638
+>     "node_modules/fast-safe-stringify": {
+>       "version": "2.1.1",
+>       "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
+>       "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==",
+>       "license": "MIT"
+>     },
+20933,20935c21108,21111
+<       "version": "0.3.3",
+<       "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+<       "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+---
+>       "version": "0.3.5",
+>       "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz",
+>       "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==",
+>       "license": "MIT",
+20937c21113,21119
+<         "is-callable": "^1.1.3"
+---
+>         "is-callable": "^1.2.7"
+>       },
+>       "engines": {
+>         "node": ">= 0.4"
+>       },
+>       "funding": {
+>         "url": "https://github.com/sponsors/ljharb"
+21100a21283
+>       "license": "MIT",
+21272,21274c21455,21458
+<       "version": "1.1.6",
+<       "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
+<       "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
+---
+>       "version": "1.1.8",
+>       "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz",
+>       "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==",
+>       "license": "MIT",
+21276,21279c21460,21465
+<         "call-bind": "^1.0.2",
+<         "define-properties": "^1.2.0",
+<         "es-abstract": "^1.22.1",
+<         "functions-have-names": "^1.2.3"
+---
+>         "call-bind": "^1.0.8",
+>         "call-bound": "^1.0.3",
+>         "define-properties": "^1.2.1",
+>         "functions-have-names": "^1.2.3",
+>         "hasown": "^2.0.2",
+>         "is-callable": "^1.2.7"
+21385,21387c21571,21574
+<       "version": "1.2.4",
+<       "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+<       "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+---
+>       "version": "1.3.0",
+>       "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+>       "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+>       "license": "MIT",
+21388a21576,21577
+>         "call-bind-apply-helpers": "^1.0.2",
+>         "es-define-property": "^1.0.1",
+21389a21579
+>         "es-object-atoms": "^1.1.1",
+21391,21393c21581,21585
+<         "has-proto": "^1.0.1",
+<         "has-symbols": "^1.0.3",
+<         "hasown": "^2.0.0"
+---
+>         "get-proto": "^1.0.1",
+>         "gopd": "^1.2.0",
+>         "has-symbols": "^1.1.0",
+>         "hasown": "^2.0.2",
+>         "math-intrinsics": "^1.1.0"
+21420a21613,21625
+>     "node_modules/get-proto": {
+>       "version": "1.0.1",
+>       "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+>       "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+>       "license": "MIT",
+>       "dependencies": {
+>         "dunder-proto": "^1.0.1",
+>         "es-object-atoms": "^1.0.0"
+>       },
+>       "engines": {
+>         "node": ">= 0.4"
+>       }
+>     },
+21437,21439c21642,21644
+<       "version": "1.0.2",
+<       "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz",
+<       "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==",
+---
+>       "version": "1.1.0",
+>       "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz",
+>       "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==",
+21442c21647
+<         "call-bind": "^1.0.5",
+---
+>         "call-bound": "^1.0.3",
+21444c21649
+<         "get-intrinsic": "^1.2.4"
+---
+>         "get-intrinsic": "^1.2.6"
+21664,21666c21869,21872
+<       "version": "1.0.3",
+<       "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
+<       "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
+---
+>       "version": "1.0.4",
+>       "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
+>       "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
+>       "license": "MIT",
+21668c21874,21875
+<         "define-properties": "^1.1.3"
+---
+>         "define-properties": "^1.2.1",
+>         "gopd": "^1.0.1"
+22055,22059c22262,22267
+<       "version": "1.0.1",
+<       "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+<       "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+<       "dependencies": {
+<         "get-intrinsic": "^1.1.3"
+---
+>       "version": "1.2.0",
+>       "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+>       "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+>       "license": "MIT",
+>       "engines": {
+>         "node": ">= 0.4"
+22079a22288
+>       "license": "MIT",
+22300,22302c22509,22511
+<       "version": "1.0.3",
+<       "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+<       "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+---
+>       "version": "1.2.0",
+>       "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz",
+>       "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==",
+22303a22513,22515
+>       "dependencies": {
+>         "dunder-proto": "^1.0.0"
+>       },
+22312,22314c22524,22527
+<       "version": "1.0.3",
+<       "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+<       "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+---
+>       "version": "1.1.0",
+>       "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+>       "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+>       "license": "MIT",
+23257,23259c23470,23472
+<       "version": "1.0.7",
+<       "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
+<       "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==",
+---
+>       "version": "1.1.0",
+>       "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz",
+>       "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==",
+23263,23264c23476,23477
+<         "hasown": "^2.0.0",
+<         "side-channel": "^1.0.4"
+---
+>         "hasown": "^2.0.2",
+>         "side-channel": "^1.1.0"
+23402,23404c23615,23617
+<       "version": "3.0.4",
+<       "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
+<       "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==",
+---
+>       "version": "3.0.5",
+>       "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz",
+>       "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==",
+23407,23408c23620,23622
+<         "call-bind": "^1.0.2",
+<         "get-intrinsic": "^1.2.1"
+---
+>         "call-bind": "^1.0.8",
+>         "call-bound": "^1.0.3",
+>         "get-intrinsic": "^1.2.6"
+23422a23637,23655
+>     "node_modules/is-async-function": {
+>       "version": "2.1.1",
+>       "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz",
+>       "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==",
+>       "license": "MIT",
+>       "dependencies": {
+>         "async-function": "^1.0.0",
+>         "call-bound": "^1.0.3",
+>         "get-proto": "^1.0.1",
+>         "has-tostringtag": "^1.0.2",
+>         "safe-regex-test": "^1.1.0"
+>       },
+>       "engines": {
+>         "node": ">= 0.4"
+>       },
+>       "funding": {
+>         "url": "https://github.com/sponsors/ljharb"
+>       }
+>     },
+23424,23426c23657,23660
+<       "version": "1.0.4",
+<       "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+<       "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+---
+>       "version": "1.1.0",
+>       "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz",
+>       "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==",
+>       "license": "MIT",
+23428c23662,23665
+<         "has-bigints": "^1.0.1"
+---
+>         "has-bigints": "^1.0.2"
+>       },
+>       "engines": {
+>         "node": ">= 0.4"
+23447,23449c23684,23687
+<       "version": "1.1.2",
+<       "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+<       "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+---
+>       "version": "1.2.2",
+>       "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz",
+>       "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==",
+>       "license": "MIT",
+23451,23452c23689,23690
+<         "call-bind": "^1.0.2",
+<         "has-tostringtag": "^1.0.0"
+---
+>         "call-bound": "^1.0.3",
+>         "has-tostringtag": "^1.0.2"
+23517,23519c23755,23757
+<       "version": "1.0.1",
+<       "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz",
+<       "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==",
+---
+>       "version": "1.0.2",
+>       "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz",
+>       "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==",
+23521a23760,23761
+>         "call-bound": "^1.0.2",
+>         "get-intrinsic": "^1.2.6",
+23532,23534c23772,23775
+<       "version": "1.0.5",
+<       "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+<       "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+---
+>       "version": "1.1.0",
+>       "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz",
+>       "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==",
+>       "license": "MIT",
+23536c23777,23778
+<         "has-tostringtag": "^1.0.0"
+---
+>         "call-bound": "^1.0.2",
+>         "has-tostringtag": "^1.0.2"
+23601a23844,23858
+>     "node_modules/is-finalizationregistry": {
+>       "version": "1.1.1",
+>       "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz",
+>       "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==",
+>       "license": "MIT",
+>       "dependencies": {
+>         "call-bound": "^1.0.3"
+>       },
+>       "engines": {
+>         "node": ">= 0.4"
+>       },
+>       "funding": {
+>         "url": "https://github.com/sponsors/ljharb"
+>       }
+>     },
+23688,23691c23945,23951
+<       "version": "2.0.2",
+<       "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
+<       "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==",
+<       "dev": true,
+---
+>       "version": "2.0.3",
+>       "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
+>       "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
+>       "license": "MIT",
+>       "engines": {
+>         "node": ">= 0.4"
+>       },
+23753,23755c24013,24016
+<       "version": "1.0.7",
+<       "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+<       "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+---
+>       "version": "1.1.1",
+>       "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz",
+>       "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==",
+>       "license": "MIT",
+23757c24018,24019
+<         "has-tostringtag": "^1.0.0"
+---
+>         "call-bound": "^1.0.3",
+>         "has-tostringtag": "^1.0.2"
+23817,23819c24079,24082
+<       "version": "1.1.4",
+<       "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+<       "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+---
+>       "version": "1.2.1",
+>       "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz",
+>       "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==",
+>       "license": "MIT",
+23821,23822c24084,24087
+<         "call-bind": "^1.0.2",
+<         "has-tostringtag": "^1.0.0"
+---
+>         "call-bound": "^1.0.2",
+>         "gopd": "^1.2.0",
+>         "has-tostringtag": "^1.0.2",
+>         "hasown": "^2.0.2"
+23832,23835c24097,24103
+<       "version": "2.0.2",
+<       "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
+<       "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==",
+<       "dev": true,
+---
+>       "version": "2.0.3",
+>       "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
+>       "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
+>       "license": "MIT",
+>       "engines": {
+>         "node": ">= 0.4"
+>       },
+23848,23850c24116,24118
+<       "version": "1.0.3",
+<       "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz",
+<       "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==",
+---
+>       "version": "1.0.4",
+>       "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz",
+>       "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==",
+23853c24121
+<         "call-bind": "^1.0.7"
+---
+>         "call-bound": "^1.0.3"
+23874,23876c24142,24145
+<       "version": "1.0.7",
+<       "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+<       "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+---
+>       "version": "1.1.1",
+>       "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz",
+>       "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==",
+>       "license": "MIT",
+23878c24147,24148
+<         "has-tostringtag": "^1.0.0"
+---
+>         "call-bound": "^1.0.3",
+>         "has-tostringtag": "^1.0.2"
+23888,23890c24158,24161
+<       "version": "1.0.4",
+<       "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+<       "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+---
+>       "version": "1.1.1",
+>       "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz",
+>       "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==",
+>       "license": "MIT",
+23892c24163,24165
+<         "has-symbols": "^1.0.2"
+---
+>         "call-bound": "^1.0.2",
+>         "has-symbols": "^1.1.0",
+>         "safe-regex-test": "^1.1.0"
+23902,23904c24175,24177
+<       "version": "1.1.13",
+<       "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
+<       "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
+---
+>       "version": "1.1.15",
+>       "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz",
+>       "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==",
+23907c24180
+<         "which-typed-array": "^1.1.14"
+---
+>         "which-typed-array": "^1.1.16"
+23943,23946c24216,24222
+<       "version": "2.0.1",
+<       "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
+<       "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==",
+<       "dev": true,
+---
+>       "version": "2.0.2",
+>       "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
+>       "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
+>       "license": "MIT",
+>       "engines": {
+>         "node": ">= 0.4"
+>       },
+23952,23954c24228,24231
+<       "version": "1.0.2",
+<       "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+<       "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+---
+>       "version": "1.1.1",
+>       "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz",
+>       "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==",
+>       "license": "MIT",
+23956c24233,24236
+<         "call-bind": "^1.0.2"
+---
+>         "call-bound": "^1.0.3"
+>       },
+>       "engines": {
+>         "node": ">= 0.4"
+23963,23966c24243,24246
+<       "version": "2.0.2",
+<       "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz",
+<       "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
+<       "dev": true,
+---
+>       "version": "2.0.4",
+>       "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz",
+>       "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==",
+>       "license": "MIT",
+23968,23969c24248,24252
+<         "call-bind": "^1.0.2",
+<         "get-intrinsic": "^1.1.1"
+---
+>         "call-bound": "^1.0.3",
+>         "get-intrinsic": "^1.2.6"
+>       },
+>       "engines": {
+>         "node": ">= 0.4"
+24543a24827
+>       "license": "MIT",
+24564a24849
+>       "license": "MIT",
+24568a24854,24862
+>     "node_modules/json-refs/node_modules/commander": {
+>       "version": "4.1.1",
+>       "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
+>       "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+>       "license": "MIT",
+>       "engines": {
+>         "node": ">= 6"
+>       }
+>     },
+24572a24867
+>       "license": "MIT",
+24584a24880
+>       "license": "MIT",
+25175,25187d25470
+<     "node_modules/less/node_modules/mime": {
+<       "version": "1.6.0",
+<       "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+<       "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+<       "dev": true,
+<       "optional": true,
+<       "bin": {
+<         "mime": "cli.js"
+<       },
+<       "engines": {
+<         "node": ">=4"
+<       }
+<     },
+25335c25618,25619
+<       "integrity": "sha1-6I7suS4ruEyQZWEv2VigcZzUf5Q="
+---
+>       "integrity": "sha512-tC2aLC7bbkDXKNrjDu9OLiVx9pFIvjinID2eD9PzNdAQGZScWUd/h8faqOw5d6oLsOvFRCRbz1ASoB+deyMVUw==",
+>       "license": "MIT"
+25340c25624,25625
+<       "integrity": "sha1-6UC5690nwyfgqNqxtVkWxTQelXU=",
+---
+>       "integrity": "sha512-VGHm6DH+1UiuafQdE/DNMqxOcSyhRu0xO9+jPDq7xITRn5YOorGrHVQmavMVXCYmTm80YRTZZCn/jTW7MokwLg==",
+>       "license": "MIT",
+25351c25636,25637
+<       "integrity": "sha1-MPgj5X4X43NdODvWK2Czh1Q7QYY=",
+---
+>       "integrity": "sha512-+zJVXs0VxC/Au+/7foiKzw8UaWvfSfPh20XhqK/6HFQiUeclL5fz05zY7G9yDAFItAKKZwB4cgpzGvxiwuG1wQ==",
+>       "license": "MIT",
+25366c25652,25653
+<       "integrity": "sha1-+Ob1tXip405UEXm1a47uv0oofgg=",
+---
+>       "integrity": "sha512-8JJ3FnMPm54t3BwPLk8q8mPyQKQXm/rt9df+awr4NGtyJrtcCXM3Of1I86S6jVy1b4yAyFBb8wbKPEauuqzRmQ==",
+>       "license": "MIT",
+25376c25663,25664
+<       "integrity": "sha1-fQsmdknLKeehOdAQO3wR+uhOSFE=",
+---
+>       "integrity": "sha512-SLczhg860fGW7AKlYcuOFstDtJuQhaANlJ4Y/jrOoRxhmVtK41vbJDH3OefVRSRkSCQo4HI82QVkAVsoGa5gSw==",
+>       "license": "MIT",
+25387c25675,25676
+<       "integrity": "sha1-TTHy595+E0+/KAN2K4FQsyUZZm8=",
+---
+>       "integrity": "sha512-x2ja1fa/qmzbizuXgVM4QAP9svtMbdxjG8Anl9bCeDAwLOVQ1vLrA0hLb/NkpbGi9evjtkl0aWLTEoOlUdBPQA==",
+>       "license": "MIT",
+25398c25687,25688
+<       "integrity": "sha1-UdaVeXPaTtVW43KQ2MGhjFPeFgc=",
+---
+>       "integrity": "sha512-5TCfLt1haQpsa7bgLYRKNNE4yqhO4ZxIayN1btQmazMchO6Q8JYFRMqbJ3W+uNmMm4R0Jw7KGkZX5YfDDnywuw==",
+>       "license": "MIT",
+25409c25699,25700
+<       "integrity": "sha1-+vH3+BD6mFolHCGHQESBCUg55e4=",
+---
+>       "integrity": "sha512-iIrScwY3atGvLVbQL/+CNUznaPwBJg78S/JO4cTUFXRkRsZgEBhscB27cVoT4tsIOUyFu/5M/0umfHNGJ6wYwg==",
+>       "license": "MIT",
+25417c25708,25709
+<       "integrity": "sha1-PqZAS3hKe+g2x7V1gOHN95sUgyw="
+---
+>       "integrity": "sha512-BOlKGKNHhCHswGOWtmVb5zBygyxN7EmTuzVOSQI6QSoGhG+kvv71gICFS1TBpnqvT1n53txK8CDK3u5D2/GZxQ==",
+>       "license": "MIT"
+25422c25714,25715
+<       "integrity": "sha1-nUgvRjuOZq++WcLBTtsRcGAXIzQ="
+---
+>       "integrity": "sha512-xKDem1BxoIfcCtaJHotjtyfdIvZO9qrF+mv3G1+ngQmaI3MJt3Qm46i9HLk/CbzABbavUrr1/EomQT8KxtsrYA==",
+>       "license": "MIT"
+25427c25720,25721
+<       "integrity": "sha1-fAt/admKH3ZSn4kLDNsbTf7BHBE="
+---
+>       "integrity": "sha512-XpqGh1e7hhkOzftBfWE7zt+Yn9mVHFkDhicVttvKLsoCMLVVL+xTQjfjB4X4vtznauxv0QZ5ZAeqjvat0dh62Q==",
+>       "license": "MIT"
+25432c25726,25727
+<       "integrity": "sha1-phOWMNdtFTawfdyAliiJsIL2pkE=",
+---
+>       "integrity": "sha512-wwCwWX8PK/mYR5VZjcU5JFl6py/qrfLGMxzpKOfSqgA1PaZ6Z625CZLCxH1KsqyxSkOFmNm+mEYjeDpXlM4hrg==",
+>       "license": "MIT",
+25441c25736,25737
+<       "integrity": "sha1-98IAzRuS7yNrOZ7s9zxkjReqlNI=",
+---
+>       "integrity": "sha512-Vx0XKzpg2DFbQw4wrp1xSWd2sfl3W/BG6bucSRZmftS1AzbWRemCmBQDxyQTNhlLNec428PXkuuja+VNBZgu2A==",
+>       "license": "MIT",
+25450c25746,25747
+<       "integrity": "sha1-bpzJZm/wgfC1psl4uD4kLmlJ0gM=",
+---
+>       "integrity": "sha512-lBrglYxLD/6KAJ8IEa5Lg+YHgNAL7FyKqXg4XOUI+Du/vtniLs1ZqS+yHNKPkK54waAgkdUnDOYaWf+rv4B+AA==",
+>       "license": "MIT",
+25458c25755,25756
+<       "integrity": "sha1-dFz0GlNZexj2iImFREBe+isG2Q8="
+---
+>       "integrity": "sha512-+odPJa4PE2UgYnQgJgkLs0UD03QU78R2ivhrFnG9GdtYOZdE6ObxOj7KiUEUlqOOgatFT+ZqSypFjDSduTigKg==",
+>       "license": "MIT"
+25463c25761,25762
+<       "integrity": "sha1-hMOVlt1xGBqXsGUpE6fJZ15Jsao=",
+---
+>       "integrity": "sha512-AqQ4AJz5buSx9ELXWt5dONwJyVPd4NTADMKhoVYWCugjoVf172/LpvVhwmSJn4g8/Dc0S8hxTe8rt5Dob3X9KQ==",
+>       "license": "MIT",
+25473c25772,25773
+<       "integrity": "sha1-XRn6AFyMTSNvr0dCx7eh/Kvikmc=",
+---
+>       "integrity": "sha512-hn2VWYZ+N9aYncRad4jORvlGgpFrn+axnPIWRvFxjk6CWcZH5b5alI8EymYsHITI23Z9wrW/+ORq+azrVFpOfw==",
+>       "license": "MIT",
+25487c25787,25788
+<       "integrity": "sha1-8pIDtAsS/uCkXTYxZIJZvrq8eGg=",
+---
+>       "integrity": "sha512-zj5vReFLkR+lJOBKP1wyteZ13zut/KSmXtdCBgxcy/m4UTitcBxpeVZT7gwk8BQrztPI5dIgO4bhBppXV4rpTQ==",
+>       "license": "MIT",
+25517c25818,25819
+<       "integrity": "sha1-/j/Do0yGyUyrb5UiVgKCdB4BYwk=",
+---
+>       "integrity": "sha512-AvOobAkE7qBtIiHU5QHQIfveWH5Usr9pIcFIzBv7u4S6bvb3FWpFrh9ltqBY7UeL5lw6e8d+SggiUXQVyh+FpA==",
+>       "license": "MIT",
+25526c25828,25829
+<       "integrity": "sha1-eLQer+FAX6lmRZ6kGT/VAtCEUks=",
+---
+>       "integrity": "sha512-VC+CKm/zSs5t3i/MHv71HZoQphuqOvez1xhjWBwHU5zAbsCYrqwHr+MyQyMk14HzA3hSRNA5lCqDMSw5G2Qscg==",
+>       "license": "MIT",
+25547c25850,25851
+<       "integrity": "sha1-ZpTP+mX++TH3wxzobHRZfPVg9PE="
+---
+>       "integrity": "sha512-VRYX+8XipeLjorag5bz3YBBRJ+5kj8hVBzfnaHgXPZAVTYowBdY5l0M5ZnOmlAMCOXBFabQtm7f5VqjMKEji0w==",
+>       "license": "MIT"
+25562c25866,25867
+<       "integrity": "sha1-tSoybB9i9tfac6MdVAHfbvRPD6E=",
+---
+>       "integrity": "sha512-yRDd0z+APziDqbk0MqR6Qfwj/Qn3jLxFJbI9U8MuvdTnqIXdZ5YXyGLnwuzCpZmjr26F1GNOjKLMMZ10i/wy6A==",
+>       "license": "MIT",
+25575c25880,25882
+<       "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
+---
+>       "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==",
+>       "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.",
+>       "license": "MIT"
+25580c25887,25888
+<       "integrity": "sha1-LP1XXHPkmKtX4xm3f6Aq3vE6lNE="
+---
+>       "integrity": "sha512-6XcAB3izeQxPOQQNAJbbdjXbvWEt2Pn9ezPrjr4CwoLwmqsLVbsiEXD19cmmt4mbzOCOCdHzOQiUivUOJLra7w==",
+>       "license": "MIT"
+25595c25903,25904
+<       "integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=",
+---
+>       "integrity": "sha512-sTebg2a1PoicYEZXD5PBdQcTlIJ6hUslrlWr7iV0O7n+i4596s2NQ9I5CaZ5FbXSfya/9WQsrYLANUJv9paYVA==",
+>       "license": "MIT",
+25613c25922,25923
+<       "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=",
+---
+>       "integrity": "sha512-ZpJhwvUXHSNL5wYd1RM6CUa2ZuqorG9ngoJ9Ix5Cce+uX7I5O/E06FCJdhSZ33b5dVyeQDnIlWH7B2s5uByZ7g==",
+>       "license": "MIT",
+25634c25944,25945
+<       "integrity": "sha1-T7VPgWZS5a4Q6PcvcXo4jHMmU4o="
+---
+>       "integrity": "sha512-uNcV98/blRhInPUGQEnj9ekXXfG+q+rfoNSFZgl/eBfog9yBDW9gfUv2AHX/rAF7zZRlzWhbslGhbGQFZlCkZA==",
+>       "license": "MIT"
+25650c25961,25962
+<       "integrity": "sha1-Mg4LZwMWc8KNeiu12eAzGkUkBRU=",
+---
+>       "integrity": "sha512-6SwqWwGFHhTXEiqB/yQgu8FYd//tm786d49y7kizHVCJH7zdzs191UQn3ES3tkkDbUddNRfkCRYqJFHtbLnbCw==",
+>       "license": "MIT",
+25997a26310,26318
+>     "node_modules/math-intrinsics": {
+>       "version": "1.1.0",
+>       "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+>       "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+>       "license": "MIT",
+>       "engines": {
+>         "node": ">= 0.4"
+>       }
+>     },
+26577a26899,26910
+>     "node_modules/mime": {
+>       "version": "1.6.0",
+>       "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+>       "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+>       "license": "MIT",
+>       "bin": {
+>         "mime": "cli.js"
+>       },
+>       "engines": {
+>         "node": ">=4"
+>       }
+>     },
+26579,26581c26912,26915
+<       "version": "1.51.0",
+<       "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz",
+<       "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==",
+---
+>       "version": "1.52.0",
+>       "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+>       "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+>       "license": "MIT",
+26597,26599c26931,26934
+<       "version": "2.1.34",
+<       "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz",
+<       "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==",
+---
+>       "version": "2.1.35",
+>       "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+>       "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+>       "license": "MIT",
+26601c26936
+<         "mime-db": "1.51.0"
+---
+>         "mime-db": "1.52.0"
+26792c27127,27128
+<       "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="
+---
+>       "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
+>       "license": "MIT"
+27248,27250c27584,27586
+<       "version": "2.0.0",
+<       "resolved": "https://registry.npmjs.org/multer/-/multer-2.0.0.tgz",
+<       "integrity": "sha512-bS8rPZurbAuHGAnApbM9d4h1wSoYqrOqkE+6a64KLMK9yWU7gJXBDDVklKQ3TPi9DRb85cRs6yXaC0+cjxRtRg==",
+---
+>       "version": "2.0.1",
+>       "resolved": "https://registry.npmjs.org/multer/-/multer-2.0.1.tgz",
+>       "integrity": "sha512-Ug8bXeTIUlxurg8xLTEskKShvcKDZALo1THEX5E41pYCD2sCVub5/kIRIGqWNoqV6szyLyQKV6mD4QUrWE5GCQ==",
+27254,27256c27590,27592
+<         "busboy": "^1.0.0",
+<         "concat-stream": "^1.5.2",
+<         "mkdirp": "^0.5.4",
+---
+>         "busboy": "^1.6.0",
+>         "concat-stream": "^2.0.0",
+>         "mkdirp": "^0.5.6",
+27258,27259c27594,27595
+<         "type-is": "^1.6.4",
+<         "xtend": "^4.0.0"
+---
+>         "type-is": "^1.6.18",
+>         "xtend": "^4.0.2"
+27384c27720,27721
+<       "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE="
+---
+>       "integrity": "sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==",
+>       "license": "MIT"
+27842,27844c28179,28185
+<       "version": "1.13.1",
+<       "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
+<       "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+---
+>       "version": "1.13.4",
+>       "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
+>       "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
+>       "license": "MIT",
+>       "engines": {
+>         "node": ">= 0.4"
+>       },
+27886,27888c28227,28229
+<       "version": "4.1.5",
+<       "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
+<       "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
+---
+>       "version": "4.1.7",
+>       "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz",
+>       "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==",
+27891c28232,28233
+<         "call-bind": "^1.0.5",
+---
+>         "call-bind": "^1.0.8",
+>         "call-bound": "^1.0.3",
+27893c28235,28236
+<         "has-symbols": "^1.0.3",
+---
+>         "es-object-atoms": "^1.0.0",
+>         "has-symbols": "^1.1.0",
+28129a28473,28489
+>     "node_modules/own-keys": {
+>       "version": "1.0.1",
+>       "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz",
+>       "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==",
+>       "license": "MIT",
+>       "dependencies": {
+>         "get-intrinsic": "^1.2.6",
+>         "object-keys": "^1.1.1",
+>         "safe-push-apply": "^1.0.0"
+>       },
+>       "engines": {
+>         "node": ">= 0.4"
+>       },
+>       "funding": {
+>         "url": "https://github.com/sponsors/ljharb"
+>       }
+>     },
+28684,28686c29044,29047
+<       "version": "1.0.10",
+<       "resolved": "https://registry.npmjs.org/path-loader/-/path-loader-1.0.10.tgz",
+<       "integrity": "sha512-CMP0v6S6z8PHeJ6NFVyVJm6WyJjIwFvyz2b0n2/4bKdS/0uZa/9sKUlYZzubrn3zuDRU0zIuEDX9DZYQ2ZI8TA==",
+---
+>       "version": "1.0.12",
+>       "resolved": "https://registry.npmjs.org/path-loader/-/path-loader-1.0.12.tgz",
+>       "integrity": "sha512-n7oDG8B+k/p818uweWrOixY9/Dsr89o2TkCm6tOTex3fpdo2+BFDgR+KpB37mGKBRsBAlR8CIJMFN0OEy/7hIQ==",
+>       "license": "MIT",
+28689c29050,29129
+<         "superagent": "^3.8.3"
+---
+>         "superagent": "^7.1.6"
+>       }
+>     },
+>     "node_modules/path-loader/node_modules/debug": {
+>       "version": "4.4.1",
+>       "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
+>       "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
+>       "license": "MIT",
+>       "dependencies": {
+>         "ms": "^2.1.3"
+>       },
+>       "engines": {
+>         "node": ">=6.0"
+>       },
+>       "peerDependenciesMeta": {
+>         "supports-color": {
+>           "optional": true
+>         }
+>       }
+>     },
+>     "node_modules/path-loader/node_modules/formidable": {
+>       "version": "2.1.5",
+>       "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.5.tgz",
+>       "integrity": "sha512-Oz5Hwvwak/DCaXVVUtPn4oLMLLy1CdclLKO1LFgU7XzDpVMUU5UjlSLpGMocyQNNk8F6IJW9M/YdooSn2MRI+Q==",
+>       "license": "MIT",
+>       "dependencies": {
+>         "@paralleldrive/cuid2": "^2.2.2",
+>         "dezalgo": "^1.0.4",
+>         "once": "^1.4.0",
+>         "qs": "^6.11.0"
+>       },
+>       "funding": {
+>         "url": "https://ko-fi.com/tunnckoCore/commissions"
+>       }
+>     },
+>     "node_modules/path-loader/node_modules/mime": {
+>       "version": "2.6.0",
+>       "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
+>       "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
+>       "license": "MIT",
+>       "bin": {
+>         "mime": "cli.js"
+>       },
+>       "engines": {
+>         "node": ">=4.0.0"
+>       }
+>     },
+>     "node_modules/path-loader/node_modules/semver": {
+>       "version": "7.7.2",
+>       "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
+>       "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+>       "license": "ISC",
+>       "bin": {
+>         "semver": "bin/semver.js"
+>       },
+>       "engines": {
+>         "node": ">=10"
+>       }
+>     },
+>     "node_modules/path-loader/node_modules/superagent": {
+>       "version": "7.1.6",
+>       "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.6.tgz",
+>       "integrity": "sha512-gZkVCQR1gy/oUXr+kxJMLDjla434KmSOKbx5iGD30Ql+AkJQ/YlPKECJy2nhqOsHLjGHzoDTXNSjhnvWhzKk7g==",
+>       "deprecated": "Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net",
+>       "license": "MIT",
+>       "dependencies": {
+>         "component-emitter": "^1.3.0",
+>         "cookiejar": "^2.1.3",
+>         "debug": "^4.3.4",
+>         "fast-safe-stringify": "^2.1.1",
+>         "form-data": "^4.0.0",
+>         "formidable": "^2.0.1",
+>         "methods": "^1.1.2",
+>         "mime": "2.6.0",
+>         "qs": "^6.10.3",
+>         "readable-stream": "^3.6.0",
+>         "semver": "^7.3.7"
+>       },
+>       "engines": {
+>         "node": ">=6.4.0 <13 || >=14"
+31146a31587,31608
+>     "node_modules/reflect.getprototypeof": {
+>       "version": "1.0.10",
+>       "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz",
+>       "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==",
+>       "license": "MIT",
+>       "dependencies": {
+>         "call-bind": "^1.0.8",
+>         "define-properties": "^1.2.1",
+>         "es-abstract": "^1.23.9",
+>         "es-errors": "^1.3.0",
+>         "es-object-atoms": "^1.0.0",
+>         "get-intrinsic": "^1.2.7",
+>         "get-proto": "^1.0.1",
+>         "which-builtin-type": "^1.2.1"
+>       },
+>       "engines": {
+>         "node": ">= 0.4"
+>       },
+>       "funding": {
+>         "url": "https://github.com/sponsors/ljharb"
+>       }
+>     },
+31211,31213c31673,31675
+<       "version": "1.5.2",
+<       "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz",
+<       "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==",
+---
+>       "version": "1.5.4",
+>       "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz",
+>       "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==",
+31216c31678
+<         "call-bind": "^1.0.6",
+---
+>         "call-bind": "^1.0.8",
+31219c31681,31683
+<         "set-function-name": "^2.0.1"
+---
+>         "get-proto": "^1.0.1",
+>         "gopd": "^1.2.0",
+>         "set-function-name": "^2.0.2"
+31679,31681c32143,32145
+<       "version": "1.1.2",
+<       "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz",
+<       "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==",
+---
+>       "version": "1.1.3",
+>       "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz",
+>       "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==",
+31684,31686c32148,32151
+<         "call-bind": "^1.0.7",
+<         "get-intrinsic": "^1.2.4",
+<         "has-symbols": "^1.0.3",
+---
+>         "call-bind": "^1.0.8",
+>         "call-bound": "^1.0.2",
+>         "get-intrinsic": "^1.2.6",
+>         "has-symbols": "^1.1.0",
+31706a32172,32187
+>     "node_modules/safe-push-apply": {
+>       "version": "1.0.0",
+>       "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz",
+>       "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==",
+>       "license": "MIT",
+>       "dependencies": {
+>         "es-errors": "^1.3.0",
+>         "isarray": "^2.0.5"
+>       },
+>       "engines": {
+>         "node": ">= 0.4"
+>       },
+>       "funding": {
+>         "url": "https://github.com/sponsors/ljharb"
+>       }
+>     },
+31717,31719c32198,32200
+<       "version": "1.0.3",
+<       "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz",
+<       "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==",
+---
+>       "version": "1.1.0",
+>       "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz",
+>       "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==",
+31722c32203
+<         "call-bind": "^1.0.6",
+---
+>         "call-bound": "^1.0.2",
+31724c32205
+<         "is-regex": "^1.1.4"
+---
+>         "is-regex": "^1.2.1"
+32123,32133d32603
+<     "node_modules/send/node_modules/mime": {
+<       "version": "1.6.0",
+<       "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+<       "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+<       "bin": {
+<         "mime": "cli.js"
+<       },
+<       "engines": {
+<         "node": ">=4"
+<       }
+<     },
+32288,32290c32758,32761
+<       "version": "2.0.1",
+<       "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz",
+<       "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==",
+---
+>       "version": "2.0.2",
+>       "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
+>       "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
+>       "license": "MIT",
+32292c32763,32764
+<         "define-data-property": "^1.0.1",
+---
+>         "define-data-property": "^1.1.4",
+>         "es-errors": "^1.3.0",
+32294c32766,32780
+<         "has-property-descriptors": "^1.0.0"
+---
+>         "has-property-descriptors": "^1.0.2"
+>       },
+>       "engines": {
+>         "node": ">= 0.4"
+>       }
+>     },
+>     "node_modules/set-proto": {
+>       "version": "1.0.0",
+>       "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz",
+>       "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==",
+>       "license": "MIT",
+>       "dependencies": {
+>         "dunder-proto": "^1.0.1",
+>         "es-errors": "^1.3.0",
+>         "es-object-atoms": "^1.0.0"
+32391,32393c32877,32880
+<       "version": "1.0.6",
+<       "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
+<       "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
+---
+>       "version": "1.1.0",
+>       "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
+>       "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
+>       "license": "MIT",
+32395d32881
+<         "call-bind": "^1.0.7",
+32397,32398c32883,32939
+<         "get-intrinsic": "^1.2.4",
+<         "object-inspect": "^1.13.1"
+---
+>         "object-inspect": "^1.13.3",
+>         "side-channel-list": "^1.0.0",
+>         "side-channel-map": "^1.0.1",
+>         "side-channel-weakmap": "^1.0.2"
+>       },
+>       "engines": {
+>         "node": ">= 0.4"
+>       },
+>       "funding": {
+>         "url": "https://github.com/sponsors/ljharb"
+>       }
+>     },
+>     "node_modules/side-channel-list": {
+>       "version": "1.0.0",
+>       "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
+>       "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
+>       "license": "MIT",
+>       "dependencies": {
+>         "es-errors": "^1.3.0",
+>         "object-inspect": "^1.13.3"
+>       },
+>       "engines": {
+>         "node": ">= 0.4"
+>       },
+>       "funding": {
+>         "url": "https://github.com/sponsors/ljharb"
+>       }
+>     },
+>     "node_modules/side-channel-map": {
+>       "version": "1.0.1",
+>       "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
+>       "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
+>       "license": "MIT",
+>       "dependencies": {
+>         "call-bound": "^1.0.2",
+>         "es-errors": "^1.3.0",
+>         "get-intrinsic": "^1.2.5",
+>         "object-inspect": "^1.13.3"
+>       },
+>       "engines": {
+>         "node": ">= 0.4"
+>       },
+>       "funding": {
+>         "url": "https://github.com/sponsors/ljharb"
+>       }
+>     },
+>     "node_modules/side-channel-weakmap": {
+>       "version": "1.0.2",
+>       "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
+>       "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
+>       "license": "MIT",
+>       "dependencies": {
+>         "call-bound": "^1.0.2",
+>         "es-errors": "^1.3.0",
+>         "get-intrinsic": "^1.2.5",
+>         "object-inspect": "^1.13.3",
+>         "side-channel-map": "^1.0.1"
+32871c33412,33413
+<       "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw=="
+---
+>       "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==",
+>       "license": "(WTFPL OR MIT)"
+32960c33502,33503
+<       "integrity": "sha1-bIOv82kvphJW4M0ZfgXp3hV2kaY="
+---
+>       "integrity": "sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==",
+>       "license": "ISC"
+32994a33538,33554
+>     "node_modules/ssh2": {
+>       "version": "1.16.0",
+>       "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.16.0.tgz",
+>       "integrity": "sha512-r1X4KsBGedJqo7h8F5c4Ybpcr5RjyP+aWIG007uBPRjmdQWfEiVLzSK71Zji1B9sKxwaCvD8y8cwSkYrlLiRRg==",
+>       "hasInstallScript": true,
+>       "dependencies": {
+>         "asn1": "^0.2.6",
+>         "bcrypt-pbkdf": "^1.0.2"
+>       },
+>       "engines": {
+>         "node": ">=10.16.0"
+>       },
+>       "optionalDependencies": {
+>         "cpu-features": "~0.0.10",
+>         "nan": "^2.20.0"
+>       }
+>     },
+33095,33098c33655,33658
+<       "version": "1.0.0",
+<       "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
+<       "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==",
+<       "dev": true,
+---
+>       "version": "1.1.0",
+>       "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz",
+>       "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==",
+>       "license": "MIT",
+33100c33660,33661
+<         "internal-slot": "^1.0.4"
+---
+>         "es-errors": "^1.3.0",
+>         "internal-slot": "^1.1.0"
+33265,33267c33826,33828
+<       "version": "1.2.9",
+<       "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz",
+<       "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==",
+---
+>       "version": "1.2.10",
+>       "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz",
+>       "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==",
+33270c33831,33833
+<         "call-bind": "^1.0.7",
+---
+>         "call-bind": "^1.0.8",
+>         "call-bound": "^1.0.2",
+>         "define-data-property": "^1.1.4",
+33272,33273c33835,33837
+<         "es-abstract": "^1.23.0",
+<         "es-object-atoms": "^1.0.0"
+---
+>         "es-abstract": "^1.23.5",
+>         "es-object-atoms": "^1.0.0",
+>         "has-property-descriptors": "^1.0.2"
+33283,33285c33847,33849
+<       "version": "1.0.8",
+<       "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz",
+<       "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==",
+---
+>       "version": "1.0.9",
+>       "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz",
+>       "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==",
+33288c33852,33853
+<         "call-bind": "^1.0.7",
+---
+>         "call-bind": "^1.0.8",
+>         "call-bound": "^1.0.2",
+33291a33857,33859
+>       "engines": {
+>         "node": ">= 0.4"
+>       },
+33781c34349,34350
+<       "deprecated": "Please upgrade to v7.0.2+ of superagent.  We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing.  See the releases tab for more information at <https://github.com/visionmedia/superagent/releases>. Thanks to @shadowgate15, @spence-s, and @niftylettuce. Superagent is sponsored by Forward Email at <https://forwardemail.net>.",
+---
+>       "deprecated": "Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net",
+>       "license": "MIT",
+33801a34371
+>       "license": "MIT",
+33807,33809c34377,34380
+<       "version": "2.5.1",
+<       "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
+<       "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
+---
+>       "version": "2.5.3",
+>       "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.3.tgz",
+>       "integrity": "sha512-XHIrMD0NpDrNM/Ckf7XJiBbLl57KEhT3+i3yY+eWm+cqYZJQTZrKo8Y8AWKnuV5GT4scfuUGt9LzNoIx3dU1nQ==",
+>       "license": "MIT",
+33812,33813c34383,34386
+<         "combined-stream": "^1.0.6",
+<         "mime-types": "^2.1.12"
+---
+>         "combined-stream": "^1.0.8",
+>         "es-set-tostringtag": "^2.1.0",
+>         "mime-types": "^2.1.35",
+>         "safe-buffer": "^5.2.1"
+33818a34392,34411
+>     "node_modules/superagent/node_modules/form-data/node_modules/safe-buffer": {
+>       "version": "5.2.1",
+>       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+>       "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+>       "funding": [
+>         {
+>           "type": "github",
+>           "url": "https://github.com/sponsors/feross"
+>         },
+>         {
+>           "type": "patreon",
+>           "url": "https://www.patreon.com/feross"
+>         },
+>         {
+>           "type": "consulting",
+>           "url": "https://feross.org/support"
+>         }
+>       ],
+>       "license": "MIT"
+>     },
+33822,33833c34415,34416
+<       "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+<     },
+<     "node_modules/superagent/node_modules/mime": {
+<       "version": "1.6.0",
+<       "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+<       "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+<       "bin": {
+<         "mime": "cli.js"
+<       },
+<       "engines": {
+<         "node": ">=4"
+<       }
+---
+>       "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+>       "license": "MIT"
+33836,33838c34419,34422
+<       "version": "2.3.7",
+<       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+<       "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+---
+>       "version": "2.3.8",
+>       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+>       "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+>       "license": "MIT",
+33852a34437
+>       "license": "MIT",
+34099c34684,34685
+<       "integrity": "sha1-oJdRnG8e5N1n4wjZtT3cnCslf5c=",
+---
+>       "integrity": "sha512-O2hZbWqq8x6j0uZ4qWj5dw45WPoAxKsJLJZqOgTqRtPNi8IqA+rDkDV/48S8qanS3KGv1QcVoPNLivMbyHHdAQ==",
+>       "license": "MIT",
+34150,34155d34735
+<     "node_modules/swagger-tools/node_modules/commander": {
+<       "version": "2.11.0",
+<       "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
+<       "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==",
+<       "license": "MIT"
+<     },
+34257,34259c34837,34839
+<       "version": "3.0.8",
+<       "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.8.tgz",
+<       "integrity": "sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==",
+---
+>       "version": "3.0.9",
+>       "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.9.tgz",
+>       "integrity": "sha512-XF4w9Xp+ZQgifKakjZYmFdkLoSWd34VGKcsTCwlNWM7QG3ZbaxnTsaBwnjFZqHRf/rROxaR8rXnbtwdvaDI+lA==",
+34943,34945c35523,35525
+<       "version": "0.6.9",
+<       "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.9.tgz",
+<       "integrity": "sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg==",
+---
+>       "version": "0.6.11",
+>       "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.11.tgz",
+>       "integrity": "sha512-vxXDZg8/+p3gblxB6BhhG5yWVn1kGRlaL8O78UDXc3wRnPizB5g83dcvWV1jpDMIPnjZjOFuxlMmE82XJ4407w==",
+34948,34950c35528,35530
+<         "gopd": "^1.0.1",
+<         "typedarray.prototype.slice": "^1.0.3",
+<         "which-typed-array": "^1.1.15"
+---
+>         "gopd": "^1.2.0",
+>         "typedarray.prototype.slice": "^1.0.5",
+>         "which-typed-array": "^1.1.18"
+35110,35112c35690,35692
+<       "version": "1.0.2",
+<       "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz",
+<       "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==",
+---
+>       "version": "1.0.3",
+>       "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz",
+>       "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==",
+35115c35695
+<         "call-bind": "^1.0.7",
+---
+>         "call-bound": "^1.0.3",
+35117c35697
+<         "is-typed-array": "^1.1.13"
+---
+>         "is-typed-array": "^1.1.14"
+35124,35126c35704,35706
+<       "version": "1.0.1",
+<       "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz",
+<       "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==",
+---
+>       "version": "1.0.3",
+>       "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz",
+>       "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==",
+35129c35709
+<         "call-bind": "^1.0.7",
+---
+>         "call-bind": "^1.0.8",
+35131,35133c35711,35713
+<         "gopd": "^1.0.1",
+<         "has-proto": "^1.0.3",
+<         "is-typed-array": "^1.1.13"
+---
+>         "gopd": "^1.2.0",
+>         "has-proto": "^1.2.0",
+>         "is-typed-array": "^1.1.14"
+35143,35145c35723,35725
+<       "version": "1.0.2",
+<       "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz",
+<       "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==",
+---
+>       "version": "1.0.4",
+>       "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz",
+>       "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==",
+35149c35729
+<         "call-bind": "^1.0.7",
+---
+>         "call-bind": "^1.0.8",
+35151,35153c35731,35734
+<         "gopd": "^1.0.1",
+<         "has-proto": "^1.0.3",
+<         "is-typed-array": "^1.1.13"
+---
+>         "gopd": "^1.2.0",
+>         "has-proto": "^1.2.0",
+>         "is-typed-array": "^1.1.15",
+>         "reflect.getprototypeof": "^1.0.9"
+35163,35165c35744,35746
+<       "version": "1.0.6",
+<       "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz",
+<       "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==",
+---
+>       "version": "1.0.7",
+>       "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz",
+>       "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==",
+35171d35751
+<         "has-proto": "^1.0.3",
+35173c35753,35754
+<         "possible-typed-array-names": "^1.0.0"
+---
+>         "possible-typed-array-names": "^1.0.0",
+>         "reflect.getprototypeof": "^1.0.6"
+35188,35190c35769,35771
+<       "version": "1.0.3",
+<       "resolved": "https://registry.npmjs.org/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.3.tgz",
+<       "integrity": "sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==",
+---
+>       "version": "1.0.5",
+>       "resolved": "https://registry.npmjs.org/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.5.tgz",
+>       "integrity": "sha512-q7QNVDGTdl702bVFiI5eY4l/HkgCM6at9KhcFbgUAzezHFbOVy4+0O/lCjsABEQwbZPravVfBIiBVGo89yzHFg==",
+35193c35774
+<         "call-bind": "^1.0.7",
+---
+>         "call-bind": "^1.0.8",
+35195c35776
+<         "es-abstract": "^1.23.0",
+---
+>         "es-abstract": "^1.23.9",
+35197,35198c35778,35781
+<         "typed-array-buffer": "^1.0.2",
+<         "typed-array-byte-offset": "^1.0.2"
+---
+>         "get-proto": "^1.0.1",
+>         "math-intrinsics": "^1.1.0",
+>         "typed-array-buffer": "^1.0.3",
+>         "typed-array-byte-offset": "^1.0.4"
+35274,35276c35857,35860
+<       "version": "1.0.2",
+<       "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+<       "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+---
+>       "version": "1.1.0",
+>       "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz",
+>       "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==",
+>       "license": "MIT",
+35278c35862
+<         "call-bind": "^1.0.2",
+---
+>         "call-bound": "^1.0.3",
+35280,35281c35864,35868
+<         "has-symbols": "^1.0.3",
+<         "which-boxed-primitive": "^1.0.2"
+---
+>         "has-symbols": "^1.1.0",
+>         "which-boxed-primitive": "^1.1.1"
+>       },
+>       "engines": {
+>         "node": ">= 0.4"
+35709a36297,36305
+>     "node_modules/validator": {
+>       "version": "10.11.0",
+>       "resolved": "https://registry.npmjs.org/validator/-/validator-10.11.0.tgz",
+>       "integrity": "sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw==",
+>       "license": "MIT",
+>       "engines": {
+>         "node": ">= 0.10"
+>       }
+>     },
+36697,36699c37293,37296
+<       "version": "1.0.2",
+<       "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+<       "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+---
+>       "version": "1.1.1",
+>       "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz",
+>       "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==",
+>       "license": "MIT",
+36701,36705c37298,37332
+<         "is-bigint": "^1.0.1",
+<         "is-boolean-object": "^1.1.0",
+<         "is-number-object": "^1.0.4",
+<         "is-string": "^1.0.5",
+<         "is-symbol": "^1.0.3"
+---
+>         "is-bigint": "^1.1.0",
+>         "is-boolean-object": "^1.2.1",
+>         "is-number-object": "^1.1.1",
+>         "is-string": "^1.1.1",
+>         "is-symbol": "^1.1.1"
+>       },
+>       "engines": {
+>         "node": ">= 0.4"
+>       },
+>       "funding": {
+>         "url": "https://github.com/sponsors/ljharb"
+>       }
+>     },
+>     "node_modules/which-builtin-type": {
+>       "version": "1.2.1",
+>       "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz",
+>       "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==",
+>       "license": "MIT",
+>       "dependencies": {
+>         "call-bound": "^1.0.2",
+>         "function.prototype.name": "^1.1.6",
+>         "has-tostringtag": "^1.0.2",
+>         "is-async-function": "^2.0.0",
+>         "is-date-object": "^1.1.0",
+>         "is-finalizationregistry": "^1.1.0",
+>         "is-generator-function": "^1.0.10",
+>         "is-regex": "^1.2.1",
+>         "is-weakref": "^1.0.2",
+>         "isarray": "^2.0.5",
+>         "which-boxed-primitive": "^1.1.0",
+>         "which-collection": "^1.0.2",
+>         "which-typed-array": "^1.1.16"
+>       },
+>       "engines": {
+>         "node": ">= 0.4"
+36712,36715c37339,37342
+<       "version": "1.0.1",
+<       "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
+<       "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
+<       "dev": true,
+---
+>       "version": "1.0.2",
+>       "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
+>       "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
+>       "license": "MIT",
+36717,36720c37344,37350
+<         "is-map": "^2.0.1",
+<         "is-set": "^2.0.1",
+<         "is-weakmap": "^2.0.1",
+<         "is-weakset": "^2.0.1"
+---
+>         "is-map": "^2.0.3",
+>         "is-set": "^2.0.3",
+>         "is-weakmap": "^2.0.2",
+>         "is-weakset": "^2.0.3"
+>       },
+>       "engines": {
+>         "node": ">= 0.4"
+36733,36735c37363,37365
+<       "version": "1.1.15",
+<       "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz",
+<       "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==",
+---
+>       "version": "1.1.19",
+>       "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz",
+>       "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==",
+36739,36741c37369,37373
+<         "call-bind": "^1.0.7",
+<         "for-each": "^0.3.3",
+<         "gopd": "^1.0.1",
+---
+>         "call-bind": "^1.0.8",
+>         "call-bound": "^1.0.4",
+>         "for-each": "^0.3.5",
+>         "get-proto": "^1.0.1",
+>         "gopd": "^1.2.0",
+37217a37850
+>       "license": "MIT",
+37231,37236d37863
+<     "node_modules/z-schema/node_modules/commander": {
+<       "version": "2.20.3",
+<       "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+<       "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+<       "optional": true
+<     },
+37241,37250c37868,37870
+<       "deprecated": "core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.",
+<       "hasInstallScript": true
+<     },
+<     "node_modules/z-schema/node_modules/validator": {
+<       "version": "10.11.0",
+<       "resolved": "https://registry.npmjs.org/validator/-/validator-10.11.0.tgz",
+<       "integrity": "sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw==",
+<       "engines": {
+<         "node": ">= 0.10"
+<       }
+---
+>       "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.",
+>       "hasInstallScript": true,
+>       "license": "MIT"
+37358c37978
+<         "dockerode": "^4.0.5",
+---
+>         "dockerode": "^4.0.7",
+37364c37984
+<         "tar-fs": "^3.0.4",
+---
+>         "tar-fs": "^3.0.9",
+37425,37451d38044
+<     "services/clsi/node_modules/@grpc/grpc-js": {
+<       "version": "1.13.2",
+<       "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.13.2.tgz",
+<       "integrity": "sha512-nnR5nmL6lxF8YBqb6gWvEgLdLh/Fn+kvAdX5hUOnt48sNSb0riz/93ASd2E5gvanPA41X6Yp25bIfGRp1SMb2g==",
+<       "license": "Apache-2.0",
+<       "dependencies": {
+<         "@grpc/proto-loader": "^0.7.13",
+<         "@js-sdsl/ordered-map": "^4.4.2"
+<       },
+<       "engines": {
+<         "node": ">=12.10.0"
+<       }
+<     },
+<     "services/clsi/node_modules/cpu-features": {
+<       "version": "0.0.10",
+<       "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.10.tgz",
+<       "integrity": "sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA==",
+<       "hasInstallScript": true,
+<       "optional": true,
+<       "dependencies": {
+<         "buildcheck": "~0.0.6",
+<         "nan": "^2.19.0"
+<       },
+<       "engines": {
+<         "node": ">=10.0.0"
+<       }
+<     },
+37461,37529d38053
+<     "services/clsi/node_modules/docker-modem": {
+<       "version": "5.0.6",
+<       "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-5.0.6.tgz",
+<       "integrity": "sha512-ens7BiayssQz/uAxGzH8zGXCtiV24rRWXdjNha5V4zSOcxmAZsfGVm/PPFbwQdqEkDnhG+SyR9E3zSHUbOKXBQ==",
+<       "license": "Apache-2.0",
+<       "dependencies": {
+<         "debug": "^4.1.1",
+<         "readable-stream": "^3.5.0",
+<         "split-ca": "^1.0.1",
+<         "ssh2": "^1.15.0"
+<       },
+<       "engines": {
+<         "node": ">= 8.0"
+<       }
+<     },
+<     "services/clsi/node_modules/dockerode": {
+<       "version": "4.0.5",
+<       "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-4.0.5.tgz",
+<       "integrity": "sha512-ZPmKSr1k1571Mrh7oIBS/j0AqAccoecY2yH420ni5j1KyNMgnoTh4Nu4FWunh0HZIJmRSmSysJjBIpa/zyWUEA==",
+<       "license": "Apache-2.0",
+<       "dependencies": {
+<         "@balena/dockerignore": "^1.0.2",
+<         "@grpc/grpc-js": "^1.11.1",
+<         "@grpc/proto-loader": "^0.7.13",
+<         "docker-modem": "^5.0.6",
+<         "protobufjs": "^7.3.2",
+<         "tar-fs": "~2.1.2",
+<         "uuid": "^10.0.0"
+<       },
+<       "engines": {
+<         "node": ">= 8.0"
+<       }
+<     },
+<     "services/clsi/node_modules/dockerode/node_modules/tar-fs": {
+<       "version": "2.1.2",
+<       "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz",
+<       "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==",
+<       "license": "MIT",
+<       "dependencies": {
+<         "chownr": "^1.1.1",
+<         "mkdirp-classic": "^0.5.2",
+<         "pump": "^3.0.0",
+<         "tar-stream": "^2.1.4"
+<       }
+<     },
+<     "services/clsi/node_modules/protobufjs": {
+<       "version": "7.4.0",
+<       "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz",
+<       "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==",
+<       "hasInstallScript": true,
+<       "license": "BSD-3-Clause",
+<       "dependencies": {
+<         "@protobufjs/aspromise": "^1.1.2",
+<         "@protobufjs/base64": "^1.1.2",
+<         "@protobufjs/codegen": "^2.0.4",
+<         "@protobufjs/eventemitter": "^1.1.0",
+<         "@protobufjs/fetch": "^1.1.0",
+<         "@protobufjs/float": "^1.0.2",
+<         "@protobufjs/inquire": "^1.1.0",
+<         "@protobufjs/path": "^1.1.2",
+<         "@protobufjs/pool": "^1.1.0",
+<         "@protobufjs/utf8": "^1.1.0",
+<         "@types/node": ">=13.7.0",
+<         "long": "^5.0.0"
+<       },
+<       "engines": {
+<         "node": ">=12.0.0"
+<       }
+<     },
+37549,37565d38072
+<     "services/clsi/node_modules/ssh2": {
+<       "version": "1.16.0",
+<       "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.16.0.tgz",
+<       "integrity": "sha512-r1X4KsBGedJqo7h8F5c4Ybpcr5RjyP+aWIG007uBPRjmdQWfEiVLzSK71Zji1B9sKxwaCvD8y8cwSkYrlLiRRg==",
+<       "hasInstallScript": true,
+<       "dependencies": {
+<         "asn1": "^0.2.6",
+<         "bcrypt-pbkdf": "^1.0.2"
+<       },
+<       "engines": {
+<         "node": ">=10.16.0"
+<       },
+<       "optionalDependencies": {
+<         "cpu-features": "~0.0.10",
+<         "nan": "^2.20.0"
+<       }
+<     },
+37578,37590d38084
+<     "services/clsi/node_modules/uuid": {
+<       "version": "10.0.0",
+<       "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz",
+<       "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==",
+<       "funding": [
+<         "https://github.com/sponsors/broofa",
+<         "https://github.com/sponsors/ctavan"
+<       ],
+<       "license": "MIT",
+<       "bin": {
+<         "uuid": "dist/bin/uuid"
+<       }
+<     },
+38683c39177
+<         "multer": "overleaf/multer#199c5ff05bd375c508f4074498237baead7f5148",
+---
+>         "multer": "github:overleaf/multer#4dbceda355efc3fc8ac3cf5c66c3778c8a6fdb23",
+39602,39604c40096,40098
+<       "version": "2.0.0",
+<       "resolved": "git+ssh://git@github.com/overleaf/multer.git#199c5ff05bd375c508f4074498237baead7f5148",
+<       "integrity": "sha512-S5MlIoOgrDr+a2jLS8z7jQlbzvZ0m30U2tRwdyLrxhnnMUQZYEzkVysEv10Dw41RTpM5bQQDs563Vzl1LLhxhQ==",
+---
+>       "version": "2.0.1",
+>       "resolved": "git+ssh://git@github.com/overleaf/multer.git#4dbceda355efc3fc8ac3cf5c66c3778c8a6fdb23",
+>       "integrity": "sha512-kkvPK48OQibR5vIoTQBbZp1uWVCvT9MrW3Y0mqdhFYJP/HVJujb4eSCEU0yj+hyf0Y+H/BKCmPdM4fJnzqAO4w==",
+39608,39610c40102,40104
+<         "busboy": "^1.0.0",
+<         "concat-stream": "^1.5.2",
+<         "mkdirp": "^0.5.4",
+---
+>         "busboy": "^1.6.0",
+>         "concat-stream": "^2.0.0",
+>         "mkdirp": "^0.5.6",
+39612,39613c40106,40107
+<         "type-is": "^1.6.4",
+<         "xtend": "^4.0.0"
+---
+>         "type-is": "^1.6.18",
+>         "xtend": "^4.0.2"

+ 19 - 0
server-ce/hotfix/5.5.1/pr_25168.patch

@@ -0,0 +1,19 @@
+--- a/services/history-v1/config/custom-environment-variables.json
++++ b/services/history-v1/config/custom-environment-variables.json
+@@ -50,12 +50,14 @@
+     "history": {
+       "host": "OVERLEAF_REDIS_HOST",
+       "password": "OVERLEAF_REDIS_PASS",
+-      "port": "OVERLEAF_REDIS_PORT"
++      "port": "OVERLEAF_REDIS_PORT",
++      "tls": "OVERLEAF_REDIS_TLS"
+     },
+     "lock": {
+       "host": "OVERLEAF_REDIS_HOST",
+       "password": "OVERLEAF_REDIS_PASS",
+-      "port": "OVERLEAF_REDIS_PORT"
++      "port": "OVERLEAF_REDIS_PORT",
++      "tls": "OVERLEAF_REDIS_TLS"
+     }
+   }
+ }

+ 200 - 0
server-ce/hotfix/5.5.1/pr_26086.patch

@@ -0,0 +1,200 @@
+--- a/services/history-v1/api/controllers/project_import.js
++++ b/services/history-v1/api/controllers/project_import.js
+@@ -35,6 +35,7 @@ async function importSnapshot(req, res) {
+   try {
+     snapshot = Snapshot.fromRaw(rawSnapshot)
+   } catch (err) {
++    logger.warn({ err, projectId }, 'failed to import snapshot')
+     return render.unprocessableEntity(res)
+   }
+
+@@ -43,6 +44,7 @@ async function importSnapshot(req, res) {
+     historyId = await chunkStore.initializeProject(projectId, snapshot)
+   } catch (err) {
+     if (err instanceof chunkStore.AlreadyInitialized) {
++      logger.warn({ err, projectId }, 'already initialized')
+       return render.conflict(res)
+     } else {
+       throw err
+--- a/services/history-v1/api/controllers/projects.js
++++ b/services/history-v1/api/controllers/projects.js
+@@ -34,6 +34,7 @@ async function initializeProject(req, res, next) {
+     res.status(HTTPStatus.OK).json({ projectId })
+   } catch (err) {
+     if (err instanceof chunkStore.AlreadyInitialized) {
++      logger.warn({ err, projectId }, 'failed to initialize')
+       render.conflict(res)
+     } else {
+       throw err
+@@ -242,11 +243,15 @@ async function createProjectBlob(req, res, next) {
+     const sizeLimit = new StreamSizeLimit(maxUploadSize)
+     await pipeline(req, sizeLimit, fs.createWriteStream(tmpPath))
+     if (sizeLimit.sizeLimitExceeded) {
++      logger.warn(
++        { projectId, expectedHash, maxUploadSize },
++        'blob exceeds size threshold'
++      )
+       return render.requestEntityTooLarge(res)
+     }
+     const hash = await blobHash.fromFile(tmpPath)
+     if (hash !== expectedHash) {
+-      logger.debug({ hash, expectedHash }, 'Hash mismatch')
++      logger.warn({ projectId, hash, expectedHash }, 'Hash mismatch')
+       return render.conflict(res, 'File hash mismatch')
+     }
+
+@@ -343,6 +348,10 @@ async function copyProjectBlob(req, res, next) {
+     targetBlobStore.getBlob(blobHash),
+   ])
+   if (!sourceBlob) {
++    logger.warn(
++      { sourceProjectId, targetProjectId, blobHash },
++      'missing source blob when copying across projects'
++    )
+     return render.notFound(res)
+   }
+   // Exit early if the blob exists in the target project.
+--- a/services/history-v1/app.js
++++ b/services/history-v1/app.js
+@@ -100,11 +100,13 @@ function setupErrorHandling() {
+       })
+     }
+     if (err.code === 'ENUM_MISMATCH') {
++      logger.warn({ err, projectId }, err.message)
+       return res.status(HTTPStatus.UNPROCESSABLE_ENTITY).json({
+         message: 'invalid enum value: ' + err.paramName,
+       })
+     }
+     if (err.code === 'REQUIRED') {
++      logger.warn({ err, projectId }, err.message)
+       return res.status(HTTPStatus.UNPROCESSABLE_ENTITY).json({
+         message: err.message,
+       })
+--- a/services/project-history/app/js/HistoryStoreManager.js
++++ b/services/project-history/app/js/HistoryStoreManager.js
+@@ -35,7 +35,10 @@ class StringStream extends stream.Readable {
+ _mocks.getMostRecentChunk = (projectId, historyId, callback) => {
+   const path = `projects/${historyId}/latest/history`
+   logger.debug({ projectId, historyId }, 'getting chunk from history service')
+-  _requestChunk({ path, json: true }, callback)
++  _requestChunk({ path, json: true }, (err, chunk) => {
++    if (err) return callback(OError.tag(err))
++    callback(null, chunk)
++  })
+ }
+
+ /**
+@@ -54,7 +57,10 @@ export function getChunkAtVersion(projectId, historyId, version, callback) {
+     { projectId, historyId, version },
+     'getting chunk from history service for version'
+   )
+-  _requestChunk({ path, json: true }, callback)
++  _requestChunk({ path, json: true }, (err, chunk) => {
++    if (err) return callback(OError.tag(err))
++    callback(null, chunk)
++  })
+ }
+
+ export function getMostRecentVersion(projectId, historyId, callback) {
+@@ -68,8 +74,10 @@ export function getMostRecentVersion(projectId, historyId, callback) {
+       _.sortBy(chunk.chunk.history.changes || [], x => x.timestamp)
+     )
+     // find the latest project and doc versions in the chunk
+-    _getLatestProjectVersion(projectId, chunk, (err1, projectVersion) =>
++    _getLatestProjectVersion(projectId, chunk, (err1, projectVersion) => {
++      if (err1) err1 = OError.tag(err1)
+       _getLatestV2DocVersions(projectId, chunk, (err2, v2DocVersions) => {
++        if (err2) err2 = OError.tag(err2)
+         // return the project and doc versions
+         const projectStructureAndDocVersions = {
+           project: projectVersion,
+@@ -83,7 +91,7 @@ export function getMostRecentVersion(projectId, historyId, callback) {
+           chunk
+         )
+       })
+-    )
++    })
+   })
+ }
+
+@@ -211,7 +219,10 @@ export function getProjectBlob(historyId, blobHash, callback) {
+   logger.debug({ historyId, blobHash }, 'getting blob from history service')
+   _requestHistoryService(
+     { path: `projects/${historyId}/blobs/${blobHash}` },
+-    callback
++    (err, blob) => {
++      if (err) return callback(OError.tag(err))
++      callback(null, blob)
++    }
+   )
+ }
+
+@@ -277,7 +288,10 @@ function createBlobFromString(historyId, data, fileId, callback) {
+     (fsPath, cb) => {
+       _createBlob(historyId, fsPath, cb)
+     },
+-    callback
++    (err, hash) => {
++      if (err) return callback(OError.tag(err))
++      callback(null, hash)
++    }
+   )
+ }
+
+@@ -330,7 +344,7 @@ export function createBlobForUpdate(projectId, historyId, update, callback) {
+     try {
+       ranges = HistoryBlobTranslator.createRangeBlobDataFromUpdate(update)
+     } catch (error) {
+-      return callback(error)
++      return callback(OError.tag(error))
+     }
+     createBlobFromString(
+       historyId,
+@@ -338,7 +352,7 @@ export function createBlobForUpdate(projectId, historyId, update, callback) {
+       `project-${projectId}-doc-${update.doc}`,
+       (err, fileHash) => {
+         if (err) {
+-          return callback(err)
++          return callback(OError.tag(err))
+         }
+         if (ranges) {
+           createBlobFromString(
+@@ -347,7 +361,7 @@ export function createBlobForUpdate(projectId, historyId, update, callback) {
+             `project-${projectId}-doc-${update.doc}-ranges`,
+             (err, rangesHash) => {
+               if (err) {
+-                return callback(err)
++                return callback(OError.tag(err))
+               }
+               logger.debug(
+                 { fileHash, rangesHash },
+@@ -415,7 +429,7 @@ export function createBlobForUpdate(projectId, historyId, update, callback) {
+             },
+             (err, fileHash) => {
+               if (err) {
+-                return callback(err)
++                return callback(OError.tag(err))
+               }
+               if (update.hash && update.hash !== fileHash) {
+                 logger.warn(
+@@ -447,7 +461,7 @@ export function createBlobForUpdate(projectId, historyId, update, callback) {
+               },
+               (err, fileHash) => {
+                 if (err) {
+-                  return callback(err)
++                  return callback(OError.tag(err))
+                 }
+                 logger.debug({ fileHash }, 'created empty blob for file')
+                 callback(null, { file: fileHash })
+@@ -520,7 +534,10 @@ export function initializeProject(historyId, callback) {
+ export function deleteProject(projectId, callback) {
+   _requestHistoryService(
+     { method: 'DELETE', path: `projects/${projectId}` },
+-    callback
++    err => {
++      if (err) return callback(OError.tag(err))
++      callback(null)
++    }
+   )
+ }
+

+ 60 - 0
server-ce/hotfix/5.5.1/pr_26091.patch

@@ -0,0 +1,60 @@
+--- a/services/web/modules/server-ce-scripts/scripts/check-mongodb.mjs
++++ b/services/web/modules/server-ce-scripts/scripts/check-mongodb.mjs
+@@ -7,6 +7,7 @@ import {
+ const { ObjectId } = mongodb
+
+ const MIN_MONGO_VERSION = [6, 0]
++const MIN_MONGO_FEATURE_COMPATIBILITY_VERSION = [6, 0]
+
+ async function main() {
+   let mongoClient
+@@ -18,6 +19,7 @@ async function main() {
+   }
+
+   await checkMongoVersion(mongoClient)
++  await checkFeatureCompatibilityVersion(mongoClient)
+
+   try {
+     await testTransactions(mongoClient)
+@@ -53,6 +55,41 @@ async function checkMongoVersion(mongoClient) {
+   }
+ }
+
++async function checkFeatureCompatibilityVersion(mongoClient) {
++  const {
++    featureCompatibilityVersion: { version },
++  } = await mongoClient
++    .db()
++    .admin()
++    .command({ getParameter: 1, featureCompatibilityVersion: 1 })
++  const [major, minor] = version.split('.').map(v => parseInt(v))
++  const [minMajor, minMinor] = MIN_MONGO_FEATURE_COMPATIBILITY_VERSION
++
++  if (major < minMajor || (major === minMajor && minor < minMinor)) {
++    const minVersion = MIN_MONGO_FEATURE_COMPATIBILITY_VERSION.join('.')
++    console.error(`
++The MongoDB server has featureCompatibilityVersion=${version}, but Overleaf requires at least version ${minVersion}.
++
++Open a mongo shell:
++- Overleaf Toolkit deployments: $ bin/mongo
++- Legacy docker-compose.yml deployments: $ docker exec -it mongo mongosh localhost/sharelatex
++
++In the mongo shell:
++> db.adminCommand( { setFeatureCompatibilityVersion: "${minMajor}.${minMinor}" } )
++
++Verify the new value:
++> db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
++ ...
++ {
++    featureCompatibilityVersion: { version: ${minMajor}.${minMinor}' },
++...
++
++Aborting.
++`)
++    process.exit(1)
++  }
++}
++
+ main()
+   .then(() => {
+     console.error('Mongodb is up.')

+ 16 - 0
server-ce/hotfix/5.5.1/pr_26152.patch

@@ -0,0 +1,16 @@
+--- a/services/web/modules/server-ce-scripts/scripts/create-user.mjs
++++ b/services/web/modules/server-ce-scripts/scripts/create-user.mjs
+@@ -48,3 +48,13 @@ Please visit the following URL to set a password for ${email} and log in:
+     )
+   })
+ }
++
++if (filename === process.argv[1]) {
++  try {
++    await main()
++    process.exit(0)
++  } catch (error) {
++    console.error({ error })
++    process.exit(1)
++  }
++}

+ 15 - 0
server-ce/test/admin.spec.ts

@@ -179,6 +179,21 @@ describe('admin panel', function () {
         cy.get('nav').findByText('Manage Users').click()
         cy.get('nav').findByText('Manage Users').click()
       })
       })
 
 
+      it('displays expected tabs', () => {
+        const tabs = ['Users', 'License Usage']
+        cy.get('[role="tab"]').each((el, index) => {
+          cy.wrap(el).findByText(tabs[index]).click()
+        })
+        cy.get('[role="tab"]').should('have.length', tabs.length)
+      })
+
+      it('license usage tab', () => {
+        cy.get('a').contains('License Usage').click()
+        cy.findByText(
+          'An active user is one who has opened a project in this Server Pro instance in the last 12 months.'
+        )
+      })
+
       describe('create users', () => {
       describe('create users', () => {
         beforeEach(() => {
         beforeEach(() => {
           cy.get('a').contains('New User').click()
           cy.get('a').contains('New User').click()

+ 37 - 0
services/web/modules/server-ce-scripts/scripts/check-mongodb.mjs

@@ -7,6 +7,7 @@ import {
 const { ObjectId } = mongodb
 const { ObjectId } = mongodb
 
 
 const MIN_MONGO_VERSION = [6, 0]
 const MIN_MONGO_VERSION = [6, 0]
+const MIN_MONGO_FEATURE_COMPATIBILITY_VERSION = [6, 0]
 
 
 async function main() {
 async function main() {
   let mongoClient
   let mongoClient
@@ -18,6 +19,7 @@ async function main() {
   }
   }
 
 
   await checkMongoVersion(mongoClient)
   await checkMongoVersion(mongoClient)
+  await checkFeatureCompatibilityVersion(mongoClient)
 
 
   try {
   try {
     await testTransactions(mongoClient)
     await testTransactions(mongoClient)
@@ -53,6 +55,41 @@ async function checkMongoVersion(mongoClient) {
   }
   }
 }
 }
 
 
+async function checkFeatureCompatibilityVersion(mongoClient) {
+  const {
+    featureCompatibilityVersion: { version },
+  } = await mongoClient
+    .db()
+    .admin()
+    .command({ getParameter: 1, featureCompatibilityVersion: 1 })
+  const [major, minor] = version.split('.').map(v => parseInt(v))
+  const [minMajor, minMinor] = MIN_MONGO_FEATURE_COMPATIBILITY_VERSION
+
+  if (major < minMajor || (major === minMajor && minor < minMinor)) {
+    const minVersion = MIN_MONGO_FEATURE_COMPATIBILITY_VERSION.join('.')
+    console.error(`
+The MongoDB server has featureCompatibilityVersion=${version}, but Overleaf requires at least version ${minVersion}.
+
+Open a mongo shell:
+- Overleaf Toolkit deployments: $ bin/mongo
+- Legacy docker-compose.yml deployments: $ docker exec -it mongo mongosh localhost/sharelatex
+
+In the mongo shell:
+> db.adminCommand( { setFeatureCompatibilityVersion: "${minMajor}.${minMinor}" } )
+
+Verify the new value:
+> db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
+ ...
+ {
+    featureCompatibilityVersion: { version: ${minMajor}.${minMinor}' },
+...
+
+Aborting.
+`)
+    process.exit(1)
+  }
+}
+
 main()
 main()
   .then(() => {
   .then(() => {
     console.error('Mongodb is up.')
     console.error('Mongodb is up.')