diff --git a/gateway/src/main/webapp/app/app.module.ts b/gateway/src/main/webapp/app/app.module.ts index 28a163f48..c5bbd0b8f 100644 --- a/gateway/src/main/webapp/app/app.module.ts +++ b/gateway/src/main/webapp/app/app.module.ts @@ -24,7 +24,8 @@ import * as moment from 'moment'; // jhipster-needle-angular-add-module-import JHipster will add new module here import { JhiMainComponent, NavbarComponent, FooterComponent, PageRibbonComponent, ActiveMenuDirective, ErrorComponent } from './layouts'; import { QuillModule } from 'ngx-quill'; - +import { library } from '@fortawesome/fontawesome-svg-core'; +import { faBars } from '@fortawesome/free-solid-svg-icons'; @NgModule({ imports: [ BrowserModule, @@ -72,5 +73,6 @@ import { QuillModule } from 'ngx-quill'; export class GatewayAppModule { constructor(private dpConfig: NgbDatepickerConfig) { this.dpConfig.minDate = { year: moment().year() - 100, month: 1, day: 1 }; + library.add(faBars); } } diff --git a/ui/angular.json b/ui/angular.json index 3411faf84..25cd7255a 100644 --- a/ui/angular.json +++ b/ui/angular.json @@ -25,7 +25,8 @@ "inlineStyleLanguage": "scss", "assets": [ "src/favicon.ico", - "src/assets" + "src/assets", + "src/content/images" ], "styles": [ "src/styles.scss" diff --git a/ui/package-lock.json b/ui/package-lock.json index de5e21050..6c3874553 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -8,23 +8,27 @@ "name": "gateway", "version": "0.0.0", "dependencies": { - "@angular/animations": "^16.2.8", - "@angular/common": "^16.2.8", - "@angular/compiler": "^16.2.8", - "@angular/core": "^16.2.8", - "@angular/forms": "^16.2.8", - "@angular/platform-browser": "^16.2.8", - "@angular/platform-browser-dynamic": "^16.2.8", - "@angular/router": "^16.2.8", + "@angular/animations": "^16.2.9", + "@angular/common": "^16.2.9", + "@angular/compiler": "^16.2.9", + "@angular/core": "^16.2.9", + "@angular/forms": "^16.2.9", + "@angular/platform-browser": "^16.2.9", + "@angular/platform-browser-dynamic": "^16.2.9", + "@angular/router": "^16.2.9", + "@fortawesome/angular-fontawesome": "^0.13.0", + "@fortawesome/free-solid-svg-icons": "^6.4.2", + "@ng-bootstrap/ng-bootstrap": "^15.1.1", + "moment": "^2.29.4", "ngx-webstorage": "^12.0.0", "rxjs": "~7.5.0", "tslib": "^2.3.0", "zone.js": "~0.13.3" }, "devDependencies": { - "@angular-devkit/build-angular": "^16.2.5", - "@angular/cli": "~16.2.5", - "@angular/compiler-cli": "^16.2.8", + "@angular-devkit/build-angular": "^16.2.6", + "@angular/cli": "~16.2.6", + "@angular/compiler-cli": "^16.2.9", "@types/jasmine": "~4.0.0", "jasmine-core": "~4.3.0", "karma": "~6.4.0", @@ -39,7 +43,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -49,12 +52,12 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1602.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1602.5.tgz", - "integrity": "sha512-lbFA2nrF0A1Rs6AU9yYeSHflsiorqL4tSwL7wMtQWMNawRjORiY7IwETyL0PmnlKsbbPlTGnWBhMfeGyBOowEw==", + "version": "0.1602.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1602.6.tgz", + "integrity": "sha512-b1NNV3yNg6Rt86ms20bJIroWUI8ihaEwv5k+EoijEXLoMs4eNs5PhqL+QE8rTj+q9pa1gSrWf2blXor2JGwf1g==", "dev": true, "dependencies": { - "@angular-devkit/core": "16.2.5", + "@angular-devkit/core": "16.2.6", "rxjs": "7.8.1" }, "engines": { @@ -73,15 +76,15 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "16.2.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.2.5.tgz", - "integrity": "sha512-ZHyMhhSZkulJiDyTvONJV2OwbxTdjbrJGfkUhv4k4f4HfV8ADUXlhanGjuqykxWG2CmDIsV09j/5b1lg2fYqww==", + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.2.6.tgz", + "integrity": "sha512-QdU/q77K1P8CPEEZGxw1QqLcnA9ofboDWS7vcLRBmFmk2zydtLTApbK0P8GNDRbnmROOKkoaLo+xUTDJz9gvPA==", "dev": true, "dependencies": { "@ampproject/remapping": "2.2.1", - "@angular-devkit/architect": "0.1602.5", - "@angular-devkit/build-webpack": "0.1602.5", - "@angular-devkit/core": "16.2.5", + "@angular-devkit/architect": "0.1602.6", + "@angular-devkit/build-webpack": "0.1602.6", + "@angular-devkit/core": "16.2.6", "@babel/core": "7.22.9", "@babel/generator": "7.22.9", "@babel/helper-annotate-as-pure": "7.22.5", @@ -93,7 +96,7 @@ "@babel/runtime": "7.22.6", "@babel/template": "7.22.5", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "16.2.5", + "@ngtools/webpack": "16.2.6", "@vitejs/plugin-basic-ssl": "1.0.1", "ansi-colors": "4.1.3", "autoprefixer": "10.4.14", @@ -243,12 +246,12 @@ } }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1602.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1602.5.tgz", - "integrity": "sha512-cpdhZdi1I3/gu3wcwQyIstrbE0kpoa5vvHu9MFzQ9a/DZV0aAev2d1e9rgOwSRUTCB83LV8+eBY99jqmF54U/g==", + "version": "0.1602.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1602.6.tgz", + "integrity": "sha512-BJPR6xdq7gRJ6bVWnZ81xHyH75j7lyLbegCXbvUNaM8TWVBkwWsSdqr2NQ717dNLLn5umg58SFpU/pWMq6CxMQ==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1602.5", + "@angular-devkit/architect": "0.1602.6", "rxjs": "7.8.1" }, "engines": { @@ -271,9 +274,9 @@ } }, "node_modules/@angular-devkit/core": { - "version": "16.2.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.5.tgz", - "integrity": "sha512-d7xzdvv3aZiNgMtFERR3TxUAdKjzWiWUN94jjBeovITP32yFDz02DzXwUGMFIA3/YhZ/sAEEOKVF3pBXLJ6P4g==", + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.6.tgz", + "integrity": "sha512-iez/8NYXQT6fqVQLlKmZUIRkFUEZ88ACKbTwD4lBmk0+hXW+bQBxI7JOnE3C4zkcM2YeuTXIYsC5SebTKYiR4Q==", "dev": true, "dependencies": { "ajv": "8.12.0", @@ -307,12 +310,12 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "16.2.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.2.5.tgz", - "integrity": "sha512-Du2qaN4SVrtPe2jQuo0VVZgFCUwouyv7tTwyJXv32Kvfw9s3IQD/yYSh0H+XTEbplUV9Fc8b9zWaVhVY1yvrSw==", + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.2.6.tgz", + "integrity": "sha512-PhpRYHCJ3WvZXmng6Qk8TXeQf83jeBMAf7AIzI8h0fgeBocOl97Xf7bZpLg6GymiU+rVn15igQ4Rz9rKAay8bQ==", "dev": true, "dependencies": { - "@angular-devkit/core": "16.2.5", + "@angular-devkit/core": "16.2.6", "jsonc-parser": "3.2.0", "magic-string": "0.30.1", "ora": "5.4.1", @@ -334,9 +337,9 @@ } }, "node_modules/@angular/animations": { - "version": "16.2.8", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-16.2.8.tgz", - "integrity": "sha512-tjJID1eZORcC9N1f0JIcOzirv6D1q2q7y2S6h51WncJC5G9vOUpIOoOE3gmg0TH0FS41wJe/WfiQku3BuoMA9w==", + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-16.2.9.tgz", + "integrity": "sha512-J+nsc2x/ZQuh+YwwTzxXUrV+7SBpJq6DDStfTFkZls9PWGRj9fjqQeRCWrfNLllpxopAEjhFkoyK06oSjcwqAw==", "dependencies": { "tslib": "^2.3.0" }, @@ -344,19 +347,19 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/core": "16.2.8" + "@angular/core": "16.2.9" } }, "node_modules/@angular/cli": { - "version": "16.2.5", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.2.5.tgz", - "integrity": "sha512-7+OG2KKUq+Wi9pl8JJKzH5BICOInMvyRma8/anDiXMTdhuO8cyhPu3xCl8znc6qV9RcUax0HvJmRq11kv/aJTA==", + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.2.6.tgz", + "integrity": "sha512-9poPvUEmlufOAW1Cjk+aA5e2x3mInLtbYYSL/EYviDN2ugmavsSIvxAE/WLnxq6cPWqhNDbHDaqvcmqkcFM3Cw==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1602.5", - "@angular-devkit/core": "16.2.5", - "@angular-devkit/schematics": "16.2.5", - "@schematics/angular": "16.2.5", + "@angular-devkit/architect": "0.1602.6", + "@angular-devkit/core": "16.2.6", + "@angular-devkit/schematics": "16.2.6", + "@schematics/angular": "16.2.6", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.3", "ini": "4.1.1", @@ -382,9 +385,9 @@ } }, "node_modules/@angular/common": { - "version": "16.2.8", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-16.2.8.tgz", - "integrity": "sha512-0LZSBHnk9c6XPcrQx9D8i0DKi807IuiuOtK4kMa64aj1pySY3TK+uort5hqpmhgdqiCbBHZjgpRpU83LoTTl3w==", + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-16.2.9.tgz", + "integrity": "sha512-5Lh5KsxCkaoBDeSAghKNF5lCi0083ug4X2X7wnafsSd6Z3xt/rDjH9hDOP5SF5IDLtCVjJgHfs3cCLSTjRuNwg==", "dependencies": { "tslib": "^2.3.0" }, @@ -392,14 +395,14 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/core": "16.2.8", + "@angular/core": "16.2.9", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "16.2.8", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-16.2.8.tgz", - "integrity": "sha512-xWdMAeBkYh8ESk9iBSYnp2qfbGPNReggtNJuUL9I7AFGkzkvEWndyQ+oTXzCM5gjj4nWB5A/AAYYDU54sDac2Q==", + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-16.2.9.tgz", + "integrity": "sha512-lh799pnbdvzTVShJHOY1JC6c1pwBsZC4UIgB3Itklo9dskGybQma/gP+lE6RhqM4FblNfaaBXGlCMUuY8HkmEQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -407,7 +410,7 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/core": "16.2.8" + "@angular/core": "16.2.9" }, "peerDependenciesMeta": { "@angular/core": { @@ -416,10 +419,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "16.2.8", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-16.2.8.tgz", - "integrity": "sha512-kKcfr8vbdB+MYDgyeZdxeoVbOpoGFmxOj4IEVnOQ2SPYexcnLEK38qect6LpHGIEG5bOQrkQqWmNnmHAEH4L1g==", - "dev": true, + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-16.2.9.tgz", + "integrity": "sha512-ecH2oOlijJdDqioD9IfgdqJGoRRHI6hAx5rwBxIaYk01ywj13KzvXWPrXbCIupeWtV/XUZUlbwf47nlmL5gxZg==", "dependencies": { "@babel/core": "7.22.5", "@jridgewell/sourcemap-codec": "^1.4.14", @@ -439,14 +441,14 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/compiler": "16.2.8", + "@angular/compiler": "16.2.9", "typescript": ">=4.9.3 <5.2" } }, "node_modules/@angular/core": { - "version": "16.2.8", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-16.2.8.tgz", - "integrity": "sha512-v3kwZsjf7mKBGMky+UfxV3iwA1BFy1c3gmjyHSPSll9TPr2jkfwstoB2Cc+wmS2S9ezHFAMX++XXRymKVRQzQg==", + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-16.2.9.tgz", + "integrity": "sha512-chvPX29ZBcMDuh7rLIgb0Cru6oJ/0FaqRzfOI3wT4W2F9W1HOlCtipovzmPYaUAmXBWfVP4EBO9TOWnpog0S0w==", "dependencies": { "tslib": "^2.3.0" }, @@ -459,9 +461,9 @@ } }, "node_modules/@angular/forms": { - "version": "16.2.8", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-16.2.8.tgz", - "integrity": "sha512-EKv9hdajLnFjz6lH5O8rWtFPqUWws7w+CCoFZw+z+9D6onM26w4Fw0Ng7PMP3g9zGGC4YyqEl729mBsgxAO+7A==", + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-16.2.9.tgz", + "integrity": "sha512-rxlg2iNJNBH/uc7b5YqybfYc8BkLzzPv1d/nMsQUlY0O2UV2zwNRpcIiWbWd7+ZaKjcyPynVe9FsXC8wgWIABw==", "dependencies": { "tslib": "^2.3.0" }, @@ -469,16 +471,55 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/common": "16.2.8", - "@angular/core": "16.2.8", - "@angular/platform-browser": "16.2.8", + "@angular/common": "16.2.9", + "@angular/core": "16.2.9", + "@angular/platform-browser": "16.2.9", "rxjs": "^6.5.3 || ^7.4.0" } }, + "node_modules/@angular/localize": { + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-16.2.9.tgz", + "integrity": "sha512-t5002NgBj+wjd81IXwg+yc2ypaBk6OWLAka1GXmWua3x7hwGw1yMtPFmzOE1cCNdXgWlluLxWclFjCUrAbGEww==", + "peer": true, + "dependencies": { + "@babel/core": "7.22.5", + "fast-glob": "3.3.0", + "yargs": "^17.2.1" + }, + "bin": { + "localize-extract": "tools/bundles/src/extract/cli.js", + "localize-migrate": "tools/bundles/src/migrate/cli.js", + "localize-translate": "tools/bundles/src/translate/cli.js" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/compiler": "16.2.9", + "@angular/compiler-cli": "16.2.9" + } + }, + "node_modules/@angular/localize/node_modules/fast-glob": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", + "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", + "peer": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, "node_modules/@angular/platform-browser": { - "version": "16.2.8", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-16.2.8.tgz", - "integrity": "sha512-y0rt8HmnTjvZrqt+bKU5CnmaI7xQiRWIaLWpYXGgqcqqMDgMYwSm2lV3H6K6S1v0ut+Q+zIWj2rGjr8Apox34Q==", + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-16.2.9.tgz", + "integrity": "sha512-9Je7+Jmx0AOyRzBBumraVJG3M0R6YbT4c9jTUbLGJCcPxwDI3/u2ZzvW3rBqpmrDaqLxN5f1LcZeTZx287QeqQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -486,9 +527,9 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/animations": "16.2.8", - "@angular/common": "16.2.8", - "@angular/core": "16.2.8" + "@angular/animations": "16.2.9", + "@angular/common": "16.2.9", + "@angular/core": "16.2.9" }, "peerDependenciesMeta": { "@angular/animations": { @@ -497,9 +538,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "16.2.8", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-16.2.8.tgz", - "integrity": "sha512-METr1TuMP2fHOXN0wVlW4CpQEIvy5fLSsPprDPuL+C0KeaCLuTST9Ek+yL7IVGu+VIpFZuqMC376z8n6ENo97g==", + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-16.2.9.tgz", + "integrity": "sha512-ztpo0939vTZ/5CWVSvo41Yl6YPoTZ0If+yTrs7dk1ce0vFgaZXMlc+y5ZwjJIiMM5CvHbhL48Uk+HJNIojP98A==", "dependencies": { "tslib": "^2.3.0" }, @@ -507,16 +548,16 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/common": "16.2.8", - "@angular/compiler": "16.2.8", - "@angular/core": "16.2.8", - "@angular/platform-browser": "16.2.8" + "@angular/common": "16.2.9", + "@angular/compiler": "16.2.9", + "@angular/core": "16.2.9", + "@angular/platform-browser": "16.2.9" } }, "node_modules/@angular/router": { - "version": "16.2.8", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-16.2.8.tgz", - "integrity": "sha512-mWpapabWtk8Qtyb2BalXtvud9m6BCiKg8moJNb8dEAGjDzMTWqWOr4zkFHoIFX+gj2JKKDa6btPWVD6J5K6Ojg==", + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-16.2.9.tgz", + "integrity": "sha512-5vrJNMblTDx3WC3dtaqLddWNtR0P9iwpqffeZL1uobBIwP4hbJx+8Dos3TwxGR4hnopFKahoDQ5nC0NOQslyog==", "dependencies": { "tslib": "^2.3.0" }, @@ -524,9 +565,9 @@ "node": "^16.14.0 || >=18.10.0" }, "peerDependencies": { - "@angular/common": "16.2.8", - "@angular/core": "16.2.8", - "@angular/platform-browser": "16.2.8", + "@angular/common": "16.2.9", + "@angular/core": "16.2.9", + "@angular/platform-browser": "16.2.9", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -540,7 +581,6 @@ "version": "7.22.13", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, "dependencies": { "@babel/highlight": "^7.22.13", "chalk": "^2.4.2" @@ -553,7 +593,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -562,7 +601,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.5.tgz", "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==", - "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.22.5", @@ -592,7 +630,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, "bin": { "semver": "bin/semver.js" } @@ -601,7 +638,6 @@ "version": "7.22.9", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", - "dev": true, "dependencies": { "@babel/types": "^7.22.5", "@jridgewell/gen-mapping": "^0.3.2", @@ -640,7 +676,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", - "dev": true, "dependencies": { "@babel/compat-data": "^7.22.9", "@babel/helper-validator-option": "^7.22.15", @@ -656,7 +691,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, "bin": { "semver": "bin/semver.js" } @@ -739,7 +773,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -748,7 +781,6 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, "dependencies": { "@babel/template": "^7.22.15", "@babel/types": "^7.23.0" @@ -761,7 +793,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.22.13", "@babel/parser": "^7.22.15", @@ -775,7 +806,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -799,7 +829,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dev": true, "dependencies": { "@babel/types": "^7.22.15" }, @@ -811,7 +840,6 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", - "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-module-imports": "^7.22.15", @@ -885,7 +913,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -909,7 +936,6 @@ "version": "7.22.6", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -921,7 +947,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -930,7 +955,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -939,7 +963,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -976,7 +999,6 @@ "version": "7.23.1", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.1.tgz", "integrity": "sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==", - "dev": true, "dependencies": { "@babel/template": "^7.22.15", "@babel/traverse": "^7.23.0", @@ -990,7 +1012,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.22.13", "@babel/parser": "^7.22.15", @@ -1004,7 +1025,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", @@ -1018,7 +1038,6 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", - "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -2283,7 +2302,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.22.5", "@babel/parser": "^7.22.5", @@ -2294,10 +2312,9 @@ } }, "node_modules/@babel/traverse": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.0.tgz", - "integrity": "sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==", - "dev": true, + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", "dependencies": { "@babel/code-frame": "^7.22.13", "@babel/generator": "^7.23.0", @@ -2318,7 +2335,6 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", - "dev": true, "dependencies": { "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", @@ -2333,7 +2349,6 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", - "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.22.5", "@babel/helper-validator-identifier": "^7.22.20", @@ -2713,6 +2728,52 @@ "node": ">=12" } }, + "node_modules/@fortawesome/angular-fontawesome": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@fortawesome/angular-fontawesome/-/angular-fontawesome-0.13.0.tgz", + "integrity": "sha512-gzSPRdveOXNO7NIiMgTyB46aiHG0i98KinnAEqHXi8qzraM/kCcHn/0y3f4MhemX6kftwsFli0IU8RyHmtXlSQ==", + "dependencies": { + "tslib": "^2.4.1" + }, + "peerDependencies": { + "@angular/core": "^16.0.0", + "@fortawesome/fontawesome-svg-core": "~1.2.27 || ~1.3.0-beta2 || ^6.1.0" + } + }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.2.tgz", + "integrity": "sha512-1DgP7f+XQIJbLFCTX1V2QnxVmpLdKdzzo2k8EmvDOePfchaIGQ9eCHj2up3/jNEbZuBqel5OxiaOJf37TWauRA==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.4.2.tgz", + "integrity": "sha512-gjYDSKv3TrM2sLTOKBc5rH9ckje8Wrwgx1CxAPbN5N3Fm4prfi7NsJVWd1jklp7i5uSCVwhZS5qlhMXqLrpAIg==", + "hasInstallScript": true, + "peer": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.4.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.4.2.tgz", + "integrity": "sha512-sYwXurXUEQS32fZz9hVCUUv/xu49PEJEyUOsA51l6PU/qVgfbTb2glsTEaJngVVT8VqBATRIdh7XVgV1JF1LkA==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.4.2" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -2838,7 +2899,6 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -2852,7 +2912,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -2861,7 +2920,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -2879,14 +2937,12 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.14", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.17", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, "dependencies": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.14" @@ -2898,10 +2954,26 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, + "node_modules/@ng-bootstrap/ng-bootstrap": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-15.1.1.tgz", + "integrity": "sha512-nZlIMMggtI3IHkGs0XPrUIUdpeEzQvfGV9M4I9IvCqiS2n4RwWoUvWK1ICo4csZqFNBDlCQx956gO6ZZUSL2mw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "^16.0.0", + "@angular/core": "^16.0.0", + "@angular/forms": "^16.0.0", + "@angular/localize": "^16.0.0", + "@popperjs/core": "^2.11.6", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, "node_modules/@ngtools/webpack": { - "version": "16.2.5", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.2.5.tgz", - "integrity": "sha512-wq1dbbOUwrY/zkpZltcgmyEFANbJon79E5s4ueT3IT4NyiYh1uJeWa2vmB0kof7VP5Xhm/jutkJk336z67oLPg==", + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.2.6.tgz", + "integrity": "sha512-d8ZlZL6dOtWmHdjG9PTGBkdiJMcsXD2tp6WeFRVvTEuvCI3XvKsUXBvJDE+mZOhzn5pUEYt+1TR5DHjDZbME3w==", "dev": true, "engines": { "node": "^16.14.0 || >=18.10.0", @@ -2918,7 +2990,6 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -2931,7 +3002,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, "engines": { "node": ">= 8" } @@ -2940,7 +3010,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -3097,14 +3166,24 @@ "node": ">=14" } }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, "node_modules/@schematics/angular": { - "version": "16.2.5", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.2.5.tgz", - "integrity": "sha512-huYEiU5KK2/upy9LJUdecIB4Jwh4LQMQz5cz6EMr8uhrCTykEKXlBpGJVHZyDK1K5/riymSr9G86BdN2PcY1Cw==", + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.2.6.tgz", + "integrity": "sha512-fM09WPqST+nhVGV5Q3fhG7WKo96kgSVMsbz3wGS0DmTn4zge7ZWnrW3VvbxnMapmGoKa9DFPqdqNln4ADcdIMQ==", "dev": true, "dependencies": { - "@angular-devkit/core": "16.2.5", - "@angular-devkit/schematics": "16.2.5", + "@angular-devkit/core": "16.2.6", + "@angular-devkit/schematics": "16.2.6", "jsonc-parser": "3.2.0" }, "engines": { @@ -3278,9 +3357,9 @@ "dev": true }, "node_modules/@types/express": { - "version": "4.17.18", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.18.tgz", - "integrity": "sha512-Sxv8BSLLgsBYmcnGdGjjEjqET2U+AKAdCRODmMiq02FgjwuV75Ut85DRpvFjyw/Mk0vgUOliGRU0UUmuuZHByQ==", + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.19.tgz", + "integrity": "sha512-UtOfBtzN9OvpZPPbnnYunfjM7XCI4jyk1NvnFhTVz5krYAnW4o5DCoIekvms+8ApqhB4+9wSge1kBijdfTSmfg==", "dev": true, "dependencies": { "@types/body-parser": "*", @@ -3398,9 +3477,9 @@ } }, "node_modules/@types/ws": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.6.tgz", - "integrity": "sha512-8B5EO9jLVCy+B58PLHvLDuOD8DRVMgQzq8d55SjLCOn9kqGyqOvy27exVaTio1q1nX5zLu8/6N0n2ThSxOM6tg==", + "version": "8.5.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.7.tgz", + "integrity": "sha512-6UrLjiDUvn40CMrAubXuIVtj2PEfKDffJS7ychvnPU44j+KVeXmdHHTgqcM/dxLUTHxlXHiFM8Skmb8ozGdTnQ==", "dev": true, "dependencies": { "@types/node": "*" @@ -3901,7 +3980,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -3910,7 +3988,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -3922,7 +3999,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -4139,7 +4215,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, "engines": { "node": ">=8" } @@ -4225,7 +4300,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -4243,7 +4317,6 @@ "version": "4.22.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", - "dev": true, "funding": [ { "type": "opencollective", @@ -4395,7 +4468,6 @@ "version": "1.0.30001542", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001542.tgz", "integrity": "sha512-UrtAXVcj1mvPBFQ4sKd38daP8dEcXXr5sQe6QNNinaPd0iA/cxg9/l3VrSdL73jgw5sKyuQ6jNgiKO12W3SsVA==", - "dev": true, "funding": [ { "type": "opencollective", @@ -4415,7 +4487,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -4435,7 +4506,6 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, "funding": [ { "type": "individual", @@ -4556,7 +4626,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -4564,8 +4633,7 @@ "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/color-support": { "version": "1.1.3", @@ -4741,8 +4809,7 @@ "node_modules/convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, "node_modules/cookie": { "version": "0.4.2", @@ -5120,7 +5187,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -5351,14 +5417,12 @@ "node_modules/electron-to-chromium": { "version": "1.4.537", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.537.tgz", - "integrity": "sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA==", - "dev": true + "integrity": "sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA==" }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/emojis-list": { "version": "3.0.0", @@ -5558,7 +5622,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, "engines": { "node": ">=6" } @@ -5573,7 +5636,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, "engines": { "node": ">=0.8.0" } @@ -5893,7 +5955,6 @@ "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, "dependencies": { "reusify": "^1.0.4" } @@ -5929,7 +5990,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -6161,7 +6221,6 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -6200,7 +6259,6 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -6209,7 +6267,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -6275,7 +6332,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -6293,7 +6349,6 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, "engines": { "node": ">=4" } @@ -6357,7 +6412,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, "engines": { "node": ">=4" } @@ -6912,7 +6966,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -6951,7 +7004,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -6960,7 +7012,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "engines": { "node": ">=8" } @@ -6969,7 +7020,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -6996,7 +7046,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { "node": ">=0.12.0" } @@ -7285,8 +7334,7 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "3.14.1", @@ -7372,7 +7420,6 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, "bin": { "jsesc": "bin/jsesc" }, @@ -7396,7 +7443,6 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, "bin": { "json5": "lib/cli.js" }, @@ -7943,7 +7989,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, "dependencies": { "yallist": "^3.0.2" } @@ -7951,8 +7996,7 @@ "node_modules/lru-cache/node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/magic-string": { "version": "0.30.1", @@ -8091,7 +8135,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, "engines": { "node": ">= 8" } @@ -8109,7 +8152,6 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -8399,6 +8441,14 @@ "node": ">=10" } }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "engines": { + "node": "*" + } + }, "node_modules/mrmime": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", @@ -8411,8 +8461,7 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/multicast-dns": { "version": "7.2.5", @@ -8647,8 +8696,7 @@ "node_modules/node-releases": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" }, "node_modules/nopt": { "version": "6.0.0", @@ -8684,7 +8732,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -9324,14 +9371,12 @@ "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "engines": { "node": ">=8.6" }, @@ -9700,7 +9745,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, "funding": [ { "type": "github", @@ -9813,7 +9857,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -9824,8 +9867,7 @@ "node_modules/reflect-metadata": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "dev": true + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" }, "node_modules/regenerate": { "version": "1.4.2", @@ -9908,7 +9950,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -10019,7 +10060,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -10117,7 +10157,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "funding": [ { "type": "github", @@ -10284,7 +10323,6 @@ "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -10299,7 +10337,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -10855,7 +10892,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -10884,7 +10920,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -10918,7 +10953,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -11194,7 +11228,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, "engines": { "node": ">=4" } @@ -11203,7 +11236,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -11319,7 +11351,6 @@ "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -11437,7 +11468,6 @@ "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, "funding": [ { "type": "opencollective", @@ -12016,7 +12046,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -12084,7 +12113,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -12099,7 +12127,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -12110,8 +12137,7 @@ "node_modules/wrap-ansi/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/wrappy": { "version": "1.0.2", @@ -12156,7 +12182,6 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, "engines": { "node": ">=10" } @@ -12164,14 +12189,12 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -12189,7 +12212,6 @@ "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, "engines": { "node": ">=12" } @@ -12198,7 +12220,6 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -12234,19 +12255,18 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" } }, "@angular-devkit/architect": { - "version": "0.1602.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1602.5.tgz", - "integrity": "sha512-lbFA2nrF0A1Rs6AU9yYeSHflsiorqL4tSwL7wMtQWMNawRjORiY7IwETyL0PmnlKsbbPlTGnWBhMfeGyBOowEw==", + "version": "0.1602.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1602.6.tgz", + "integrity": "sha512-b1NNV3yNg6Rt86ms20bJIroWUI8ihaEwv5k+EoijEXLoMs4eNs5PhqL+QE8rTj+q9pa1gSrWf2blXor2JGwf1g==", "dev": true, "requires": { - "@angular-devkit/core": "16.2.5", + "@angular-devkit/core": "16.2.6", "rxjs": "7.8.1" }, "dependencies": { @@ -12262,15 +12282,15 @@ } }, "@angular-devkit/build-angular": { - "version": "16.2.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.2.5.tgz", - "integrity": "sha512-ZHyMhhSZkulJiDyTvONJV2OwbxTdjbrJGfkUhv4k4f4HfV8ADUXlhanGjuqykxWG2CmDIsV09j/5b1lg2fYqww==", + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.2.6.tgz", + "integrity": "sha512-QdU/q77K1P8CPEEZGxw1QqLcnA9ofboDWS7vcLRBmFmk2zydtLTApbK0P8GNDRbnmROOKkoaLo+xUTDJz9gvPA==", "dev": true, "requires": { "@ampproject/remapping": "2.2.1", - "@angular-devkit/architect": "0.1602.5", - "@angular-devkit/build-webpack": "0.1602.5", - "@angular-devkit/core": "16.2.5", + "@angular-devkit/architect": "0.1602.6", + "@angular-devkit/build-webpack": "0.1602.6", + "@angular-devkit/core": "16.2.6", "@babel/core": "7.22.9", "@babel/generator": "7.22.9", "@babel/helper-annotate-as-pure": "7.22.5", @@ -12282,7 +12302,7 @@ "@babel/runtime": "7.22.6", "@babel/template": "7.22.5", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "16.2.5", + "@ngtools/webpack": "16.2.6", "@vitejs/plugin-basic-ssl": "1.0.1", "ansi-colors": "4.1.3", "autoprefixer": "10.4.14", @@ -12377,12 +12397,12 @@ } }, "@angular-devkit/build-webpack": { - "version": "0.1602.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1602.5.tgz", - "integrity": "sha512-cpdhZdi1I3/gu3wcwQyIstrbE0kpoa5vvHu9MFzQ9a/DZV0aAev2d1e9rgOwSRUTCB83LV8+eBY99jqmF54U/g==", + "version": "0.1602.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1602.6.tgz", + "integrity": "sha512-BJPR6xdq7gRJ6bVWnZ81xHyH75j7lyLbegCXbvUNaM8TWVBkwWsSdqr2NQ717dNLLn5umg58SFpU/pWMq6CxMQ==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1602.5", + "@angular-devkit/architect": "0.1602.6", "rxjs": "7.8.1" }, "dependencies": { @@ -12398,9 +12418,9 @@ } }, "@angular-devkit/core": { - "version": "16.2.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.5.tgz", - "integrity": "sha512-d7xzdvv3aZiNgMtFERR3TxUAdKjzWiWUN94jjBeovITP32yFDz02DzXwUGMFIA3/YhZ/sAEEOKVF3pBXLJ6P4g==", + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.6.tgz", + "integrity": "sha512-iez/8NYXQT6fqVQLlKmZUIRkFUEZ88ACKbTwD4lBmk0+hXW+bQBxI7JOnE3C4zkcM2YeuTXIYsC5SebTKYiR4Q==", "dev": true, "requires": { "ajv": "8.12.0", @@ -12423,12 +12443,12 @@ } }, "@angular-devkit/schematics": { - "version": "16.2.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.2.5.tgz", - "integrity": "sha512-Du2qaN4SVrtPe2jQuo0VVZgFCUwouyv7tTwyJXv32Kvfw9s3IQD/yYSh0H+XTEbplUV9Fc8b9zWaVhVY1yvrSw==", + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.2.6.tgz", + "integrity": "sha512-PhpRYHCJ3WvZXmng6Qk8TXeQf83jeBMAf7AIzI8h0fgeBocOl97Xf7bZpLg6GymiU+rVn15igQ4Rz9rKAay8bQ==", "dev": true, "requires": { - "@angular-devkit/core": "16.2.5", + "@angular-devkit/core": "16.2.6", "jsonc-parser": "3.2.0", "magic-string": "0.30.1", "ora": "5.4.1", @@ -12447,23 +12467,23 @@ } }, "@angular/animations": { - "version": "16.2.8", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-16.2.8.tgz", - "integrity": "sha512-tjJID1eZORcC9N1f0JIcOzirv6D1q2q7y2S6h51WncJC5G9vOUpIOoOE3gmg0TH0FS41wJe/WfiQku3BuoMA9w==", + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-16.2.9.tgz", + "integrity": "sha512-J+nsc2x/ZQuh+YwwTzxXUrV+7SBpJq6DDStfTFkZls9PWGRj9fjqQeRCWrfNLllpxopAEjhFkoyK06oSjcwqAw==", "requires": { "tslib": "^2.3.0" } }, "@angular/cli": { - "version": "16.2.5", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.2.5.tgz", - "integrity": "sha512-7+OG2KKUq+Wi9pl8JJKzH5BICOInMvyRma8/anDiXMTdhuO8cyhPu3xCl8znc6qV9RcUax0HvJmRq11kv/aJTA==", + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.2.6.tgz", + "integrity": "sha512-9poPvUEmlufOAW1Cjk+aA5e2x3mInLtbYYSL/EYviDN2ugmavsSIvxAE/WLnxq6cPWqhNDbHDaqvcmqkcFM3Cw==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1602.5", - "@angular-devkit/core": "16.2.5", - "@angular-devkit/schematics": "16.2.5", - "@schematics/angular": "16.2.5", + "@angular-devkit/architect": "0.1602.6", + "@angular-devkit/core": "16.2.6", + "@angular-devkit/schematics": "16.2.6", + "@schematics/angular": "16.2.6", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.3", "ini": "4.1.1", @@ -12481,26 +12501,25 @@ } }, "@angular/common": { - "version": "16.2.8", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-16.2.8.tgz", - "integrity": "sha512-0LZSBHnk9c6XPcrQx9D8i0DKi807IuiuOtK4kMa64aj1pySY3TK+uort5hqpmhgdqiCbBHZjgpRpU83LoTTl3w==", + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-16.2.9.tgz", + "integrity": "sha512-5Lh5KsxCkaoBDeSAghKNF5lCi0083ug4X2X7wnafsSd6Z3xt/rDjH9hDOP5SF5IDLtCVjJgHfs3cCLSTjRuNwg==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler": { - "version": "16.2.8", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-16.2.8.tgz", - "integrity": "sha512-xWdMAeBkYh8ESk9iBSYnp2qfbGPNReggtNJuUL9I7AFGkzkvEWndyQ+oTXzCM5gjj4nWB5A/AAYYDU54sDac2Q==", + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-16.2.9.tgz", + "integrity": "sha512-lh799pnbdvzTVShJHOY1JC6c1pwBsZC4UIgB3Itklo9dskGybQma/gP+lE6RhqM4FblNfaaBXGlCMUuY8HkmEQ==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler-cli": { - "version": "16.2.8", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-16.2.8.tgz", - "integrity": "sha512-kKcfr8vbdB+MYDgyeZdxeoVbOpoGFmxOj4IEVnOQ2SPYexcnLEK38qect6LpHGIEG5bOQrkQqWmNnmHAEH4L1g==", - "dev": true, + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-16.2.9.tgz", + "integrity": "sha512-ecH2oOlijJdDqioD9IfgdqJGoRRHI6hAx5rwBxIaYk01ywj13KzvXWPrXbCIupeWtV/XUZUlbwf47nlmL5gxZg==", "requires": { "@babel/core": "7.22.5", "@jridgewell/sourcemap-codec": "^1.4.14", @@ -12513,41 +12532,67 @@ } }, "@angular/core": { - "version": "16.2.8", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-16.2.8.tgz", - "integrity": "sha512-v3kwZsjf7mKBGMky+UfxV3iwA1BFy1c3gmjyHSPSll9TPr2jkfwstoB2Cc+wmS2S9ezHFAMX++XXRymKVRQzQg==", + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-16.2.9.tgz", + "integrity": "sha512-chvPX29ZBcMDuh7rLIgb0Cru6oJ/0FaqRzfOI3wT4W2F9W1HOlCtipovzmPYaUAmXBWfVP4EBO9TOWnpog0S0w==", "requires": { "tslib": "^2.3.0" } }, "@angular/forms": { - "version": "16.2.8", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-16.2.8.tgz", - "integrity": "sha512-EKv9hdajLnFjz6lH5O8rWtFPqUWws7w+CCoFZw+z+9D6onM26w4Fw0Ng7PMP3g9zGGC4YyqEl729mBsgxAO+7A==", + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-16.2.9.tgz", + "integrity": "sha512-rxlg2iNJNBH/uc7b5YqybfYc8BkLzzPv1d/nMsQUlY0O2UV2zwNRpcIiWbWd7+ZaKjcyPynVe9FsXC8wgWIABw==", "requires": { "tslib": "^2.3.0" } }, + "@angular/localize": { + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-16.2.9.tgz", + "integrity": "sha512-t5002NgBj+wjd81IXwg+yc2ypaBk6OWLAka1GXmWua3x7hwGw1yMtPFmzOE1cCNdXgWlluLxWclFjCUrAbGEww==", + "peer": true, + "requires": { + "@babel/core": "7.22.5", + "fast-glob": "3.3.0", + "yargs": "^17.2.1" + }, + "dependencies": { + "fast-glob": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", + "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", + "peer": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + } + } + }, "@angular/platform-browser": { - "version": "16.2.8", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-16.2.8.tgz", - "integrity": "sha512-y0rt8HmnTjvZrqt+bKU5CnmaI7xQiRWIaLWpYXGgqcqqMDgMYwSm2lV3H6K6S1v0ut+Q+zIWj2rGjr8Apox34Q==", + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-16.2.9.tgz", + "integrity": "sha512-9Je7+Jmx0AOyRzBBumraVJG3M0R6YbT4c9jTUbLGJCcPxwDI3/u2ZzvW3rBqpmrDaqLxN5f1LcZeTZx287QeqQ==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser-dynamic": { - "version": "16.2.8", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-16.2.8.tgz", - "integrity": "sha512-METr1TuMP2fHOXN0wVlW4CpQEIvy5fLSsPprDPuL+C0KeaCLuTST9Ek+yL7IVGu+VIpFZuqMC376z8n6ENo97g==", + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-16.2.9.tgz", + "integrity": "sha512-ztpo0939vTZ/5CWVSvo41Yl6YPoTZ0If+yTrs7dk1ce0vFgaZXMlc+y5ZwjJIiMM5CvHbhL48Uk+HJNIojP98A==", "requires": { "tslib": "^2.3.0" } }, "@angular/router": { - "version": "16.2.8", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-16.2.8.tgz", - "integrity": "sha512-mWpapabWtk8Qtyb2BalXtvud9m6BCiKg8moJNb8dEAGjDzMTWqWOr4zkFHoIFX+gj2JKKDa6btPWVD6J5K6Ojg==", + "version": "16.2.9", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-16.2.9.tgz", + "integrity": "sha512-5vrJNMblTDx3WC3dtaqLddWNtR0P9iwpqffeZL1uobBIwP4hbJx+8Dos3TwxGR4hnopFKahoDQ5nC0NOQslyog==", "requires": { "tslib": "^2.3.0" } @@ -12562,7 +12607,6 @@ "version": "7.22.13", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, "requires": { "@babel/highlight": "^7.22.13", "chalk": "^2.4.2" @@ -12571,14 +12615,12 @@ "@babel/compat-data": { "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", - "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", - "dev": true + "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==" }, "@babel/core": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.5.tgz", "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==", - "dev": true, "requires": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.22.5", @@ -12600,8 +12642,7 @@ "semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -12609,7 +12650,6 @@ "version": "7.22.9", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", - "dev": true, "requires": { "@babel/types": "^7.22.5", "@jridgewell/gen-mapping": "^0.3.2", @@ -12639,7 +12679,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", - "dev": true, "requires": { "@babel/compat-data": "^7.22.9", "@babel/helper-validator-option": "^7.22.15", @@ -12651,8 +12690,7 @@ "semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -12716,14 +12754,12 @@ "@babel/helper-environment-visitor": { "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==" }, "@babel/helper-function-name": { "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, "requires": { "@babel/template": "^7.22.15", "@babel/types": "^7.23.0" @@ -12733,7 +12769,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, "requires": { "@babel/code-frame": "^7.22.13", "@babel/parser": "^7.22.15", @@ -12746,7 +12781,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, "requires": { "@babel/types": "^7.22.5" } @@ -12764,7 +12798,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dev": true, "requires": { "@babel/types": "^7.22.15" } @@ -12773,7 +12806,6 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", - "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-module-imports": "^7.22.15", @@ -12823,7 +12855,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, "requires": { "@babel/types": "^7.22.5" } @@ -12841,7 +12872,6 @@ "version": "7.22.6", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, "requires": { "@babel/types": "^7.22.5" } @@ -12849,20 +12879,17 @@ "@babel/helper-string-parser": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==" }, "@babel/helper-validator-identifier": { "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" }, "@babel/helper-validator-option": { "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", - "dev": true + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==" }, "@babel/helper-wrap-function": { "version": "7.22.20", @@ -12892,7 +12919,6 @@ "version": "7.23.1", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.1.tgz", "integrity": "sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==", - "dev": true, "requires": { "@babel/template": "^7.22.15", "@babel/traverse": "^7.23.0", @@ -12903,7 +12929,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, "requires": { "@babel/code-frame": "^7.22.13", "@babel/parser": "^7.22.15", @@ -12916,7 +12941,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", @@ -12926,8 +12950,7 @@ "@babel/parser": { "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", - "dev": true + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.22.15", @@ -13775,7 +13798,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", - "dev": true, "requires": { "@babel/code-frame": "^7.22.5", "@babel/parser": "^7.22.5", @@ -13783,10 +13805,9 @@ } }, "@babel/traverse": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.0.tgz", - "integrity": "sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==", - "dev": true, + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", "requires": { "@babel/code-frame": "^7.22.13", "@babel/generator": "^7.23.0", @@ -13804,7 +13825,6 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", - "dev": true, "requires": { "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", @@ -13818,7 +13838,6 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", - "dev": true, "requires": { "@babel/helper-string-parser": "^7.22.5", "@babel/helper-validator-identifier": "^7.22.20", @@ -13991,6 +14010,36 @@ "dev": true, "optional": true }, + "@fortawesome/angular-fontawesome": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@fortawesome/angular-fontawesome/-/angular-fontawesome-0.13.0.tgz", + "integrity": "sha512-gzSPRdveOXNO7NIiMgTyB46aiHG0i98KinnAEqHXi8qzraM/kCcHn/0y3f4MhemX6kftwsFli0IU8RyHmtXlSQ==", + "requires": { + "tslib": "^2.4.1" + } + }, + "@fortawesome/fontawesome-common-types": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.2.tgz", + "integrity": "sha512-1DgP7f+XQIJbLFCTX1V2QnxVmpLdKdzzo2k8EmvDOePfchaIGQ9eCHj2up3/jNEbZuBqel5OxiaOJf37TWauRA==" + }, + "@fortawesome/fontawesome-svg-core": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.4.2.tgz", + "integrity": "sha512-gjYDSKv3TrM2sLTOKBc5rH9ckje8Wrwgx1CxAPbN5N3Fm4prfi7NsJVWd1jklp7i5uSCVwhZS5qlhMXqLrpAIg==", + "peer": true, + "requires": { + "@fortawesome/fontawesome-common-types": "6.4.2" + } + }, + "@fortawesome/free-solid-svg-icons": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.4.2.tgz", + "integrity": "sha512-sYwXurXUEQS32fZz9hVCUUv/xu49PEJEyUOsA51l6PU/qVgfbTb2glsTEaJngVVT8VqBATRIdh7XVgV1JF1LkA==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.4.2" + } + }, "@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -14079,7 +14128,6 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -14089,14 +14137,12 @@ "@jridgewell/resolve-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" }, "@jridgewell/set-array": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" }, "@jridgewell/source-map": { "version": "0.3.5", @@ -14111,14 +14157,12 @@ "@jridgewell/sourcemap-codec": { "version": "1.4.14", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, "@jridgewell/trace-mapping": { "version": "0.3.17", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, "requires": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.14" @@ -14130,10 +14174,18 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, + "@ng-bootstrap/ng-bootstrap": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-15.1.1.tgz", + "integrity": "sha512-nZlIMMggtI3IHkGs0XPrUIUdpeEzQvfGV9M4I9IvCqiS2n4RwWoUvWK1ICo4csZqFNBDlCQx956gO6ZZUSL2mw==", + "requires": { + "tslib": "^2.3.0" + } + }, "@ngtools/webpack": { - "version": "16.2.5", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.2.5.tgz", - "integrity": "sha512-wq1dbbOUwrY/zkpZltcgmyEFANbJon79E5s4ueT3IT4NyiYh1uJeWa2vmB0kof7VP5Xhm/jutkJk336z67oLPg==", + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.2.6.tgz", + "integrity": "sha512-d8ZlZL6dOtWmHdjG9PTGBkdiJMcsXD2tp6WeFRVvTEuvCI3XvKsUXBvJDE+mZOhzn5pUEYt+1TR5DHjDZbME3w==", "dev": true, "requires": {} }, @@ -14141,7 +14193,6 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "requires": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -14150,14 +14201,12 @@ "@nodelib/fs.stat": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" }, "@nodelib/fs.walk": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "requires": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -14272,14 +14321,20 @@ "dev": true, "optional": true }, + "@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "peer": true + }, "@schematics/angular": { - "version": "16.2.5", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.2.5.tgz", - "integrity": "sha512-huYEiU5KK2/upy9LJUdecIB4Jwh4LQMQz5cz6EMr8uhrCTykEKXlBpGJVHZyDK1K5/riymSr9G86BdN2PcY1Cw==", + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.2.6.tgz", + "integrity": "sha512-fM09WPqST+nhVGV5Q3fhG7WKo96kgSVMsbz3wGS0DmTn4zge7ZWnrW3VvbxnMapmGoKa9DFPqdqNln4ADcdIMQ==", "dev": true, "requires": { - "@angular-devkit/core": "16.2.5", - "@angular-devkit/schematics": "16.2.5", + "@angular-devkit/core": "16.2.6", + "@angular-devkit/schematics": "16.2.6", "jsonc-parser": "3.2.0" } }, @@ -14427,9 +14482,9 @@ "dev": true }, "@types/express": { - "version": "4.17.18", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.18.tgz", - "integrity": "sha512-Sxv8BSLLgsBYmcnGdGjjEjqET2U+AKAdCRODmMiq02FgjwuV75Ut85DRpvFjyw/Mk0vgUOliGRU0UUmuuZHByQ==", + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.19.tgz", + "integrity": "sha512-UtOfBtzN9OvpZPPbnnYunfjM7XCI4jyk1NvnFhTVz5krYAnW4o5DCoIekvms+8ApqhB4+9wSge1kBijdfTSmfg==", "dev": true, "requires": { "@types/body-parser": "*", @@ -14547,9 +14602,9 @@ } }, "@types/ws": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.6.tgz", - "integrity": "sha512-8B5EO9jLVCy+B58PLHvLDuOD8DRVMgQzq8d55SjLCOn9kqGyqOvy27exVaTio1q1nX5zLu8/6N0n2ThSxOM6tg==", + "version": "8.5.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.7.tgz", + "integrity": "sha512-6UrLjiDUvn40CMrAubXuIVtj2PEfKDffJS7ychvnPU44j+KVeXmdHHTgqcM/dxLUTHxlXHiFM8Skmb8ozGdTnQ==", "dev": true, "requires": { "@types/node": "*" @@ -14953,14 +15008,12 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -14969,7 +15022,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -15120,8 +15172,7 @@ "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, "bl": { "version": "4.1.0", @@ -15202,7 +15253,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "requires": { "fill-range": "^7.0.1" } @@ -15217,7 +15267,6 @@ "version": "4.22.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", - "dev": true, "requires": { "caniuse-lite": "^1.0.30001541", "electron-to-chromium": "^1.4.535", @@ -15315,14 +15364,12 @@ "caniuse-lite": { "version": "1.0.30001542", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001542.tgz", - "integrity": "sha512-UrtAXVcj1mvPBFQ4sKd38daP8dEcXXr5sQe6QNNinaPd0iA/cxg9/l3VrSdL73jgw5sKyuQ6jNgiKO12W3SsVA==", - "dev": true + "integrity": "sha512-UrtAXVcj1mvPBFQ4sKd38daP8dEcXXr5sQe6QNNinaPd0iA/cxg9/l3VrSdL73jgw5sKyuQ6jNgiKO12W3SsVA==" }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -15339,7 +15386,6 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, "requires": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -15422,7 +15468,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -15430,8 +15475,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "color-support": { "version": "1.1.3", @@ -15584,8 +15628,7 @@ "convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, "cookie": { "version": "0.4.2", @@ -15866,7 +15909,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "requires": { "ms": "2.1.2" } @@ -16042,14 +16084,12 @@ "electron-to-chromium": { "version": "1.4.537", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.537.tgz", - "integrity": "sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA==", - "dev": true + "integrity": "sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA==" }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "emojis-list": { "version": "3.0.0", @@ -16207,8 +16247,7 @@ "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, "escape-html": { "version": "1.0.3", @@ -16219,8 +16258,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" }, "escodegen": { "version": "2.1.0", @@ -16476,7 +16514,6 @@ "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, "requires": { "reusify": "^1.0.4" } @@ -16503,7 +16540,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "requires": { "to-regex-range": "^5.0.1" } @@ -16672,7 +16708,6 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, "optional": true }, "function-bind": { @@ -16700,14 +16735,12 @@ "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-intrinsic": { "version": "1.1.3", @@ -16749,7 +16782,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "requires": { "is-glob": "^4.0.1" } @@ -16763,8 +16795,7 @@ "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "globby": { "version": "13.1.2", @@ -16812,8 +16843,7 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" }, "has-symbols": { "version": "1.0.3", @@ -17235,7 +17265,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, "requires": { "binary-extensions": "^2.0.0" } @@ -17258,20 +17287,17 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "requires": { "is-extglob": "^2.1.1" } @@ -17291,8 +17317,7 @@ "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, "is-plain-obj": { "version": "3.0.0", @@ -17503,8 +17528,7 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { "version": "3.14.1", @@ -17563,8 +17587,7 @@ "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, "json-parse-even-better-errors": { "version": "2.3.1", @@ -17581,8 +17604,7 @@ "json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" }, "jsonc-parser": { "version": "3.2.0", @@ -17995,7 +18017,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, "requires": { "yallist": "^3.0.2" }, @@ -18003,8 +18024,7 @@ "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" } } }, @@ -18120,8 +18140,7 @@ "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" }, "methods": { "version": "1.1.2", @@ -18133,7 +18152,6 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, "requires": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -18350,6 +18368,11 @@ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" + }, "mrmime": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", @@ -18359,8 +18382,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "multicast-dns": { "version": "7.2.5", @@ -18535,8 +18557,7 @@ "node-releases": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" }, "nopt": { "version": "6.0.0", @@ -18562,8 +18583,7 @@ "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, "normalize-range": { "version": "0.1.2", @@ -19042,14 +19062,12 @@ "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, "pify": { "version": "4.0.1", @@ -19293,8 +19311,7 @@ "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, "randombytes": { "version": "2.1.0", @@ -19376,7 +19393,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, "requires": { "picomatch": "^2.2.1" } @@ -19384,8 +19400,7 @@ "reflect-metadata": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "dev": true + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" }, "regenerate": { "version": "1.4.2", @@ -19457,8 +19472,7 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" }, "require-from-string": { "version": "2.0.2", @@ -19540,8 +19554,7 @@ "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" }, "rfdc": { "version": "1.3.0", @@ -19612,7 +19625,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "requires": { "queue-microtask": "^1.2.2" } @@ -19704,7 +19716,6 @@ "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, "requires": { "lru-cache": "^6.0.0" }, @@ -19713,7 +19724,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "requires": { "yallist": "^4.0.0" } @@ -20175,7 +20185,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -20197,7 +20206,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -20221,7 +20229,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -20425,14 +20432,12 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "requires": { "is-number": "^7.0.0" } @@ -20519,8 +20524,7 @@ "typescript": { "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" }, "ua-parser-js": { "version": "0.7.36", @@ -20590,7 +20594,6 @@ "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, "requires": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -20967,7 +20970,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -20978,7 +20980,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -20987,7 +20988,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -20995,8 +20995,7 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" } } }, @@ -21065,20 +21064,17 @@ "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, "requires": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -21093,7 +21089,6 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -21105,8 +21100,7 @@ "yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" }, "yocto-queue": { "version": "1.0.0", diff --git a/ui/package.json b/ui/package.json index f749e2ef8..c426db9f4 100644 --- a/ui/package.json +++ b/ui/package.json @@ -10,23 +10,27 @@ }, "private": true, "dependencies": { - "@angular/animations": "^16.2.8", - "@angular/common": "^16.2.8", - "@angular/compiler": "^16.2.8", - "@angular/core": "^16.2.8", - "@angular/forms": "^16.2.8", - "@angular/platform-browser": "^16.2.8", - "@angular/platform-browser-dynamic": "^16.2.8", - "@angular/router": "^16.2.8", + "@angular/animations": "^16.2.9", + "@angular/common": "^16.2.9", + "@angular/compiler": "^16.2.9", + "@angular/core": "^16.2.9", + "@angular/forms": "^16.2.9", + "@angular/platform-browser": "^16.2.9", + "@angular/platform-browser-dynamic": "^16.2.9", + "@angular/router": "^16.2.9", + "@fortawesome/angular-fontawesome": "^0.13.0", + "@fortawesome/free-solid-svg-icons": "^6.4.2", + "@ng-bootstrap/ng-bootstrap": "^15.1.1", + "moment": "^2.29.4", "ngx-webstorage": "^12.0.0", "rxjs": "~7.5.0", "tslib": "^2.3.0", "zone.js": "~0.13.3" }, "devDependencies": { - "@angular-devkit/build-angular": "^16.2.5", - "@angular/cli": "~16.2.5", - "@angular/compiler-cli": "^16.2.8", + "@angular-devkit/build-angular": "^16.2.6", + "@angular/cli": "~16.2.6", + "@angular/compiler-cli": "^16.2.9", "@types/jasmine": "~4.0.0", "jasmine-core": "~4.3.0", "karma": "~6.4.0", @@ -36,4 +40,4 @@ "karma-jasmine-html-reporter": "~2.0.0", "typescript": "~4.9.5" } -} \ No newline at end of file +} diff --git a/ui/src/app/account/login/login.component.ts b/ui/src/app/account/login/login.component.ts index 877670e0e..54f7e7630 100644 --- a/ui/src/app/account/login/login.component.ts +++ b/ui/src/app/account/login/login.component.ts @@ -104,9 +104,7 @@ export class LoginComponent implements AfterViewInit, OnDestroy { } loginSuccess(): void { - if (this.router.url === '/register' || /^\/activate\//.test(this.router.url) || /^\/reset\//.test(this.router.url)) { - this.router.navigate(['']); - } + this.router.navigate(['']); this.eventService.broadcast(new Event(EventType.LOG_IN_SUCCESS, "logged in")) // TODO: Event manager diff --git a/ui/src/app/app-routing.module.ts b/ui/src/app/app-routing.module.ts index 4245c508f..c6ffe6c72 100644 --- a/ui/src/app/app-routing.module.ts +++ b/ui/src/app/app-routing.module.ts @@ -1,5 +1,6 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; +import { navbarRoute } from './layout/navbar/navbar.route'; const routes: Routes = [ { @@ -10,7 +11,7 @@ const routes: Routes = [ ] @NgModule({ - imports: [RouterModule.forRoot(routes)], + imports: [RouterModule.forRoot([...routes, navbarRoute])], exports: [RouterModule] }) export class AppRoutingModule { } diff --git a/ui/src/app/app.component.html b/ui/src/app/app.component.html index 0680b43f9..6c24876e4 100644 --- a/ui/src/app/app.component.html +++ b/ui/src/app/app.component.html @@ -1 +1,2 @@ - + + \ No newline at end of file diff --git a/ui/src/app/app.constants.ts b/ui/src/app/app.constants.ts index 94b52d1b2..4b69d5677 100644 --- a/ui/src/app/app.constants.ts +++ b/ui/src/app/app.constants.ts @@ -1,8 +1,10 @@ export const SERVER_API_URL = 'http://localhost:4200'; +export const VERSION = "test-ui"; + export enum EventType { LOG_IN_SUCCESS = "LOG_IN_SUCCESS", AFFILIATION_CREATED = "AFFILIATION_CREATED", AFFILIATION_UPDATED = "AFFILIATION_UPDATED" // add as we go -} +} \ No newline at end of file diff --git a/ui/src/app/app.module.ts b/ui/src/app/app.module.ts index dced51013..db97c9597 100644 --- a/ui/src/app/app.module.ts +++ b/ui/src/app/app.module.ts @@ -1,24 +1,30 @@ -import { NgModule } from '@angular/core'; -import { BrowserModule } from '@angular/platform-browser'; +import { NgModule } from '@angular/core' +import { BrowserModule } from '@angular/platform-browser' -import { AppRoutingModule } from './app-routing.module'; -import { AppComponent } from './app.component'; -import { HttpClientModule } from '@angular/common/http'; -import { AccountModule } from './account/account.module'; -import { NgxWebstorageModule } from 'ngx-webstorage'; +import { AppRoutingModule } from './app-routing.module' +import { AppComponent } from './app.component' +import { HttpClientModule } from '@angular/common/http' +import { AccountModule } from './account/account.module' +import { NgxWebstorageModule } from 'ngx-webstorage' +import { FontAwesomeModule } from '@fortawesome/angular-fontawesome' +import { NavbarComponent } from './layout/navbar/navbar.component' +import { CommonModule } from '@angular/common' +import { NgbModule } from '@ng-bootstrap/ng-bootstrap' +import { HasAnyAuthorityDirective } from './shared/directive/has-any-authority.directive' @NgModule({ - declarations: [ - AppComponent - ], + declarations: [AppComponent, NavbarComponent, HasAnyAuthorityDirective], imports: [ + FontAwesomeModule, AccountModule, BrowserModule, HttpClientModule, AppRoutingModule, NgxWebstorageModule.forRoot(), + CommonModule, + NgbModule, ], providers: [], - bootstrap: [AppComponent] + bootstrap: [AppComponent], }) -export class AppModule { } +export class AppModule {} diff --git a/ui/src/app/layout/navbar/navbar.component.html b/ui/src/app/layout/navbar/navbar.component.html new file mode 100644 index 000000000..285425d67 --- /dev/null +++ b/ui/src/app/layout/navbar/navbar.component.html @@ -0,0 +1,157 @@ +
+ {{ this.getUserName()}} | + + {{ this.getUserName() }} + + +
+ diff --git a/ui/src/app/layout/navbar/navbar.component.ts b/ui/src/app/layout/navbar/navbar.component.ts new file mode 100644 index 000000000..873c87991 --- /dev/null +++ b/ui/src/app/layout/navbar/navbar.component.ts @@ -0,0 +1,155 @@ +import { Component, OnInit } from '@angular/core' +import { Router } from '@angular/router' +import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap' +import { + faAddressCard, + faUniversity, + faChartPie, + faLightbulb, + faBars, + faUser, + faUserPlus, + faSignOutAlt, + faWrench, + faLock +} from '@fortawesome/free-solid-svg-icons' +import { HttpResponse, HttpErrorResponse } from '@angular/common/http' +import { Observable } from 'rxjs' +import { SERVER_API_URL, VERSION } from '../../../app/app.constants' +import { AccountService, LoginService } from '../../account' +import { MemberService } from 'src/app/member/service/member.service' +import { IAccount } from 'src/app/account/model/account.model' +import { IMember } from 'src/app/member/model/member.model' + +type EntityResponseType = HttpResponse + +@Component({ + selector: 'app-navbar', + templateUrl: './navbar.component.html', + styleUrls: ['navbar.scss'], +}) +export class NavbarComponent implements OnInit { + isNavbarCollapsed: boolean + version: string + organizationName: string | undefined + account: IAccount | undefined + userName: string | undefined + consortiumLead: boolean | undefined + memberCallDone = false + consortiumMember = false + + faBars = faBars + faUser = faUser + faUserPlus = faUserPlus + faSignOutAlt = faSignOutAlt + faWrench = faWrench + faLock = faLock + faAddressCard = faAddressCard + faUniversity = faUniversity + faChartPie = faChartPie + faLightbulb = faLightbulb + + constructor( + private loginService: LoginService, + private accountService: AccountService, + private memberService: MemberService, + private router: Router + ) { + this.version = VERSION ? 'v' + VERSION : '' + this.isNavbarCollapsed = true + } + + ngOnInit() { + this.accountService.getAuthenticationState().subscribe(() => { + if ( + !this.memberCallDone && + this.isAuthenticated() && + this.hasRoleUser() + ) { + this.memberCallDone = true + + const salesforceId = this.accountService.getSalesforceId() + + if (salesforceId) { + this.memberService.find(salesforceId).subscribe({ + next: (res: HttpResponse) => { + if (res.body) { + this.organizationName = res.body.clientName + this.consortiumLead = res.body.isConsortiumLead + this.consortiumMember = res.body.parentSalesforceId != null + } + return this.organizationName + }, + error: (res: HttpErrorResponse) => { + console.error('Error when getting org name: ' + res.error) + return null + }, + }) + } + } + }) + } + + collapseNavbar() { + this.isNavbarCollapsed = true + } + + isAuthenticated() { + return this.accountService.isAuthenticated() + } + + isOrganizationOwner() { + return this.accountService.isOrganizationOwner() + } + + hasRoleUser() { + return this.accountService.hasAnyAuthority(['ROLE_USER']) + } + + hasRoleAdmin() { + return this.accountService.hasAnyAuthority(['ROLE_ADMIN']) + } + + isLoggedAs() { + return this.accountService.isLoggedAs() + } + + getUserName() { + // return this.isAuthenticated() ? this.userName : null; + return this.isAuthenticated() ? this.accountService.getUserName() : null + } + + logout() { + this.collapseNavbar() + this.organizationName = undefined + this.memberCallDone = false + this.userName = undefined + if (this.isLoggedAs()) { + this.accountService.logoutAs().subscribe(() => { + window.location.href = SERVER_API_URL + }) + } else { + this.memberService.setManagedMember(null) + this.loginService.logout() + this.router.navigate(['']) + } + } + + logoutAs() { + this.collapseNavbar() + this.organizationName = undefined + this.memberCallDone = false + this.userName = undefined + this.accountService.logoutAs().subscribe((res) => { + window.location.href = SERVER_API_URL + }) + } + + toggleNavbar() { + this.isNavbarCollapsed = !this.isNavbarCollapsed + } + + getImageUrl() { + return this.isAuthenticated() ? this.accountService.getImageUrl() : null + } +} diff --git a/ui/src/app/layout/navbar/navbar.route.ts b/ui/src/app/layout/navbar/navbar.route.ts new file mode 100644 index 000000000..35191434e --- /dev/null +++ b/ui/src/app/layout/navbar/navbar.route.ts @@ -0,0 +1,9 @@ +import { Route } from '@angular/router'; + +import { NavbarComponent } from './navbar.component'; + +export const navbarRoute: Route = { + path: '', + component: NavbarComponent, + outlet: 'navbar' +}; diff --git a/ui/src/app/layout/navbar/navbar.scss b/ui/src/app/layout/navbar/navbar.scss new file mode 100644 index 000000000..1a92b1cc6 --- /dev/null +++ b/ui/src/app/layout/navbar/navbar.scss @@ -0,0 +1,78 @@ +@use '../../../content/scss/bootstrap-variables' as global; + +/* ========================================================================== +Navbar +========================================================================== */ + +.bg-dark { + background-color: #202428 !important; +} + +.profile-image { + height: 1.75em; + width: 1.75em; +} + +.navbar { + padding: 0.2rem 1rem; + + ul.navbar-nav { + .nav-item { + margin-left: 0.5em; + } + } + + a.nav-link { + font-weight: 400; + } +} + +/* ========================================================================== +Logo styles +========================================================================== */ +.logo-img { + img { + max-height: 1.875rem; + position: relative; + top: -0.25rem; + } + display: inline-block; + vertical-align: middle; + margin-right: 0.5rem; +} + +.navbar-title { + line-height: 28px; + vertical-align: bottom; + font-size: 1.125rem; + font-weight: normal; + margin-right: 2px; +} + +.navbar-beta { + vertical-align: bottom; + font-size: 1rem; + font-weight: 400; + text-transform: uppercase; +} + +.org-name { + &:hover { + cursor: pointer; + color: global.$secondary; + } + text-decoration: underline; +} + +.pipe { + color: global.$secondary; +} + +@media screen and (max-width: 767px) { + .logo-img, + .navbar-title { + display: block; + clear: both; + float: left; + } +} diff --git a/ui/src/app/member/model/member.model.ts b/ui/src/app/member/model/member.model.ts new file mode 100644 index 000000000..a1e03049b --- /dev/null +++ b/ui/src/app/member/model/member.model.ts @@ -0,0 +1,45 @@ +import { Moment } from 'moment'; + +export interface IMember { + id?: string; + clientId?: string; + clientName?: string; + clientSecret?: string; + salesforceId?: string; + parentSalesforceId?: string; + isConsortiumLead?: boolean; + superadminEnabled?: boolean; + assertionServiceEnabled?: boolean; + createdBy?: string; + createdDate?: Moment; + lastModifiedBy?: string; + lastModifiedDate?: Moment; + type?: string; + status?: string; + defaultLanguage?: string; +} + +export class Member implements IMember { + constructor( + public id?: string, + public clientId?: string, + public clientName?: string, + public clientSecret?: string, + public salesforceId?: string, + public parentSalesforceId?: string, + public isConsortiumLead?: boolean, + public superadminEnabled?: boolean, + public assertionServiceEnabled?: boolean, + public createdBy?: string, + public createdDate?: Moment, + public lastModifiedBy?: string, + public lastModifiedDate?: Moment, + public type?: string, + public status?: string, + public defaultLaungage?: string + ) { + this.isConsortiumLead = this.isConsortiumLead || false; + this.superadminEnabled = this.superadminEnabled || false; + this.assertionServiceEnabled = this.assertionServiceEnabled || false; + } +} diff --git a/ui/src/app/member/model/salesforce-address.model.ts b/ui/src/app/member/model/salesforce-address.model.ts new file mode 100644 index 000000000..4ef5c4ffb --- /dev/null +++ b/ui/src/app/member/model/salesforce-address.model.ts @@ -0,0 +1,21 @@ +export interface ISFAddress { + city?: string; + country?: string; + countryCode?: string; + postalCode?: string; + state?: string; + stateCode?: string; + street?: string; +} + +export class SFAddress implements ISFAddress { + constructor( + public city?: string, + public country?: string, + public countryCode?: string, + public postalCode?: string, + public state?: string, + public stateCode?: string, + public street?: string + ) {} +} diff --git a/ui/src/app/member/model/salesforce-country.model copy.ts b/ui/src/app/member/model/salesforce-country.model copy.ts new file mode 100644 index 000000000..0f0ab25c8 --- /dev/null +++ b/ui/src/app/member/model/salesforce-country.model copy.ts @@ -0,0 +1,8 @@ +export interface ISFState { + code: string; + name: string; +} + +export class SFState implements ISFState { + constructor(public code: string, public name: string) {} +} diff --git a/ui/src/app/member/model/salesforce-country.model.ts b/ui/src/app/member/model/salesforce-country.model.ts new file mode 100644 index 000000000..46ddee0fb --- /dev/null +++ b/ui/src/app/member/model/salesforce-country.model.ts @@ -0,0 +1,11 @@ +import { ISFState } from './salesforce-country.model copy'; + +export interface ISFCountry { + code: string; + name: string; + states?: ISFState[]; +} + +export class SFCountry implements ISFCountry { + constructor(public code: string, public name: string, public states?: ISFState[]) {} +} diff --git a/ui/src/app/member/model/salesforce-member-contact.model.ts b/ui/src/app/member/model/salesforce-member-contact.model.ts new file mode 100644 index 000000000..7b8bde6eb --- /dev/null +++ b/ui/src/app/member/model/salesforce-member-contact.model.ts @@ -0,0 +1,62 @@ +export interface ISFMemberContact { + memberId?: string; + votingContant?: boolean; + memberOrgRole?: string[]; + name?: string; + contactEmail?: string; + title?: string; + phone?: string; +} + +export interface ISFRawMemberContact { + Organization__c?: string; + Voting_Contact__c?: boolean; + Contact_Curr_Email__c?: string; + Member_Org_Role__c?: string; + Name?: string; + Title?: string; + Phone?: string; +} + +export interface ISFRawMemberContacts { + size?: number; + records?: ISFRawMemberContact[]; +} + +export class SFMemberContact implements ISFMemberContact { + constructor( + public memberId?: string, + public votingContact?: boolean, + public memberOrgRole?: string[], + public name?: string, + public contactEmail?: string, + public title?: string, + public phone?: string + ) { + this.memberOrgRole = []; + } +} + +export class ISFMemberContactUpdate { + contactName?: string; + contactEmail?: string; + contactMember?: string; + contactNewName?: string; + contactNewEmail?: string; + contactNewJobTitle?: string; + contactNewPhone?: string; + contactNewRoles?: string[]; +} + +export class SFMemberContactUpdate implements ISFMemberContactUpdate { + constructor( + public contactName?: string, + public contactEmail?: string, + public contactMember?: string, + public contactNewName?: string, + public contactNewEmail?: string, + public contactNewJobTitle?: string, + public contactNewPhone?: string, + public contactNewRoles?: string[] + ) {} +} diff --git a/ui/src/app/member/model/salesforce-member-data.model.ts b/ui/src/app/member/model/salesforce-member-data.model.ts new file mode 100644 index 000000000..81be087bb --- /dev/null +++ b/ui/src/app/member/model/salesforce-member-data.model.ts @@ -0,0 +1,95 @@ +import { ISFAddress } from './salesforce-address.model'; +import { ISFMemberContact } from './salesforce-member-contact.model'; +import { ISFMemberOrgIds } from './salesforce-member-org-id.model'; + +export interface ISFMemberData { + id?: string; + consortiaMember?: boolean; + consortiaLeadId?: string; + isConsortiumLead?: boolean; + name?: string; + publicDisplayName?: string; + website?: string; + billingCountry?: string; + memberType?: string; + publicDisplayDescriptionHtml?: string; + logoUrl?: string; + publicDisplayEmail?: string; + membershipStartDateString?: string; + membershipEndDateString?: string; + consortiumLeadName?: string; + consortiumMembers?: ISFConsortiumMemberData[]; + contacts?: ISFMemberContact[]; + orgIds?: ISFMemberOrgIds; + billingAddress?: ISFAddress; + trademarkLicense?: string; +} + +export interface ISFConsortiumMemberData { + orgName?: string; + salesforceId?: string; + metadata?: ISFConsortiumMemberMetadata; + terminationMonth?: string; + terminationYear?: string; +} + +export interface ISFConsortiumMemberMetadata { + name?: string; +} + +export interface ISFRawMemberData { + Id?: string; + Consortia_Member__c?: boolean; + Consortium_Lead__c?: string; + Name?: string; + Public_Display_Name__c?: string; + Website?: string; + BillingCountry?: string; + Research_Community__c?: string; + Public_Display_Description__c?: string; + Logo_Description__c?: string; + Public_Display_Email__c?: string; + Last_membership_start_date__c?: string; + Last_membership_end_date__c?: string; + consortiumOpportunities: [ISFRawConsortiumMemberData]; + BillingAddress: ISFAddress; + Trademark_License__c: string; +} + +export interface ISFRawConsortiumMemberData { + AccountId?: string; + Account?: ISFRawConsortiumMemberMetadata; +} + +export interface ISFRawConsortiumMemberMetadata { + Public_Display_Name__c?: string; +} + +export class SFMemberData implements ISFMemberData { + constructor( + public id?: string, + public consortiaMember?: boolean, + public consortiaLeadId?: string, + public isConsortiumLead?: boolean, + public name?: string, + public publicDisplayName?: string, + public website?: string, + public billingCountry?: string, + public memberType?: string, + public publicDisplayDescriptionHtml?: string, + public logoUrl?: string, + public publicDisplayEmail?: string, + public membershipStartDateString?: string, + public membershipEndDateString?: string, + public consortiumLeadName?: string, + public consortiumMembers?: SFConsortiumMemberData[], + public contacts?: ISFMemberContact[], + public orgIds?: ISFMemberOrgIds, + public billingAddress?: ISFAddress, + public trademarkLicense?: string + ) {} +} + +export class SFConsortiumMemberData implements ISFConsortiumMemberData { + constructor(public salesforceId?: string, public orgName?: string, public terminationMonth?: string, public terminationYear?: string) {} +} diff --git a/ui/src/app/member/model/salesforce-member-org-id.model.ts b/ui/src/app/member/model/salesforce-member-org-id.model.ts new file mode 100644 index 000000000..a5febf9fe --- /dev/null +++ b/ui/src/app/member/model/salesforce-member-org-id.model.ts @@ -0,0 +1,20 @@ +export interface ISFMemberOrgIds { + ROR?: string[]; + GRID?: string[]; + Ringgold?: string[]; + Fundref?: string[]; +} +export interface ISFRawMemberOrgId { + Identifier_Type__c: string; + Name: string; +} + +export interface ISFRawMemberOrgIds { + records?: ISFRawMemberOrgId[]; + size?: number; + done?: boolean; +} + +export class SFMemberOrgIds implements ISFMemberOrgIds { + constructor(public ROR?: string[], public GRID?: string[], public Ringgold?: string[], public Fundref?: string[]) {} +} diff --git a/ui/src/app/member/model/salesforce-member-update.model.ts b/ui/src/app/member/model/salesforce-member-update.model.ts new file mode 100644 index 000000000..dc35ce3c7 --- /dev/null +++ b/ui/src/app/member/model/salesforce-member-update.model.ts @@ -0,0 +1,23 @@ +import { ISFAddress } from './salesforce-address.model'; + +export interface ISFMemberUpdate { + orgName?: string; + billingAddress?: ISFAddress; + trademarkLicense?: string; + publicName?: string; + description?: string; + website?: string; + email?: string; +} + +export class SFMemberUpdate implements ISFMemberUpdate { + constructor( + public orgName?: string, + public billingAddress?: ISFAddress, + public trademarkLicense?: string, + public publicName?: string, + public description?: string, + public website?: string, + public email?: string + ) {} +} diff --git a/ui/src/app/member/model/salesforce-new-consortium-member.model.ts b/ui/src/app/member/model/salesforce-new-consortium-member.model.ts new file mode 100644 index 000000000..d72f766ca --- /dev/null +++ b/ui/src/app/member/model/salesforce-new-consortium-member.model.ts @@ -0,0 +1,37 @@ +export interface ISFNewConsortiumMember { + orgName: string; + trademarkLicense: string; + startMonth: string; + startYear: string; + emailDomain?: string; + street?: string; + city?: string; + state?: string; + country?: string; + postcode?: string; + contactGivenName?: string; + contactFamilyName?: string; + contactJobTitle?: string; + contactEmail?: string; + contactPhone?: string; +} + +export class SFNewConsortiumMember implements ISFNewConsortiumMember { + constructor( + public orgName: string, + public trademarkLicense: string, + public startMonth: string, + public startYear: string, + public emailDomain?: string, + public street?: string, + public city?: string, + public state?: string, + public country?: string, + public postcode?: string, + public contactGivenName?: string, + public contactFamilyName?: string, + public contactJobTitle?: string, + public contactEmail?: string, + public contactPhone?: string + ) {} +} diff --git a/ui/src/app/member/service/member.service.ts b/ui/src/app/member/service/member.service.ts new file mode 100644 index 000000000..fdae4e83a --- /dev/null +++ b/ui/src/app/member/service/member.service.ts @@ -0,0 +1,49 @@ +import { Injectable } from '@angular/core' +import { BehaviorSubject, Observable, of, map, catchError } from 'rxjs' +import { HttpClient, HttpResponse } from '@angular/common/http' +import { IMember } from '../model/member.model' +import { SERVER_API_URL } from 'src/app/app.constants' +import * as moment from 'moment' + +type EntityResponseType = HttpResponse + +@Injectable({ providedIn: 'root' }) +export class MemberService { + constructor(protected http: HttpClient) {} + + public resourceUrl = SERVER_API_URL + 'services/memberservice/api' + public managedMember = new BehaviorSubject(null) + + find(id: string): Observable { + return this.http + .get(`${this.resourceUrl}/members/${id}`, { + observe: 'response', + }) + .pipe( + map((res: EntityResponseType) => this.convertDateFromServer(res)), + catchError((err) => { + return of(err) + }) + ) + } + + getManagedMember(): Observable { + return this.managedMember.asObservable() + } + + setManagedMember(value: string | null) { + this.managedMember.next(value) + } + + protected convertDateFromServer(res: EntityResponseType): EntityResponseType { + if (res.body) { + res.body.createdDate = + res.body.createdDate != null ? moment(res.body.createdDate) : undefined + res.body.lastModifiedDate = + res.body.lastModifiedDate != null + ? moment(res.body.lastModifiedDate) + : undefined + } + return res + } +} diff --git a/ui/src/app/shared/directive/has-any-authority.directive.ts b/ui/src/app/shared/directive/has-any-authority.directive.ts new file mode 100644 index 000000000..66b2188a0 --- /dev/null +++ b/ui/src/app/shared/directive/has-any-authority.directive.ts @@ -0,0 +1,38 @@ +import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core'; +import { AccountService } from 'src/app/account/service/account.service'; + +/** + * @whatItDoes Conditionally includes an HTML element if current user has any + * of the authorities passed as the `expression`. + * + * @howToUse + * ``` + * ... + * + * ... + * ``` + */ +@Directive({ + selector: '[hasAnyAuthority]' +}) +export class HasAnyAuthorityDirective { + private authorities: string[] = []; + + constructor(private accountService: AccountService, private templateRef: TemplateRef, private viewContainerRef: ViewContainerRef) {} + + @Input() + set hasAnyAuthority(value: string | string[]) { + this.authorities = typeof value === 'string' ? [value] : value; + this.updateView(); + // Get notified each time authentication state changes. + this.accountService.getAuthenticationState().subscribe(identity => this.updateView()); + } + + private updateView(): void { + const hasAnyAuthority = this.accountService.hasAnyAuthority(this.authorities); + this.viewContainerRef.clear(); + if (hasAnyAuthority) { + this.viewContainerRef.createEmbeddedView(this.templateRef); + } + } +} diff --git a/ui/src/content/fonts/noto-sans/NotoSans-Black.ttf b/ui/src/content/fonts/noto-sans/NotoSans-Black.ttf new file mode 100644 index 000000000..2806e6de4 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-Black.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-Black.woff b/ui/src/content/fonts/noto-sans/NotoSans-Black.woff new file mode 100644 index 000000000..bfcb30b2a Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-Black.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-Black.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-Black.woff2 new file mode 100644 index 000000000..63c3c98b9 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-Black.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-BlackItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-BlackItalic.ttf new file mode 100644 index 000000000..5ee16e441 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-BlackItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-BlackItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-BlackItalic.woff new file mode 100644 index 000000000..912d37d83 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-BlackItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-BlackItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-BlackItalic.woff2 new file mode 100644 index 000000000..075b93d72 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-BlackItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-Bold.woff b/ui/src/content/fonts/noto-sans/NotoSans-Bold.woff new file mode 100644 index 000000000..0e20d790b Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-Bold.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-Bold.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-Bold.woff2 new file mode 100644 index 000000000..1e873255a Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-Bold.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-BoldItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-BoldItalic.ttf new file mode 100644 index 000000000..6dfd1e614 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-BoldItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-BoldItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-BoldItalic.woff new file mode 100644 index 000000000..f9a6b9563 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-BoldItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-BoldItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-BoldItalic.woff2 new file mode 100644 index 000000000..af736751e Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-BoldItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-Condensed.ttf b/ui/src/content/fonts/noto-sans/NotoSans-Condensed.ttf new file mode 100644 index 000000000..de6065cee Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-Condensed.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-Condensed.woff b/ui/src/content/fonts/noto-sans/NotoSans-Condensed.woff new file mode 100644 index 000000000..344f5fe04 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-Condensed.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-Condensed.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-Condensed.woff2 new file mode 100644 index 000000000..926a95464 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-Condensed.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedBlack.ttf b/ui/src/content/fonts/noto-sans/NotoSans-CondensedBlack.ttf new file mode 100644 index 000000000..26f99ba4f Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedBlack.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedBlack.woff b/ui/src/content/fonts/noto-sans/NotoSans-CondensedBlack.woff new file mode 100644 index 000000000..11a52653a Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedBlack.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedBlack.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-CondensedBlack.woff2 new file mode 100644 index 000000000..1b445c6ff Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedBlack.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedBlackItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-CondensedBlackItalic.ttf new file mode 100644 index 000000000..3eee8d33f Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedBlackItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedBlackItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-CondensedBlackItalic.woff new file mode 100644 index 000000000..2948a1585 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedBlackItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedBlackItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-CondensedBlackItalic.woff2 new file mode 100644 index 000000000..dc60b7b55 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedBlackItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedBold.ttf b/ui/src/content/fonts/noto-sans/NotoSans-CondensedBold.ttf new file mode 100644 index 000000000..e5bd87ee0 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedBold.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedBold.woff b/ui/src/content/fonts/noto-sans/NotoSans-CondensedBold.woff new file mode 100644 index 000000000..06dbec3e8 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedBold.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedBold.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-CondensedBold.woff2 new file mode 100644 index 000000000..d6f122e6b Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedBold.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedBoldItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-CondensedBoldItalic.ttf new file mode 100644 index 000000000..d99dbb304 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedBoldItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedBoldItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-CondensedBoldItalic.woff new file mode 100644 index 000000000..b6cb74d6b Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedBoldItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedBoldItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-CondensedBoldItalic.woff2 new file mode 100644 index 000000000..075c46b6b Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedBoldItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraBold.ttf b/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraBold.ttf new file mode 100644 index 000000000..71ca64b95 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraBold.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraBold.woff b/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraBold.woff new file mode 100644 index 000000000..db4cf6ff1 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraBold.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraBold.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraBold.woff2 new file mode 100644 index 000000000..bc277e8fa Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraBold.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraBoldItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraBoldItalic.ttf new file mode 100644 index 000000000..90f11baf2 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraBoldItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraBoldItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraBoldItalic.woff new file mode 100644 index 000000000..53466bde3 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraBoldItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraBoldItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraBoldItalic.woff2 new file mode 100644 index 000000000..05045cfae Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraBoldItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraLight.ttf b/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraLight.ttf new file mode 100644 index 000000000..aa805b8fa Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraLight.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraLight.woff b/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraLight.woff new file mode 100644 index 000000000..90a5e64e6 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraLight.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraLight.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraLight.woff2 new file mode 100644 index 000000000..195ccd25a Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraLight.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraLightItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraLightItalic.ttf new file mode 100644 index 000000000..f219d9734 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraLightItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraLightItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraLightItalic.woff new file mode 100644 index 000000000..359750b5f Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraLightItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraLightItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraLightItalic.woff2 new file mode 100644 index 000000000..5224b24c7 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedExtraLightItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-CondensedItalic.ttf new file mode 100644 index 000000000..9afa89096 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-CondensedItalic.woff new file mode 100644 index 000000000..618e828c7 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-CondensedItalic.woff2 new file mode 100644 index 000000000..2864fcdc5 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedLight.ttf b/ui/src/content/fonts/noto-sans/NotoSans-CondensedLight.ttf new file mode 100644 index 000000000..ebc77b3cb Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedLight.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedLight.woff b/ui/src/content/fonts/noto-sans/NotoSans-CondensedLight.woff new file mode 100644 index 000000000..643a13e29 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedLight.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedLight.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-CondensedLight.woff2 new file mode 100644 index 000000000..fec9edf18 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedLight.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedLightItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-CondensedLightItalic.ttf new file mode 100644 index 000000000..d514d49b2 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedLightItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedLightItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-CondensedLightItalic.woff new file mode 100644 index 000000000..37f7205b7 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedLightItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedLightItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-CondensedLightItalic.woff2 new file mode 100644 index 000000000..f2ee5e3e2 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedLightItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedMedium.ttf b/ui/src/content/fonts/noto-sans/NotoSans-CondensedMedium.ttf new file mode 100644 index 000000000..ca88e8699 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedMedium.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedMedium.woff b/ui/src/content/fonts/noto-sans/NotoSans-CondensedMedium.woff new file mode 100644 index 000000000..e07d04ab4 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedMedium.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedMedium.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-CondensedMedium.woff2 new file mode 100644 index 000000000..fe3ec934d Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedMedium.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedMediumItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-CondensedMediumItalic.ttf new file mode 100644 index 000000000..5a8fde23c Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedMediumItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedMediumItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-CondensedMediumItalic.woff new file mode 100644 index 000000000..e24c0413b Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedMediumItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedMediumItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-CondensedMediumItalic.woff2 new file mode 100644 index 000000000..bbed28bfa Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedMediumItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedSemiBold.ttf b/ui/src/content/fonts/noto-sans/NotoSans-CondensedSemiBold.ttf new file mode 100644 index 000000000..81fb5135a Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedSemiBold.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedSemiBold.woff b/ui/src/content/fonts/noto-sans/NotoSans-CondensedSemiBold.woff new file mode 100644 index 000000000..63f7202e1 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedSemiBold.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedSemiBold.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-CondensedSemiBold.woff2 new file mode 100644 index 000000000..d119eb3e4 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedSemiBold.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedSemiBoldItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-CondensedSemiBoldItalic.ttf new file mode 100644 index 000000000..5ef9229db Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedSemiBoldItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedSemiBoldItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-CondensedSemiBoldItalic.woff new file mode 100644 index 000000000..adbfcb803 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedSemiBoldItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedSemiBoldItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-CondensedSemiBoldItalic.woff2 new file mode 100644 index 000000000..faf63fdda Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedSemiBoldItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedThin.ttf b/ui/src/content/fonts/noto-sans/NotoSans-CondensedThin.ttf new file mode 100644 index 000000000..8e3df6345 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedThin.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedThin.woff b/ui/src/content/fonts/noto-sans/NotoSans-CondensedThin.woff new file mode 100644 index 000000000..6f35416f3 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedThin.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedThin.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-CondensedThin.woff2 new file mode 100644 index 000000000..b5077ee01 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedThin.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedThinItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-CondensedThinItalic.ttf new file mode 100644 index 000000000..963265466 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedThinItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedThinItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-CondensedThinItalic.woff new file mode 100644 index 000000000..4d5aba539 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedThinItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-CondensedThinItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-CondensedThinItalic.woff2 new file mode 100644 index 000000000..11e63e3b7 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-CondensedThinItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraBold.ttf b/ui/src/content/fonts/noto-sans/NotoSans-ExtraBold.ttf new file mode 100644 index 000000000..95a5e19e5 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraBold.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraBold.woff b/ui/src/content/fonts/noto-sans/NotoSans-ExtraBold.woff new file mode 100644 index 000000000..4867b36fd Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraBold.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraBold.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-ExtraBold.woff2 new file mode 100644 index 000000000..59e146155 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraBold.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraBoldItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-ExtraBoldItalic.ttf new file mode 100644 index 000000000..16c6495de Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraBoldItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraBoldItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-ExtraBoldItalic.woff new file mode 100644 index 000000000..6afed95c2 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraBoldItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraBoldItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-ExtraBoldItalic.woff2 new file mode 100644 index 000000000..493a60bac Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraBoldItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensed.ttf b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensed.ttf new file mode 100644 index 000000000..f2fc1d35d Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensed.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensed.woff b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensed.woff new file mode 100644 index 000000000..df93c442e Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensed.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensed.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensed.woff2 new file mode 100644 index 000000000..2b0d40943 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensed.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBlack.ttf b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBlack.ttf new file mode 100644 index 000000000..ddd6ebc64 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBlack.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBlack.woff b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBlack.woff new file mode 100644 index 000000000..778532127 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBlack.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBlack.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBlack.woff2 new file mode 100644 index 000000000..7219203dd Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBlack.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBlackItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBlackItalic.ttf new file mode 100644 index 000000000..56e1dc068 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBlackItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBlackItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBlackItalic.woff new file mode 100644 index 000000000..5d9418506 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBlackItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBlackItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBlackItalic.woff2 new file mode 100644 index 000000000..8ccb04011 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBlackItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBold.ttf b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBold.ttf new file mode 100644 index 000000000..e79662fa1 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBold.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBold.woff b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBold.woff new file mode 100644 index 000000000..76ee85e26 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBold.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBold.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBold.woff2 new file mode 100644 index 000000000..579628003 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBold.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBoldItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBoldItalic.ttf new file mode 100644 index 000000000..6d2e25ed3 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBoldItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBoldItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBoldItalic.woff new file mode 100644 index 000000000..5a2c59934 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBoldItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBoldItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBoldItalic.woff2 new file mode 100644 index 000000000..279ae5bc6 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedBoldItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraBold.ttf b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraBold.ttf new file mode 100644 index 000000000..b737b73a6 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraBold.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraBold.woff b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraBold.woff new file mode 100644 index 000000000..ba116de5e Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraBold.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraBold.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraBold.woff2 new file mode 100644 index 000000000..2eb388494 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraBold.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraBoldItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraBoldItalic.ttf new file mode 100644 index 000000000..ce97fe372 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraBoldItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraBoldItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraBoldItalic.woff new file mode 100644 index 000000000..ddb88cba4 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraBoldItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraBoldItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraBoldItalic.woff2 new file mode 100644 index 000000000..b6ca1efc6 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraBoldItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraLight.ttf b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraLight.ttf new file mode 100644 index 000000000..be21563e0 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraLight.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraLight.woff b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraLight.woff new file mode 100644 index 000000000..31ac4af4d Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraLight.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraLight.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraLight.woff2 new file mode 100644 index 000000000..1cbfffd24 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraLight.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraLightItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraLightItalic.ttf new file mode 100644 index 000000000..e3af8f91c Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraLightItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraLightItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraLightItalic.woff new file mode 100644 index 000000000..a7f8c3386 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraLightItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraLightItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraLightItalic.woff2 new file mode 100644 index 000000000..4ff849379 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedExtraLightItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedItalic.ttf new file mode 100644 index 000000000..75fd4f2bc Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedItalic.woff new file mode 100644 index 000000000..d131af799 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedItalic.woff2 new file mode 100644 index 000000000..18b66a1da Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedLight.ttf b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedLight.ttf new file mode 100644 index 000000000..3f1dc53e2 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedLight.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedLight.woff b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedLight.woff new file mode 100644 index 000000000..80a834129 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedLight.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedLight.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedLight.woff2 new file mode 100644 index 000000000..8714099ac Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedLight.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedLightItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedLightItalic.ttf new file mode 100644 index 000000000..5400a5e27 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedLightItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedLightItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedLightItalic.woff new file mode 100644 index 000000000..3e8ade32b Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedLightItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedLightItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedLightItalic.woff2 new file mode 100644 index 000000000..d9eedd1b3 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedLightItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedMedium.ttf b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedMedium.ttf new file mode 100644 index 000000000..ee7213cb8 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedMedium.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedMedium.woff b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedMedium.woff new file mode 100644 index 000000000..b7f093abc Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedMedium.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedMedium.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedMedium.woff2 new file mode 100644 index 000000000..636badb9d Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedMedium.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedMediumItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedMediumItalic.ttf new file mode 100644 index 000000000..156c1e554 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedMediumItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedMediumItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedMediumItalic.woff new file mode 100644 index 000000000..d5b698b6b Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedMediumItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedMediumItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedMediumItalic.woff2 new file mode 100644 index 000000000..0f1e2369f Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedMediumItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedSemiBold.ttf b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedSemiBold.ttf new file mode 100644 index 000000000..f073f7b84 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedSemiBold.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedSemiBold.woff b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedSemiBold.woff new file mode 100644 index 000000000..60af71a24 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedSemiBold.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedSemiBold.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedSemiBold.woff2 new file mode 100644 index 000000000..add9c1ff7 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedSemiBold.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedSemiBoldItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedSemiBoldItalic.ttf new file mode 100644 index 000000000..c8ba48541 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedSemiBoldItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedSemiBoldItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedSemiBoldItalic.woff new file mode 100644 index 000000000..85bb860bd Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedSemiBoldItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedSemiBoldItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedSemiBoldItalic.woff2 new file mode 100644 index 000000000..372e42231 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedSemiBoldItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedThin.ttf b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedThin.ttf new file mode 100644 index 000000000..ae301b657 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedThin.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedThin.woff b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedThin.woff new file mode 100644 index 000000000..2fb220307 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedThin.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedThin.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedThin.woff2 new file mode 100644 index 000000000..c9d552941 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedThin.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedThinItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedThinItalic.ttf new file mode 100644 index 000000000..9bbe6c10d Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedThinItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedThinItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedThinItalic.woff new file mode 100644 index 000000000..e73b6e90f Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedThinItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedThinItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedThinItalic.woff2 new file mode 100644 index 000000000..ecded12da Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraCondensedThinItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraLight.ttf b/ui/src/content/fonts/noto-sans/NotoSans-ExtraLight.ttf new file mode 100644 index 000000000..c028f7c21 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraLight.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraLight.woff b/ui/src/content/fonts/noto-sans/NotoSans-ExtraLight.woff new file mode 100644 index 000000000..48b7eca75 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraLight.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraLight.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-ExtraLight.woff2 new file mode 100644 index 000000000..8a7e78520 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraLight.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraLightItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-ExtraLightItalic.ttf new file mode 100644 index 000000000..9c0487623 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraLightItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraLightItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-ExtraLightItalic.woff new file mode 100644 index 000000000..b363c7e8e Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraLightItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ExtraLightItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-ExtraLightItalic.woff2 new file mode 100644 index 000000000..be2658b6c Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ExtraLightItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-Italic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-Italic.ttf new file mode 100644 index 000000000..1639ad7d4 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-Italic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-Italic.woff b/ui/src/content/fonts/noto-sans/NotoSans-Italic.woff new file mode 100644 index 000000000..b6f7b7751 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-Italic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-Italic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-Italic.woff2 new file mode 100644 index 000000000..aff20bff7 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-Italic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-Light.ttf b/ui/src/content/fonts/noto-sans/NotoSans-Light.ttf new file mode 100644 index 000000000..d80909ffa Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-Light.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-Light.woff b/ui/src/content/fonts/noto-sans/NotoSans-Light.woff new file mode 100644 index 000000000..dafec365e Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-Light.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-Light.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-Light.woff2 new file mode 100644 index 000000000..1f7354325 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-Light.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-LightItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-LightItalic.ttf new file mode 100644 index 000000000..fe3cb93f9 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-LightItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-LightItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-LightItalic.woff new file mode 100644 index 000000000..67f41c140 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-LightItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-LightItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-LightItalic.woff2 new file mode 100644 index 000000000..3a9fdd638 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-LightItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-Medium.ttf b/ui/src/content/fonts/noto-sans/NotoSans-Medium.ttf new file mode 100644 index 000000000..25050f76b Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-Medium.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-Medium.woff b/ui/src/content/fonts/noto-sans/NotoSans-Medium.woff new file mode 100644 index 000000000..9d6609930 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-Medium.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-Medium.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-Medium.woff2 new file mode 100644 index 000000000..70175a387 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-Medium.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-MediumItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-MediumItalic.ttf new file mode 100644 index 000000000..b332bcba9 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-MediumItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-MediumItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-MediumItalic.woff new file mode 100644 index 000000000..50a14f3d5 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-MediumItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-MediumItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-MediumItalic.woff2 new file mode 100644 index 000000000..c2270db0b Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-MediumItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-Regular.woff b/ui/src/content/fonts/noto-sans/NotoSans-Regular.woff new file mode 100644 index 000000000..a371a99ce Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-Regular.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-Regular.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-Regular.woff2 new file mode 100644 index 000000000..d047ff507 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-Regular.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiBold.ttf b/ui/src/content/fonts/noto-sans/NotoSans-SemiBold.ttf new file mode 100644 index 000000000..1084f14d4 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiBold.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiBold.woff b/ui/src/content/fonts/noto-sans/NotoSans-SemiBold.woff new file mode 100644 index 000000000..b7bd5fd80 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiBold.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiBold.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-SemiBold.woff2 new file mode 100644 index 000000000..b7df73192 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiBold.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiBoldItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-SemiBoldItalic.ttf new file mode 100644 index 000000000..3ac42f970 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiBoldItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiBoldItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-SemiBoldItalic.woff new file mode 100644 index 000000000..fae839f61 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiBoldItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiBoldItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-SemiBoldItalic.woff2 new file mode 100644 index 000000000..8fd80f98a Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiBoldItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensed.ttf b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensed.ttf new file mode 100644 index 000000000..358833d4b Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensed.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensed.woff b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensed.woff new file mode 100644 index 000000000..3d5c717e1 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensed.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensed.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensed.woff2 new file mode 100644 index 000000000..0ec8dd486 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensed.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBlack.ttf b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBlack.ttf new file mode 100644 index 000000000..fea044243 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBlack.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBlack.woff b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBlack.woff new file mode 100644 index 000000000..d7893286e Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBlack.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBlack.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBlack.woff2 new file mode 100644 index 000000000..b29b04ced Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBlack.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBlackItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBlackItalic.ttf new file mode 100644 index 000000000..9919199f6 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBlackItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBlackItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBlackItalic.woff new file mode 100644 index 000000000..d01e6ffb6 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBlackItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBlackItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBlackItalic.woff2 new file mode 100644 index 000000000..ec798b5ea Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBlackItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBold.ttf b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBold.ttf new file mode 100644 index 000000000..2a4ed118f Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBold.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBold.woff b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBold.woff new file mode 100644 index 000000000..82d8fe650 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBold.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBold.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBold.woff2 new file mode 100644 index 000000000..876d4a38d Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBold.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBoldItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBoldItalic.ttf new file mode 100644 index 000000000..089dc1cd8 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBoldItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBoldItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBoldItalic.woff new file mode 100644 index 000000000..7ec78f4ab Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBoldItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBoldItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBoldItalic.woff2 new file mode 100644 index 000000000..a46bb3bdc Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedBoldItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraBold.ttf b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraBold.ttf new file mode 100644 index 000000000..784b6972e Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraBold.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraBold.woff b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraBold.woff new file mode 100644 index 000000000..59904e5a0 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraBold.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraBold.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraBold.woff2 new file mode 100644 index 000000000..71f25f81b Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraBold.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraBoldItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraBoldItalic.ttf new file mode 100644 index 000000000..3f90f63e1 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraBoldItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraBoldItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraBoldItalic.woff new file mode 100644 index 000000000..9fe14bfb3 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraBoldItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraBoldItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraBoldItalic.woff2 new file mode 100644 index 000000000..2233897bf Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraBoldItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraLight.ttf b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraLight.ttf new file mode 100644 index 000000000..05db9fd50 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraLight.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraLight.woff b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraLight.woff new file mode 100644 index 000000000..6c499789f Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraLight.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraLight.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraLight.woff2 new file mode 100644 index 000000000..8d849ea3d Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraLight.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraLightItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraLightItalic.ttf new file mode 100644 index 000000000..57913ac10 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraLightItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraLightItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraLightItalic.woff new file mode 100644 index 000000000..4bced03ee Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraLightItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraLightItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraLightItalic.woff2 new file mode 100644 index 000000000..eafc87c35 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedExtraLightItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedItalic.ttf new file mode 100644 index 000000000..5fb6cce60 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedItalic.woff new file mode 100644 index 000000000..b7fb53ae9 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedItalic.woff2 new file mode 100644 index 000000000..56b6c92a9 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedLight.ttf b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedLight.ttf new file mode 100644 index 000000000..e175b03ad Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedLight.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedLight.woff b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedLight.woff new file mode 100644 index 000000000..bb855ba0a Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedLight.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedLight.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedLight.woff2 new file mode 100644 index 000000000..66dc5bdd0 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedLight.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedLightItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedLightItalic.ttf new file mode 100644 index 000000000..f20cad670 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedLightItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedLightItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedLightItalic.woff new file mode 100644 index 000000000..f6551a0c9 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedLightItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedLightItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedLightItalic.woff2 new file mode 100644 index 000000000..a26e17aef Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedLightItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedMedium.ttf b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedMedium.ttf new file mode 100644 index 000000000..4ed47d328 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedMedium.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedMedium.woff b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedMedium.woff new file mode 100644 index 000000000..14fcc3106 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedMedium.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedMedium.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedMedium.woff2 new file mode 100644 index 000000000..386c57125 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedMedium.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedMediumItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedMediumItalic.ttf new file mode 100644 index 000000000..8b648a4cb Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedMediumItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedMediumItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedMediumItalic.woff new file mode 100644 index 000000000..9d30394c1 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedMediumItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedMediumItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedMediumItalic.woff2 new file mode 100644 index 000000000..fac56c601 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedMediumItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedSemiBold.ttf b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedSemiBold.ttf new file mode 100644 index 000000000..86562e717 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedSemiBold.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedSemiBold.woff b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedSemiBold.woff new file mode 100644 index 000000000..dfe8b278f Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedSemiBold.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedSemiBold.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedSemiBold.woff2 new file mode 100644 index 000000000..5f8907076 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedSemiBold.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedSemiBoldItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedSemiBoldItalic.ttf new file mode 100644 index 000000000..a2bca35a2 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedSemiBoldItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedSemiBoldItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedSemiBoldItalic.woff new file mode 100644 index 000000000..3b8dd233a Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedSemiBoldItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedSemiBoldItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedSemiBoldItalic.woff2 new file mode 100644 index 000000000..805a62ebe Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedSemiBoldItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedThin.ttf b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedThin.ttf new file mode 100644 index 000000000..74cb50c9f Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedThin.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedThin.woff b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedThin.woff new file mode 100644 index 000000000..543f23dd8 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedThin.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedThin.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedThin.woff2 new file mode 100644 index 000000000..9d02c2903 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedThin.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedThinItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedThinItalic.ttf new file mode 100644 index 000000000..37c47c02a Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedThinItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedThinItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedThinItalic.woff new file mode 100644 index 000000000..02a0ad7b2 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedThinItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedThinItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedThinItalic.woff2 new file mode 100644 index 000000000..436a488b4 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-SemiCondensedThinItalic.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-Thin.ttf b/ui/src/content/fonts/noto-sans/NotoSans-Thin.ttf new file mode 100644 index 000000000..f14dd6ab7 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-Thin.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-Thin.woff b/ui/src/content/fonts/noto-sans/NotoSans-Thin.woff new file mode 100644 index 000000000..19d4445d6 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-Thin.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-Thin.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-Thin.woff2 new file mode 100644 index 000000000..09261a699 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-Thin.woff2 differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ThinItalic.ttf b/ui/src/content/fonts/noto-sans/NotoSans-ThinItalic.ttf new file mode 100644 index 000000000..459bd6ade Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ThinItalic.ttf differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ThinItalic.woff b/ui/src/content/fonts/noto-sans/NotoSans-ThinItalic.woff new file mode 100644 index 000000000..b9ce38d46 Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ThinItalic.woff differ diff --git a/ui/src/content/fonts/noto-sans/NotoSans-ThinItalic.woff2 b/ui/src/content/fonts/noto-sans/NotoSans-ThinItalic.woff2 new file mode 100644 index 000000000..cbea72fec Binary files /dev/null and b/ui/src/content/fonts/noto-sans/NotoSans-ThinItalic.woff2 differ diff --git a/ui/src/content/images/checkmark.svg b/ui/src/content/images/checkmark.svg new file mode 100644 index 000000000..51c619c5e --- /dev/null +++ b/ui/src/content/images/checkmark.svg @@ -0,0 +1,4 @@ + + + + diff --git a/ui/src/content/images/close.svg b/ui/src/content/images/close.svg new file mode 100644 index 000000000..bbd256404 --- /dev/null +++ b/ui/src/content/images/close.svg @@ -0,0 +1,3 @@ + + + diff --git a/ui/src/content/images/error-sign.svg b/ui/src/content/images/error-sign.svg new file mode 100644 index 000000000..788dc4db3 --- /dev/null +++ b/ui/src/content/images/error-sign.svg @@ -0,0 +1,3 @@ + + + diff --git a/ui/src/content/images/lockpad.svg b/ui/src/content/images/lockpad.svg new file mode 100644 index 000000000..b12f3d608 --- /dev/null +++ b/ui/src/content/images/lockpad.svg @@ -0,0 +1,3 @@ + + + diff --git a/ui/src/content/images/member-logo-placeholder.svg b/ui/src/content/images/member-logo-placeholder.svg new file mode 100644 index 000000000..7bcbc0f0b --- /dev/null +++ b/ui/src/content/images/member-logo-placeholder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/src/content/images/orcid-icon.svg b/ui/src/content/images/orcid-icon.svg new file mode 100644 index 000000000..8aec5959e --- /dev/null +++ b/ui/src/content/images/orcid-icon.svg @@ -0,0 +1,21 @@ + + + + Orcid logo + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ui/src/content/images/orcid-logo.svg b/ui/src/content/images/orcid-logo.svg new file mode 100644 index 000000000..a48ab27f2 --- /dev/null +++ b/ui/src/content/images/orcid-logo.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + diff --git a/ui/src/content/images/plus-circle.svg b/ui/src/content/images/plus-circle.svg new file mode 100644 index 000000000..f03d6693f --- /dev/null +++ b/ui/src/content/images/plus-circle.svg @@ -0,0 +1,3 @@ + + + diff --git a/ui/src/content/images/red-strikethrough-circle.svg b/ui/src/content/images/red-strikethrough-circle.svg new file mode 100644 index 000000000..b1dac3932 --- /dev/null +++ b/ui/src/content/images/red-strikethrough-circle.svg @@ -0,0 +1,3 @@ + + + diff --git a/ui/src/content/images/warning-sign.svg b/ui/src/content/images/warning-sign.svg new file mode 100644 index 000000000..abf4f0452 --- /dev/null +++ b/ui/src/content/images/warning-sign.svg @@ -0,0 +1,3 @@ + + + diff --git a/ui/src/content/scss/_bootstrap-variables.scss b/ui/src/content/scss/_bootstrap-variables.scss new file mode 100644 index 000000000..0c145785f --- /dev/null +++ b/ui/src/content/scss/_bootstrap-variables.scss @@ -0,0 +1,57 @@ +@use 'noto-sans'; +/* +* Bootstrap overrides https://getbootstrap.com/docs/4.0/getting-started/theming/ +* All values defined in bootstrap source +* https://github.com/twbs/bootstrap/blob/v4-dev/scss/_variables.scss can be overwritten here +* Make sure not to add !default to values here +*/ + +// Colors: +// Grayscale and brand colors for use across Bootstrap. + +$primary: #2e7f9f; +$secondary: #a6ce39; +$success: #2e7f9f; +$info: #2e7f9f; +$warning: #f44336; +$danger: #f44336; +$gray-1: #eeeeee; +$gray-2: #fafafa; +$black-transparent: rgba(0, 0, 0, 0.6); + +// Options: +// Quickly modify global styling by enabling or disabling optional features. +$enable-rounded: true; +$enable-shadows: false; +$enable-gradients: false; +$enable-transitions: true; +$enable-hover-media-query: false; +$enable-grid-classes: true; +$enable-print-styles: true; + +// Components: +// Define common padding and border radius sizes and more. + +$border-radius: 0.15rem; +$border-radius-lg: 0.125rem; +$border-radius-sm: 0.1rem; + +// Body: +// Settings for the `` element. + +$body-bg: #fff; +$body-color: rgba(0, 0, 0, 0.87); + +// Typography: +// Font, line-height, and color for body text, headings, and more. + +$font-family-sans-serif: 'Noto Sans', san-serif; + +$font-size-base: 1rem; + +$h3-font-size: $font-size-base * 1.5; +$h4-font-size: $font-size-base * 1.25; +$h5-font-size: $font-size-base * 1.17; +$h6-font-size: $font-size-base * 1.12; + +$link-hover-color: $primary; diff --git a/ui/src/content/scss/noto-sans.scss b/ui/src/content/scss/noto-sans.scss new file mode 100644 index 000000000..c31dd9175 --- /dev/null +++ b/ui/src/content/scss/noto-sans.scss @@ -0,0 +1,26 @@ +$notosans-fontface-path: 'content/fonts/noto-sans' !default; + +// Support for Chrome 6, Edge 6, Firefox 3.5, Firefox Android 4, IE 9, Opera 11.1, Opera Android 11.1, Safari 5.1, Safari ios 5, Webview Android 4.4 + +@mixin notosans-fontface($type, $weight, $style) { + @font-face { + font-family: 'Noto Sans'; + src: url ('#{$notosans-fontface-path}/NotoSans-#{$type}.woff2') format('woff'), + url ('#{$notosans-fontface-path}/NotoSans-#{$type}.woff') format('woff'); + font-weight: $weight; + font-style: $style; + font-display: swap; + } +} + +// Based on w3 font-weight mapping https://www.w3.org/TR/css3-values/#number-value + +@include notosans-fontface('Thin', 100, normal); +@include notosans-fontface('ExtraLight', 200, normal); +@include notosans-fontface('Light', 300, normal); +@include notosans-fontface('Regular', 400, normal); +@include notosans-fontface('Medium', 500, normal); +@include notosans-fontface('SemiBold', 600, normal); +@include notosans-fontface('Bold', 700, normal); +@include notosans-fontface('ExtraBold', 800, normal); +@include notosans-fontface('Black', 900, normal);