diff --git a/package-lock.json b/package-lock.json
index adf2f642ef49ba0db39c6a9608de6665116a85d9..207e5328b0ba08a318c1f26d94ccf26fe7709bdf 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -201,34 +201,34 @@
       "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
     },
     "node_modules/@aws-sdk/client-s3": {
-      "version": "3.428.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.428.0.tgz",
-      "integrity": "sha512-qz4SV0sjeKC/m573Ox0wWhVABhN35cy0zBOvYixtEQNBzQbWefk8luHkNxntyybuLPZz6ChDzU98+EBac5RuRg==",
+      "version": "3.430.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.430.0.tgz",
+      "integrity": "sha512-KpK6mZsLyxfHTPfXA3Bnuu5li15QhhWCzhSPx6moH6XGPH0hVNHFy05DM9T/1exf6tEAQhi5FJrek9dM/sOdeA==",
       "dependencies": {
         "@aws-crypto/sha1-browser": "3.0.0",
         "@aws-crypto/sha256-browser": "3.0.0",
         "@aws-crypto/sha256-js": "3.0.0",
-        "@aws-sdk/client-sts": "3.428.0",
-        "@aws-sdk/credential-provider-node": "3.428.0",
-        "@aws-sdk/middleware-bucket-endpoint": "3.428.0",
+        "@aws-sdk/client-sts": "3.430.0",
+        "@aws-sdk/credential-provider-node": "3.430.0",
+        "@aws-sdk/middleware-bucket-endpoint": "3.430.0",
         "@aws-sdk/middleware-expect-continue": "3.428.0",
         "@aws-sdk/middleware-flexible-checksums": "3.428.0",
-        "@aws-sdk/middleware-host-header": "3.428.0",
+        "@aws-sdk/middleware-host-header": "3.429.0",
         "@aws-sdk/middleware-location-constraint": "3.428.0",
         "@aws-sdk/middleware-logger": "3.428.0",
         "@aws-sdk/middleware-recursion-detection": "3.428.0",
-        "@aws-sdk/middleware-sdk-s3": "3.428.0",
+        "@aws-sdk/middleware-sdk-s3": "3.429.0",
         "@aws-sdk/middleware-signing": "3.428.0",
         "@aws-sdk/middleware-ssec": "3.428.0",
         "@aws-sdk/middleware-user-agent": "3.428.0",
-        "@aws-sdk/region-config-resolver": "3.428.0",
+        "@aws-sdk/region-config-resolver": "3.430.0",
         "@aws-sdk/signature-v4-multi-region": "3.428.0",
         "@aws-sdk/types": "3.428.0",
         "@aws-sdk/util-endpoints": "3.428.0",
         "@aws-sdk/util-user-agent-browser": "3.428.0",
-        "@aws-sdk/util-user-agent-node": "3.428.0",
+        "@aws-sdk/util-user-agent-node": "3.430.0",
         "@aws-sdk/xml-builder": "3.310.0",
-        "@smithy/config-resolver": "^2.0.14",
+        "@smithy/config-resolver": "^2.0.15",
         "@smithy/eventstream-serde-browser": "^2.0.11",
         "@smithy/eventstream-serde-config-resolver": "^2.0.11",
         "@smithy/eventstream-serde-node": "^2.0.11",
@@ -239,11 +239,11 @@
         "@smithy/invalid-dependency": "^2.0.11",
         "@smithy/md5-js": "^2.0.11",
         "@smithy/middleware-content-length": "^2.0.13",
-        "@smithy/middleware-endpoint": "^2.1.0",
-        "@smithy/middleware-retry": "^2.0.16",
+        "@smithy/middleware-endpoint": "^2.1.2",
+        "@smithy/middleware-retry": "^2.0.17",
         "@smithy/middleware-serde": "^2.0.11",
         "@smithy/middleware-stack": "^2.0.5",
-        "@smithy/node-config-provider": "^2.1.1",
+        "@smithy/node-config-provider": "^2.1.2",
         "@smithy/node-http-handler": "^2.1.7",
         "@smithy/protocol-http": "^3.0.7",
         "@smithy/smithy-client": "^2.1.11",
@@ -253,7 +253,7 @@
         "@smithy/util-body-length-browser": "^2.0.0",
         "@smithy/util-body-length-node": "^2.1.0",
         "@smithy/util-defaults-mode-browser": "^2.0.15",
-        "@smithy/util-defaults-mode-node": "^2.0.19",
+        "@smithy/util-defaults-mode-node": "^2.0.20",
         "@smithy/util-retry": "^2.0.4",
         "@smithy/util-stream": "^2.0.16",
         "@smithy/util-utf8": "^2.0.0",
@@ -266,31 +266,31 @@
       }
     },
     "node_modules/@aws-sdk/client-sso": {
-      "version": "3.428.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.428.0.tgz",
-      "integrity": "sha512-6BuY7cd1licnCZTKuI/IK3ycKATIgsG53TuaK1hZcikwUB2Oiu2z6K+aWpmO9mJuJ6qAoE4dLlAy6lBBBkG6yQ==",
+      "version": "3.430.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.430.0.tgz",
+      "integrity": "sha512-NxQJkTZCgl6LpdY12MCwsqGned6Ax19WsTCGLEiA/tsNE4vNrYLHHBR317G0sGWbIUQuhwsoM7wIrqJO7CacuQ==",
       "dependencies": {
         "@aws-crypto/sha256-browser": "3.0.0",
         "@aws-crypto/sha256-js": "3.0.0",
-        "@aws-sdk/middleware-host-header": "3.428.0",
+        "@aws-sdk/middleware-host-header": "3.429.0",
         "@aws-sdk/middleware-logger": "3.428.0",
         "@aws-sdk/middleware-recursion-detection": "3.428.0",
         "@aws-sdk/middleware-user-agent": "3.428.0",
-        "@aws-sdk/region-config-resolver": "3.428.0",
+        "@aws-sdk/region-config-resolver": "3.430.0",
         "@aws-sdk/types": "3.428.0",
         "@aws-sdk/util-endpoints": "3.428.0",
         "@aws-sdk/util-user-agent-browser": "3.428.0",
-        "@aws-sdk/util-user-agent-node": "3.428.0",
-        "@smithy/config-resolver": "^2.0.14",
+        "@aws-sdk/util-user-agent-node": "3.430.0",
+        "@smithy/config-resolver": "^2.0.15",
         "@smithy/fetch-http-handler": "^2.2.3",
         "@smithy/hash-node": "^2.0.11",
         "@smithy/invalid-dependency": "^2.0.11",
         "@smithy/middleware-content-length": "^2.0.13",
-        "@smithy/middleware-endpoint": "^2.1.0",
-        "@smithy/middleware-retry": "^2.0.16",
+        "@smithy/middleware-endpoint": "^2.1.2",
+        "@smithy/middleware-retry": "^2.0.17",
         "@smithy/middleware-serde": "^2.0.11",
         "@smithy/middleware-stack": "^2.0.5",
-        "@smithy/node-config-provider": "^2.1.1",
+        "@smithy/node-config-provider": "^2.1.2",
         "@smithy/node-http-handler": "^2.1.7",
         "@smithy/protocol-http": "^3.0.7",
         "@smithy/smithy-client": "^2.1.11",
@@ -300,7 +300,7 @@
         "@smithy/util-body-length-browser": "^2.0.0",
         "@smithy/util-body-length-node": "^2.1.0",
         "@smithy/util-defaults-mode-browser": "^2.0.15",
-        "@smithy/util-defaults-mode-node": "^2.0.19",
+        "@smithy/util-defaults-mode-node": "^2.0.20",
         "@smithy/util-retry": "^2.0.4",
         "@smithy/util-utf8": "^2.0.0",
         "tslib": "^2.5.0"
@@ -310,34 +310,34 @@
       }
     },
     "node_modules/@aws-sdk/client-sts": {
-      "version": "3.428.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.428.0.tgz",
-      "integrity": "sha512-ko9hgmIkS5FNPYtT3pntGGmp+yi+VXBEgePUBoplEKjCxsX/aTgFcq2Rs9duD9/CzkThd42Z0l0fWsVAErVxWQ==",
+      "version": "3.430.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.430.0.tgz",
+      "integrity": "sha512-njUY3QeZH0CG+tG/6jhoG+Zr7rI1aGoVkZi3l6woKTz57hIlkwu2jQlLbJujm7PKrLhPaN5+4AqBQuHFVgMobw==",
       "dependencies": {
         "@aws-crypto/sha256-browser": "3.0.0",
         "@aws-crypto/sha256-js": "3.0.0",
-        "@aws-sdk/credential-provider-node": "3.428.0",
-        "@aws-sdk/middleware-host-header": "3.428.0",
+        "@aws-sdk/credential-provider-node": "3.430.0",
+        "@aws-sdk/middleware-host-header": "3.429.0",
         "@aws-sdk/middleware-logger": "3.428.0",
         "@aws-sdk/middleware-recursion-detection": "3.428.0",
         "@aws-sdk/middleware-sdk-sts": "3.428.0",
         "@aws-sdk/middleware-signing": "3.428.0",
         "@aws-sdk/middleware-user-agent": "3.428.0",
-        "@aws-sdk/region-config-resolver": "3.428.0",
+        "@aws-sdk/region-config-resolver": "3.430.0",
         "@aws-sdk/types": "3.428.0",
         "@aws-sdk/util-endpoints": "3.428.0",
         "@aws-sdk/util-user-agent-browser": "3.428.0",
-        "@aws-sdk/util-user-agent-node": "3.428.0",
-        "@smithy/config-resolver": "^2.0.14",
+        "@aws-sdk/util-user-agent-node": "3.430.0",
+        "@smithy/config-resolver": "^2.0.15",
         "@smithy/fetch-http-handler": "^2.2.3",
         "@smithy/hash-node": "^2.0.11",
         "@smithy/invalid-dependency": "^2.0.11",
         "@smithy/middleware-content-length": "^2.0.13",
-        "@smithy/middleware-endpoint": "^2.1.0",
-        "@smithy/middleware-retry": "^2.0.16",
+        "@smithy/middleware-endpoint": "^2.1.2",
+        "@smithy/middleware-retry": "^2.0.17",
         "@smithy/middleware-serde": "^2.0.11",
         "@smithy/middleware-stack": "^2.0.5",
-        "@smithy/node-config-provider": "^2.1.1",
+        "@smithy/node-config-provider": "^2.1.2",
         "@smithy/node-http-handler": "^2.1.7",
         "@smithy/protocol-http": "^3.0.7",
         "@smithy/smithy-client": "^2.1.11",
@@ -347,7 +347,7 @@
         "@smithy/util-body-length-browser": "^2.0.0",
         "@smithy/util-body-length-node": "^2.1.0",
         "@smithy/util-defaults-mode-browser": "^2.0.15",
-        "@smithy/util-defaults-mode-node": "^2.0.19",
+        "@smithy/util-defaults-mode-node": "^2.0.20",
         "@smithy/util-retry": "^2.0.4",
         "@smithy/util-utf8": "^2.0.0",
         "fast-xml-parser": "4.2.5",
@@ -372,13 +372,13 @@
       }
     },
     "node_modules/@aws-sdk/credential-provider-ini": {
-      "version": "3.428.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.428.0.tgz",
-      "integrity": "sha512-JPc0pVAsP8fOfMxhmPhp7PjddqHaPGBwgVI+wgbkFRUDOmeKCVhoxCB8Womx0R07qRqD5ZCUKBS2NHQ2b3MFRQ==",
+      "version": "3.430.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.430.0.tgz",
+      "integrity": "sha512-m3NcmDyVYr/w8RV9kMArrA/0982aXMsvoSXi4wFVbgg/T5hO+6i5CY7fB/0xpKIuEJ+rw63rYNnBzLwwW48kWg==",
       "dependencies": {
         "@aws-sdk/credential-provider-env": "3.428.0",
         "@aws-sdk/credential-provider-process": "3.428.0",
-        "@aws-sdk/credential-provider-sso": "3.428.0",
+        "@aws-sdk/credential-provider-sso": "3.430.0",
         "@aws-sdk/credential-provider-web-identity": "3.428.0",
         "@aws-sdk/types": "3.428.0",
         "@smithy/credential-provider-imds": "^2.0.0",
@@ -392,14 +392,14 @@
       }
     },
     "node_modules/@aws-sdk/credential-provider-node": {
-      "version": "3.428.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.428.0.tgz",
-      "integrity": "sha512-o8toLXf6/sklBpw2e1mzAUq6SvXQzT6iag7Xbg9E0Z2EgVeXLTnWeVto3ilU3cmhTHXBp6wprwUUq2jbjTxMcg==",
+      "version": "3.430.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.430.0.tgz",
+      "integrity": "sha512-ItOHJcqOhpI0QM+aho5uMrk2ZP34hsdisMHxd8/6FT41U8TOe9kQKaZ2l2AsVf4QuM6RJe2LangcVGGstCf8Sw==",
       "dependencies": {
         "@aws-sdk/credential-provider-env": "3.428.0",
-        "@aws-sdk/credential-provider-ini": "3.428.0",
+        "@aws-sdk/credential-provider-ini": "3.430.0",
         "@aws-sdk/credential-provider-process": "3.428.0",
-        "@aws-sdk/credential-provider-sso": "3.428.0",
+        "@aws-sdk/credential-provider-sso": "3.430.0",
         "@aws-sdk/credential-provider-web-identity": "3.428.0",
         "@aws-sdk/types": "3.428.0",
         "@smithy/credential-provider-imds": "^2.0.0",
@@ -428,12 +428,12 @@
       }
     },
     "node_modules/@aws-sdk/credential-provider-sso": {
-      "version": "3.428.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.428.0.tgz",
-      "integrity": "sha512-sW2+kSlICSNntsNhLV5apqJkIOXH5hFISCjwVfyB9JXJQDAj8rzkiFfRsKwQ3aTlTYCysrGesIn46+GRP5AgZw==",
+      "version": "3.430.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.430.0.tgz",
+      "integrity": "sha512-6de/aH9OFI+Ah7hL4alrZFqiNw5D6F+R92tLbIpFRQg7DxO/TuQTTtK94mLkft/AP/mGzVVBENjsyS1nJt166w==",
       "dependencies": {
-        "@aws-sdk/client-sso": "3.428.0",
-        "@aws-sdk/token-providers": "3.428.0",
+        "@aws-sdk/client-sso": "3.430.0",
+        "@aws-sdk/token-providers": "3.430.0",
         "@aws-sdk/types": "3.428.0",
         "@smithy/property-provider": "^2.0.0",
         "@smithy/shared-ini-file-loader": "^2.0.6",
@@ -459,12 +459,12 @@
       }
     },
     "node_modules/@aws-sdk/lib-storage": {
-      "version": "3.428.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.428.0.tgz",
-      "integrity": "sha512-ug2V9DoRKtGSYAZ3v5xAUXb046QSt1sMq/Z6RFm5p8yPRGZ4wLzjLIC0Dx0AibRpO6kPasZENWruwE5+yGPbxg==",
+      "version": "3.430.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.430.0.tgz",
+      "integrity": "sha512-CPBu7lBGYAbQ/PeTLNXYvBYJ9A1y/vbochfOxB9Eru6lzRZjxwEy+MgHTSB9pNqTi+1L2o4xznPnZ3itjWkUOw==",
       "dependencies": {
         "@smithy/abort-controller": "^2.0.1",
-        "@smithy/middleware-endpoint": "^2.1.0",
+        "@smithy/middleware-endpoint": "^2.1.2",
         "@smithy/smithy-client": "^2.1.11",
         "buffer": "5.6.0",
         "events": "3.3.0",
@@ -479,13 +479,13 @@
       }
     },
     "node_modules/@aws-sdk/middleware-bucket-endpoint": {
-      "version": "3.428.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.428.0.tgz",
-      "integrity": "sha512-xZ/o6E7icVVTFlOLBKrIQJqFToL0KmWEGLFcaHhgCNz5gppEK2iGH9GondQotQPesiEyi46HwzM6GLNRylELww==",
+      "version": "3.430.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.430.0.tgz",
+      "integrity": "sha512-oK0WTNpMQFewSIYcL3LPm+S46uUWFILlPYK0fEeYdMXn03380JqS9oIKOFFX7w6DhYY1ePHZI721ee1HiCtDvw==",
       "dependencies": {
         "@aws-sdk/types": "3.428.0",
         "@aws-sdk/util-arn-parser": "3.310.0",
-        "@smithy/node-config-provider": "^2.1.1",
+        "@smithy/node-config-provider": "^2.1.2",
         "@smithy/protocol-http": "^3.0.7",
         "@smithy/types": "^2.3.5",
         "@smithy/util-config-provider": "^2.0.0",
@@ -528,9 +528,9 @@
       }
     },
     "node_modules/@aws-sdk/middleware-host-header": {
-      "version": "3.428.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.428.0.tgz",
-      "integrity": "sha512-iIHbW5Ym60ol9Q6vsLnaiNdeUIa9DA0OuoOe9LiHC8SYUYVAAhE+xJXUhn1qk/J7z+4qGOkDnVyEvnSaqRPL/w==",
+      "version": "3.429.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.429.0.tgz",
+      "integrity": "sha512-3v9WoDCmbfH28znQ43cQLvLlm8fhJFIDJLW19moFI8QbXMv85yojGEphBMlT2XZUw79+tyh7GWLFaNugYZ1o9A==",
       "dependencies": {
         "@aws-sdk/types": "3.428.0",
         "@smithy/protocol-http": "^3.0.7",
@@ -582,9 +582,9 @@
       }
     },
     "node_modules/@aws-sdk/middleware-sdk-s3": {
-      "version": "3.428.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.428.0.tgz",
-      "integrity": "sha512-C9hJlzMGlDeVNn91TvC6lsTplnH4hFPM2kiuMha5A/EXPPOg9c5vFH5awL3ubEiIUPwwDu3d583hvsPd6G3qxA==",
+      "version": "3.429.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.429.0.tgz",
+      "integrity": "sha512-wCT5GoExncHUzUbW8b9q/PN3uPsbxit4PUAHw/hkrIHDKOxd9H/ClM37ZeJHNEOml5hnJOPy+rOaF9jRqo8dGg==",
       "dependencies": {
         "@aws-sdk/types": "3.428.0",
         "@aws-sdk/util-arn-parser": "3.310.0",
@@ -657,11 +657,11 @@
       }
     },
     "node_modules/@aws-sdk/region-config-resolver": {
-      "version": "3.428.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.428.0.tgz",
-      "integrity": "sha512-VqyHZ/Hoz3WrXXMx8cAhFBl8IpjodbRsTjBI117QPq1YRCegxNdGvqmGZnJj8N2Ef9MP1iU30ZWQB+sviDcogA==",
+      "version": "3.430.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.430.0.tgz",
+      "integrity": "sha512-9lqgtkcd4dqsQ2yN6V/i06blyDh4yLmS+fAS7LwEZih/NZZ2cBIR+5kb9c236auvTcuMcL1zFxVRloWwesYZjA==",
       "dependencies": {
-        "@smithy/node-config-provider": "^2.1.1",
+        "@smithy/node-config-provider": "^2.1.2",
         "@smithy/types": "^2.3.5",
         "@smithy/util-config-provider": "^2.0.0",
         "@smithy/util-middleware": "^2.0.4",
@@ -672,14 +672,14 @@
       }
     },
     "node_modules/@aws-sdk/s3-request-presigner": {
-      "version": "3.428.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.428.0.tgz",
-      "integrity": "sha512-Jup4vrMm4Xk/5aEitktjtFmFW21PQsqA4MXvhxEaUh6yk9CgLKKGIk4UvyazaNrCEqo/G/EsnMGandXN5wYnpw==",
+      "version": "3.430.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.430.0.tgz",
+      "integrity": "sha512-8+vatOoqEQTwhNXOG6QoTJ6Fszaagc+bQpgfKbRIotCLGh7g4/qgQXo73LVyFVLkS4Tg2bn/KHN8aG3qTPd1KQ==",
       "dependencies": {
         "@aws-sdk/signature-v4-multi-region": "3.428.0",
         "@aws-sdk/types": "3.428.0",
         "@aws-sdk/util-format-url": "3.428.0",
-        "@smithy/middleware-endpoint": "^2.1.0",
+        "@smithy/middleware-endpoint": "^2.1.2",
         "@smithy/protocol-http": "^3.0.7",
         "@smithy/smithy-client": "^2.1.11",
         "@smithy/types": "^2.3.5",
@@ -705,30 +705,30 @@
       }
     },
     "node_modules/@aws-sdk/token-providers": {
-      "version": "3.428.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.428.0.tgz",
-      "integrity": "sha512-Jciofr//rB1v1FLxADkXoHOCmYyiv2HVNlOq3z5Zkch9ipItOfD6X7f4G4n+IZzElIFzwe4OKoBtJfcnnfo3Pg==",
+      "version": "3.430.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.430.0.tgz",
+      "integrity": "sha512-vE+QnqG0A4MWhMEFXXPg8gPXjw03b4Q3XZbHyrANoZ+tVrzh8JhpHIcbkesGh6WrjirNqId0UghzI9VanKxsLw==",
       "dependencies": {
         "@aws-crypto/sha256-browser": "3.0.0",
         "@aws-crypto/sha256-js": "3.0.0",
-        "@aws-sdk/middleware-host-header": "3.428.0",
+        "@aws-sdk/middleware-host-header": "3.429.0",
         "@aws-sdk/middleware-logger": "3.428.0",
         "@aws-sdk/middleware-recursion-detection": "3.428.0",
         "@aws-sdk/middleware-user-agent": "3.428.0",
         "@aws-sdk/types": "3.428.0",
         "@aws-sdk/util-endpoints": "3.428.0",
         "@aws-sdk/util-user-agent-browser": "3.428.0",
-        "@aws-sdk/util-user-agent-node": "3.428.0",
-        "@smithy/config-resolver": "^2.0.14",
+        "@aws-sdk/util-user-agent-node": "3.430.0",
+        "@smithy/config-resolver": "^2.0.15",
         "@smithy/fetch-http-handler": "^2.2.3",
         "@smithy/hash-node": "^2.0.11",
         "@smithy/invalid-dependency": "^2.0.11",
         "@smithy/middleware-content-length": "^2.0.13",
-        "@smithy/middleware-endpoint": "^2.1.0",
-        "@smithy/middleware-retry": "^2.0.16",
+        "@smithy/middleware-endpoint": "^2.1.2",
+        "@smithy/middleware-retry": "^2.0.17",
         "@smithy/middleware-serde": "^2.0.11",
         "@smithy/middleware-stack": "^2.0.5",
-        "@smithy/node-config-provider": "^2.1.1",
+        "@smithy/node-config-provider": "^2.1.2",
         "@smithy/node-http-handler": "^2.1.7",
         "@smithy/property-provider": "^2.0.0",
         "@smithy/protocol-http": "^3.0.7",
@@ -740,7 +740,7 @@
         "@smithy/util-body-length-browser": "^2.0.0",
         "@smithy/util-body-length-node": "^2.1.0",
         "@smithy/util-defaults-mode-browser": "^2.0.15",
-        "@smithy/util-defaults-mode-node": "^2.0.19",
+        "@smithy/util-defaults-mode-node": "^2.0.20",
         "@smithy/util-retry": "^2.0.4",
         "@smithy/util-utf8": "^2.0.0",
         "tslib": "^2.5.0"
@@ -821,12 +821,12 @@
       }
     },
     "node_modules/@aws-sdk/util-user-agent-node": {
-      "version": "3.428.0",
-      "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.428.0.tgz",
-      "integrity": "sha512-s721C3H8TkNd0usWLPEAy7yW2lEglR8QAYojdQGzE0e0wymc671nZAFePSZFRtmqZiFOSfk0R602L5fDbP3a8Q==",
+      "version": "3.430.0",
+      "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.430.0.tgz",
+      "integrity": "sha512-DPpFPL3mFMPtipFxjY7TKQBjnhmsPzYCr4Y+qna0oR6ij8jZOz2ILQDK33GxTRNh3+bV9YYbx+ZGDOnxoK5Mhw==",
       "dependencies": {
         "@aws-sdk/types": "3.428.0",
-        "@smithy/node-config-provider": "^2.1.1",
+        "@smithy/node-config-provider": "^2.1.2",
         "@smithy/types": "^2.3.5",
         "tslib": "^2.5.0"
       },
@@ -895,9 +895,9 @@
       }
     },
     "node_modules/@esbuild/android-arm": {
-      "version": "0.19.4",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.4.tgz",
-      "integrity": "sha512-uBIbiYMeSsy2U0XQoOGVVcpIktjLMEKa7ryz2RLr7L/vTnANNEsPVAh4xOv7ondGz6ac1zVb0F8Jx20rQikffQ==",
+      "version": "0.19.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.5.tgz",
+      "integrity": "sha512-bhvbzWFF3CwMs5tbjf3ObfGqbl/17ict2/uwOSfr3wmxDE6VdS2GqY/FuzIPe0q0bdhj65zQsvqfArI9MY6+AA==",
       "cpu": [
         "arm"
       ],
@@ -912,9 +912,9 @@
       }
     },
     "node_modules/@esbuild/android-arm64": {
-      "version": "0.19.4",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.4.tgz",
-      "integrity": "sha512-mRsi2vJsk4Bx/AFsNBqOH2fqedxn5L/moT58xgg51DjX1la64Z3Npicut2VbhvDFO26qjWtPMsVxCd80YTFVeg==",
+      "version": "0.19.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.5.tgz",
+      "integrity": "sha512-5d1OkoJxnYQfmC+Zd8NBFjkhyCNYwM4n9ODrycTFY6Jk1IGiZ+tjVJDDSwDt77nK+tfpGP4T50iMtVi4dEGzhQ==",
       "cpu": [
         "arm64"
       ],
@@ -929,9 +929,9 @@
       }
     },
     "node_modules/@esbuild/android-x64": {
-      "version": "0.19.4",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.4.tgz",
-      "integrity": "sha512-4iPufZ1TMOD3oBlGFqHXBpa3KFT46aLl6Vy7gwed0ZSYgHaZ/mihbYb4t7Z9etjkC9Al3ZYIoOaHrU60gcMy7g==",
+      "version": "0.19.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.5.tgz",
+      "integrity": "sha512-9t+28jHGL7uBdkBjL90QFxe7DVA+KGqWlHCF8ChTKyaKO//VLuoBricQCgwhOjA1/qOczsw843Fy4cbs4H3DVA==",
       "cpu": [
         "x64"
       ],
@@ -946,9 +946,9 @@
       }
     },
     "node_modules/@esbuild/darwin-arm64": {
-      "version": "0.19.4",
-      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.4.tgz",
-      "integrity": "sha512-Lviw8EzxsVQKpbS+rSt6/6zjn9ashUZ7Tbuvc2YENgRl0yZTktGlachZ9KMJUsVjZEGFVu336kl5lBgDN6PmpA==",
+      "version": "0.19.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.5.tgz",
+      "integrity": "sha512-mvXGcKqqIqyKoxq26qEDPHJuBYUA5KizJncKOAf9eJQez+L9O+KfvNFu6nl7SCZ/gFb2QPaRqqmG0doSWlgkqw==",
       "cpu": [
         "arm64"
       ],
@@ -963,9 +963,9 @@
       }
     },
     "node_modules/@esbuild/darwin-x64": {
-      "version": "0.19.4",
-      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.4.tgz",
-      "integrity": "sha512-YHbSFlLgDwglFn0lAO3Zsdrife9jcQXQhgRp77YiTDja23FrC2uwnhXMNkAucthsf+Psr7sTwYEryxz6FPAVqw==",
+      "version": "0.19.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.5.tgz",
+      "integrity": "sha512-Ly8cn6fGLNet19s0X4unjcniX24I0RqjPv+kurpXabZYSXGM4Pwpmf85WHJN3lAgB8GSth7s5A0r856S+4DyiA==",
       "cpu": [
         "x64"
       ],
@@ -980,9 +980,9 @@
       }
     },
     "node_modules/@esbuild/freebsd-arm64": {
-      "version": "0.19.4",
-      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.4.tgz",
-      "integrity": "sha512-vz59ijyrTG22Hshaj620e5yhs2dU1WJy723ofc+KUgxVCM6zxQESmWdMuVmUzxtGqtj5heHyB44PjV/HKsEmuQ==",
+      "version": "0.19.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.5.tgz",
+      "integrity": "sha512-GGDNnPWTmWE+DMchq1W8Sd0mUkL+APvJg3b11klSGUDvRXh70JqLAO56tubmq1s2cgpVCSKYywEiKBfju8JztQ==",
       "cpu": [
         "arm64"
       ],
@@ -997,9 +997,9 @@
       }
     },
     "node_modules/@esbuild/freebsd-x64": {
-      "version": "0.19.4",
-      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.4.tgz",
-      "integrity": "sha512-3sRbQ6W5kAiVQRBWREGJNd1YE7OgzS0AmOGjDmX/qZZecq8NFlQsQH0IfXjjmD0XtUYqr64e0EKNFjMUlPL3Cw==",
+      "version": "0.19.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.5.tgz",
+      "integrity": "sha512-1CCwDHnSSoA0HNwdfoNY0jLfJpd7ygaLAp5EHFos3VWJCRX9DMwWODf96s9TSse39Br7oOTLryRVmBoFwXbuuQ==",
       "cpu": [
         "x64"
       ],
@@ -1014,9 +1014,9 @@
       }
     },
     "node_modules/@esbuild/linux-arm": {
-      "version": "0.19.4",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.4.tgz",
-      "integrity": "sha512-z/4ArqOo9EImzTi4b6Vq+pthLnepFzJ92BnofU1jgNlcVb+UqynVFdoXMCFreTK7FdhqAzH0vmdwW5373Hm9pg==",
+      "version": "0.19.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.5.tgz",
+      "integrity": "sha512-lrWXLY/vJBzCPC51QN0HM71uWgIEpGSjSZZADQhq7DKhPcI6NH1IdzjfHkDQws2oNpJKpR13kv7/pFHBbDQDwQ==",
       "cpu": [
         "arm"
       ],
@@ -1031,9 +1031,9 @@
       }
     },
     "node_modules/@esbuild/linux-arm64": {
-      "version": "0.19.4",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.4.tgz",
-      "integrity": "sha512-ZWmWORaPbsPwmyu7eIEATFlaqm0QGt+joRE9sKcnVUG3oBbr/KYdNE2TnkzdQwX6EDRdg/x8Q4EZQTXoClUqqA==",
+      "version": "0.19.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.5.tgz",
+      "integrity": "sha512-o3vYippBmSrjjQUCEEiTZ2l+4yC0pVJD/Dl57WfPwwlvFkrxoSO7rmBZFii6kQB3Wrn/6GwJUPLU5t52eq2meA==",
       "cpu": [
         "arm64"
       ],
@@ -1048,9 +1048,9 @@
       }
     },
     "node_modules/@esbuild/linux-ia32": {
-      "version": "0.19.4",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.4.tgz",
-      "integrity": "sha512-EGc4vYM7i1GRUIMqRZNCTzJh25MHePYsnQfKDexD8uPTCm9mK56NIL04LUfX2aaJ+C9vyEp2fJ7jbqFEYgO9lQ==",
+      "version": "0.19.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.5.tgz",
+      "integrity": "sha512-MkjHXS03AXAkNp1KKkhSKPOCYztRtK+KXDNkBa6P78F8Bw0ynknCSClO/ztGszILZtyO/lVKpa7MolbBZ6oJtQ==",
       "cpu": [
         "ia32"
       ],
@@ -1065,9 +1065,9 @@
       }
     },
     "node_modules/@esbuild/linux-loong64": {
-      "version": "0.19.4",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.4.tgz",
-      "integrity": "sha512-WVhIKO26kmm8lPmNrUikxSpXcgd6HDog0cx12BUfA2PkmURHSgx9G6vA19lrlQOMw+UjMZ+l3PpbtzffCxFDRg==",
+      "version": "0.19.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.5.tgz",
+      "integrity": "sha512-42GwZMm5oYOD/JHqHska3Jg0r+XFb/fdZRX+WjADm3nLWLcIsN27YKtqxzQmGNJgu0AyXg4HtcSK9HuOk3v1Dw==",
       "cpu": [
         "loong64"
       ],
@@ -1082,9 +1082,9 @@
       }
     },
     "node_modules/@esbuild/linux-mips64el": {
-      "version": "0.19.4",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.4.tgz",
-      "integrity": "sha512-keYY+Hlj5w86hNp5JJPuZNbvW4jql7c1eXdBUHIJGTeN/+0QFutU3GrS+c27L+NTmzi73yhtojHk+lr2+502Mw==",
+      "version": "0.19.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.5.tgz",
+      "integrity": "sha512-kcjndCSMitUuPJobWCnwQ9lLjiLZUR3QLQmlgaBfMX23UEa7ZOrtufnRds+6WZtIS9HdTXqND4yH8NLoVVIkcg==",
       "cpu": [
         "mips64el"
       ],
@@ -1099,9 +1099,9 @@
       }
     },
     "node_modules/@esbuild/linux-ppc64": {
-      "version": "0.19.4",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.4.tgz",
-      "integrity": "sha512-tQ92n0WMXyEsCH4m32S21fND8VxNiVazUbU4IUGVXQpWiaAxOBvtOtbEt3cXIV3GEBydYsY8pyeRMJx9kn3rvw==",
+      "version": "0.19.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.5.tgz",
+      "integrity": "sha512-yJAxJfHVm0ZbsiljbtFFP1BQKLc8kUF6+17tjQ78QjqjAQDnhULWiTA6u0FCDmYT1oOKS9PzZ2z0aBI+Mcyj7Q==",
       "cpu": [
         "ppc64"
       ],
@@ -1116,9 +1116,9 @@
       }
     },
     "node_modules/@esbuild/linux-riscv64": {
-      "version": "0.19.4",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.4.tgz",
-      "integrity": "sha512-tRRBey6fG9tqGH6V75xH3lFPpj9E8BH+N+zjSUCnFOX93kEzqS0WdyJHkta/mmJHn7MBaa++9P4ARiU4ykjhig==",
+      "version": "0.19.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.5.tgz",
+      "integrity": "sha512-5u8cIR/t3gaD6ad3wNt1MNRstAZO+aNyBxu2We8X31bA8XUNyamTVQwLDA1SLoPCUehNCymhBhK3Qim1433Zag==",
       "cpu": [
         "riscv64"
       ],
@@ -1133,9 +1133,9 @@
       }
     },
     "node_modules/@esbuild/linux-s390x": {
-      "version": "0.19.4",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.4.tgz",
-      "integrity": "sha512-152aLpQqKZYhThiJ+uAM4PcuLCAOxDsCekIbnGzPKVBRUDlgaaAfaUl5NYkB1hgY6WN4sPkejxKlANgVcGl9Qg==",
+      "version": "0.19.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.5.tgz",
+      "integrity": "sha512-Z6JrMyEw/EmZBD/OFEFpb+gao9xJ59ATsoTNlj39jVBbXqoZm4Xntu6wVmGPB/OATi1uk/DB+yeDPv2E8PqZGw==",
       "cpu": [
         "s390x"
       ],
@@ -1150,9 +1150,9 @@
       }
     },
     "node_modules/@esbuild/linux-x64": {
-      "version": "0.19.4",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.4.tgz",
-      "integrity": "sha512-Mi4aNA3rz1BNFtB7aGadMD0MavmzuuXNTaYL6/uiYIs08U7YMPETpgNn5oue3ICr+inKwItOwSsJDYkrE9ekVg==",
+      "version": "0.19.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.5.tgz",
+      "integrity": "sha512-psagl+2RlK1z8zWZOmVdImisMtrUxvwereIdyJTmtmHahJTKb64pAcqoPlx6CewPdvGvUKe2Jw+0Z/0qhSbG1A==",
       "cpu": [
         "x64"
       ],
@@ -1167,9 +1167,9 @@
       }
     },
     "node_modules/@esbuild/netbsd-x64": {
-      "version": "0.19.4",
-      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.4.tgz",
-      "integrity": "sha512-9+Wxx1i5N/CYo505CTT7T+ix4lVzEdz0uCoYGxM5JDVlP2YdDC1Bdz+Khv6IbqmisT0Si928eAxbmGkcbiuM/A==",
+      "version": "0.19.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.5.tgz",
+      "integrity": "sha512-kL2l+xScnAy/E/3119OggX8SrWyBEcqAh8aOY1gr4gPvw76la2GlD4Ymf832UCVbmuWeTf2adkZDK+h0Z/fB4g==",
       "cpu": [
         "x64"
       ],
@@ -1184,9 +1184,9 @@
       }
     },
     "node_modules/@esbuild/openbsd-x64": {
-      "version": "0.19.4",
-      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.4.tgz",
-      "integrity": "sha512-MFsHleM5/rWRW9EivFssop+OulYVUoVcqkyOkjiynKBCGBj9Lihl7kh9IzrreDyXa4sNkquei5/DTP4uCk25xw==",
+      "version": "0.19.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.5.tgz",
+      "integrity": "sha512-sPOfhtzFufQfTBgRnE1DIJjzsXukKSvZxloZbkJDG383q0awVAq600pc1nfqBcl0ice/WN9p4qLc39WhBShRTA==",
       "cpu": [
         "x64"
       ],
@@ -1201,9 +1201,9 @@
       }
     },
     "node_modules/@esbuild/sunos-x64": {
-      "version": "0.19.4",
-      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.4.tgz",
-      "integrity": "sha512-6Xq8SpK46yLvrGxjp6HftkDwPP49puU4OF0hEL4dTxqCbfx09LyrbUj/D7tmIRMj5D5FCUPksBbxyQhp8tmHzw==",
+      "version": "0.19.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.5.tgz",
+      "integrity": "sha512-dGZkBXaafuKLpDSjKcB0ax0FL36YXCvJNnztjKV+6CO82tTYVDSH2lifitJ29jxRMoUhgkg9a+VA/B03WK5lcg==",
       "cpu": [
         "x64"
       ],
@@ -1218,9 +1218,9 @@
       }
     },
     "node_modules/@esbuild/win32-arm64": {
-      "version": "0.19.4",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.4.tgz",
-      "integrity": "sha512-PkIl7Jq4mP6ke7QKwyg4fD4Xvn8PXisagV/+HntWoDEdmerB2LTukRZg728Yd1Fj+LuEX75t/hKXE2Ppk8Hh1w==",
+      "version": "0.19.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.5.tgz",
+      "integrity": "sha512-dWVjD9y03ilhdRQ6Xig1NWNgfLtf2o/STKTS+eZuF90fI2BhbwD6WlaiCGKptlqXlURVB5AUOxUj09LuwKGDTg==",
       "cpu": [
         "arm64"
       ],
@@ -1235,9 +1235,9 @@
       }
     },
     "node_modules/@esbuild/win32-ia32": {
-      "version": "0.19.4",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.4.tgz",
-      "integrity": "sha512-ga676Hnvw7/ycdKB53qPusvsKdwrWzEyJ+AtItHGoARszIqvjffTwaaW3b2L6l90i7MO9i+dlAW415INuRhSGg==",
+      "version": "0.19.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.5.tgz",
+      "integrity": "sha512-4liggWIA4oDgUxqpZwrDhmEfAH4d0iljanDOK7AnVU89T6CzHon/ony8C5LeOdfgx60x5cnQJFZwEydVlYx4iw==",
       "cpu": [
         "ia32"
       ],
@@ -1252,9 +1252,9 @@
       }
     },
     "node_modules/@esbuild/win32-x64": {
-      "version": "0.19.4",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.4.tgz",
-      "integrity": "sha512-HP0GDNla1T3ZL8Ko/SHAS2GgtjOg+VmWnnYLhuTksr++EnduYB0f3Y2LzHsUwb2iQ13JGoY6G3R8h6Du/WG6uA==",
+      "version": "0.19.5",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.5.tgz",
+      "integrity": "sha512-czTrygUsB/jlM8qEW5MD8bgYU2Xg14lo6kBDXW6HdxKjh8M5PzETGiSHaz9MtbXBYDloHNUAUW2tMiKW4KM9Mw==",
       "cpu": [
         "x64"
       ],
@@ -1504,11 +1504,11 @@
       }
     },
     "node_modules/@smithy/config-resolver": {
-      "version": "2.0.14",
-      "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.0.14.tgz",
-      "integrity": "sha512-K1K+FuWQoy8j/G7lAmK85o03O89s2Vvh6kMFmzEmiHUoQCRH1rzbDtMnGNiaMHeSeYJ6y79IyTusdRG+LuWwtg==",
+      "version": "2.0.15",
+      "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.0.15.tgz",
+      "integrity": "sha512-a2Pfocla5nSrG2RyB8i20jcWgMyR71TUeFKm8pmrnZotr/X22tlg4y/EhSvBK2oTE8MKHlKh4YdpDO2AryJbGQ==",
       "dependencies": {
-        "@smithy/node-config-provider": "^2.1.1",
+        "@smithy/node-config-provider": "^2.1.2",
         "@smithy/types": "^2.3.5",
         "@smithy/util-config-provider": "^2.0.0",
         "@smithy/util-middleware": "^2.0.4",
@@ -1519,11 +1519,11 @@
       }
     },
     "node_modules/@smithy/credential-provider-imds": {
-      "version": "2.0.16",
-      "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.0.16.tgz",
-      "integrity": "sha512-tKa2xF+69TvGxJT+lnJpGrKxUuAZDLYXFhqnPEgnHz+psTpkpcB4QRjHj63+uj83KaeFJdTfW201eLZeRn6FfA==",
+      "version": "2.0.17",
+      "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.0.17.tgz",
+      "integrity": "sha512-2XcD414yrwbxxuYueTo7tzLC2/w3jj9FZqfenpv3MQkocdOEmuOVS0v9WHsY/nW6V+2EcR340rj/z5HnvsHncQ==",
       "dependencies": {
-        "@smithy/node-config-provider": "^2.1.1",
+        "@smithy/node-config-provider": "^2.1.2",
         "@smithy/property-provider": "^2.0.12",
         "@smithy/types": "^2.3.5",
         "@smithy/url-parser": "^2.0.11",
@@ -1689,13 +1689,13 @@
       }
     },
     "node_modules/@smithy/middleware-endpoint": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.1.1.tgz",
-      "integrity": "sha512-YAqGagBvHqDEew4EGz9BrQ7M+f+u7ck9EL4zzYirOhIcXeBS/+q4A5+ObHDDwEp38lD6t88YUtFy3OptqEaDQg==",
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.1.2.tgz",
+      "integrity": "sha512-dua4r2EbSTRzNefz72snz+KDuXN73RCe1K+rGeemzUyYemxuh1jujFbLQbTU6DVlTgHkhtrbH0+kdOFY/SV4Qg==",
       "dependencies": {
         "@smithy/middleware-serde": "^2.0.11",
-        "@smithy/node-config-provider": "^2.1.1",
-        "@smithy/shared-ini-file-loader": "^2.2.0",
+        "@smithy/node-config-provider": "^2.1.2",
+        "@smithy/shared-ini-file-loader": "^2.2.1",
         "@smithy/types": "^2.3.5",
         "@smithy/url-parser": "^2.0.11",
         "@smithy/util-middleware": "^2.0.4",
@@ -1706,11 +1706,11 @@
       }
     },
     "node_modules/@smithy/middleware-retry": {
-      "version": "2.0.16",
-      "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.16.tgz",
-      "integrity": "sha512-Br5+0yoiMS0ugiOAfJxregzMMGIRCbX4PYo1kDHtLgvkA/d++aHbnHB819m5zOIAMPvPE7AThZgcsoK+WOsUTA==",
+      "version": "2.0.17",
+      "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.17.tgz",
+      "integrity": "sha512-ZYVU1MmshCTbEKTNc5h7/Pps1vhH5C7hRclQWnAbVYKkIT+PEGu9dSVqprzEo/nlMA8Zv4Dj5Y+fv3pRnUwElw==",
       "dependencies": {
-        "@smithy/node-config-provider": "^2.1.1",
+        "@smithy/node-config-provider": "^2.1.2",
         "@smithy/protocol-http": "^3.0.7",
         "@smithy/service-error-classification": "^2.0.4",
         "@smithy/types": "^2.3.5",
@@ -1748,12 +1748,12 @@
       }
     },
     "node_modules/@smithy/node-config-provider": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.1.1.tgz",
-      "integrity": "sha512-1lF6s1YWBi1LBu2O30tD3jyTgMtuvk/Z1twzXM4GPYe4dmZix4nNREPJIPOcfFikNU2o0eTYP80+izx5F2jIJA==",
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.1.2.tgz",
+      "integrity": "sha512-tbYh/JK/ddxKWYTtjLgap0juyivJ0wCvywMqINb54zyOVHoKYM6iYl7DosQA0owFaNp6GAx1lXFjqGz7L2fAqA==",
       "dependencies": {
         "@smithy/property-provider": "^2.0.12",
-        "@smithy/shared-ini-file-loader": "^2.2.0",
+        "@smithy/shared-ini-file-loader": "^2.2.1",
         "@smithy/types": "^2.3.5",
         "tslib": "^2.5.0"
       },
@@ -1837,9 +1837,9 @@
       }
     },
     "node_modules/@smithy/shared-ini-file-loader": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.2.0.tgz",
-      "integrity": "sha512-xFXqs4vAb5BdkzHSRrTapFoaqS4/3m/CGZzdw46fBjYZ0paYuLAoMY60ICCn1FfGirG+PiJ3eWcqJNe4/SkfyA==",
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.2.1.tgz",
+      "integrity": "sha512-eAYajwo2eTTVU5KPX90+V6ccfrWphrzcUwOt7n9pLOMBO0fOKlRVshbvCBqfRCxEn7OYDGH6TsL3yrx+hAjddA==",
       "dependencies": {
         "@smithy/types": "^2.3.5",
         "tslib": "^2.5.0"
@@ -1971,13 +1971,13 @@
       }
     },
     "node_modules/@smithy/util-defaults-mode-node": {
-      "version": "2.0.19",
-      "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.19.tgz",
-      "integrity": "sha512-7pScU4jBFADB2MBYKM3zb5onMh6Nn0X3IfaFVLYPyCarTIZDLUtUl1GtruzEUJPmDzP+uGeqOtU589HDY0Ni6g==",
+      "version": "2.0.20",
+      "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.20.tgz",
+      "integrity": "sha512-kJjcZ/Lzvs3sPDKBwlhZsFFcgPNIpB3CMb6/saCakawRzo0E+JkyS3ZZRjVR3ce29yHtwoP/0YLKC1PeH0Dffg==",
       "dependencies": {
-        "@smithy/config-resolver": "^2.0.14",
-        "@smithy/credential-provider-imds": "^2.0.16",
-        "@smithy/node-config-provider": "^2.1.1",
+        "@smithy/config-resolver": "^2.0.15",
+        "@smithy/credential-provider-imds": "^2.0.17",
+        "@smithy/node-config-provider": "^2.1.2",
         "@smithy/property-provider": "^2.0.12",
         "@smithy/smithy-client": "^2.1.11",
         "@smithy/types": "^2.3.5",
@@ -2084,27 +2084,27 @@
       "dev": true
     },
     "node_modules/@types/bootstrap": {
-      "version": "5.2.7",
-      "resolved": "https://registry.npmjs.org/@types/bootstrap/-/bootstrap-5.2.7.tgz",
-      "integrity": "sha512-vWs0HzobIB8Af2F0B1GXpaVLSVn1NWULDYgTIWp08Et/r2B3aAwwhFBeOs/rRFWJA38EZTXkWP3tepIjpQkpLg==",
+      "version": "5.2.8",
+      "resolved": "https://registry.npmjs.org/@types/bootstrap/-/bootstrap-5.2.8.tgz",
+      "integrity": "sha512-14do+aWZPc1w3G+YevSsy8eas1XEPhTOUNBhQX/r12YKn7ySssATJusBQ/HCQAd2nq54U8vvrftHSb1YpeJUXg==",
       "dev": true,
       "dependencies": {
         "@popperjs/core": "^2.9.2"
       }
     },
     "node_modules/@types/dompurify": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.3.tgz",
-      "integrity": "sha512-odiGr/9/qMqjcBOe5UhcNLOFHSYmKFOyr+bJ/Xu3Qp4k1pNPAlNLUVNNLcLfjQI7+W7ObX58EdD3H+3p3voOvA==",
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.4.tgz",
+      "integrity": "sha512-1Jk8S/IRzNSbwQRbuGuLFHviwxQ8pX81ZEW3INY9432Cwb4VedkBYan8gSIXVLOLHBtimOmUTEYphjRVmo+30g==",
       "dev": true,
       "dependencies": {
         "@types/trusted-types": "*"
       }
     },
     "node_modules/@types/json-schema": {
-      "version": "7.0.13",
-      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz",
-      "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==",
+      "version": "7.0.14",
+      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz",
+      "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==",
       "dev": true
     },
     "node_modules/@types/node": {
@@ -3322,9 +3322,9 @@
       }
     },
     "node_modules/esbuild": {
-      "version": "0.19.4",
-      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.4.tgz",
-      "integrity": "sha512-x7jL0tbRRpv4QUyuDMjONtWFciygUxWaUM1kMX2zWxI0X2YWOt7MSA0g4UdeSiHM8fcYVzpQhKYOycZwxTdZkA==",
+      "version": "0.19.5",
+      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.5.tgz",
+      "integrity": "sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ==",
       "dev": true,
       "hasInstallScript": true,
       "peer": true,
@@ -3335,28 +3335,28 @@
         "node": ">=12"
       },
       "optionalDependencies": {
-        "@esbuild/android-arm": "0.19.4",
-        "@esbuild/android-arm64": "0.19.4",
-        "@esbuild/android-x64": "0.19.4",
-        "@esbuild/darwin-arm64": "0.19.4",
-        "@esbuild/darwin-x64": "0.19.4",
-        "@esbuild/freebsd-arm64": "0.19.4",
-        "@esbuild/freebsd-x64": "0.19.4",
-        "@esbuild/linux-arm": "0.19.4",
-        "@esbuild/linux-arm64": "0.19.4",
-        "@esbuild/linux-ia32": "0.19.4",
-        "@esbuild/linux-loong64": "0.19.4",
-        "@esbuild/linux-mips64el": "0.19.4",
-        "@esbuild/linux-ppc64": "0.19.4",
-        "@esbuild/linux-riscv64": "0.19.4",
-        "@esbuild/linux-s390x": "0.19.4",
-        "@esbuild/linux-x64": "0.19.4",
-        "@esbuild/netbsd-x64": "0.19.4",
-        "@esbuild/openbsd-x64": "0.19.4",
-        "@esbuild/sunos-x64": "0.19.4",
-        "@esbuild/win32-arm64": "0.19.4",
-        "@esbuild/win32-ia32": "0.19.4",
-        "@esbuild/win32-x64": "0.19.4"
+        "@esbuild/android-arm": "0.19.5",
+        "@esbuild/android-arm64": "0.19.5",
+        "@esbuild/android-x64": "0.19.5",
+        "@esbuild/darwin-arm64": "0.19.5",
+        "@esbuild/darwin-x64": "0.19.5",
+        "@esbuild/freebsd-arm64": "0.19.5",
+        "@esbuild/freebsd-x64": "0.19.5",
+        "@esbuild/linux-arm": "0.19.5",
+        "@esbuild/linux-arm64": "0.19.5",
+        "@esbuild/linux-ia32": "0.19.5",
+        "@esbuild/linux-loong64": "0.19.5",
+        "@esbuild/linux-mips64el": "0.19.5",
+        "@esbuild/linux-ppc64": "0.19.5",
+        "@esbuild/linux-riscv64": "0.19.5",
+        "@esbuild/linux-s390x": "0.19.5",
+        "@esbuild/linux-x64": "0.19.5",
+        "@esbuild/netbsd-x64": "0.19.5",
+        "@esbuild/openbsd-x64": "0.19.5",
+        "@esbuild/sunos-x64": "0.19.5",
+        "@esbuild/win32-arm64": "0.19.5",
+        "@esbuild/win32-ia32": "0.19.5",
+        "@esbuild/win32-x64": "0.19.5"
       }
     },
     "node_modules/escape-string-regexp": {
diff --git a/src/App.vue b/src/App.vue
index 7dca0e5eb8c08bc8fcd948eb9e818bbc2e5232cf..a9b94a9a34d38fffe98a9e950256d42049652a10 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -9,6 +9,7 @@ import { OpenAPI as AuthOpenAPI } from "@/client/auth";
 import { OpenAPI as WorkflowOpenAPI } from "@/client/workflow";
 import { environment } from "@/environment";
 import FooterBottom from "@/components/FooterBottom.vue";
+import axios from "axios";
 
 const { cookies } = useCookies();
 const store = useAuthStore();
@@ -18,6 +19,26 @@ onBeforeMount(() => {
   S3ProxyOpenAPI.BASE = environment.S3PROXY_API_BASE_URL;
   AuthOpenAPI.BASE = environment.AUTH_API_BASE_URL;
   WorkflowOpenAPI.BASE = environment.WORKFLOW_API_BASE_URL;
+  axios.interceptors.response.use(
+    (res) => res,
+    (err) => {
+      if (
+        (err.response.status === 400 || err.response.status === 403) &&
+        err.response.data.detail?.includes("JWT")
+      ) {
+        store.logout();
+        cookies.remove("bearer");
+        router.push({
+          name: "login",
+          query: {
+            login_error:
+              err.response.status === 400 ? "token_invalid" : "token_expired",
+          },
+        });
+      }
+      return Promise.reject(err);
+    },
+  );
   store.setToken(cookies.get("bearer"));
   router.beforeEach(async (to) => {
     // make sure the user is authenticated
diff --git a/src/client/auth/models/ErrorDetail.ts b/src/client/auth/models/ErrorDetail.ts
index 343c8124f88bce59decea9cba6085126fe143db8..eba50ab9335b70df9b29cada4c54cf9ffaad10a4 100644
--- a/src/client/auth/models/ErrorDetail.ts
+++ b/src/client/auth/models/ErrorDetail.ts
@@ -4,9 +4,7 @@
 /* eslint-disable */
 
 /**
- *
  * Schema for a error due to a rejected request.
- *
  */
 export type ErrorDetail = {
     /**
diff --git a/src/client/auth/models/User.ts b/src/client/auth/models/User.ts
index fb73505018f43f56cff2810494177fe5da6c82b6..8804790e499d6f84af8e66835bdfc8f9a1a269ff 100644
--- a/src/client/auth/models/User.ts
+++ b/src/client/auth/models/User.ts
@@ -6,9 +6,7 @@
 import type { RoleEnum } from './RoleEnum';
 
 /**
- *
  * Schema for a user.
- *
  */
 export type User = {
     /**
@@ -22,6 +20,6 @@ export type User = {
     /**
      * Roles of the user
      */
-    roles: (Array<RoleEnum> | null);
+    roles?: (Array<RoleEnum> | null);
 };
 
diff --git a/src/client/workflow/models/WorkflowCredentialsOut.ts b/src/client/workflow/models/WorkflowCredentialsOut.ts
index 3b669c25db50ce191e19e90ff62ce1b18a0447c3..8a447b4228303bd6e0204694408a131b9a15b0d2 100644
--- a/src/client/workflow/models/WorkflowCredentialsOut.ts
+++ b/src/client/workflow/models/WorkflowCredentialsOut.ts
@@ -7,6 +7,6 @@ export type WorkflowCredentialsOut = {
     /**
      * Token to access the content git repository
      */
-    token: (string | null);
+    token?: (string | null);
 };
 
diff --git a/src/client/workflow/models/WorkflowExecutionOut.ts b/src/client/workflow/models/WorkflowExecutionOut.ts
index 9532a9c0841cf85cc587abd91367e6755bdf8596..885ef61f9bbd619a13d6e83d7582bdc4e8309d9e 100644
--- a/src/client/workflow/models/WorkflowExecutionOut.ts
+++ b/src/client/workflow/models/WorkflowExecutionOut.ts
@@ -9,15 +9,15 @@ export type WorkflowExecutionOut = {
     /**
      * Workflow version git commit hash
      */
-    workflow_version_id: (string | null);
+    workflow_version_id?: (string | null);
     /**
      * Optional notes for this workflow execution
      */
-    notes: (string | null);
+    notes?: (string | null);
     /**
      * ID of the workflow mode this workflow execution runs in
      */
-    mode: (string | null);
+    mode?: (string | null);
     /**
      * ID of the workflow execution
      */
@@ -33,7 +33,7 @@ export type WorkflowExecutionOut = {
     /**
      * End time of the workflow execution as UNIX timestamp
      */
-    end_time: (number | null);
+    end_time?: (number | null);
     /**
      * Status of the workflow execution
      */
@@ -41,6 +41,6 @@ export type WorkflowExecutionOut = {
     /**
      * Id of the workflow
      */
-    workflow_id: (string | null);
+    workflow_id?: (string | null);
 };
 
diff --git a/src/client/workflow/models/WorkflowOut.ts b/src/client/workflow/models/WorkflowOut.ts
index a9c6a081189c37ba74c4e5a8db0307fd29d2e07a..e0ef6d9d76564b982caf7146d138252e69202b32 100644
--- a/src/client/workflow/models/WorkflowOut.ts
+++ b/src/client/workflow/models/WorkflowOut.ts
@@ -33,6 +33,6 @@ export type WorkflowOut = {
     /**
      * Flag if the workflow is hosted in a private git repository
      */
-    private: boolean;
+    private?: boolean;
 };
 
diff --git a/src/client/workflow/models/WorkflowVersion.ts b/src/client/workflow/models/WorkflowVersion.ts
index a4248ce4db3ba9fdb32e70dfc800e6b71a7f42ca..26b656fb2a8edb63630ab92736f2f6c6b592a656 100644
--- a/src/client/workflow/models/WorkflowVersion.ts
+++ b/src/client/workflow/models/WorkflowVersion.ts
@@ -25,7 +25,7 @@ export type WorkflowVersion = {
     /**
      * URL of the icon for this workflow version
      */
-    icon_url: (string | null);
+    icon_url?: (string | null);
     /**
      * Timestamp when the version was created as UNIX timestamp
      */
@@ -33,6 +33,6 @@ export type WorkflowVersion = {
     /**
      * Optional modes his workflow version has
      */
-    modes: Array<string>;
+    modes?: Array<string>;
 };
 
diff --git a/src/client/workflow/services/WorkflowModeService.ts b/src/client/workflow/services/WorkflowModeService.ts
index 4c9757918efd364406294002c88e7a1eecc2c1ad..f5e1926c3ffbe233d8fe9027c91683a71fd23f94 100644
--- a/src/client/workflow/services/WorkflowModeService.ts
+++ b/src/client/workflow/services/WorkflowModeService.ts
@@ -11,7 +11,7 @@ import { request as __request } from '../core/request';
 export class WorkflowModeService {
 
     /**
-     * List workflows
+     * Get workflow mode
      * Get a workflow mode
      *
      * Permission 'workflow:read' required
diff --git a/src/client/workflow/services/WorkflowService.ts b/src/client/workflow/services/WorkflowService.ts
index dad2fcb71c8296bc1ca20c2989db666d735a599a..4409a96bab414b3598f3c7c6a01e525106de96c1 100644
--- a/src/client/workflow/services/WorkflowService.ts
+++ b/src/client/workflow/services/WorkflowService.ts
@@ -333,7 +333,7 @@ export class WorkflowService {
      * Permission "workflow:read" required.
      * @param wid ID of a workflow
      * @param gitCommitHash Git commit git_commit_hash of specific version.
-     * @param document Specific which type of documentation the client wants to fetch
+     * @param document Specify which type of documentation the client wants to fetch
      * @param modeId Workflow Mode
      * @returns any Successful Response
      * @throws ApiError
diff --git a/src/client/workflow/services/WorkflowVersionService.ts b/src/client/workflow/services/WorkflowVersionService.ts
index 0d46dd904a575a8b3b60d2d399b494f6dce0182a..9553b053cc3ee6f33dd087620f8ad227758324ef 100644
--- a/src/client/workflow/services/WorkflowVersionService.ts
+++ b/src/client/workflow/services/WorkflowVersionService.ts
@@ -151,7 +151,7 @@ export class WorkflowVersionService {
      * Permission "workflow:read" required.
      * @param wid ID of a workflow
      * @param gitCommitHash Git commit git_commit_hash of specific version.
-     * @param document Specific which type of documentation the client wants to fetch
+     * @param document Specify which type of documentation the client wants to fetch
      * @param modeId Workflow Mode
      * @returns any Successful Response
      * @throws ApiError
diff --git a/src/components/NavbarTop.vue b/src/components/NavbarTop.vue
index ec3b7c67bd8eb32340b18237efd7d184c10c1879..ff3ff0f3281681f0a6299631d8af2d433c236828 100644
--- a/src/components/NavbarTop.vue
+++ b/src/components/NavbarTop.vue
@@ -179,7 +179,7 @@ watch(
           <li
             v-for="role in store.roles"
             :key="role"
-            class="dropdown-item text-capitalize"
+            class="dropdown-item text-capitalize disabled"
           >
             {{ role }}
           </li>
diff --git a/src/components/object-storage/BucketListItem.vue b/src/components/object-storage/BucketListItem.vue
index 0650a4c35ab93069487ac4862744d295f9afe01d..c2baf08f56c9cff948115eed1043e41a9e121c8d 100644
--- a/src/components/object-storage/BucketListItem.vue
+++ b/src/components/object-storage/BucketListItem.vue
@@ -96,10 +96,10 @@ onMounted(() => {
       >
         <span class="text-truncate flex-grow-3">
           <template v-if="bucket.owner_constraint === Constraint.READ"
-            >Download Bucket</template
+            >download-bucket</template
           >
           <template v-else-if="bucket.owner_constraint === Constraint.WRITE"
-            >Upload Bucket</template
+            >upload-bucket</template
           >
           <template v-else>{{ bucket.name }}</template>
         </span>
diff --git a/src/components/object-storage/modals/CreateBucketModal.vue b/src/components/object-storage/modals/CreateBucketModal.vue
index 01411cdef4c7b9ee7dfa2ea51e04bc49a21e36e8..ad2d85d6e008eeb233e2e8f7beebd6377134959f 100644
--- a/src/components/object-storage/modals/CreateBucketModal.vue
+++ b/src/components/object-storage/modals/CreateBucketModal.vue
@@ -8,8 +8,12 @@ import { useBucketStore } from "@/stores/buckets";
 
 const router = useRouter();
 const bucketRepository = useBucketStore();
-const bucket = reactive<BucketIn>({ name: "", description: "" });
+
 const bucketCreateForm = ref<HTMLFormElement | undefined>(undefined);
+const bucketNameElement = ref<HTMLInputElement | undefined>(undefined);
+
+const bucket = reactive<BucketIn>({ name: "", description: "" });
+
 const formState = reactive<{
   validated: boolean;
   bucketNameTaken: boolean;
@@ -36,6 +40,7 @@ function createBucket() {
   formState.bucketNameTaken = false;
   bucket.description = bucket.description.trim();
   bucket.name = bucket.name.trim();
+  bucketNameElement.value?.setCustomValidity("");
   if (bucketCreateForm.value?.checkValidity()) {
     formState.loading = true;
     bucketRepository
@@ -57,6 +62,9 @@ function createBucket() {
           error.body["detail"] === "Bucket name is already taken"
         ) {
           formState.bucketNameTaken = true;
+          bucketNameElement.value?.setCustomValidity(
+            "Bucket name is already taken",
+          );
         }
       })
       .finally(() => {
@@ -68,6 +76,7 @@ function createBucket() {
 function modalClosed() {
   formState.validated = false;
   formState.bucketNameTaken = false;
+  bucketNameElement.value?.setCustomValidity("");
 }
 </script>
 
@@ -83,7 +92,6 @@ function modalClosed() {
       <form
         id="bucketCreateForm"
         :class="{ 'was-validated': formState.validated }"
-        novalidate
         ref="bucketCreateForm"
       >
         <div class="mb-3">
@@ -96,17 +104,29 @@ function modalClosed() {
               required
               minlength="3"
               maxlength="63"
-              pattern="(?!(^((2(5[0-5]|[0-4]\d)|[01]?\d{1,2})\.){3}(2(5[0-5]|[0-4]\d)|[01]?\d{1,2})$))^[a-z\d][a-z\d.\-]{1,61}[a-z\d]$"
+              pattern="(?!(^(\d+\.){3}\d+$))^([a-z0-9](?:[a-z0-9\-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9\-]*[a-z0-9])?$"
               v-model="bucket.name"
+              ref="bucketNameElement"
             />
             <div class="invalid-feedback">
-              Requirements
-              <ul>
-                <li>At least 3 Characters long</li>
-                <li>Lowercase</li>
-                <li>Only [a-z][0-9].-</li>
-                <li>No IP address</li>
-              </ul>
+              <div v-if="formState.bucketNameTaken">
+                Bucket name already taken.
+              </div>
+              <div>
+                Requirements
+                <ul>
+                  <li>At least 3 Characters long</li>
+                  <li>Unique in CloWM</li>
+                  <li>
+                    Only lowercase letters, numbers, single periods (.) and
+                    hyphen (-)
+                  </li>
+                  <li>Start and end with letter or number</li>
+                  <li>
+                    A letter or number must be before and after a period (.)
+                  </li>
+                </ul>
+              </div>
             </div>
           </div>
         </div>
@@ -134,9 +154,6 @@ function modalClosed() {
           </div>
         </div>
       </form>
-      <div v-if="formState.bucketNameTaken" class="text-danger">
-        Bucket name already taken.
-      </div>
     </template>
     <template v-slot:footer>
       <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">
diff --git a/src/components/workflows/modals/UpdateWorkflowModal.vue b/src/components/workflows/modals/UpdateWorkflowModal.vue
index 58320682a6a0c6c3d05f28483d0c53b42a7aeff1..2f1aa6daacde55fd19b1b61787e48cbe27a8c685 100644
--- a/src/components/workflows/modals/UpdateWorkflowModal.vue
+++ b/src/components/workflows/modals/UpdateWorkflowModal.vue
@@ -91,7 +91,7 @@ watch(
   () => props.workflow,
   () => {
     resetForm();
-    formState.modesEnabled = latestVersion.value.modes.length > 0;
+    formState.modesEnabled = (latestVersion.value.modes ?? []).length > 0;
     if (props.workflow.private) {
       formState.loadCredentials = true;
       WorkflowCredentialsService.workflowCredentialsGetWorkflowCredentials(
@@ -118,7 +118,8 @@ watch(
     if (show) {
       workflowModesCollapse?.show();
       if (
-        latestVersion.value.modes.length + workflowModes.addModes.length ===
+        (latestVersion.value.modes?.length ?? 0) +
+          workflowModes.addModes.length ===
         0
       ) {
         addMode();
@@ -176,10 +177,11 @@ function checkRepository() {
       workflowUpdate.git_commit_hash,
       formState.workflowToken,
     );
-    const oldModes = latestVersion.value.modes
-      .filter((mode_id) => !workflowModes.deleteModes.includes(mode_id)) // filter all old modes that should be deleted
-      .map((mode_id) => workflowRepository.modeMapping[mode_id]) // map mode id to mode object
-      .filter((mode) => mode != undefined); // filter all mode objects that are undefined
+    const oldModes =
+      (latestVersion.value.modes ?? [])
+        .filter((mode_id) => !workflowModes.deleteModes.includes(mode_id)) // filter all old modes that should be deleted
+        .map((mode_id) => workflowRepository.modeMapping[mode_id]) // map mode id to mode object
+        .filter((mode) => mode != undefined) ?? []; // filter all mode objects that are undefined
     const newModes = formState.modesEnabled ? workflowModes.addModes : [];
     repo
       .checkFilesExist(
@@ -264,7 +266,7 @@ function addMode() {
 
 function addOldMode(mode_id: string) {
   if (
-    latestVersion.value.modes.length +
+    (latestVersion.value.modes?.length ?? 0) +
       workflowModes.addModes.length -
       workflowModes.deleteModes.length <
     10
@@ -277,7 +279,10 @@ function addOldMode(mode_id: string) {
 }
 
 function removeNewMode(mode_id: string) {
-  if (latestVersion.value.modes.length + workflowModes.addModes.length > 1) {
+  if (
+    (latestVersion.value.modes?.length ?? 0) + workflowModes.addModes.length >
+    1
+  ) {
     workflowModes.addModes = workflowModes.addModes.filter(
       (mode) => mode.mode_id != mode_id,
     );
@@ -423,7 +428,7 @@ onMounted(() => {
               id="updateWorkflowModesCheckbox"
               @change="formState.allowUpload = false"
               aria-controls="#updateWorkflowModesCollapse"
-              :disabled="latestVersion.modes.length > 0"
+              :disabled="latestVersion.modes && latestVersion.modes.length > 0"
             />
             <label class="form-check-label" for="updateWorkflowModesCheckbox">
               Enable Workflow Modes
@@ -433,7 +438,7 @@ onMounted(() => {
               class="btn btn-primary float-end"
               @click="addMode"
               :disabled="
-                latestVersion.modes.length +
+                (latestVersion.modes?.length ?? 0) +
                   workflowModes.addModes.length -
                   workflowModes.deleteModes.length >=
                 10
@@ -567,7 +572,7 @@ onMounted(() => {
                   class="text-danger me-1 fs-6 cursor-pointer"
                   @click="removeNewMode(mode.mode_id)"
                 />
-                New Mode {{ latestVersion.modes.length + index + 1 }}
+                New Mode {{ (latestVersion.modes?.length ?? 0) + index + 1 }}
               </h6>
               <div class="col-6">
                 <label :for="'modeNameInput-' + index" class="form-label"
diff --git a/src/stores/users.ts b/src/stores/users.ts
index 76e987a733661dbacabfd58c096ad5bd7adacb6c..040703865e110053e74747ce5897031be038c027 100644
--- a/src/stores/users.ts
+++ b/src/stores/users.ts
@@ -116,9 +116,9 @@ export const useAuthStore = defineStore({
     },
     fetchUsernames(uids: string[]): Promise<User[]> {
       const filteredIds = uids
-        .filter((uid) => !this.userMapping[uid]) // filter null modes and already present modes
+        .filter((uid) => !this.userMapping[uid]) // filter null UIDs and already present UIDs
         .filter(
-          // filter unique workflow versions
+          // filter unique UIDs
           (modeId, index, array) =>
             array.findIndex((val) => val === modeId) === index,
         );
diff --git a/src/stores/workflows.ts b/src/stores/workflows.ts
index c06edf88bc6aa099ee166a6a61d8fa46308983f5..29c8e8d4dea182522fd20bccce3ffd10619a34ba 100644
--- a/src/stores/workflows.ts
+++ b/src/stores/workflows.ts
@@ -72,9 +72,9 @@ export const useWorkflowStore = defineStore({
           }
           this.fetchWorkflowModes(
             workflows
-              .map((workflow) => workflow.versions)
+              .map((workflow) => workflow.versions ?? [])
               .flat()
-              .map((version) => version.modes)
+              .map((version) => version.modes ?? [])
               .flat(),
           );
           return workflows;
@@ -97,9 +97,9 @@ export const useWorkflowStore = defineStore({
           }
           this.fetchWorkflowModes(
             workflows
-              .map((workflow) => workflow.versions)
+              .map((workflow) => workflow.versions ?? [])
               .flat()
-              .map((version) => version.modes)
+              .map((version) => version.modes ?? [])
               .flat(),
           );
           return workflows;
@@ -168,7 +168,7 @@ export const useWorkflowStore = defineStore({
             this.workflowMapping[workflow_id] = workflow;
           }
           this.fetchWorkflowModes(
-            workflow.versions.map((version) => version.modes).flat(),
+            workflow.versions.map((version) => version.modes ?? []).flat(),
           );
           return workflow;
         })
diff --git a/src/views/object-storage/S3KeyView.vue b/src/views/object-storage/S3KeyView.vue
index d2ac7282b5b2f2162da50b030ddbc590176e6670..87ae43cf260cd6f36d713aa494160c0b816caa53 100644
--- a/src/views/object-storage/S3KeyView.vue
+++ b/src/views/object-storage/S3KeyView.vue
@@ -20,7 +20,6 @@ watch(
   () => props.s3key.access_key,
   () => {
     visibleKeys.secret = false;
-    visibleKeys.access = false;
   },
 );
 const visibleKeys = reactive<{
@@ -28,7 +27,7 @@ const visibleKeys = reactive<{
   access: boolean;
 }>({
   secret: false,
-  access: false,
+  access: true,
 });
 
 function deleteKeyTrigger() {
diff --git a/src/views/workflows/ReviewWorkflowsView.vue b/src/views/workflows/ReviewWorkflowsView.vue
index 21c0f91651249b2f20432c7710b358f9604084ca..63ed00942e6f2e04d7c57e76b4a3544de0e07dcd 100644
--- a/src/views/workflows/ReviewWorkflowsView.vue
+++ b/src/views/workflows/ReviewWorkflowsView.vue
@@ -121,7 +121,7 @@ onMounted(() => {
                       {{ version.git_commit_hash }}
                     </a>
                   </td>
-                  <td>#Modes: {{ version.modes.length }}</td>
+                  <td>#Modes: {{ version.modes?.length ?? 0 }}</td>
                   <td>
                     <router-link
                       :to="{
@@ -132,7 +132,7 @@ onMounted(() => {
                         },
                         query: {
                           developerView: 'true',
-                          workflowModeId: version.modes[0],
+                          workflowModeId: (version.modes ?? [])[0],
                         },
                       }"
                     >