diff --git a/.github/workflows/publish-npm.yml b/.github/workflows/publish-npm.yml new file mode 100644 index 00000000..09540cba --- /dev/null +++ b/.github/workflows/publish-npm.yml @@ -0,0 +1,39 @@ +name: Publish ojp-sdk-next on npm + +on: + push: + tags: + - '0.21.*' + # allow manual trigger + workflow_dispatch: + +permissions: + contents: read + +jobs: + publish: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + registry-url: 'https://registry.npmjs.org/' + + - name: Sync lockfile + run: npm install --package-lock-only --ignore-scripts + + - name: Install dependencies + run: npm ci + + - name: Build package + run: npm run build + + - name: Publish to npm + run: npm publish --access public + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.gitignore b/.gitignore index 0ae7e5c9..3063f07d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ +lib node_modules -/lib diff --git a/CHANGELOG.md b/CHANGELOG.md index d6ebb12d..3b227161 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,158 @@ # CHANGELOG +## 0.21.2 - 22.01.2025 +- updates API - [PR #219](https://github.com/openTdataCH/ojp-js/pull/219) + - updates TRR refine params + - use latest `ojp-shared-types` + +## 0.21.1 - 25.11.2025 +- refactor SDK - [PR #210](https://github.com/openTdataCH/ojp-js/pull/210) + - package + - bumps minor version to `0.21.x` + - declare `ojp-shared-types` as peerDependency + - SDK constructor is now private and uses generics to differentiate between OJP versions + - use `OJP.SDK.create()` to create a OJP 2.0 instance + - or `OJP.SDK.v1()` to create a OJP 1.0 + - update requests + - refactor creation to allow a clear separation between OJP v1 and OJP v2, adds request per OJP version/request type + - old static inits are kept, however a new construct mode is recommended + ``` + const ojpSDK = OJP.SDK.create('my_requestor_ref', httpConfig, 'de'); + const request = ojpSDK.requests.LocationInformationRequest.initWithLocationName('Bern'); + // instead of + // const request = OJP.LocationInformationRequest.initWithLocationName('Bern'); + ``` + - update requests (continued) + - requests dont conform to XSD schemas anymore, a property `.payload` is used for that + - updated requests, added LIR, SER for OJPv1 + - request fetching + parsing is done now via `await request.fetchResponse(sdkInstance) call` + - see more changes in this [short gist](https://gist.github.com/vasile/40399cd2bb390ec7b9eb1fbbe52e5020) + - updates XML parser + - changed parser, improve handling of the `#text` nodes generated by `fast-xml-parser` + - requests dont conform to XSD schemas anymore, a property `.payload` is used for that, therefore no more need for the `MapModelKeepPropertiesXML` lookup hack in `ojp-shared-types` dependency + +## 0.20.33 - 23.11.2025 +- use latest `ojp-shared-types` - [PR #215](https://github.com/openTdataCH/ojp-js/pull/215) + +## 0.20.32 - 13.11.2025 +- Fix OJPv1 GeneralAttribute - [PR #213](https://github.com/openTdataCH/ojp-js/pull/213) + - use new OJP_Types `GeneralAttributeSchema` + +## 0.20.31 - 13.11.2025 +- Params Updates - [PR #212](https://github.com/openTdataCH/ojp-js/pull/212) + - TR - adds filter helper for `RailSubmode` + - Place - adds support for OJP v1 init, adds `initWithOJPv1XMLSchema` static initializer + - use latest `ojp-shared-types` + - TR restriction mode filter requires now `ptMode`, `personalMode` arrays + +## 0.20.30 - 31.10.2025 +- TR with IndividualTransportOption - [PR #205](https://github.com/openTdataCH/ojp-js/pull/205) + - adds `setMaxDurationWalkingTime`method for TR requests with longer walking (at origin / destination) + - adds Github workflow for npm publish automation + +## 0.20.29 - 16.10.2025 +- use latest `ojp-shared-types` - [PR #201](https://github.com/openTdataCH/ojp-js/pull/201) + +## 0.20.28 - 26.09.2025 +- use latest `ojp-shared-types` - [PR #200](https://github.com/openTdataCH/ojp-js/pull/200) + +## 0.20.27 - 17.09.2025 +- TR car filter - [add car routing support #190](https://github.com/openTdataCH/ojp-js/issues/190) - [PR #193](https://github.com/openTdataCH/ojp-js/pull/194) + +## 0.20.26 - 01.09.2025 +- use latest `ojp-shared-types` - [PR #193](https://github.com/openTdataCH/ojp-js/pull/193) + +## 0.20.25 - 20.08.2025 +- use latest `ojp-shared-types` - [PR #191](https://github.com/openTdataCH/ojp-js/pull/191) + +## 0.20.24 - 08.07.2025 +- use latest `ojp-shared-types` - [PR #189](https://github.com/openTdataCH/ojp-js/pull/189) + +## 0.20.23 - 24.06.2025 +- fix parsing order - [PR #185](https://github.com/openTdataCH/ojp-js/pull/185) + +## 0.20.22 - 24.06.2025 +- use latest `ojp-shared-types` - [PR #184](https://github.com/openTdataCH/ojp-js/pull/184) + +## 0.20.21 - 12.06.2025 +- LIR filter with PtMode - [PR #182](https://github.com/openTdataCH/ojp-js/pull/182) + - use latest `ojp-shared-types` package + - updates examples for PtMode filter (TR, LIR) + +## 0.20.20 - 11.06.2025 +- updates SDK - [PR #181](https://github.com/openTdataCH/ojp-js/pull/181) + - adds TRR, FareRequest initialisers with mock request / response + - adds tests for FareRequest + +## 0.20.19 - 11.06.2025 +- updates SDK - [PR #180](https://github.com/openTdataCH/ojp-js/pull/180) + - updates `ojp-shared-types` (TR params `walkSpeed`) + +## 0.20.18 - 06.06.2025 +- Improve serialising - [PR #178](https://github.com/openTdataCH/ojp-js/pull/178) + - improve internal `buildXML`, adds `XmlSerializer` for outside SDK serialising objects to XML + - harmonise FareRequest response, adds `fetchFareRequestResponse` with `FareDeliverySchema` + - remove `Trip.rawXML` property + - updates playground associated app + +## 0.20.17 - 02.06.2025 +- harmonise SDK Response - [PR #171](https://github.com/openTdataCH/ojp-js/pull/171) + - harmonise SDK response, use `Promise>` response type + - deprecate older methods (i.e. the ones fetching individual Trip[]) + - adds tests for SIRI-SX situation models + +## 0.20.16 - 29.05.2025 +- adds TripInfoRequest request / response - [PR #170](https://github.com/openTdataCH/ojp-js/pull/170) +- dynamically build `MapParentArrayTags`, dont rely on `ojp-shared-types` package + +## 0.20.15 - 27.05.2025 +- save raw XML for `Trip` - [PR #169](https://github.com/openTdataCH/ojp-js/pull/169) + +## 0.20.14 - 14.05.2025 +- export `RequestInfo` + +## 0.20.13 - 13.05.2025 +- (re-)adds FareRequest - [PR #167](https://github.com/openTdataCH/ojp-js/pull/167) + +## 0.20.11 - 13.05.2025 +- use [ojp-shared-types](https://github.com/openTdataCH/ojp-shared-types) package - [PR #166](https://github.com/openTdataCH/ojp-js/pull/166) + +## 0.20.10 - 17.04.2025 +- refactor/next version of the SDK (continued) - [PR #139](https://github.com/openTdataCH/ojp-js/pull/139) + - [Adds TripRefinementRequest #151](https://github.com/openTdataCH/ojp-js/pull/151) + - TR - [Feature/trip response status #152](https://github.com/openTdataCH/ojp-js/pull/152) + - TRR TripParam - [Updates TRR #153](https://github.com/openTdataCH/ojp-js/pull/153) + +## 0.20.8 - 15.04.2025 +- refactor/next version of the SDK (continued) - [PR #139](https://github.com/openTdataCH/ojp-js/pull/139) + - [Fix LIR models (Place.Mode) #148](https://github.com/openTdataCH/ojp-js/pull/148) + +## 0.20.7 - 14.04.2025 +- refactor/next version of the SDK (continued) - [PR #139](https://github.com/openTdataCH/ojp-js/pull/139) + - fixed JSON (xml-parsed) traverse, catch case for expected empty arrays + +## 0.20.5 - 13.04.2025 +- refactor/next version of the SDK (continued) - [PR #139](https://github.com/openTdataCH/ojp-js/pull/139) + - use dual builds (CommonJS and ESM) via `tsup` + +## 0.20.4 - 12.04.2025 +- refactor/next version of the SDK (continued) - [PR #139](https://github.com/openTdataCH/ojp-js/pull/139) + - revert to use CJS module style + +## 0.20.3 - 12.04.2025 +- refactor/next version of the SDK (continued) - [PR #139](https://github.com/openTdataCH/ojp-js/pull/139) + - use NodeNext, ESM style + - more robust NS parsing + +## 0.20.2 - 01.04.2025 +- refactor/next version of the SDK (continued) - [PR #139](https://github.com/openTdataCH/ojp-js/pull/139) + +## 0.20.1 - 26.03.2025 +- refactor/next version of the SDK - [PR #139](https://github.com/openTdataCH/ojp-js/pull/139) + - OJP 2.0 APIs is now used + - [XSD schema](https://vdvde.github.io/OJP/develop/documentation-tables/ojp.html) is used for models + - bundle OJP demo app in [examples/ojp-demo-app](./examples/ojp-demo-app) + ## 0.16.3 - 14.03.2025 - internal change, refactor params/request implementation - [PR #137](https://github.com/openTdataCH/ojp-js/pull/137) - adds hack for OJP-SI to allow Trip nodes without Transfer children node - [PR #138](https://github.com/openTdataCH/ojp-js/pull/138) diff --git a/README.md b/README.md index 5116f9d5..0f21334b 100644 --- a/README.md +++ b/README.md @@ -2,58 +2,112 @@ The OJP Javascript SDK is a Javascript/Typescript package used for communication with [OJP APIs](https://opentransportdata.swiss/en/cookbook/open-journey-planner-ojp/). -See [Reference](./docs/reference.md) and [examples](./examples/) for usage. +## Current Development Status + +Javascript SDK branches + +| Branch | NPM | Demo App | Description | +|-|-|-|-| +| [ojp-js#ojp-sdk-legacy](https://github.com/openTdataCH/ojp-js/tree/feature/ojp-sdk-legacy) | [ojp-sdk-legacy](https://www.npmjs.com/package/ojp-sdk-legacy) | | original SDK, contains dual code for OJP `1.0`,`2.0` | +| [ojp-js#ojp-sdk-next](https://github.com/openTdataCH/ojp-js/tree/feature/ojp-sdk-next) | [ojp-sdk-next](https://www.npmjs.com/package/ojp-sdk-next) - temporarely, long-term will be published under `ojp-sdk` | under development | new SDK code with models derived from XSD schema, this will be the main development reference for OJP JS SDK | + +Code / Demo App Implementation + +| Code Place | LIR | SER | TR | TIR | FR | TRR | Comments | +| - | - | - | - | - | - | - | - | +| `ojp-sdk-legacy` (legacy SDK) | :white_check_mark: | :white_check_mark: | :white_check_mark: | - | - | - | TRR is only available for OJP v2.0 | +| `ojp-sdk-next` (new SDK) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | +| DemoApp Beta | `legacy` | `legacy` | `legacy` | `ojp-sdk-next` | `ojp-sdk-next` | `ojp-sdk-next` | `legacy` is the old SDK (OJP v1 and v2, see above) | + +- LIR - LocationInformationRequest +- SER - StopEventRequest +- TR - TripRequest +- TIR - TripInfoRequest +- FR - FareRequest +- TRR - TripRefineRequest ## Resources -- OJP Demo App: https://opentdatach.github.io/ojp-demo-app/ - web application this SDK +- OJP Demo App: https://opentdatach.github.io/ojp-demo-app/ - web application using this SDK - [CHANGELOG](./CHANGELOG.md) for latest changes - npm `ojp-sdk` package: https://www.npmjs.com/package/ojp-sdk -## Install - -Two versions of the OJP APIs can be used: -- [OJP 1.0](https://opentransportdata.swiss/en/cookbook/open-journey-planner-ojp/) - still supported by `ojp-js` SDK but might receive less support in the future -- [OJP 2.0](https://opentransportdata.swiss/de/cookbook/ojp2entwicklung/) - next version, see [VDVde/OJP](https://github.com/VDVde/OJP/blob/changes_for_v1.1/README.md) specs +## Usage -### OJP 1.0 -The main branch of `ojp-js` repo is using OJP 1.0 APIs. The releases are published to [npmjs.com](https://www.npmjs.com/package/ojp-sdk) as `ojp-sdk` packages. +**Note:** 26.Mar - a different package name is used for test purpose: `ojp-sdk-next`. This package will replace the current `ojp-sdk` package. -- include the `ojp-sdk` package in the `./package.json` dependencies of your project +- include [ojp-sdk-next](https://www.npmjs.com/package/ojp-sdk-next), [ojp-shared-types](https://www.npmjs.com/package/ojp-shared-types) packages in the `./package.json` dependencies of the project ``` "dependencies": { - "ojp-sdk": "0.16.3" + "ojp-shared-types": "0.1.2", + "ojp-sdk-next": "0.21.2", } ``` -### OJP 2.0 -The [ojp-v2](https://github.com/openTdataCH/ojp-js/tree/feature/ojp-v2) branch is used for developing [OJP 2.0](https://opentransportdata.swiss/de/cookbook/ojp2entwicklung/) bindings, -- include the `#ojp-v2` branch -``` - "dependencies": { - "ojp-sdk": "git+https://github.com/openTdataCH/ojp-js.git#feature/ojp-v2" - } -``` +- get an API key from [opentransportdata.swiss](https://api-manager.opentransportdata.swiss/) API manager -## Usage +- use the SDK, see also [playground.component.ts](./examples/ojp-playground/src/app/playground/playground.component.ts) in examples -- update project dependencies -``` -$ npm install ``` +import * as OJP from 'ojp-sdk-next'; -- include OJP SDK in the Typescript / Javascript code -``` -import * as OJP from 'ojp-sdk' +// ... + +// declare the stage config, PROD example below +const httpConfig: OJP.HTTPConfig = { + url: 'https://api.opentransportdata.swiss/ojp20', + authToken: 'TOKEN_FROM_opentransportdata.swiss', +}; + +// define a requestorRef that describes the client +const requestorRef = 'MyExampleTransportApp.v1'; + +// create the SDK +const language = 'de'; // de, fr, it, en +const ojpSDK = OJP.SDK.create(requestorRef, httpConfig, language); + +// build LIR by Name +const searchTerm = 'Bern'; +const request1 = ojpSDK.requests.LocationInformationRequest.initWithLocationName('Bern'); + +// build LIR by StopRef +const stopRef = '8507000'; // Bern +const request2 = ojpSDK.requests.LocationInformationRequest.initWithPlaceRef(stopRef); + +// build LIR by BBOX +// these are equivalent +let bbox: string | number[] = '7.433259,46.937798,7.475252,46.954805'; +bbox = [7.433259, 46.937798, 7.475252, 46.954805]; + +const request3 = ojpSDK.requests.LocationInformationRequest.initWithBBOX(bbox, ['stop']); + +// change XML payload if needed +request1.payload.initialInput ... + +// fetch the results +async myMethod() { + // ... + const response = await request1.fetchResponse(ojpSDK); + + if (!response.ok) { + // handle error + console.log(response.error); + return; + } + + // do something with the value + const placeResults = response.value.placeResult ?? []; + placeResults.forEach(placeResult => { + console.log(placeResult.place.name); + }); +} ``` -- for more details check: - - this repo [reference](./docs/reference.md) - - this repo [examples](./examples/) - - [OJP Demo App](https://github.com/openTdataCH/ojp-demo-app-src) source code +TBA +- update [docs](./docs/) ## License The project is released under a [MIT license](./LICENSE). -Copyright (c) 2021 - 2024 Open Data Platform Mobility Switzerland - [opentransportdata.swiss](https://opentransportdata.swiss/en/). +Copyright (c) 2021 - 2025 Open Data Platform Mobility Switzerland - [opentransportdata.swiss](https://opentransportdata.swiss/en/). diff --git a/docs/README.md b/docs/README.md index db27bcb0..f310a549 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,4 +1,8 @@ # OJP JS SDK Documentation +WIP, old pages below + +---- + - [Architecture](./architecture.md) - [Reference](./reference.md) diff --git a/examples/ojp-playground/package-lock.json b/examples/ojp-playground/package-lock.json index 55904fe7..152a1512 100644 --- a/examples/ojp-playground/package-lock.json +++ b/examples/ojp-playground/package-lock.json @@ -16,7 +16,8 @@ "@angular/platform-browser": "^16.2.0", "@angular/platform-browser-dynamic": "^16.2.0", "@angular/router": "^16.2.0", - "ojp-sdk": "0.9.30", + "ojp-sdk": "../..", + "ojp-shared-types": "0.1.1", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.13.0" @@ -35,11 +36,37 @@ "typescript": "~5.1.3" } }, + "../..": { + "name": "ojp-sdk-next", + "version": "0.21.1", + "license": "MIT", + "dependencies": { + "axios": "1.8.3", + "fast-xml-parser": "5.0.8" + }, + "devDependencies": { + "@types/geojson": "7946.0.16", + "@types/jest": "^29.5.14", + "@types/node": "22.13.9", + "jest": "29.7.0", + "js-yaml": "4.1.0", + "openapi-typescript": "6.2.2", + "swagger-cli": "4.0.4", + "ts-jest": "29.1.1", + "ts-node": "10.9.2", + "tsup": "8.4.0", + "typescript": "5.8.2" + }, + "peerDependencies": { + "ojp-shared-types": "0.1.1" + } + }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -49,12 +76,13 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1602.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1602.12.tgz", - "integrity": "sha512-19Fwwfx+KvJ01SyI6cstRgqT9+cwer8Ro1T27t1JqlGyOX8tY3pV78ulwxy2+wCzPjR18V6W7cb7Cv6fyK4xog==", + "version": "0.1602.16", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1602.16.tgz", + "integrity": "sha512-aWEeGU4UlbrSKpcAZsldVNxNXAWEeu9hM2BPk77GftbRC8PBMWpgYyrJWTz2ryn8aSmGKT3T8OyBH4gZA/667w==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/core": "16.2.12", + "@angular-devkit/core": "16.2.16", "rxjs": "7.8.1" }, "engines": { @@ -63,16 +91,27 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@angular-devkit/architect/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/@angular-devkit/build-angular": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.2.12.tgz", - "integrity": "sha512-VVGKZ0N3gyR0DP7VrcZl4io3ruWYT94mrlyJsJMLlrYy/EX8JCvqrJC9c+dscrtKjhZzjwdyhszkJQY4JfwACA==", + "version": "16.2.16", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.2.16.tgz", + "integrity": "sha512-gEni21kza41xaRnVWP1sMuiWHS/rdoym5FEEGDo9PG60LwRC4lekIgT09GpTlmMu007UEfo0ccQnGroD6+MqWg==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "2.2.1", - "@angular-devkit/architect": "0.1602.12", - "@angular-devkit/build-webpack": "0.1602.12", - "@angular-devkit/core": "16.2.12", + "@angular-devkit/architect": "0.1602.16", + "@angular-devkit/build-webpack": "0.1602.16", + "@angular-devkit/core": "16.2.16", "@babel/core": "7.22.9", "@babel/generator": "7.22.9", "@babel/helper-annotate-as-pure": "7.22.5", @@ -84,7 +123,7 @@ "@babel/runtime": "7.22.6", "@babel/template": "7.22.5", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "16.2.12", + "@ngtools/webpack": "16.2.16", "@vitejs/plugin-basic-ssl": "1.0.1", "ansi-colors": "4.1.3", "autoprefixer": "10.4.14", @@ -127,9 +166,9 @@ "text-table": "0.2.0", "tree-kill": "1.2.2", "tslib": "2.6.1", - "vite": "4.5.2", - "webpack": "5.88.2", - "webpack-dev-middleware": "6.1.1", + "vite": "4.5.5", + "webpack": "5.94.0", + "webpack-dev-middleware": "6.1.2", "webpack-dev-server": "4.15.1", "webpack-merge": "5.9.0", "webpack-subresource-integrity": "5.1.0" @@ -185,19 +224,31 @@ } } }, + "node_modules/@angular-devkit/build-angular/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/@angular-devkit/build-angular/node_modules/tslib": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1602.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1602.12.tgz", - "integrity": "sha512-1lmR4jCkxPJuAFXReesEY3CB+/5jSebGE5ry6qJJvNm6kuSc9bzfTytrcwosVY+Q7kAA2ij7kAYw0loGbTjLWA==", + "version": "0.1602.16", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1602.16.tgz", + "integrity": "sha512-b99Sj0btI0C2GIfzoyP8epDMIOLqSTqXOxw6klGtBLaGZfM5KAxqFzekXh8cAnHxWCj20WdNhezS1eUTLOkaIA==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.1602.12", + "@angular-devkit/architect": "0.1602.16", "rxjs": "7.8.1" }, "engines": { @@ -210,11 +261,22 @@ "webpack-dev-server": "^4.0.0" } }, + "node_modules/@angular-devkit/build-webpack/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/@angular-devkit/core": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.12.tgz", - "integrity": "sha512-o6ziQs+EcEonFezrsA46jbZqkQrs4ckS1bAQj93g5ZjGtieUz8l/U3lclvKpL/iEzWkGVViSYuP2KyW2oqTDiQ==", + "version": "16.2.16", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.16.tgz", + "integrity": "sha512-5xHs9JFmp78sydrOAg0UGErxfMVv5c2f3RXoikS7eBOOXTWEi5pmnOkOvSJ3loQFGVs3Y7i+u02G3VrF5ZxOrA==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "8.12.0", "ajv-formats": "2.1.1", @@ -237,13 +299,24 @@ } } }, + "node_modules/@angular-devkit/core/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/@angular-devkit/schematics": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.2.12.tgz", - "integrity": "sha512-lf/Nz2o875pllxGNUcI2by4rctfRsOZOxvaLq2UaH6XG6Re9tqeNfn40a8qXrr9/IYntXnlvEid/pd9e8gFBIw==", + "version": "16.2.16", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.2.16.tgz", + "integrity": "sha512-pF6fdtJh6yLmgA7Gs45JIdxPl2MsTAhYcZIMrX1a6ID64dfwtF0MP8fDE6vrWInV1zXbzzf7l7PeKuqVtTSzKg==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/core": "16.2.12", + "@angular-devkit/core": "16.2.16", "jsonc-parser": "3.2.0", "magic-string": "0.30.1", "ora": "5.4.1", @@ -255,10 +328,21 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@angular-devkit/schematics/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/@angular/animations": { "version": "16.2.12", "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-16.2.12.tgz", "integrity": "sha512-MD0ElviEfAJY8qMOd6/jjSSvtqER2RDAi0lxe6EtUacC1DHCYkaPrKW4vLqY+tmZBg1yf+6n+uS77pXcHHcA3w==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -270,15 +354,16 @@ } }, "node_modules/@angular/cli": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.2.12.tgz", - "integrity": "sha512-Pcbiraoqdw4rR2Ey5Ooy0ESLS1Ffbjkb6sPfinKRkHmAvyqsmlvkfbB/qK8GrzDSFSWvAKMMXRw9l8nbjvQEXg==", + "version": "16.2.16", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.2.16.tgz", + "integrity": "sha512-aqfNYZ45ndrf36i+7AhQ9R8BCm025j7TtYaUmvvjT4LwiUg6f6KtlZPB/ivBlXmd1g9oXqW4advL0AIi8A/Ozg==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.1602.12", - "@angular-devkit/core": "16.2.12", - "@angular-devkit/schematics": "16.2.12", - "@schematics/angular": "16.2.12", + "@angular-devkit/architect": "0.1602.16", + "@angular-devkit/core": "16.2.16", + "@angular-devkit/schematics": "16.2.16", + "@schematics/angular": "16.2.16", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.3", "ini": "4.1.1", @@ -307,6 +392,7 @@ "version": "16.2.12", "resolved": "https://registry.npmjs.org/@angular/common/-/common-16.2.12.tgz", "integrity": "sha512-B+WY/cT2VgEaz9HfJitBmgdk4I333XG/ybC98CMC4Wz8E49T8yzivmmxXB3OD6qvjcOB6ftuicl6WBqLbZNg2w==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -322,6 +408,7 @@ "version": "16.2.12", "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-16.2.12.tgz", "integrity": "sha512-6SMXUgSVekGM7R6l1Z9rCtUGtlg58GFmgbpMCsGf+VXxP468Njw8rjT2YZkf5aEPxEuRpSHhDYjqz7n14cwCXQ==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -342,6 +429,7 @@ "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-16.2.12.tgz", "integrity": "sha512-pWSrr152562ujh6lsFZR8NfNc5Ljj+zSTQO44DsuB0tZjwEpnRcjJEgzuhGXr+CoiBf+jTSPZKemtSktDk5aaA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "7.23.2", "@jridgewell/sourcemap-codec": "^1.4.14", @@ -370,6 +458,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.22.13", @@ -399,50 +488,69 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@angular/compiler-cli/node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@angular/compiler-cli/node_modules/@babel/template": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", - "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@angular/compiler-cli/node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/@angular/core": { "version": "16.2.12", "resolved": "https://registry.npmjs.org/@angular/core/-/core-16.2.12.tgz", "integrity": "sha512-GLLlDeke/NjroaLYOks0uyzFVo6HyLl7VOm0K1QpLXnYvW63W9Ql/T3yguRZa7tRkOAeFZ3jw+1wnBD4O8MoUA==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -458,6 +566,7 @@ "version": "16.2.12", "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-16.2.12.tgz", "integrity": "sha512-1Eao89hlBgLR3v8tU91vccn21BBKL06WWxl7zLpQmG6Hun+2jrThgOE4Pf3os4fkkbH4Apj0tWL2fNIWe/blbw==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -475,6 +584,7 @@ "version": "16.2.12", "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-16.2.12.tgz", "integrity": "sha512-NnH7ju1iirmVEsUq432DTm0nZBGQsBrU40M3ZeVHMQ2subnGiyUs3QyzDz8+VWLL/T5xTxWLt9BkDn65vgzlIQ==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -496,6 +606,7 @@ "version": "16.2.12", "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-16.2.12.tgz", "integrity": "sha512-ya54jerNgreCVAR278wZavwjrUWImMr2F8yM5n9HBvsMBbFaAQ83anwbOEiHEF2BlR+gJiEBLfpuPRMw20pHqw==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -513,6 +624,7 @@ "version": "16.2.12", "resolved": "https://registry.npmjs.org/@angular/router/-/router-16.2.12.tgz", "integrity": "sha512-aU6QnYSza005V9P3W6PpkieL56O0IHps96DjqI1RS8yOJUl3THmokqYN4Fm5+HXy4f390FN9i6ftadYQDKeWmA==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -530,26 +642,30 @@ "version": "0.10.1", "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -559,6 +675,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.22.5", @@ -589,6 +706,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -598,6 +716,7 @@ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.5", "@jridgewell/gen-mapping": "^0.3.2", @@ -613,6 +732,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -620,27 +740,16 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", - "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -653,24 +762,24 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.0.tgz", - "integrity": "sha512-QAH+vfvts51BCsNZ2PhY6HAggnlS6omLLFTsIpeqZk/MmJ6cW7tgz5yRv0fMJThcr6FmbMrENh1RgrWPTYA76g==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz", + "integrity": "sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.5", "semver": "^6.3.1" }, "engines": { @@ -680,23 +789,38 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", - "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "regexpu-core": "^5.3.1", + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", "semver": "^6.3.1" }, "engines": { @@ -706,114 +830,128 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.0.tgz", - "integrity": "sha512-efwOM90nCG6YeT8o3PCyBVSxRfmILxCNL+TNI8CGQl7a62M0Wd9VkV+XHwIlkOz1r4b+lxu6gBjdWiOMdUCrCQ==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", + "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "debug": "^4.4.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" + "resolve": "^1.22.10" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@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, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@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==", + "node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, "engines": { - "node": ">=6.9.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@babel/helper-function-name/node_modules/@babel/template": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", - "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "node_modules/@babel/helper-environment-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.23.0" + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "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==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" }, "engines": { "node": ">=6.9.0" @@ -823,35 +961,38 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", - "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -860,42 +1001,46 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5" + "@babel/types": "^7.27.3" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-simple-access": { - "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==", + "node_modules/@babel/helper-replace-supers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", + "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -906,6 +1051,7 @@ "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, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -914,107 +1060,103 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@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==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz", + "integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.3", + "@babel/types": "^7.28.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function/node_modules/@babel/template": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", - "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", - "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", - "@babel/types": "^7.24.0" + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers/node_modules/@babel/template": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", - "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "@babel/types": "^7.28.5" }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", - "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", - "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -1023,12 +1165,13 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", - "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1038,14 +1181,15 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", - "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.23.3" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1060,6 +1204,7 @@ "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-plugin-utils": "^7.20.2", @@ -1078,6 +1223,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" }, @@ -1091,6 +1237,7 @@ "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1107,6 +1254,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1119,6 +1267,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -1131,6 +1280,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1146,6 +1296,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1158,6 +1309,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -1166,12 +1318,13 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", - "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", + "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1181,12 +1334,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", - "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1200,6 +1354,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1212,6 +1367,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1224,6 +1380,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1236,6 +1393,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1248,6 +1406,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1260,6 +1419,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1272,6 +1432,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1284,6 +1445,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1296,6 +1458,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1311,6 +1474,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1326,6 +1490,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1338,12 +1503,13 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", - "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1353,15 +1519,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", - "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", + "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -1375,6 +1541,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", @@ -1388,12 +1555,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", - "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1403,12 +1571,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", - "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.5.tgz", + "integrity": "sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1418,13 +1587,14 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", - "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1434,14 +1604,14 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", - "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz", + "integrity": "sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^7.28.3", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1451,19 +1621,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.23.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", - "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz", + "integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-split-export-declaration": "^7.22.6", - "globals": "^11.1.0" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/traverse": "^7.28.4" }, "engines": { "node": ">=6.9.0" @@ -1472,14 +1641,28 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", - "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", + "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.15" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/template": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1489,26 +1672,29 @@ } }, "node_modules/@babel/plugin-transform-computed-properties/node_modules/@babel/template": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", - "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", - "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -1518,13 +1704,14 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", - "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", + "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1534,12 +1721,13 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", - "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1549,13 +1737,13 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", - "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1565,13 +1753,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", - "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.5.tgz", + "integrity": "sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1581,13 +1769,13 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", - "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1597,13 +1785,14 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", - "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1613,14 +1802,15 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", - "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1630,13 +1820,13 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", - "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", + "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1646,12 +1836,13 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", - "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1661,13 +1852,13 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", - "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.5.tgz", + "integrity": "sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1677,12 +1868,13 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", - "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1692,13 +1884,14 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", - "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1708,14 +1901,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", - "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1725,15 +1918,16 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz", - "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz", + "integrity": "sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -1743,13 +1937,14 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", - "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1759,13 +1954,14 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1775,12 +1971,13 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", - "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1790,13 +1987,13 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", - "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1806,13 +2003,13 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", - "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", + "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1822,16 +2019,17 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.0.tgz", - "integrity": "sha512-y/yKMm7buHpFFXfxVFS4Vk1ToRJDilIa6fKRioB9Vjichv58TDGXTvqV0dN7plobAmTW5eSEGXDngE+Mm+uO+w==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz", + "integrity": "sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.23.3" + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.4" }, "engines": { "node": ">=6.9.0" @@ -1841,13 +2039,14 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", - "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1857,13 +2056,13 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", - "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", + "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1873,14 +2072,14 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", - "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.5.tgz", + "integrity": "sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1890,12 +2089,13 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", - "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1905,13 +2105,14 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", - "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", + "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1921,15 +2122,15 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", - "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", + "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1938,13 +2139,27 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-private-property-in-object/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", - "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1954,13 +2169,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", - "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz", + "integrity": "sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "regenerator-transform": "^0.15.2" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1970,12 +2185,13 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", - "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1989,6 +2205,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.9.tgz", "integrity": "sha512-9KjBH61AGJetCPYp/IEyLEp47SyybZb0nDRpBvmtEkm+rUIwxdlKpyNHI1TmsGkeuLclJdleQHRZ8XLBnnh8CQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", @@ -2009,17 +2226,19 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", - "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2029,13 +2248,14 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", - "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", + "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2045,12 +2265,13 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", - "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2060,12 +2281,13 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", - "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2075,12 +2297,13 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", - "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2090,12 +2313,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", - "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2105,13 +2329,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", - "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", + "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2121,13 +2346,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", - "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2137,13 +2363,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", - "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", + "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2157,6 +2384,7 @@ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.9.tgz", "integrity": "sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.22.9", "@babel/helper-compilation-targets": "^7.22.9", @@ -2251,6 +2479,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -2260,6 +2489,7 @@ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", @@ -2271,17 +2501,12 @@ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true - }, "node_modules/@babel/runtime": { "version": "7.22.6", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==", "dev": true, + "license": "MIT", "dependencies": { "regenerator-runtime": "^0.13.11" }, @@ -2294,6 +2519,7 @@ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.22.5", "@babel/parser": "^7.22.5", @@ -2304,50 +2530,78 @@ } }, "node_modules/@babel/traverse": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", - "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.5", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/traverse/node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/@babel/types": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", - "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -2358,6 +2612,7 @@ "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.1.90" } @@ -2367,6 +2622,7 @@ "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" } @@ -2379,6 +2635,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -2395,6 +2652,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -2411,6 +2669,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -2427,6 +2686,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -2443,6 +2703,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -2459,6 +2720,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -2475,6 +2737,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -2491,6 +2754,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2507,6 +2771,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2523,6 +2788,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2539,6 +2805,7 @@ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2555,6 +2822,7 @@ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2571,6 +2839,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2587,6 +2856,7 @@ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2603,6 +2873,7 @@ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2619,6 +2890,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2635,6 +2907,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -2651,6 +2924,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -2667,6 +2941,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -2683,6 +2958,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -2699,6 +2975,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -2715,6 +2992,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -2727,13 +3005,15 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -2747,10 +3027,11 @@ } }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2759,10 +3040,11 @@ } }, "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2774,13 +3056,15 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -2794,10 +3078,11 @@ } }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -2813,6 +3098,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -2830,6 +3116,7 @@ "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, + "license": "ISC", "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -2846,22 +3133,20 @@ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { @@ -2869,56 +3154,53 @@ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", - "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", - "dev": true + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "dev": true, + "license": "MIT" }, "node_modules/@ngtools/webpack": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.2.12.tgz", - "integrity": "sha512-f9R9Qsk8v+ffDxryl6PQ7Wnf2JCNd4dDXOH+d/AuF06VFiwcwGDRDZpmqkAXbFxQfcWTbT1FFvfoJ+SFcJgXLA==", + "version": "16.2.16", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.2.16.tgz", + "integrity": "sha512-4gm2allK0Pjy/Lxb9IGRnhEZNEOJSOTWwy09VOdHouV2ODRK7Tto2LgteaFJUUSLkuvWRsI7pfuA6yrz8KDfHw==", "dev": true, + "license": "MIT", "engines": { "node": "^16.14.0 || >=18.10.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", @@ -2935,6 +3217,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -2948,6 +3231,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -2957,6 +3241,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -2966,10 +3251,11 @@ } }, "node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", "dev": true, + "license": "ISC", "dependencies": { "semver": "^7.3.5" }, @@ -2982,6 +3268,7 @@ "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.1.0.tgz", "integrity": "sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/promise-spawn": "^6.0.0", "lru-cache": "^7.4.4", @@ -3001,6 +3288,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -3010,6 +3298,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -3021,16 +3310,17 @@ } }, "node_modules/@npmcli/installed-package-contents": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", - "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz", + "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==", "dev": true, + "license": "ISC", "dependencies": { "npm-bundled": "^3.0.0", "npm-normalize-package-bin": "^3.0.0" }, "bin": { - "installed-package-contents": "lib/index.js" + "installed-package-contents": "bin/index.js" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -3042,6 +3332,7 @@ "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", "deprecated": "This functionality has been moved to @npmcli/fs", "dev": true, + "license": "MIT", "dependencies": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" @@ -3055,6 +3346,7 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, + "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -3067,6 +3359,7 @@ "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -3076,6 +3369,7 @@ "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", "dev": true, + "license": "ISC", "dependencies": { "which": "^3.0.0" }, @@ -3088,6 +3382,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -3103,6 +3398,7 @@ "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/node-gyp": "^3.0.0", "@npmcli/promise-spawn": "^6.0.0", @@ -3119,6 +3415,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -3134,19 +3431,21 @@ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=14" } }, "node_modules/@schematics/angular": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.2.12.tgz", - "integrity": "sha512-rc6Dxo7yLnNhECxZyvwv3qL40GvMHw/gMeme8DUGN7zgcUdBJ7LOCURp7EZqOBghMVeeJvLrohitEbs9NhRLBA==", + "version": "16.2.16", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.2.16.tgz", + "integrity": "sha512-V4cE4R5MbusKaNW9DWsisiSRUoQzbAaBIeJh42yCkg5H/lUdf18hUB7DG6Pl7yH6/tjzzz4SqIVD7N64uCDC2A==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/core": "16.2.12", - "@angular-devkit/schematics": "16.2.12", + "@angular-devkit/core": "16.2.16", + "@angular-devkit/schematics": "16.2.16", "jsonc-parser": "3.2.0" }, "engines": { @@ -3160,6 +3459,7 @@ "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz", "integrity": "sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@sigstore/protobuf-specs": "^0.2.0" }, @@ -3172,6 +3472,7 @@ "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz", "integrity": "sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -3181,6 +3482,7 @@ "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-1.0.0.tgz", "integrity": "sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@sigstore/bundle": "^1.1.0", "@sigstore/protobuf-specs": "^0.2.0", @@ -3195,6 +3497,7 @@ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10" } @@ -3204,6 +3507,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, + "license": "MIT", "dependencies": { "@tootallnate/once": "2", "agent-base": "6", @@ -3218,6 +3522,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -3227,6 +3532,7 @@ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", "dev": true, + "license": "ISC", "dependencies": { "agentkeepalive": "^4.2.1", "cacache": "^17.0.0", @@ -3249,10 +3555,11 @@ } }, "node_modules/@sigstore/sign/node_modules/minipass-fetch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", - "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", "dev": true, + "license": "MIT", "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", @@ -3266,10 +3573,11 @@ } }, "node_modules/@sigstore/sign/node_modules/minipass-fetch/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -3279,6 +3587,7 @@ "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz", "integrity": "sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@sigstore/protobuf-specs": "^0.2.0", "tuf-js": "^1.1.7" @@ -3288,16 +3597,18 @@ } }, "node_modules/@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", + "dev": true, + "license": "MIT" }, "node_modules/@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } @@ -3307,6 +3618,7 @@ "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz", "integrity": "sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==", "dev": true, + "license": "MIT", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -3316,6 +3628,7 @@ "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-1.0.4.tgz", "integrity": "sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==", "dev": true, + "license": "MIT", "dependencies": { "@tufjs/canonical-json": "1.0.0", "minimatch": "^9.0.0" @@ -3325,19 +3638,21 @@ } }, "node_modules/@tufjs/models/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/@tufjs/models/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -3349,10 +3664,11 @@ } }, "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", "dev": true, + "license": "MIT", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -3363,6 +3679,7 @@ "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -3372,6 +3689,7 @@ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -3381,69 +3699,61 @@ "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", "dev": true, + "license": "MIT", "dependencies": { "@types/express-serve-static-core": "*", "@types/node": "*" } }, - "node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, "node_modules/@types/cors": { - "version": "2.8.17", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", - "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "version": "2.8.19", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", + "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, - "node_modules/@types/eslint": { - "version": "8.56.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.5.tgz", - "integrity": "sha512-u5/YPJHo1tvkSF2CE0USEkxon82Z5DBy2xR+qfyYNszpX9qcs4sT6uq2kBbj4BXY1+DBGDPnrhMZV3pKWGNukw==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" }, "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", "dev": true, + "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", - "@types/serve-static": "*" + "@types/serve-static": "^1" } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.43", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz", - "integrity": "sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.0.tgz", + "integrity": "sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/express/node_modules/@types/express-serve-static-core": { + "version": "4.19.7", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz", + "integrity": "sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -3452,16 +3762,18 @@ } }, "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, + "license": "MIT" }, "node_modules/@types/http-proxy": { - "version": "1.17.14", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", - "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "version": "1.17.17", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz", + "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -3470,63 +3782,71 @@ "version": "4.3.6", "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.3.6.tgz", "integrity": "sha512-3N0FpQTeiWjm+Oo1WUYWguUS7E6JLceiGTriFrG8k5PU7zRLJCzLcWURU3wjMbZGS//a2/LgjsnO3QxIlwxt9g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { - "version": "20.11.25", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.25.tgz", - "integrity": "sha512-TBHyJxk2b7HceLVGFcpAUjsa5zIdsPWlR6XHfyGzd0SFu+/NFgQgMAl96MSDZgQDvJAvV6BKsFOrt6zIL09JDw==", + "version": "24.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", + "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", "dev": true, + "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~7.16.0" } }, "node_modules/@types/node-forge": { - "version": "1.3.11", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", - "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz", + "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/qs": { - "version": "6.9.12", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.12.tgz", - "integrity": "sha512-bZcOkJ6uWrL0Qb2NAWKa7TBU+mJHPzhx9jjLL1KHF+XpzEcR7EXHvjbHlGtR/IsP1vyPrehuS6XqkmaePy//mg==", - "dev": true + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "dev": true, + "license": "MIT" }, "node_modules/@types/range-parser": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", "dev": true, + "license": "MIT", "dependencies": { - "@types/mime": "^1", "@types/node": "*" } }, @@ -3535,18 +3855,31 @@ "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", "dev": true, + "license": "MIT", "dependencies": { "@types/express": "*" } }, "node_modules/@types/serve-static": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", - "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", "dev": true, + "license": "MIT", "dependencies": { "@types/http-errors": "*", - "@types/mime": "*", + "@types/node": "*", + "@types/send": "<1" + } + }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "^1", "@types/node": "*" } }, @@ -3555,15 +3888,17 @@ "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/ws": { - "version": "8.5.10", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", - "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -3573,6 +3908,7 @@ "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.0.1.tgz", "integrity": "sha512-pcub+YbFtFhaGRTo1832FQHQSHvMrlb43974e2eS8EKleR3p1cDdkJFPci1UhwkEf1J9Bz+wKBSzqpKp7nNj2A==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.6.0" }, @@ -3581,148 +3917,163 @@ } }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", - "dev": true + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "dev": true, + "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" } }, @@ -3732,6 +4083,7 @@ "integrity": "sha512-7gOpVm3yYojUp/Yn7F4ZybJRxyqfMNf0LXK5KJiawbPfL0XTsJV+0mgrEDjOIR6Bi0OYk2Cyg4tjFu1r8MCZaA==", "deprecated": "this package has been renamed to ts-evaluator. Please install ts-evaluator instead", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "jsdom": "^16.4.0", @@ -3749,120 +4101,48 @@ "typescript": ">=3.2.x || >= 4.x" } }, - "node_modules/@wessberg/ts-evaluator/node_modules/ansi-styles": { - "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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@wessberg/ts-evaluator/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@wessberg/ts-evaluator/node_modules/color-convert": { - "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" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@wessberg/ts-evaluator/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 - }, - "node_modules/@wessberg/ts-evaluator/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@wessberg/ts-evaluator/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@xmldom/xmldom": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.7.tgz", - "integrity": "sha512-sI1Ly2cODlWStkINzqGrZ8K6n+MTSbAeQnAipGyL+KZCXuHaRlj2gyyy8B/9MvsFFqN7XHryQnB2QwhzvJXovg==", - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/@yarnpkg/lockfile": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", "deprecated": "Use your platform's native atob() and btoa() methods instead", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -3871,11 +4151,22 @@ "node": ">= 0.6" } }, + "node_modules/accepts/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -3888,6 +4179,7 @@ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", "dev": true, + "license": "MIT", "dependencies": { "acorn": "^7.1.1", "acorn-walk": "^7.1.1" @@ -3898,6 +4190,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -3905,11 +4198,12 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^8" } @@ -3919,6 +4213,7 @@ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -3928,6 +4223,7 @@ "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", "dev": true, + "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", "regex-parser": "^2.2.11" @@ -3941,6 +4237,7 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, + "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -3955,6 +4252,7 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "4" }, @@ -3963,10 +4261,11 @@ } }, "node_modules/agentkeepalive": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", - "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", + "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", "dev": true, + "license": "MIT", "dependencies": { "humanize-ms": "^1.2.1" }, @@ -3979,6 +4278,7 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -3992,6 +4292,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -4008,6 +4309,7 @@ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -4025,6 +4327,7 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -4037,6 +4340,7 @@ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -4046,6 +4350,7 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -4064,6 +4369,7 @@ "engines": [ "node >= 0.8.0" ], + "license": "Apache-2.0", "bin": { "ansi-html": "bin/ansi-html" } @@ -4073,20 +4379,25 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/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==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/anymatch": { @@ -4094,6 +4405,7 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -4103,16 +4415,19 @@ } }, "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.1.0.tgz", + "integrity": "sha512-tLIEcj5GuR2RSTnxNKdkK0dJ/GrC7P38sUkiDmDuHfsHmbagTFAxDVIBltoklXEVIQ/f14IL8IMJ5pn9Hez1Ew==", + "dev": true, + "license": "ISC" }, "node_modules/are-we-there-yet": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "deprecated": "This package is no longer supported.", "dev": true, + "license": "ISC", "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -4126,6 +4441,7 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, + "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } @@ -4134,13 +4450,15 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/autoprefixer": { "version": "10.4.14", @@ -4157,6 +4475,7 @@ "url": "https://tidelift.com/funding/github/npm/autoprefixer" } ], + "license": "MIT", "dependencies": { "browserslist": "^4.21.5", "caniuse-lite": "^1.0.30001464", @@ -4180,6 +4499,7 @@ "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", "dev": true, + "license": "MIT", "dependencies": { "find-cache-dir": "^4.0.0", "schema-utils": "^4.0.0" @@ -4197,6 +4517,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", @@ -4209,13 +4530,14 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.9.tgz", - "integrity": "sha512-BXIWIaO3MewbXWdJdIGDWZurv5OGJlFNo7oy20DpB3kWDVJLcY2NRypRsRUbRe5KMqSNLuOGnWTFQQtY5MAsRw==", + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", + "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.0", + "@babel/compat-data": "^7.27.7", + "@babel/helper-define-polyfill-provider": "^0.6.5", "semver": "^6.3.1" }, "peerDependencies": { @@ -4227,6 +4549,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -4236,6 +4559,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz", "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.4.4", "core-js-compat": "^3.33.1" @@ -4249,6 +4573,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz", "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -4265,6 +4590,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.5.0" }, @@ -4277,6 +4603,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -4292,7 +4619,8 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/base64-js": { "version": "1.5.1", @@ -4312,39 +4640,57 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/base64id": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true, + "license": "MIT", "engines": { "node": "^4.5.0 || >= 5.9" } }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.31", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.31.tgz", + "integrity": "sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/bl": { @@ -4352,6 +4698,7 @@ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, + "license": "MIT", "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -4359,10 +4706,11 @@ } }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -4372,7 +4720,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -4387,6 +4735,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -4395,13 +4744,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/bonjour-service": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", - "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", + "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" @@ -4411,25 +4762,28 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -4439,12 +4793,13 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", + "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", "dev": true, "funding": [ { @@ -4460,11 +4815,13 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "baseline-browser-mapping": "^2.8.25", + "caniuse-lite": "^1.0.30001754", + "electron-to-chromium": "^1.5.249", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.1.4" }, "bin": { "browserslist": "cli.js" @@ -4492,6 +4849,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -4501,22 +4859,15 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", "dev": true, - "dependencies": { - "semver": "^7.0.0" - } + "license": "MIT" }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -4526,6 +4877,7 @@ "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", @@ -4545,32 +4897,32 @@ } }, "node_modules/cacache/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/cacache/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -4580,15 +4932,17 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/cacache/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -4600,25 +4954,38 @@ } }, "node_modules/cacache/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, + "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0", "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -4632,6 +4999,7 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -4641,14 +5009,15 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001596", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001596.tgz", - "integrity": "sha512-zpkZ+kEr6We7w63ORkoJ2pOfBwBkY/bJrG/UZ90qNb45Isblu8wzDgevEOrRL1r9dWayHjYiiyCMEXPn4DweGQ==", + "version": "1.0.30001757", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001757.tgz", + "integrity": "sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==", "dev": true, "funding": [ { @@ -4663,27 +5032,32 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/chokidar": { "version": "3.5.3", @@ -4696,6 +5070,7 @@ "url": "https://paulmillr.com/funding/" } ], + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -4717,15 +5092,17 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0" } @@ -4735,6 +5112,7 @@ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -4744,6 +5122,7 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, + "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" }, @@ -4756,6 +5135,7 @@ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -4768,6 +5148,7 @@ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true, + "license": "ISC", "engines": { "node": ">= 10" } @@ -4777,6 +5158,7 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -4791,6 +5173,7 @@ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8" } @@ -4800,6 +5183,7 @@ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, + "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -4810,25 +5194,31 @@ } }, "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "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, + "license": "MIT", "dependencies": { - "color-name": "1.1.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, "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 + "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, + "license": "MIT" }, "node_modules/color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true, + "license": "ISC", "bin": { "color-support": "bin.js" } @@ -4837,13 +5227,15 @@ "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -4855,19 +5247,22 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/common-path-prefix": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -4876,37 +5271,30 @@ } }, "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", "dev": true, + "license": "MIT", "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", + "bytes": "3.1.2", + "compressible": "~2.0.18", "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", "vary": "~1.1.2" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/compression/node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/compression/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -4915,25 +5303,22 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/compression/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/connect": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "finalhandler": "1.1.2", @@ -4949,6 +5334,7 @@ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8" } @@ -4958,6 +5344,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -4966,19 +5353,22 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" }, @@ -4991,6 +5381,7 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -4999,13 +5390,15 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5014,13 +5407,15 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/copy-anything": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", "dev": true, + "license": "MIT", "dependencies": { "is-what": "^3.14.1" }, @@ -5033,6 +5428,7 @@ "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", "dev": true, + "license": "MIT", "dependencies": { "fast-glob": "^3.2.11", "glob-parent": "^6.0.1", @@ -5057,6 +5453,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -5065,12 +5462,13 @@ } }, "node_modules/core-js-compat": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.0.tgz", - "integrity": "sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==", + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.47.0.tgz", + "integrity": "sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==", "dev": true, + "license": "MIT", "dependencies": { - "browserslist": "^4.22.3" + "browserslist": "^4.28.0" }, "funding": { "type": "opencollective", @@ -5081,13 +5479,15 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dev": true, + "license": "MIT", "dependencies": { "object-assign": "^4", "vary": "^1" @@ -5101,6 +5501,7 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dev": true, + "license": "MIT", "dependencies": { "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", @@ -5126,13 +5527,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/cosmiconfig/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -5145,6 +5548,7 @@ "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.20.tgz", "integrity": "sha512-CImNRorKOl5d8TWcnAz5n5izQ6HFsvz29k327/ELy6UFcmbiZNOsinaKvzv16WZR0P6etfSWYzE47C4/56B3Uw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "chalk": "^4.1.0", "css-select": "^5.1.0", @@ -5155,118 +5559,43 @@ "pretty-bytes": "^5.3.0" } }, - "node_modules/critters/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 8" } }, - "node_modules/critters/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "isexe": "^2.0.0" }, - "engines": { - "node": ">=10" + "bin": { + "node-which": "bin/node-which" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "engines": { + "node": ">= 8" } }, - "node_modules/critters/node_modules/color-convert": { - "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" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/critters/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 - }, - "node_modules/critters/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/critters/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dependencies": { - "node-fetch": "2.6.7" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-loader": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", - "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "node_modules/css-loader": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", "dev": true, + "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.21", @@ -5289,10 +5618,11 @@ } }, "node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", @@ -5305,10 +5635,11 @@ } }, "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">= 6" }, @@ -5321,6 +5652,7 @@ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, + "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -5332,13 +5664,15 @@ "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cssstyle": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "dev": true, + "license": "MIT", "dependencies": { "cssom": "~0.3.6" }, @@ -5350,19 +5684,22 @@ "version": "0.3.8", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/data-urls": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", "dev": true, + "license": "MIT", "dependencies": { "abab": "^2.0.3", "whatwg-mimetype": "^2.3.0", @@ -5377,17 +5714,19 @@ "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.0" } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -5399,16 +5738,18 @@ } }, "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", + "dev": true, + "license": "MIT" }, "node_modules/default-gateway": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "execa": "^5.0.0" }, @@ -5421,6 +5762,7 @@ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, + "license": "MIT", "dependencies": { "clone": "^1.0.2" }, @@ -5428,28 +5770,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -5459,6 +5785,7 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -5467,13 +5794,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -5483,6 +5812,7 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -5492,19 +5822,22 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/di": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, + "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -5517,6 +5850,7 @@ "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dev": true, + "license": "MIT", "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" }, @@ -5529,6 +5863,7 @@ "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", "dev": true, + "license": "MIT", "dependencies": { "custom-event": "~1.0.0", "ent": "~2.2.0", @@ -5541,6 +5876,7 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", @@ -5560,7 +5896,8 @@ "type": "github", "url": "https://github.com/sponsors/fb55" } - ] + ], + "license": "BSD-2-Clause" }, "node_modules/domexception": { "version": "2.0.1", @@ -5568,6 +5905,7 @@ "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", "deprecated": "Use your platform's native DOMException instead", "dev": true, + "license": "MIT", "dependencies": { "webidl-conversions": "^5.0.0" }, @@ -5580,6 +5918,7 @@ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=8" } @@ -5589,6 +5928,7 @@ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.3.0" }, @@ -5600,10 +5940,11 @@ } }, "node_modules/domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", @@ -5613,43 +5954,55 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.4.699", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.699.tgz", - "integrity": "sha512-I7q3BbQi6e4tJJN5CRcyvxhK0iJb34TV8eJQcgh+fR2fQ8miMgZcEInckCo1U9exDHbfz7DLDnFn8oqH/VcRKw==", - "dev": true - }, - "node_modules/emitter-component": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/emitter-component/-/emitter-component-1.1.2.tgz", - "integrity": "sha512-QdXO3nXOzZB4pAjM0n6ZE+R9/+kPpECA/XSELIcc54NeYVnBqIk+4DFiBgK+8QbV3mdvTG6nedl7dTYgO+5wDw==", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "version": "1.5.260", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.260.tgz", + "integrity": "sha512-ov8rBoOBhVawpzdre+Cmz4FB+y66Eqrk6Gwqd8NGxuhv99GQ8XqMAr351KEkOt7gukXWDg6gJWEMKgL2RLMPtA==", + "dev": true, + "license": "ISC" }, "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 + "dev": true, + "license": "MIT" }, "node_modules/emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -5659,6 +6012,7 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -5667,6 +6021,8 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "license": "MIT", "optional": true, "dependencies": { "iconv-lite": "^0.6.2" @@ -5676,6 +6032,8 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -5685,46 +6043,66 @@ } }, "node_modules/engine.io": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz", - "integrity": "sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==", + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.4.tgz", + "integrity": "sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==", "dev": true, + "license": "MIT", "dependencies": { - "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "2.0.0", - "cookie": "~0.4.1", + "cookie": "~0.7.2", "cors": "~2.8.5", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", - "ws": "~8.11.0" + "ws": "~8.17.1" }, "engines": { "node": ">=10.2.0" } }, "node_modules/engine.io-parser": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", - "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" } }, + "node_modules/engine.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/engine.io/node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -5736,10 +6114,11 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.1.tgz", - "integrity": "sha512-3d3JRbwsCLJsYgvb6NuWEG44jjPSOMuS73L/6+7BZuoKm3W+qXnSoIYVHi8dG7Qcg4inAY4jbzkZ7MnskePeDg==", + "version": "5.18.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", + "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -5749,16 +6128,27 @@ } }, "node_modules/ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", - "dev": true + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.2.tgz", + "integrity": "sha512-kKvD1tO6BM+oK9HzCPpUdRb4vKFQY/FPTFmurMvh6LlN68VMrdj77w8yp51/kDbpkFOS9J8w5W6zIzgM2H8/hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "punycode": "^1.4.1", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -5771,6 +6161,7 @@ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -5779,13 +6170,15 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/errno": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "prr": "~1.0.1" @@ -5795,22 +6188,21 @@ } }, "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -5820,15 +6212,46 @@ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/es-module-lexer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", - "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", - "dev": true + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/esbuild": { "version": "0.18.17", @@ -5836,6 +6259,7 @@ "integrity": "sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -5872,6 +6296,7 @@ "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.18.17.tgz", "integrity": "sha512-9OHGcuRzy+I8ziF9FzjfKLWAPbvi0e/metACVg9k6bK+SI4FFxeV6PcZsz8RIVaMD4YNehw+qj6UMR3+qj/EuQ==", "dev": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -5880,10 +6305,11 @@ } }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -5892,13 +6318,15 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/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, + "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -5908,6 +6336,7 @@ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", @@ -5929,6 +6358,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "optional": true, "engines": { "node": ">=0.10.0" @@ -5939,6 +6369,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -5952,6 +6383,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -5961,6 +6393,7 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -5974,6 +6407,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -5986,6 +6420,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -5995,6 +6430,7 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -6004,6 +6440,7 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6012,19 +6449,22 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.x" } @@ -6034,6 +6474,7 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -6053,43 +6494,45 @@ } }, "node_modules/exponential-backoff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", - "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", - "dev": true + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", + "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/express": { - "version": "4.18.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.3.tgz", - "integrity": "sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.12", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -6098,13 +6541,18 @@ }, "engines": { "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/express/node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6114,18 +6562,30 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, + "node_modules/express/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/express/node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -6140,13 +6600,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/express/node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -6155,13 +6617,15 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, + "license": "MIT", "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -6175,13 +6639,15 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -6197,13 +6663,15 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -6213,6 +6681,7 @@ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "websocket-driver": ">=0.5.1" }, @@ -6225,6 +6694,7 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -6236,10 +6706,11 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -6252,6 +6723,7 @@ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -6270,6 +6742,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -6278,13 +6751,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/finalhandler/node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", "dev": true, + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -6297,6 +6772,7 @@ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", "dev": true, + "license": "MIT", "dependencies": { "common-path-prefix": "^3.0.0", "pkg-dir": "^7.0.0" @@ -6313,6 +6789,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -6322,15 +6799,16 @@ } }, "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "dev": true, "funding": [ { @@ -6338,6 +6816,7 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -6348,12 +6827,13 @@ } }, "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, + "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "engines": { @@ -6368,6 +6848,7 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -6376,14 +6857,17 @@ } }, "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.4.tgz", + "integrity": "sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ==", "dev": true, + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.35" }, "engines": { "node": ">= 6" @@ -6394,6 +6878,7 @@ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6403,6 +6888,7 @@ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "dev": true, + "license": "MIT", "engines": { "node": "*" }, @@ -6416,6 +6902,7 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6425,6 +6912,7 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -6439,6 +6927,7 @@ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, @@ -6447,25 +6936,28 @@ } }, "node_modules/fs-minipass/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/fs-monkey": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", - "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", - "dev": true + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", + "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", + "dev": true, + "license": "Unlicense" }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", @@ -6473,6 +6965,7 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -6486,6 +6979,7 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6494,7 +6988,9 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "deprecated": "This package is no longer supported.", "dev": true, + "license": "ISC", "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.3", @@ -6514,6 +7010,7 @@ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -6523,21 +7020,28 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, + "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -6551,15 +7055,31 @@ "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.0.0" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -6571,7 +7091,9 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -6592,6 +7114,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -6603,22 +7126,15 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/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, - "engines": { - "node": ">=4" - } + "license": "BSD-2-Clause" }, "node_modules/globby": { "version": "13.2.2", "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", "dev": true, + "license": "MIT", "dependencies": { "dir-glob": "^3.0.1", "fast-glob": "^3.3.0", @@ -6634,12 +7150,13 @@ } }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6649,13 +7166,15 @@ "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/guess-parser": { "version": "0.4.22", "resolved": "https://registry.npmjs.org/guess-parser/-/guess-parser-0.4.22.tgz", "integrity": "sha512-KcUWZ5ACGaBM69SbqwVIuWGoSAgD+9iJnchR9j/IarVI1jHVeXv+bUXBIMeqVMSKt3zrn0Dgf9UpcOEpPBLbSg==", "dev": true, + "license": "MIT", "dependencies": { "@wessberg/ts-evaluator": "0.0.27" }, @@ -6667,34 +7186,25 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/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==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6702,11 +7212,15 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, "engines": { "node": ">= 0.4" }, @@ -6718,13 +7232,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/hasown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", - "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -6737,6 +7253,7 @@ "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", "dev": true, + "license": "BSD", "dependencies": { "@assemblyscript/loader": "^0.10.1", "base64-js": "^1.2.0", @@ -6747,13 +7264,15 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz", + "integrity": "sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -6766,6 +7285,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -6775,6 +7295,7 @@ "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "obuf": "^1.0.0", @@ -6787,6 +7308,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -6801,13 +7323,15 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/hpack.js/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } @@ -6817,6 +7341,7 @@ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", "dev": true, + "license": "MIT", "dependencies": { "whatwg-encoding": "^1.0.5" }, @@ -6825,9 +7350,9 @@ } }, "node_modules/html-entities": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", - "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", "dev": true, "funding": [ { @@ -6838,13 +7363,15 @@ "type": "patreon", "url": "https://patreon.com/mdevils" } - ] + ], + "license": "MIT" }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/htmlparser2": { "version": "8.0.2", @@ -6858,6 +7385,7 @@ "url": "https://github.com/sponsors/fb55" } ], + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", @@ -6866,22 +7394,25 @@ } }, "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, + "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -6898,21 +7429,24 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", + "dev": true, + "license": "MIT" }, "node_modules/http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, + "license": "MIT", "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -6927,6 +7461,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, + "license": "MIT", "dependencies": { "@tootallnate/once": "1", "agent-base": "6", @@ -6937,10 +7472,11 @@ } }, "node_modules/http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", + "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", @@ -6965,6 +7501,7 @@ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -6978,6 +7515,7 @@ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } @@ -6987,6 +7525,7 @@ "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.0.0" } @@ -6996,6 +7535,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -7008,6 +7548,7 @@ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, + "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -7033,22 +7574,25 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/ignore-walk": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.4.tgz", - "integrity": "sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", + "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", "dev": true, + "license": "ISC", "dependencies": { "minimatch": "^9.0.0" }, @@ -7057,19 +7601,21 @@ } }, "node_modules/ignore-walk/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/ignore-walk/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -7085,6 +7631,7 @@ "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", "dev": true, + "license": "MIT", "optional": true, "bin": { "image-size": "bin/image-size.js" @@ -7094,16 +7641,18 @@ } }, "node_modules/immutable": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", - "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", - "dev": true + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "dev": true, + "license": "MIT" }, "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -7120,6 +7669,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -7129,6 +7679,7 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -7138,6 +7689,7 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7146,153 +7698,81 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ini": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", - "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/inquirer": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", - "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/inquirer/node_modules/ansi-styles": { - "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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, + "license": "ISC", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/inquirer/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 + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" }, - "node_modules/inquirer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", "dev": true, + "license": "ISC", "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/inquirer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=12.0.0" } }, "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", "dev": true, - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, + "license": "MIT", "engines": { "node": ">= 12" } }, - "node_modules/ip-address/node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "dev": true - }, "node_modules/ipaddr.js": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", - "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10" } @@ -7301,13 +7781,15 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-binary-path": { "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, + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -7316,12 +7798,16 @@ } }, "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, + "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7332,6 +7818,7 @@ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, + "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -7347,6 +7834,7 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7356,6 +7844,7 @@ "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, + "license": "MIT", "engines": { "node": ">=8" } @@ -7365,6 +7854,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -7377,6 +7867,7 @@ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7385,13 +7876,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/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, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -7401,6 +7894,7 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -7413,6 +7907,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, + "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -7424,13 +7919,34 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -7443,6 +7959,7 @@ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -7454,13 +7971,15 @@ "version": "3.14.1", "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, + "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -7472,13 +7991,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/isbinaryfile": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8.0.0" }, @@ -7490,13 +8011,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7506,6 +8029,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=8" } @@ -7515,6 +8039,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", @@ -7531,6 +8056,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -7540,6 +8066,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", @@ -7549,32 +8076,12 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", @@ -7589,15 +8096,17 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -7607,16 +8116,14 @@ } }, "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">=14" - }, "funding": { "url": "https://github.com/sponsors/isaacs" }, @@ -7625,16 +8132,18 @@ } }, "node_modules/jasmine-core": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.6.0.tgz", - "integrity": "sha512-O236+gd0ZXS8YAjFx8xKaJ94/erqUliEkJTDedyE7iHvv4ZVqi+q+8acJxu05/WJDKm512EUNn809In37nWlAQ==", - "dev": true + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.6.1.tgz", + "integrity": "sha512-VYz/BjjmC3klLJlLwA4Kw8ytk0zDSmbbDLNs794VnWmkcCB7I9aAL/D48VNQtmITyPvea2C3jdUMfc3kAoy0PQ==", + "dev": true, + "license": "MIT" }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -7644,20 +8153,12 @@ "node": ">= 10.13.0" } }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -7669,10 +8170,11 @@ } }, "node_modules/jiti": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", - "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "dev": true, + "license": "MIT", "bin": { "jiti": "bin/jiti.js" } @@ -7681,13 +8183,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -7696,17 +8200,12 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "dev": true - }, "node_modules/jsdom": { "version": "16.7.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", "dev": true, + "license": "MIT", "dependencies": { "abab": "^2.0.5", "acorn": "^8.2.4", @@ -7753,6 +8252,7 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -7764,19 +8264,22 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -7788,13 +8291,15 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, + "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -7806,13 +8311,15 @@ "dev": true, "engines": [ "node >= 0.2.0" - ] + ], + "license": "MIT" }, "node_modules/karma": { - "version": "6.4.3", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.3.tgz", - "integrity": "sha512-LuucC/RE92tJ8mlCwqEoRWXP38UMAqpnq98vktmS9SznSoUPPUJQbc91dHcxcunROvfQjdORVA/YFviH+Xci9Q==", + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.4.tgz", + "integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==", "dev": true, + "license": "MIT", "dependencies": { "@colors/colors": "1.5.0", "body-parser": "^1.19.0", @@ -7851,6 +8358,7 @@ "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz", "integrity": "sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==", "dev": true, + "license": "MIT", "dependencies": { "which": "^1.2.1" } @@ -7860,6 +8368,7 @@ "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.1.tgz", "integrity": "sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A==", "dev": true, + "license": "MIT", "dependencies": { "istanbul-lib-coverage": "^3.2.0", "istanbul-lib-instrument": "^5.1.0", @@ -7877,6 +8386,7 @@ "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", "dev": true, + "license": "MIT", "dependencies": { "jasmine-core": "^4.1.0" }, @@ -7892,6 +8402,7 @@ "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.1.0.tgz", "integrity": "sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==", "dev": true, + "license": "MIT", "peerDependencies": { "jasmine-core": "^4.0.0 || ^5.0.0", "karma": "^6.0.0", @@ -7903,6 +8414,7 @@ "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", "dev": true, + "license": "MIT", "dependencies": { "source-map-support": "^0.5.5" } @@ -7912,6 +8424,7 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -7923,15 +8436,17 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/karma/node_modules/tmp": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", - "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", + "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.14" } @@ -7941,6 +8456,7 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -7959,6 +8475,7 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } @@ -7968,6 +8485,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7977,18 +8495,20 @@ "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/launch-editor": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", - "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz", + "integrity": "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==", "dev": true, + "license": "MIT", "dependencies": { - "picocolors": "^1.0.0", - "shell-quote": "^1.8.1" + "picocolors": "^1.1.1", + "shell-quote": "^1.8.3" } }, "node_modules/less": { @@ -7996,6 +8516,7 @@ "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "copy-anything": "^2.0.1", "parse-node-version": "^1.0.1", @@ -8022,6 +8543,7 @@ "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", "dev": true, + "license": "MIT", "dependencies": { "klona": "^2.0.4" }, @@ -8042,6 +8564,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "pify": "^4.0.1", @@ -8056,6 +8579,7 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, + "license": "MIT", "optional": true, "bin": { "mime": "cli.js" @@ -8069,6 +8593,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "optional": true, "bin": { "semver": "bin/semver" @@ -8079,6 +8604,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "optional": true, "engines": { "node": ">=0.10.0" @@ -8089,6 +8615,7 @@ "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", "dev": true, + "license": "ISC", "dependencies": { "webpack-sources": "^3.0.0" }, @@ -8105,15 +8632,21 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/loader-utils": { @@ -8121,6 +8654,7 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12.13.0" } @@ -8130,6 +8664,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -8141,19 +8676,22 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -8165,81 +8703,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "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" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/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 - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/log4js": { "version": "6.9.1", "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "date-format": "^4.0.14", "debug": "^4.3.4", @@ -8256,6 +8725,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^3.0.2" } @@ -8265,6 +8735,7 @@ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz", "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" }, @@ -8277,6 +8748,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.5.3" }, @@ -8292,6 +8764,7 @@ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "dev": true, + "license": "ISC", "dependencies": { "agentkeepalive": "^4.2.1", "cacache": "^16.1.0", @@ -8319,6 +8792,7 @@ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "dev": true, + "license": "ISC", "dependencies": { "@gar/promisify": "^1.1.3", "semver": "^7.3.5" @@ -8332,15 +8806,17 @@ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/make-fetch-happen/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -8350,6 +8826,7 @@ "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/fs": "^2.1.0", "@npmcli/move-file": "^2.0.0", @@ -8379,6 +8856,7 @@ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -8390,7 +8868,9 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -8410,6 +8890,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, + "license": "MIT", "dependencies": { "@tootallnate/once": "2", "agent-base": "6", @@ -8424,6 +8905,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -8433,6 +8915,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -8445,6 +8928,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -8457,6 +8941,7 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, + "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -8469,6 +8954,7 @@ "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.1.1" }, @@ -8481,6 +8967,7 @@ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", "dev": true, + "license": "ISC", "dependencies": { "unique-slug": "^3.0.0" }, @@ -8493,6 +8980,7 @@ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", "dev": true, + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" }, @@ -8504,13 +8992,25 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -8520,6 +9020,7 @@ "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dev": true, + "license": "Unlicense", "dependencies": { "fs-monkey": "^1.0.4" }, @@ -8528,22 +9029,28 @@ } }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -8553,17 +9060,19 @@ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -8575,6 +9084,7 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true, + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -8587,6 +9097,7 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -8596,6 +9107,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -8608,6 +9120,7 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -8617,6 +9130,7 @@ "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", "dev": true, + "license": "MIT", "dependencies": { "schema-utils": "^4.0.0" }, @@ -8635,13 +9149,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -8654,6 +9170,7 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -8663,6 +9180,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=8" } @@ -8672,6 +9190,7 @@ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -8684,6 +9203,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -8695,13 +9215,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minipass-fetch": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dev": true, + "license": "MIT", "dependencies": { "minipass": "^3.1.6", "minipass-sized": "^1.0.3", @@ -8719,6 +9241,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -8730,13 +9253,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minipass-flush": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -8749,6 +9274,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -8760,13 +9286,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minipass-json-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.2.tgz", + "integrity": "sha512-myxeeTm57lYs8pH2nxPzmEEg8DGIgW+9mv6D4JZD2pa81I/OBjeU7PtICXV6c9eRGTA5JMDsuIPUZRCyBMYNhg==", "dev": true, + "license": "MIT", "dependencies": { "jsonparse": "^1.3.1", "minipass": "^3.0.0" @@ -8777,6 +9305,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -8788,13 +9317,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minipass-pipeline": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -8807,6 +9338,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -8818,13 +9350,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minipass-sized": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -8837,6 +9371,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -8848,13 +9383,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, + "license": "MIT", "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -8868,6 +9405,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -8879,13 +9417,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.6" }, @@ -8898,21 +9438,24 @@ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } }, "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 + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, "node_modules/multicast-dns": { "version": "7.2.5", "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, + "license": "MIT", "dependencies": { "dns-packet": "^5.2.2", "thunky": "^1.0.2" @@ -8925,12 +9468,13 @@ "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -8938,6 +9482,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -8950,6 +9495,7 @@ "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "iconv-lite": "^0.6.3", @@ -8967,6 +9513,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -8976,10 +9523,11 @@ } }, "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -8988,7 +9536,8 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nice-napi": { "version": "1.0.2", @@ -8996,6 +9545,7 @@ "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "!win32" @@ -9010,51 +9560,15 @@ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", "dev": true, + "license": "MIT", "optional": true }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.2.tgz", + "integrity": "sha512-6xKiQ+cph9KImrRh0VsjH2d8/GXA4FIMlgU4B757iI1ApvcyA9VlouP0yZJha01V+huImO+kKMU7ih+2+E14fw==", "dev": true, + "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" } @@ -9064,6 +9578,7 @@ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", "dev": true, + "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", @@ -9085,10 +9600,11 @@ } }, "node_modules/node-gyp-build": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", - "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", "dev": true, + "license": "MIT", "optional": true, "bin": { "node-gyp-build": "bin.js", @@ -9101,6 +9617,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -9112,16 +9629,18 @@ } }, "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true, + "license": "MIT" }, "node_modules/nopt": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", "dev": true, + "license": "ISC", "dependencies": { "abbrev": "^1.0.0" }, @@ -9137,6 +9656,7 @@ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^6.0.0", "is-core-module": "^2.8.1", @@ -9152,6 +9672,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9161,15 +9682,17 @@ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/npm-bundled": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", - "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz", + "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==", "dev": true, + "license": "ISC", "dependencies": { "npm-normalize-package-bin": "^3.0.0" }, @@ -9182,6 +9705,7 @@ "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "semver": "^7.1.1" }, @@ -9194,6 +9718,7 @@ "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -9203,6 +9728,7 @@ "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", "dev": true, + "license": "ISC", "dependencies": { "hosted-git-info": "^6.0.0", "proc-log": "^3.0.0", @@ -9218,6 +9744,7 @@ "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", "dev": true, + "license": "ISC", "dependencies": { "ignore-walk": "^6.0.0" }, @@ -9230,6 +9757,7 @@ "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz", "integrity": "sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==", "dev": true, + "license": "ISC", "dependencies": { "npm-install-checks": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", @@ -9245,6 +9773,7 @@ "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", "dev": true, + "license": "ISC", "dependencies": { "make-fetch-happen": "^11.0.0", "minipass": "^5.0.0", @@ -9263,6 +9792,7 @@ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10" } @@ -9272,6 +9802,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, + "license": "MIT", "dependencies": { "@tootallnate/once": "2", "agent-base": "6", @@ -9286,6 +9817,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -9295,6 +9827,7 @@ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", "dev": true, + "license": "ISC", "dependencies": { "agentkeepalive": "^4.2.1", "cacache": "^17.0.0", @@ -9317,10 +9850,11 @@ } }, "node_modules/npm-registry-fetch/node_modules/minipass-fetch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", - "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", "dev": true, + "license": "MIT", "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", @@ -9334,10 +9868,11 @@ } }, "node_modules/npm-registry-fetch/node_modules/minipass-fetch/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -9347,6 +9882,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -9358,7 +9894,9 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "deprecated": "This package is no longer supported.", "dev": true, + "license": "ISC", "dependencies": { "are-we-there-yet": "^3.0.0", "console-control-strings": "^1.1.0", @@ -9374,6 +9912,7 @@ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, @@ -9382,25 +9921,31 @@ } }, "node_modules/nwsapi": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", - "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", - "dev": true + "version": "2.2.22", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.22.tgz", + "integrity": "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==", + "dev": true, + "license": "MIT" }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -9410,6 +9955,7 @@ "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.8.tgz", "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10.12.0" } @@ -9418,25 +9964,25 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ojp-sdk": { - "version": "0.9.30", - "resolved": "https://registry.npmjs.org/ojp-sdk/-/ojp-sdk-0.9.30.tgz", - "integrity": "sha512-zNzTvsFfi/VXccWs8gi90PiVOj+w+0n9hTIiqoRu89QYqFisRH+8hK09oZbI2ySvaRSkABLJNneQ6jtRBxSPvA==", - "dependencies": { - "@xmldom/xmldom": "0.8.7", - "cross-fetch": "3.1.5", - "sax": "1.3.0", - "stream": "0.0.2", - "xmlbuilder": "15.1.1" - } + "resolved": "../..", + "link": true + }, + "node_modules/ojp-shared-types": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ojp-shared-types/-/ojp-shared-types-0.1.1.tgz", + "integrity": "sha512-8pxbabcEAUrDrOvhD2aVZdlCM9whTZmqsvHHN+Wsa7ks54/GdLsnfrCfwUXVug/UJ311gd1KOhZcG/6gvDkZzQ==", + "license": "MIT" }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -9445,10 +9991,11 @@ } }, "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -9458,6 +10005,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, + "license": "ISC", "dependencies": { "wrappy": "1" } @@ -9467,6 +10015,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -9482,6 +10031,7 @@ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, + "license": "MIT", "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -9499,6 +10049,7 @@ "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, + "license": "MIT", "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", @@ -9517,81 +10068,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ora/node_modules/ansi-styles": { - "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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ora/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ora/node_modules/color-convert": { - "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" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/ora/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 - }, - "node_modules/ora/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9601,6 +10083,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -9616,6 +10099,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -9628,6 +10112,7 @@ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, + "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -9643,6 +10128,7 @@ "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/retry": "0.12.0", "retry": "^0.13.1" @@ -9656,6 +10142,7 @@ "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -9665,15 +10152,24 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/pacote": { "version": "15.2.0", "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.2.0.tgz", "integrity": "sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/git": "^4.0.0", "@npmcli/installed-package-contents": "^2.0.1", @@ -9705,13 +10201,15 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true + "dev": true, + "license": "(MIT AND Zlib)" }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -9724,6 +10222,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -9742,6 +10241,7 @@ "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -9750,13 +10250,15 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/parse5-html-rewriting-stream": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz", "integrity": "sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==", "dev": true, + "license": "MIT", "dependencies": { "entities": "^4.3.0", "parse5": "^7.0.0", @@ -9767,22 +10269,37 @@ } }, "node_modules/parse5-html-rewriting-stream/node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", "dev": true, + "license": "MIT", "dependencies": { - "entities": "^4.4.0" + "entities": "^6.0.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/parse5-html-rewriting-stream/node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/parse5-sax-parser": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz", "integrity": "sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==", "dev": true, + "license": "MIT", "dependencies": { "parse5": "^7.0.0" }, @@ -9790,13 +10307,27 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/parse5-sax-parser/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/parse5-sax-parser/node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", "dev": true, + "license": "MIT", "dependencies": { - "entities": "^4.4.0" + "entities": "^6.0.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" @@ -9807,6 +10338,7 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -9816,6 +10348,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -9825,6 +10358,7 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9834,6 +10368,7 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -9842,59 +10377,63 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", + "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "engines": { - "node": "14 || >=16.14" - } + "license": "ISC" }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "dev": true, + "license": "MIT" }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "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 + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -9907,6 +10446,7 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=6" @@ -9917,6 +10457,7 @@ "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.0.0.tgz", "integrity": "sha512-641nAmJS4k4iqpNUqfggqUBUMmlw0ZoM5VZKdQkV2e970Inn3Tk9kroCc1wpsYLD07vCwpys5iY0d3xI/9WkTg==", "dev": true, + "license": "MIT", "dependencies": { "eventemitter-asyncresource": "^1.0.0", "hdr-histogram-js": "^2.0.1", @@ -9931,6 +10472,7 @@ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^6.3.0" }, @@ -9946,6 +10488,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^7.1.0", "path-exists": "^5.0.0" @@ -9962,6 +10505,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^6.0.0" }, @@ -9977,6 +10521,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^1.0.0" }, @@ -9992,6 +10537,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^4.0.0" }, @@ -10007,6 +10553,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -10030,6 +10577,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", @@ -10044,6 +10592,7 @@ "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.3.tgz", "integrity": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==", "dev": true, + "license": "MIT", "dependencies": { "cosmiconfig": "^8.2.0", "jiti": "^1.18.2", @@ -10062,10 +10611,11 @@ } }, "node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", "dev": true, + "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -10074,13 +10624,14 @@ } }, "node_modules/postcss-modules-local-by-default": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz", - "integrity": "sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", "dev": true, + "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", + "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.1.0" }, "engines": { @@ -10091,12 +10642,13 @@ } }, "node_modules/postcss-modules-scope": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz", - "integrity": "sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", "dev": true, + "license": "ISC", "dependencies": { - "postcss-selector-parser": "^6.0.4" + "postcss-selector-parser": "^7.0.0" }, "engines": { "node": "^10 || ^12 || >= 14" @@ -10110,6 +10662,7 @@ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, + "license": "ISC", "dependencies": { "icss-utils": "^5.0.0" }, @@ -10121,10 +10674,11 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", - "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -10137,13 +10691,15 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pretty-bytes": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -10156,6 +10712,7 @@ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -10164,19 +10721,22 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, + "license": "MIT", "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -10190,6 +10750,7 @@ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, + "license": "MIT", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -10203,6 +10764,7 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -10212,39 +10774,57 @@ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } }, - "node_modules/punycode": { + "node_modules/psl/node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true, + "license": "MIT" + }, "node_modules/qjobs": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.9" } }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -10257,7 +10837,8 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/queue-microtask": { "version": "1.2.3", @@ -10277,13 +10858,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } @@ -10293,6 +10876,7 @@ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -10302,6 +10886,7 @@ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -10316,7 +10901,9 @@ "version": "6.0.4", "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz", "integrity": "sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==", + "deprecated": "This package is no longer supported. Please use @npmcli/package-json instead.", "dev": true, + "license": "ISC", "dependencies": { "glob": "^10.2.2", "json-parse-even-better-errors": "^3.0.0", @@ -10332,6 +10919,7 @@ "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", "dev": true, + "license": "ISC", "dependencies": { "json-parse-even-better-errors": "^3.0.0", "npm-normalize-package-bin": "^3.0.0" @@ -10341,59 +10929,62 @@ } }, "node_modules/read-package-json-fast/node_modules/json-parse-even-better-errors": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", - "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, + "license": "MIT", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/read-package-json/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/read-package-json/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/read-package-json/node_modules/json-parse-even-better-errors": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", - "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, + "license": "MIT", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/read-package-json/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -10404,11 +10995,22 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/read-package-json/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -10423,6 +11025,7 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -10434,19 +11037,22 @@ "version": "0.1.14", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", "dev": true, + "license": "MIT", "dependencies": { "regenerate": "^1.4.2" }, @@ -10458,59 +11064,65 @@ "version": "0.13.11", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "dev": true - }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } + "license": "MIT" }, "node_modules/regex-parser": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz", - "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==", - "dev": true + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.1.tgz", + "integrity": "sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==", + "dev": true, + "license": "MIT" }, "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" + "unicode-match-property-value-ecmascript": "^2.2.1" }, "engines": { "node": ">=4" } }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, + "license": "MIT" + }, "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "jsesc": "~0.5.0" + "jsesc": "~3.1.0" }, "bin": { "regjsparser": "bin/parser" } }, "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" } }, "node_modules/require-directory": { @@ -10518,6 +11130,7 @@ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -10527,6 +11140,7 @@ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -10535,13 +11149,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/resolve": { "version": "1.22.2", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.11.0", "path-parse": "^1.0.7", @@ -10559,6 +11175,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -10568,6 +11185,7 @@ "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", "dev": true, + "license": "MIT", "dependencies": { "adjust-sourcemap-loader": "^4.0.0", "convert-source-map": "^1.7.0", @@ -10584,6 +11202,7 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, + "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -10598,6 +11217,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -10607,6 +11227,7 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, + "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -10620,31 +11241,36 @@ "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" } }, "node_modules/rfdc": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", - "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==", - "dev": true + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -10656,10 +11282,11 @@ } }, "node_modules/rollup": { - "version": "3.29.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", - "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "version": "3.29.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz", + "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==", "dev": true, + "license": "MIT", "bin": { "rollup": "dist/bin/rollup" }, @@ -10676,6 +11303,7 @@ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -10699,14 +11327,16 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } @@ -10729,19 +11359,40 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "devOptional": true + "dev": true, + "license": "MIT" }, "node_modules/sass": { "version": "1.64.1", "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.1.tgz", "integrity": "sha512-16rRACSOFEE8VN7SCgBu1MpYCyN7urj9At898tyzdXFhC+a+yOX5dXwAR7L8/IdPJ1NB8OYoXmD55DM30B2kEQ==", "dev": true, + "license": "MIT", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -10759,6 +11410,7 @@ "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.2.tgz", "integrity": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==", "dev": true, + "license": "MIT", "dependencies": { "neo-async": "^2.6.2" }, @@ -10792,15 +11444,19 @@ } }, "node_modules/sax": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz", + "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "optional": true }, "node_modules/saxes": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", "dev": true, + "license": "ISC", "dependencies": { "xmlchars": "^2.2.0" }, @@ -10809,10 +11465,11 @@ } }, "node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -10820,7 +11477,7 @@ "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", @@ -10831,13 +11488,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/selfsigned": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/node-forge": "^1.3.0", "node-forge": "^1" @@ -10851,6 +11510,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -10866,6 +11526,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -10877,13 +11538,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -10908,6 +11571,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -10916,13 +11580,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/send/node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -10930,17 +11596,12 @@ "node": ">=4" } }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, "node_modules/send/node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -10950,6 +11611,7 @@ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -10959,6 +11621,7 @@ "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", @@ -10977,6 +11640,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -10986,6 +11650,7 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -10995,6 +11660,7 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, + "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -11009,69 +11675,69 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/serve-index/node_modules/setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, + "license": "MIT", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/serve-static/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } + "license": "ISC" }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, + "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, @@ -11084,6 +11750,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -11096,29 +11763,92 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -11131,13 +11861,15 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/sigstore": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.9.0.tgz", "integrity": "sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@sigstore/bundle": "^1.1.0", "@sigstore/protobuf-specs": "^0.2.0", @@ -11157,6 +11889,7 @@ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10" } @@ -11166,6 +11899,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, + "license": "MIT", "dependencies": { "@tootallnate/once": "2", "agent-base": "6", @@ -11180,6 +11914,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -11189,6 +11924,7 @@ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", "dev": true, + "license": "ISC", "dependencies": { "agentkeepalive": "^4.2.1", "cacache": "^17.0.0", @@ -11211,10 +11947,11 @@ } }, "node_modules/sigstore/node_modules/minipass-fetch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", - "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", "dev": true, + "license": "MIT", "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", @@ -11228,10 +11965,11 @@ } }, "node_modules/sigstore/node_modules/minipass-fetch/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -11241,6 +11979,7 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -11253,22 +11992,24 @@ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" } }, "node_modules/socket.io": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.4.tgz", - "integrity": "sha512-DcotgfP1Zg9iP/dH9zvAQcWrE0TtbMVwXmlV4T4mqsvY+gw+LqUGPfx2AoVyRk0FLME+GQhufDMyacFmw7ksqw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz", + "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.5.2", + "engine.io": "~6.6.0", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.4" }, @@ -11277,26 +12018,46 @@ } }, "node_modules/socket.io-adapter": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.4.tgz", - "integrity": "sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg==", + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "~4.3.4", - "ws": "~8.11.0" + "ws": "~8.17.1" + } + }, + "node_modules/socket.io-adapter/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/socket.io-adapter/node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -11312,6 +12073,7 @@ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dev": true, + "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" @@ -11320,11 +12082,48 @@ "node": ">=10.0.0" } }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/sockjs": { "version": "0.3.24", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, + "license": "MIT", "dependencies": { "faye-websocket": "^0.11.3", "uuid": "^8.3.2", @@ -11332,12 +12131,13 @@ } }, "node_modules/socks": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.1.tgz", - "integrity": "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==", + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", "dev": true, + "license": "MIT", "dependencies": { - "ip-address": "^9.0.5", + "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" }, "engines": { @@ -11350,6 +12150,7 @@ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^6.0.2", "debug": "^4.3.3", @@ -11364,15 +12165,17 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">= 8" } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -11382,6 +12185,7 @@ "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.1.tgz", "integrity": "sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA==", "dev": true, + "license": "MIT", "dependencies": { "abab": "^2.0.6", "iconv-lite": "^0.6.3", @@ -11403,6 +12207,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -11415,6 +12220,7 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -11425,6 +12231,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -11434,6 +12241,7 @@ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -11443,29 +12251,33 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true + "dev": true, + "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, + "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-license-ids": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", - "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", - "dev": true + "version": "3.0.22", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", + "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", + "dev": true, + "license": "CC0-1.0" }, "node_modules/spdy": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.0", "handle-thing": "^2.0.0", @@ -11482,6 +12294,7 @@ "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.0", "detect-node": "^2.0.4", @@ -11495,13 +12308,15 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/ssri": { - "version": "10.0.5", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", - "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, @@ -11510,10 +12325,11 @@ } }, "node_modules/ssri/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -11523,23 +12339,17 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, - "node_modules/stream": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stream/-/stream-0.0.2.tgz", - "integrity": "sha512-gCq3NDI2P35B2n6t76YJuOp7d6cN/C7Rt0577l91wllh0sY9ZBuw9KaSGqH/b0hzn3CWWJbpbW0W0WvQ1H/Q7g==", - "dependencies": { - "emitter-component": "^1.1.1" - } - }, "node_modules/streamroller": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", "dev": true, + "license": "MIT", "dependencies": { "date-format": "^4.0.14", "debug": "^4.3.4", @@ -11554,6 +12364,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } @@ -11563,6 +12374,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -11578,6 +12390,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -11592,6 +12405,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -11605,6 +12419,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -11617,20 +12432,22 @@ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/supports-preserve-symlinks-flag": { @@ -11638,6 +12455,7 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -11650,6 +12468,7 @@ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10" } @@ -11658,22 +12477,29 @@ "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/tar": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", - "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dev": true, + "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -11691,6 +12517,7 @@ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -11703,6 +12530,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -11715,6 +12543,7 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, + "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -11726,13 +12555,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/terser": { "version": "5.19.2", "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -11747,16 +12578,17 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", + "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" }, "engines": { "node": ">= 10.13.0" @@ -11780,63 +12612,15 @@ } } }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/terser-webpack-plugin/node_modules/terser": { - "version": "5.29.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.1.tgz", - "integrity": "sha512-lZQ/fyaIGxsbGxApKmoPTODIzELy3++mXhS5hOqaAWZjQtpq/hFHAc+rm29NND1rYRxRWKcjuARNwULNXa5RtQ==", + "version": "5.44.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz", + "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", + "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -11852,6 +12636,7 @@ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -11865,25 +12650,29 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, + "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -11891,20 +12680,12 @@ "node": ">=0.6.0" } }, - "node_modules/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, - "engines": { - "node": ">=4" - } - }, "node_modules/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, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -11917,15 +12698,17 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6" } }, "node_modules/tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", @@ -11936,11 +12719,22 @@ "node": ">=6" } }, + "node_modules/tough-cookie/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/tough-cookie/node_modules/universalify": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.0.0" } @@ -11950,6 +12744,7 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", "dev": true, + "license": "MIT", "dependencies": { "punycode": "^2.1.1" }, @@ -11957,25 +12752,38 @@ "node": ">=8" } }, + "node_modules/tr46/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, + "license": "MIT", "bin": { "tree-kill": "cli.js" } }, "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "node_modules/tuf-js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.7.tgz", "integrity": "sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==", "dev": true, + "license": "MIT", "dependencies": { "@tufjs/models": "1.0.4", "debug": "^4.3.4", @@ -11990,6 +12798,7 @@ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10" } @@ -11999,6 +12808,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, + "license": "MIT", "dependencies": { "@tootallnate/once": "2", "agent-base": "6", @@ -12013,6 +12823,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -12022,6 +12833,7 @@ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", "dev": true, + "license": "ISC", "dependencies": { "agentkeepalive": "^4.2.1", "cacache": "^17.0.0", @@ -12044,10 +12856,11 @@ } }, "node_modules/tuf-js/node_modules/minipass-fetch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", - "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", "dev": true, + "license": "MIT", "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", @@ -12061,10 +12874,11 @@ } }, "node_modules/tuf-js/node_modules/minipass-fetch/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -12074,6 +12888,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -12086,6 +12901,7 @@ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, + "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -12098,13 +12914,15 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/typescript": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -12114,9 +12932,9 @@ } }, "node_modules/ua-parser-js": { - "version": "0.7.37", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.37.tgz", - "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==", + "version": "0.7.41", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.41.tgz", + "integrity": "sha512-O3oYyCMPYgNNHuO7Jjk3uacJWZF8loBgwrfd/5LE/HyZ3lUIOdniQ7DNXJcIgZbwioZxk0fLfI4EVnetdiX5jg==", "dev": true, "funding": [ { @@ -12132,21 +12950,27 @@ "url": "https://github.com/sponsors/faisalman" } ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, "engines": { "node": "*" } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true, + "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -12156,6 +12980,7 @@ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, + "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -12165,19 +12990,21 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -12187,6 +13014,7 @@ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", "dev": true, + "license": "ISC", "dependencies": { "unique-slug": "^4.0.0" }, @@ -12199,6 +13027,7 @@ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "dev": true, + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" }, @@ -12211,6 +13040,7 @@ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.0.0" } @@ -12220,14 +13050,15 @@ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/update-browserslist-db": { - "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==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", + "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", "dev": true, "funding": [ { @@ -12243,9 +13074,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -12259,15 +13091,27 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/url-parse": { "version": "1.5.10", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dev": true, + "license": "MIT", "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -12277,13 +13121,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -12293,6 +13139,7 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -12302,19 +13149,18 @@ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, "node_modules/validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", "dev": true, - "dependencies": { - "builtins": "^5.0.0" - }, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -12324,15 +13170,17 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/vite": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz", - "integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==", + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.5.tgz", + "integrity": "sha512-ifW3Lb2sMdX+WU91s3R0FyQlAyLxOzCSCP37ujw0+r5POeHPwe6udWVIElKQq8gk3t7b8rkmvqC6IHBpCff4GQ==", "dev": true, + "license": "MIT", "dependencies": { "esbuild": "^0.18.10", "postcss": "^8.4.27", @@ -12388,6 +13236,7 @@ "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -12398,6 +13247,7 @@ "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", "dev": true, + "license": "MIT", "dependencies": { "browser-process-hrtime": "^1.0.0" } @@ -12407,6 +13257,7 @@ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", "dev": true, + "license": "MIT", "dependencies": { "xml-name-validator": "^3.0.0" }, @@ -12415,10 +13266,11 @@ } }, "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", + "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", "dev": true, + "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -12432,6 +13284,7 @@ "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, + "license": "MIT", "dependencies": { "minimalistic-assert": "^1.0.0" } @@ -12441,6 +13294,7 @@ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, + "license": "MIT", "dependencies": { "defaults": "^1.0.3" } @@ -12450,39 +13304,40 @@ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=10.4" } }, "node_modules/webpack": { - "version": "5.88.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", - "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", "dev": true, + "license": "MIT", "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", + "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", + "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, "bin": { @@ -12502,10 +13357,11 @@ } }, "node_modules/webpack-dev-middleware": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.1.tgz", - "integrity": "sha512-y51HrHaFeeWir0YO4f0g+9GwZawuigzcAdRNon6jErXy/SqV/+O6eaVAzDqE6t3e3NpGeR5CS+cCDaTC+V3yEQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.2.tgz", + "integrity": "sha512-Wu+EHmX326YPYUpQLKmKbTyZZJIB8/n6R09pTmB03kJmnMsVPTo9COzHZFr01txwaCAuZvfBJE4ZCHRcKs5JaQ==", "dev": true, + "license": "MIT", "dependencies": { "colorette": "^2.0.10", "memfs": "^3.4.12", @@ -12534,6 +13390,7 @@ "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", "dev": true, + "license": "MIT", "dependencies": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", @@ -12589,10 +13446,11 @@ } }, "node_modules/webpack-dev-server/node_modules/webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", "dev": true, + "license": "MIT", "dependencies": { "colorette": "^2.0.10", "memfs": "^3.4.3", @@ -12612,10 +13470,11 @@ } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -12637,6 +13496,7 @@ "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", "dev": true, + "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "wildcard": "^2.0.0" @@ -12646,10 +13506,11 @@ } }, "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", + "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.13.0" } @@ -12659,6 +13520,7 @@ "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", "dev": true, + "license": "MIT", "dependencies": { "typed-assert": "^1.0.8" }, @@ -12680,6 +13542,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -12696,6 +13559,7 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, + "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } @@ -12704,13 +13568,15 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/webpack/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -12729,6 +13595,7 @@ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", @@ -12743,6 +13610,7 @@ "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=0.8.0" } @@ -12752,6 +13620,7 @@ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", "dev": true, + "license": "MIT", "dependencies": { "iconv-lite": "0.4.24" } @@ -12760,13 +13629,15 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/whatwg-url": { "version": "8.7.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", "dev": true, + "license": "MIT", "dependencies": { "lodash": "^4.7.0", "tr46": "^2.1.0", @@ -12781,6 +13652,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -12793,6 +13665,7 @@ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } @@ -12801,13 +13674,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrap-ansi": { "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, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -12826,6 +13701,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -12838,83 +13714,19 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-convert": { - "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" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi-cjs/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 - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "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" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "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 - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.3.0" }, @@ -12935,27 +13747,22 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "node_modules/xmlbuilder": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", - "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", - "engines": { - "node": ">=8.0" - } + "dev": true, + "license": "Apache-2.0" }, "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } @@ -12964,13 +13771,15 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "dev": true, + "license": "ISC" }, "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, + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -12989,15 +13798,17 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.20" }, @@ -13009,6 +13820,7 @@ "version": "0.13.3", "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.13.3.tgz", "integrity": "sha512-MKPbmZie6fASC/ps4dkmIhaT5eonHkEt6eAy80K42tAm0G2W+AahLJjbfi6X9NPdciOE9GRFTTM8u2IiF6O3ww==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" } diff --git a/examples/ojp-playground/package.json b/examples/ojp-playground/package.json index 380dcc95..814b4e6e 100644 --- a/examples/ojp-playground/package.json +++ b/examples/ojp-playground/package.json @@ -21,7 +21,9 @@ "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.13.0", - "ojp-sdk": "0.9.32" + + "ojp-shared-types": "0.1.1", + "ojp-sdk": "../.." }, "devDependencies": { "@angular-devkit/build-angular": "^16.2.4", diff --git a/examples/ojp-playground/src/app/app-routing.module.ts b/examples/ojp-playground/src/app/app-routing.module.ts index 39b32d38..e8b34b1a 100644 --- a/examples/ojp-playground/src/app/app-routing.module.ts +++ b/examples/ojp-playground/src/app/app-routing.module.ts @@ -7,6 +7,7 @@ import { PlaygroundComponent } from './playground/playground.component'; const routes: Routes = [ { path: 'departures', component: DeparturesComponent }, { path: 'playground', component: PlaygroundComponent }, + { path: '', redirectTo: '/playground', pathMatch: 'full' }, ]; @NgModule({ diff --git a/examples/ojp-playground/src/app/app.component.html b/examples/ojp-playground/src/app/app.component.html index 21c2ea9d..6ded7aa0 100644 --- a/examples/ojp-playground/src/app/app.component.html +++ b/examples/ojp-playground/src/app/app.component.html @@ -1,10 +1,3 @@

Examples

- - -
- \ No newline at end of file diff --git a/examples/ojp-playground/src/app/departures/departures.component.html b/examples/ojp-playground/src/app/departures/departures.component.html index b432f7cf..b8d42285 100644 --- a/examples/ojp-playground/src/app/departures/departures.component.html +++ b/examples/ojp-playground/src/app/departures/departures.component.html @@ -1,3 +1,9 @@ + + +
+

Departures

{{ this.renderModel.stop.name }} ({{ this.renderModel.stop.id }})
diff --git a/examples/ojp-playground/src/app/departures/departures.component.ts b/examples/ojp-playground/src/app/departures/departures.component.ts index 3205b2be..33041f52 100644 --- a/examples/ojp-playground/src/app/departures/departures.component.ts +++ b/examples/ojp-playground/src/app/departures/departures.component.ts @@ -1,6 +1,6 @@ -import { Component } from '@angular/core'; +import { Component, OnInit } from '@angular/core'; -import * as OJP from 'ojp-sdk' +import * as OJP from 'ojp-sdk'; type DepartureRow = { service: { @@ -30,7 +30,9 @@ type RenderModel = { templateUrl: './departures.component.html', styleUrls: ['./departures.component.scss'] }) -export class DeparturesComponent { +export class DeparturesComponent implements OnInit { + private ojpSDK: OJP.SDK<'2.0'>; + public renderModel: RenderModel private queryParams: URLSearchParams @@ -42,6 +44,58 @@ export class DeparturesComponent { this.queryParams = new URLSearchParams(document.location.search); + let httpConfig: OJP.HTTPConfig = { + url: 'https://api.opentransportdata.swiss/ojp20', + authToken: null, + }; + + + const requestorRef = 'PlaygroundApp.v1'; + this.ojpSDK = OJP.SDK.create(requestorRef, httpConfig, 'de'); + } + + async ngOnInit(): Promise { + const placeResults = await this.fetchLookupLocations(); + if (placeResults.length === 0) { + console.error('ERROR: empty LIR response') + return; + } + + const place = placeResults[0].place; + + // TODO - this should go in a helper? + const placeRef = (() => { + const stopPlaceRef = place.stopPlace?.stopPlaceRef ?? null; + if (stopPlaceRef !== null) { + return stopPlaceRef; + } + + const stopPointRef = place.stopPoint?.stopPointRef ?? null; + if (stopPointRef !== null) { + return stopPointRef; + } + + return null; + })(); + + if (placeRef === null) { + console.error('CANT compute placeRef'); + console.log(place); + return; + } + + this.renderModel.stop = { + id: place.stopPlace?.stopPlaceRef ?? 'n/a stopPlaceRef', + name: place.name.text, + }; + + setTimeout(() => { + this.fetchLatestDepartures(placeRef); + }, 1000 * 60); + this.fetchLatestDepartures(placeRef); + } + + private async fetchLookupLocations(): Promise { const mapStopRefs = { 'BERN': '8507000', 'BERN_BAHNHOF': '8576646', @@ -51,59 +105,56 @@ export class DeparturesComponent { } const stopRef = this.queryParams.get('stop_id') ?? mapStopRefs.BERN_BAHNHOF; - const locationRequest = OJP.LocationInformationRequest.initWithStopPlaceRef(OJP.DEFAULT_STAGE, stopRef); - locationRequest.fetchResponse().then(response => { - if (response.locations.length === 0) { - console.log('ERROR - fetching locations for ' + stopRef); - return; - } - - const stopPlace = response.locations[0].stopPlace; - if (stopPlace === null) { - return; - } + const request = this.ojpSDK.requests.LocationInformationRequest.initWithPlaceRef(stopRef); + const response = await request.fetchResponse(this.ojpSDK); - this.renderModel.stop = { - id: stopPlace.stopPlaceRef, - name: stopPlace.stopPlaceName ?? 'n/a', - } - }) - - setTimeout(() => { - this.fetchLatestDepartures(stopRef); - }, 1000 * 60); - this.fetchLatestDepartures(stopRef); + if (!response.ok) { + return []; + } + + const placeResults: OJP.PlaceResult[] = response.value.placeResult.map(placeResultSchema => { + const placeResult = OJP.PlaceResult.initWithXMLSchema(placeResultSchema); + return placeResult; + }); + + return placeResults; } - private fetchLatestDepartures(stopRef: string) { - const request = OJP.StopEventRequest.initWithStopPlaceRef(OJP.DEFAULT_STAGE, stopRef, 'departure', new Date()); - console.log('FETCH departures for ' + stopRef + ' ...'); - request.fetchResponse().then(response => { - this.renderModel.departures = [] - response.stopEvents.forEach(stopEvent => { - const departureRow = this.computeDepartureRow(stopEvent) - this.renderModel.departures.push(departureRow); - }); + private async fetchLatestDepartures(placeRef: string) { + const request = this.ojpSDK.requests.StopEventRequest.initWithPlaceRefAndDate(placeRef, new Date()); + + const response = await request.fetchResponse(this.ojpSDK); + if (!response.ok) { + return; + } + + const results = response.value.stopEventResult ?? []; + this.renderModel.departures = []; + results.forEach(result => { + const departureRow = this.computeDepartureRow(result); + this.renderModel.departures.push(departureRow); }); } - private computeDepartureRow(stopEvent: OJP.StopEvent): DepartureRow { + private computeDepartureRow(stopEventResult: OJP.StopEventResult): DepartureRow { + const stopEvent = stopEventResult.stopEvent; // console.log(stopEvent); - const journeyService = stopEvent.journeyService; - const serviceLineNumber = journeyService.serviceLineNumber; + const journeyService = stopEvent.service; + const serviceLineNumber = journeyService.publishedServiceName.text; const serviceLine: string = (() => { - if (journeyService.ptMode.isRail()) { + const isRail = journeyService.mode.ptMode === 'rail'; + if (isRail) { return serviceLineNumber ?? 'n/a' } else { const serviceLineParts: string[] = [] - if (journeyService.ptMode.shortName) { - // prepend B (for bus) - serviceLineParts.push(journeyService.ptMode.shortName) - } + + // prepend B (for bus) + serviceLineParts.push(journeyService.mode.shortName?.text ?? 'n/a shortName'); + // then line number - serviceLineParts.push(serviceLineNumber ?? 'n/a') + serviceLineParts.push(serviceLineNumber) return serviceLineParts.join(''); } @@ -112,8 +163,8 @@ export class DeparturesComponent { const headingText: string = (() => { const lineParts: string[] = []; - if (journeyService.destinationStopPlace) { - lineParts.push(journeyService.destinationStopPlace.stopPlaceName ?? 'n/a'); + if (journeyService.destinationText) { + lineParts.push(journeyService.destinationText.text); } return lineParts.join(''); @@ -121,26 +172,23 @@ export class DeparturesComponent { const stopData: string = (() => { const lineParts: string[] = []; - stopEvent.nextStopPoints.forEach(stopPoint => { - const stopPlace = stopPoint.location.stopPlace; - if (stopPlace === null) { - return; - } - - lineParts.push(stopPlace.stopPlaceName ?? 'n/a'); + stopEvent.onwardCall.forEach(call => { + const stopPointName = call.callAtStop.stopPointName?.text ?? 'n/a'; + lineParts.push(stopPointName); }); return ' - ' + lineParts.join(' - '); })(); - const departureData = stopEvent.stopPoint.departureData; + const departureData = stopEvent.thisCall.callAtStop.serviceDeparture ?? null; const departureTimeF: string = (() => { if (departureData === null) { return 'n/a'; } - return OJP.DateHelpers.formatTimeHHMM(departureData.timetableTime); + const date = new Date(departureData.timetabledTime); + return OJP.DateHelpers.formatTimeHHMM(date); })(); const delayText: string = (() => { @@ -148,7 +196,7 @@ export class DeparturesComponent { return ''; } - const delayMinutes = departureData.delayMinutes; + const delayMinutes = OJP.DateHelpers.computeDelayMinutes(departureData.timetabledTime, departureData.estimatedTime ?? null); if (delayMinutes === null) { return ''; } @@ -163,21 +211,21 @@ export class DeparturesComponent { })(); - const departureRow = { + const departureRow: DepartureRow = { service: { line: serviceLine }, journey: { - number: journeyService.journeyNumber, + number: journeyService.trainNumber ?? 'n/a TrainNumber', headingText: headingText, stops: stopData, }, departure: { timeF: departureTimeF, delayText: delayText, - } - } + }, + }; - return departureRow + return departureRow; } } diff --git a/examples/ojp-playground/src/app/playground/playground.component.html b/examples/ojp-playground/src/app/playground/playground.component.html index 07f93e7b..bf873921 100644 --- a/examples/ojp-playground/src/app/playground/playground.component.html +++ b/examples/ojp-playground/src/app/playground/playground.component.html @@ -1,3 +1,11 @@ + + +
+

Playground OJP APIs

-Open DeveloperTools console to see the results \ No newline at end of file +
+ Open DeveloperTools console to see the results +
diff --git a/examples/ojp-playground/src/app/playground/playground.component.ts b/examples/ojp-playground/src/app/playground/playground.component.ts index 2bf5fd5a..0b988c54 100644 --- a/examples/ojp-playground/src/app/playground/playground.component.ts +++ b/examples/ojp-playground/src/app/playground/playground.component.ts @@ -1,15 +1,39 @@ -import { Component } from '@angular/core'; +import { Component, OnInit } from '@angular/core'; -import * as OJP from 'ojp-sdk' +import * as OJP from 'ojp-sdk'; @Component({ selector: 'playground', templateUrl: './playground.component.html', styleUrls: ['./playground.component.scss'] }) -export class PlaygroundComponent { +export class PlaygroundComponent implements OnInit { + public sdkOJPv1: OJP.SDK<'1.0'>; + public sdkOJPv2: OJP.SDK; + public sdkOJPv2INT: OJP.SDK; + constructor() { - this.runExamples(); + const requestorRef = 'PlaygroundApp.v1'; + const sdkHTTP_Config: OJP.HTTPConfig = { + url: 'https://api.opentransportdata.swiss/ojp20', + authToken: null, + }; + const sdkHTTP_INT_Config: OJP.HTTPConfig = { + url: 'https://odpch-api.clients.liip.ch/ojp20-beta', + authToken: null, + }; + const legacySDK_HTTP_Config: OJP.HTTPConfig = { + url: 'https://api.opentransportdata.swiss/ojp2020', + authToken: null, + }; + + this.sdkOJPv1 = OJP.SDK.v1(requestorRef, legacySDK_HTTP_Config, 'en'); + this.sdkOJPv2 = OJP.SDK.create(requestorRef, sdkHTTP_Config, 'en'); + this.sdkOJPv2INT = OJP.SDK.create(requestorRef, sdkHTTP_INT_Config, 'en'); + } + + async ngOnInit(): Promise { + await this.runExamples(); } private async runExamples() { @@ -23,44 +47,126 @@ export class PlaygroundComponent { console.log('LIR Requests'); console.log('======================'); + await this.runLR_LookupByName(); + await this.runLR_LookupByNameOJPv1(); + await this.runLR_LookupByBBOX(); + await this.runLR_LookupByStopRef(); + await this.runLR_LookupByNameFilterPtMode(); + await this.runLR_InitWithMock(); + } + + private async runLR_LookupByName() { // 1) LIR lookup by name const searchTerm = 'Bern'; - const request1 = OJP.LocationInformationRequest.initWithLocationName(OJP.DEFAULT_STAGE, searchTerm); + const request = OJP.LocationInformationRequest.initWithLocationName(searchTerm); - console.log('1) LIR lookup by name') - // a) using await/async - const response = await request1.fetchResponse(); - console.log(response); + console.log('1) LIR lookup by name'); + const response = await request.fetchResponse(this.sdkOJPv2); + if (!response.ok) { + console.error('fetchLocationInformationRequestResponse ERROR'); + console.log(response.error); + return; + } + console.log(response.value.placeResult); + } - // b) using Promise.then - request1.fetchResponse().then(response => { - console.log('LIR response via Promise.then'); - console.log(response); - }); + private async runLR_LookupByNameOJPv1() { + // 1) LIR lookup by name + const searchTerm = 'Bern'; + const request = this.sdkOJPv1.requests.LocationInformationRequest.initWithLocationName(searchTerm); - // 2) LIR lookup by BBOX - // lookup locations by bbox coords (WGS84) - // and location type: stop | poi_all + console.log('1) LIR lookup by name - OJPv1'); + const response = await request.fetchResponse(this.sdkOJPv1); + if (!response.ok) { + console.error('fetchLocationInformationRequestResponse ERROR'); + console.log(response.error); + return; + } + console.log(response.value.location); + } - // SW corner (bottom-left) - const minLongitude = 7.433259; - const minLatitude = 46.937798; - // NE corner (top-right) - const maxLongitude = 7.475252; - const maxLatitude = 46.954805; - const request2 = OJP.LocationInformationRequest.initWithBBOXAndType(OJP.DEFAULT_STAGE, minLongitude, minLatitude, maxLongitude, maxLatitude, 'stop'); + private async runLR_LookupByBBOX() { + // 2) LIR lookup by BBOX + + // these are equivalent + let bbox: string | number[] = '7.433259,46.937798,7.475252,46.954805'; + bbox = [7.433259, 46.937798, 7.475252, 46.954805]; + + const request = OJP.LocationInformationRequest.initWithBBOX(bbox, ['stop']); - console.log('2) LIR lookup by BBOX') - const response2 = await request2.fetchResponse(); - console.log(response2); + console.log('2) LIR lookup by BBOX'); + const response = await request.fetchResponse(this.sdkOJPv2); + if (!response.ok) { + console.error('fetchLocationInformationRequestResponse ERROR'); + console.log(response.error); + return; + } + console.log(response.value.placeResult); + } + private async runLR_LookupByStopRef() { // 3) LIR lookup by stop reference const stopRef = '8507000'; - const request3 = OJP.LocationInformationRequest.initWithStopPlaceRef(OJP.DEFAULT_STAGE, stopRef); + const request = OJP.LocationInformationRequest.initWithPlaceRef(stopRef); + + console.log('3) LIR lookup by StopRef'); + const response = await request.fetchResponse(this.sdkOJPv2); + if (!response.ok) { + console.error('fetchLocationInformationRequestResponse ERROR'); + console.log(response.error); + return; + } + } + + private async runLR_LookupByNameFilterPtMode() { + // 4) LIR lookup by name with filter by ptMode type + const searchTerm = 'Th'; + const request = OJP.LocationInformationRequest.initWithLocationName(searchTerm); + if (request.payload.restrictions) { + request.payload.restrictions.type = ['stop']; + request.payload.restrictions.includePtModes = true; + request.payload.restrictions.modes = { + exclude: false, + ptMode: ['water'], + personalMode: [], + }; + } + + console.log('4) LIR lookup by name with filter by ptMode type'); + const response = await request.fetchResponse(this.sdkOJPv2); + if (!response.ok) { + console.error('fetchLocationInformationRequestResponse ERROR'); + console.log(response.error); + return; + } + + console.log(request.requestInfo.requestXML); + console.log(response.value.placeResult); + response.value.placeResult.forEach((placeResult, idx) => { + const name = placeResult.place.name.text; + const score = placeResult.probability ?? 'n/a'; + console.log((idx + 1) + '.' + name + ' - ' + score); + }); + } + + private async runLR_InitWithMock() { + const request = OJP.LocationInformationRequest.initWithRequestMock(''); + + try { + const response = await request.fetchResponse(this.sdkOJPv2); + console.log(response); + } catch (e) { + console.error('Error occurred:', e); + } - console.log('3) LIR lookup by StopRef') - const response3 = await request3.fetchResponse(); - console.log(response3); + const request2 = OJP.TripInfoRequest.initWithRequestMock(''); + + try { + const response = await request2.fetchResponse(this.sdkOJPv2); + console.log(response); + } catch (e) { + console.error('Error occurred:', e); + } } private async runTR() { @@ -68,66 +174,132 @@ export class PlaygroundComponent { console.log('TR Requests'); console.log('======================'); - // Building request + await this.runTR_StopsPlaceRef(); + await this.runTR_Coords(); + await this.runTR_WalkSpeed(); + await this.runTR_ModeFilter(); + await this.runTR_ItModeFilter(); + await this.runTR_RailSubmodeFilter(); + } + private async runTR_StopsPlaceRef() { + // a) from StopPlaceRef to StopPlaceRef const fromStopRef = '8507000'; // Bern const toStopRef = '8503000'; // Zürich - const fromLocation = OJP.Location.initWithStopPlaceRef(fromStopRef); - const toLocation = OJP.Location.initWithStopPlaceRef(toStopRef); - - const request1 = OJP.TripRequest.initWithLocationsAndDate(OJP.DEFAULT_STAGE, fromLocation, toLocation, new Date(), 'Dep'); - if (request1 === null) { - // handle invalid requests + const request = OJP.TripRequest.initWithPlaceRefsOrCoords(fromStopRef, toStopRef); + const response = await request.fetchResponse(this.sdkOJPv2); + if (!response.ok) { + console.error('fetchTripRequestResponse ERROR'); + console.log(response.error); return; } + console.log('A) TR with from/to stopRefs'); + console.log(response.value); - // This is equivalent with request1 - const request1_B = OJP.TripRequest.initWithStopRefs(OJP.DEFAULT_STAGE, fromStopRef, toStopRef, new Date(), 'Dep'); + // serialize the object back to XML string + const trip1Schema = response.value.tripResult[0].trip; + const serializer = new OJP.XmlSerializer(); + const tripXML = serializer.serialize(trip1Schema, 'Trip'); + console.log('serialized trip XML'); + // console.log(tripXML); + } - // Request with long/lat coordinates - // https://opentdatach.github.io/ojp-demo-app/search?from=46.957522,7.431170&to=46.931849,7.485132 - const fromLocationCoords = OJP.Location.initWithLngLat(7.431170, 46.957522); - const toLocationCoords = OJP.Location.initWithLngLat(7.485132, 46.931849); - const request2 = OJP.TripRequest.initWithLocationsAndDate(OJP.DEFAULT_STAGE, fromLocationCoords, toLocationCoords, new Date(), 'Dep'); - - // Handling response - - // a) using await/async - const response1 = await request1.fetchResponse(); - console.log('a) TR using await/async') - console.log(response1); - - // b) using Promise.then - request1.fetchResponse().then(response => { - console.log('b) TR using Promise.then') - console.log(response); - }); + private async runTR_Coords() { + // b) from fromCoordsRef to StopPlaceRef + // coords in strings format, latitude,longitude + const fromCoordsRef = '46.957522,7.431170'; + const toCoordsRef = '46.931849,7.485132'; - // c) using a callback - // the XML parsing might some time for processing therefore using a callback can allow the GUI to react quickly when having partial results - request1.fetchResponseWithCallback(response => { - if (response.message === 'TripRequest.DONE') { - // all trips were parsed, this is also fired when using Promise.then approach - console.log('c) TR using callback') - console.log(response); - } else { - if (response.message === 'TripRequest.TripsNo') { - // logic how to proceed next, have an idea of how many trips to expect - // console.log(response); - } - - if (response.message === 'TripRequest.Trip') { - // handle trip by trip, this is faster than expecting for whole TripRequest.DONE event - // console.log(response); + const request = OJP.TripRequest.initWithPlaceRefsOrCoords(fromCoordsRef, toCoordsRef); + request.enableLinkProkection(); + + const response = await request.fetchResponse(this.sdkOJPv2); + if (!response.ok) { + console.error('fetchTripRequestResponse ERROR'); + console.log(response.error); + return; + } + console.log('B) TR with from/to coords'); + console.log(response.value); + } + + private async runTR_WalkSpeed() { + // C) TR with walkSpeed + const request = OJP.TripRequest.initWithPlaceRefsOrCoords('8507099', '8511418'); + if (request.payload.params) { + request.payload.params.walkSpeed = 400; + } + const response = await request.fetchResponse(this.sdkOJPv2); + if (!response.ok) { + console.error('fetchTripRequestResponse ERROR'); + console.log(response.error); + return; + } + console.log('C) TR with walkSpeed'); + console.log(response.value); + console.log(request.requestInfo.requestXML); + } + + private async runTR_ModeFilter() { + // D) TR with modeFilter - Thun(See) - Spiez(See) + const request = OJP.TripRequest.initWithPlaceRefsOrCoords('8507150', '8507154'); + if (request.payload.params) { + request.payload.params.modeAndModeOfOperationFilter = [ + { + exclude: false, + ptMode: ['water'], + personalMode: [], } - } - }); + ]; + } + const response = await request.fetchResponse(this.sdkOJPv2); + if (!response.ok) { + console.error('fetchTripRequestResponse ERROR'); + console.log(response.error); + return; + } + console.log('D) TR with modeFilter'); + console.log(request.requestInfo.requestXML); + console.log(response.value); + } - request2?.fetchResponse().then(response => { - console.log('TR with coordinates'); - console.log(response); - }); + private async runTR_ItModeFilter() { + // E) TR with hiking bern - gantrisch + const place1 = OJP.Place.initWithCoords(7.43913, 46.94883); + const place2 = OJP.Place.initWithCoords(7.418625, 46.698708); + + const request = OJP.TripRequest.initWithPlaces(place1, place2); + request.setMaxDurationWalkingTime(300); + + const response = await request.fetchResponse(this.sdkOJPv2); + if (!response.ok) { + console.error('fetchTripRequestResponse ERROR'); + console.log(response.error); + return; + } + console.log('E) TR with IndividualTransportOption - longer walk'); + console.log(request.requestInfo.requestXML); + console.log(response.value.tripResult); + } + + private async runTR_RailSubmodeFilter() { + // F) TR with IR between ZH-BE + const fromStopRef = '8507000'; // Bern + const toStopRef = '8503000'; // Zürich + + const request = this.sdkOJPv2INT.requests.TripRequest.initWithPlaceRefsOrCoords(fromStopRef, toStopRef); + request.setRailSubmodes('local'); + + const response = await request.fetchResponse(this.sdkOJPv2INT); + if (!response.ok) { + console.error('fetchTripRequestResponse ERROR'); + console.log(response.error); + return; + } + console.log('F) TR with RailSubmode - S-Bahn-only'); + console.log(request.requestInfo.requestXML); + console.log(response.value.tripResult[0].trip.leg[0].timedLeg?.service); } private async runSER() { @@ -135,18 +307,21 @@ export class PlaygroundComponent { console.log('SER Requests'); console.log('======================'); + await this.runSER_LookupByStopRef(); + } + + private async runSER_LookupByStopRef() { const stopRef = '8507000'; // Bern - const request1 = OJP.StopEventRequest.initWithStopPlaceRef(OJP.DEFAULT_STAGE, stopRef, 'departure', new Date()); + const request = OJP.StopEventRequest.initWithPlaceRefAndDate(stopRef, new Date()); - // a) using await/async - const response1 = await request1.fetchResponse(); - console.log('a) SER using await/async') - console.log(response1); + const response1 = await request.fetchResponse(this.sdkOJPv2); + if (!response1.ok) { + console.error('fetchStopEventRequestResponse ERROR'); + console.log(response1.error); + return; + } - // b) using Promise.then - request1.fetchResponse().then(response => { - console.log('b) SER using Promise.then') - console.log(response); - }); + console.log('a) SER using await/async') + console.log(response1.value); } } diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index 3b36ea17..00000000 --- a/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -export default { - preset: 'ts-jest/presets/default-esm', - transform: { - '^.+\\.ts$': ['ts-jest', { - useESM: true, - }], - }, - moduleNameMapper: { - '^(\\.{1,2}/.*)\\.js$': '$1', - }, - extensionsToTreatAsEsm: ['.ts'], - testEnvironment: 'node', - testMatch: ['/tests/**/*.test.ts'], -}; diff --git a/jest.config.ts b/jest.config.ts new file mode 100644 index 00000000..88c56918 --- /dev/null +++ b/jest.config.ts @@ -0,0 +1,5 @@ +export default { + preset: 'ts-jest', + testEnvironment: 'node', + testMatch: ['**/tests/**/*.test.ts'], +}; diff --git a/package-lock.json b/package-lock.json index 3bffbf3c..63437cb9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,65 +1,222 @@ { - "name": "ojp-sdk", - "version": "0.13.2", + "name": "ojp-sdk-next", + "version": "0.21.2", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "ojp-sdk", - "version": "0.13.2", + "name": "ojp-sdk-next", + "version": "0.21.2", "license": "MIT", "dependencies": { - "@xmldom/xmldom": "0.8.7", - "cross-fetch": "3.1.5", - "sax": "1.3.0", - "stream": "0.0.2", - "xmlbuilder": "15.1.1" + "axios": "1.8.3", + "fast-xml-parser": "5.0.8" }, "devDependencies": { - "@types/geojson": "7946.0.10", - "@types/jest": "29.5.12", - "@types/node": "18.11.9", - "@types/sax": "1.2.7", - "@types/xmldom": "0.1.31", + "@types/geojson": "7946.0.16", + "@types/jest": "^29.5.14", + "@types/node": "22.13.9", "jest": "29.7.0", - "ts-jest": "29.1.2", - "typescript": "4.9.3", - "watchify": "4.0.0" + "js-yaml": "4.1.0", + "openapi-typescript": "6.2.2", + "swagger-cli": "4.0.4", + "ts-jest": "29.1.1", + "ts-node": "10.9.2", + "tsup": "8.4.0", + "typescript": "5.8.2" + }, + "peerDependencies": { + "ojp-shared-types": "0.1.2" } }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "node_modules/@apidevtools/json-schema-ref-parser": { + "version": "11.7.2", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.7.2.tgz", + "integrity": "sha512-4gY54eEGEstClvEkGnwVkTkrx0sqwemEFG5OSRRn3tD91XH0+Q8XIkYIfo7IwEWPpJZwILb9GUXeShtplRc/eA==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" + "@jsdevtools/ono": "^7.1.3", + "@types/json-schema": "^7.0.15", + "js-yaml": "^4.1.0" }, "engines": { - "node": ">=6.0.0" + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/philsturgeon" + } + }, + "node_modules/@apidevtools/openapi-schemas": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz", + "integrity": "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@apidevtools/swagger-cli": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-cli/-/swagger-cli-4.0.4.tgz", + "integrity": "sha512-hdDT3B6GLVovCsRZYDi3+wMcB1HfetTU20l2DC8zD3iFRNMC6QNAZG5fo/6PYeHWBEv7ri4MvnlKodhNB0nt7g==", + "deprecated": "This package has been abandoned. Please switch to using the actively maintained @redocly/cli", + "dev": true, + "license": "MIT", + "dependencies": { + "@apidevtools/swagger-parser": "^10.0.1", + "chalk": "^4.1.0", + "js-yaml": "^3.14.0", + "yargs": "^15.4.1" + }, + "bin": { + "swagger-cli": "bin/swagger-cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@apidevtools/swagger-cli/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@apidevtools/swagger-cli/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/@apidevtools/swagger-cli/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@apidevtools/swagger-cli/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@apidevtools/swagger-cli/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@apidevtools/swagger-cli/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@apidevtools/swagger-cli/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@apidevtools/swagger-methods": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz", + "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@apidevtools/swagger-parser": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.1.1.tgz", + "integrity": "sha512-u/kozRnsPO/x8QtKYJOqoGtC4kH6yg1lfYkB9Au0WhYB0FNLpyFusttQtvhlwjtG3rOwiRz4D8DnnXa8iEpIKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@apidevtools/json-schema-ref-parser": "11.7.2", + "@apidevtools/openapi-schemas": "^2.1.0", + "@apidevtools/swagger-methods": "^3.0.2", + "@jsdevtools/ono": "^7.1.3", + "ajv": "^8.17.1", + "ajv-draft-04": "^1.0.0", + "call-me-maybe": "^1.0.2" + }, + "peerDependencies": { + "openapi-types": ">=7" } }, "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", + "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz", - "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.6.tgz", + "integrity": "sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==", "dev": true, "license": "MIT", "engines": { @@ -67,22 +224,22 @@ } }, "node_modules/@babel/core": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", - "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.0", - "@babel/generator": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.0", - "@babel/parser": "^7.26.0", - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.26.0", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.6.tgz", + "integrity": "sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6", + "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -98,16 +255,16 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", - "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.6.tgz", + "integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.3", - "@babel/types": "^7.26.3", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" }, "engines": { @@ -115,14 +272,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", - "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -131,30 +288,40 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -164,9 +331,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", - "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", "dev": true, "license": "MIT", "engines": { @@ -174,9 +341,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, "license": "MIT", "engines": { @@ -184,9 +351,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, "license": "MIT", "engines": { @@ -194,9 +361,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, "license": "MIT", "engines": { @@ -204,27 +371,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", - "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.0" + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", - "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz", + "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.26.3" + "@babel/types": "^7.28.6" }, "bin": { "parser": "bin/babel-parser.js" @@ -289,13 +456,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", - "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -331,13 +498,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", - "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -457,13 +624,13 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", - "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -473,48 +640,48 @@ } }, "node_modules/@babel/template": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", - "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.3.tgz", - "integrity": "sha512-yTmc8J+Sj8yLzwr4PD5Xb/WF3bOYu2C2OoSZPzbuqRm4n98XirsbzaX+GloeO376UnSYIYJ4NCanwV5/ugZkwA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.6.tgz", + "integrity": "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.3", - "@babel/parser": "^7.26.3", - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.3", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", - "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz", + "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -527,167 +694,667 @@ "dev": true, "license": "MIT" }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "@jridgewell/trace-mapping": "0.3.9" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - }, + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" } }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">=18" } }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" } }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" } }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" } }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" } }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "license": "MIT", + "dependencies": { "@jest/environment": "^29.7.0", "@jest/expect": "^29.7.0", "@jest/types": "^29.6.3", @@ -847,18 +1514,25 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { @@ -867,37 +1541,422 @@ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsdevtools/ono": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nodelib/fs.scandir": { + "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, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@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, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.56.0.tgz", + "integrity": "sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.56.0.tgz", + "integrity": "sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.56.0.tgz", + "integrity": "sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.56.0.tgz", + "integrity": "sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.56.0.tgz", + "integrity": "sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.56.0.tgz", + "integrity": "sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.56.0.tgz", + "integrity": "sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.56.0.tgz", + "integrity": "sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.56.0.tgz", + "integrity": "sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.56.0.tgz", + "integrity": "sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.56.0.tgz", + "integrity": "sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.56.0.tgz", + "integrity": "sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.56.0.tgz", + "integrity": "sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.56.0.tgz", + "integrity": "sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.56.0.tgz", + "integrity": "sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.56.0.tgz", + "integrity": "sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.56.0.tgz", + "integrity": "sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.56.0.tgz", + "integrity": "sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.56.0.tgz", + "integrity": "sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.56.0.tgz", + "integrity": "sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.56.0.tgz", + "integrity": "sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.56.0.tgz", + "integrity": "sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.56.0.tgz", + "integrity": "sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.56.0.tgz", + "integrity": "sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.56.0.tgz", + "integrity": "sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } + "optional": true, + "os": [ + "win32" + ] }, "node_modules/@sinclair/typebox": { "version": "0.27.8", @@ -926,6 +1985,34 @@ "@sinonjs/commons": "^3.0.0" } }, + "node_modules/@tsconfig/node10": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", + "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -941,9 +2028,9 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "dev": true, "license": "MIT", "dependencies": { @@ -962,19 +2049,26 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.20.7" + "@babel/types": "^7.28.2" } }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/geojson": { - "version": "7946.0.10", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz", - "integrity": "sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==", + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", "dev": true, "license": "MIT" }, @@ -1016,9 +2110,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.12", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", - "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", + "version": "29.5.14", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1026,21 +2120,22 @@ "pretty-format": "^29.0.0" } }, - "node_modules/@types/node": { - "version": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true, "license": "MIT" }, - "node_modules/@types/sax": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", - "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==", + "node_modules/@types/node": { + "version": "22.13.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.9.tgz", + "integrity": "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@types/node": "*" + "undici-types": "~6.20.0" } }, "node_modules/@types/stack-utils": { @@ -1050,17 +2145,10 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/xmldom": { - "version": "0.1.31", - "resolved": "https://registry.npmjs.org/@types/xmldom/-/xmldom-0.1.31.tgz", - "integrity": "sha512-bVy7s0nvaR5D1mT1a8ZkByHWNOGb6Vn4yi5TWhEdmyKlAG+08SA7Md6+jH+tYmMLueAwNeWvHHpeKrr6S4c4BA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", "dev": true, "license": "MIT", "dependencies": { @@ -1074,49 +2162,73 @@ "dev": true, "license": "MIT" }, - "node_modules/@xmldom/xmldom": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.7.tgz", - "integrity": "sha512-sI1Ly2cODlWStkINzqGrZ8K6n+MTSbAeQnAipGyL+KZCXuHaRlj2gyyy8B/9MvsFFqN7XHryQnB2QwhzvJXovg==", - "deprecated": "this version has critical issues, please update to the latest version", + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, "engines": { - "node": ">=10.0.0" + "node": ">=0.4.0" } }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", "dev": true, "license": "MIT", - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "acorn": "^8.11.0" }, "engines": { "node": ">=0.4.0" } }, - "node_modules/acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "peer": true, "dependencies": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "node_modules/ajv-draft-04": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", + "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^8.5.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.4.0" + "node": ">=6" } }, "node_modules/ansi-escapes": { @@ -1161,6 +2273,13 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" + }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -1175,77 +2294,35 @@ "node": ">= 8" } }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", - "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true, "license": "MIT" }, - "node_modules/assert": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.1.tgz", - "integrity": "sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "object.assign": "^4.1.4", - "util": "^0.10.4" - } - }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, - "license": "ISC" + "license": "Python-2.0" }, - "node_modules/assert/node_modules/util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "2.0.3" - } + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, + "node_modules/axios": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.3.tgz", + "integrity": "sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A==", "license": "MIT", "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "node_modules/babel-jest": { @@ -1300,353 +2377,115 @@ "istanbul-lib-coverage": "^3.2.0", "semver": "^6.3.0" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", - "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "dev": true, - "license": "MIT" - }, - "node_modules/browser-pack": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", - "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "combine-source-map": "~0.8.0", - "defined": "^1.0.0", - "JSONStream": "^1.0.3", - "safe-buffer": "^5.1.1", - "through2": "^2.0.0", - "umd": "^3.0.0" - }, - "bin": { - "browser-pack": "bin/cmd.js" + "engines": { + "node": ">=8" } }, - "node_modules/browser-pack/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, "license": "MIT", "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/browser-resolve": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", - "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve": "^1.17.0" - } - }, - "node_modules/browserify": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.1.tgz", - "integrity": "sha512-pxhT00W3ylMhCHwG5yfqtZjNnFuX5h2IJdaBfSo4ChaaBsIp9VLrEMQ1bHV+Xr1uLPXuNDDM1GlJkjli0qkRsw==", - "dev": true, - "license": "MIT", - "dependencies": { - "assert": "^1.4.0", - "browser-pack": "^6.0.1", - "browser-resolve": "^2.0.0", - "browserify-zlib": "~0.2.0", - "buffer": "~5.2.1", - "cached-path-relative": "^1.0.0", - "concat-stream": "^1.6.0", - "console-browserify": "^1.1.0", - "constants-browserify": "~1.0.0", - "crypto-browserify": "^3.0.0", - "defined": "^1.0.0", - "deps-sort": "^2.0.1", - "domain-browser": "^1.2.0", - "duplexer2": "~0.1.2", - "events": "^3.0.0", - "glob": "^7.1.0", - "hasown": "^2.0.0", - "htmlescape": "^1.1.0", - "https-browserify": "^1.0.0", - "inherits": "~2.0.1", - "insert-module-globals": "^7.2.1", - "JSONStream": "^1.0.3", - "labeled-stream-splicer": "^2.0.0", - "mkdirp-classic": "^0.5.2", - "module-deps": "^6.2.3", - "os-browserify": "~0.3.0", - "parents": "^1.0.1", - "path-browserify": "^1.0.0", - "process": "~0.11.0", - "punycode": "^1.3.2", - "querystring-es3": "~0.2.0", - "read-only-stream": "^2.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.1.4", - "shasum-object": "^1.0.0", - "shell-quote": "^1.6.1", - "stream-browserify": "^3.0.0", - "stream-http": "^3.0.0", - "string_decoder": "^1.1.1", - "subarg": "^1.0.0", - "syntax-error": "^1.1.1", - "through2": "^2.0.0", - "timers-browserify": "^1.0.1", - "tty-browserify": "0.0.1", - "url": "~0.11.0", - "util": "~0.12.0", - "vm-browserify": "^1.0.0", - "xtend": "^4.0.0" - }, - "bin": { - "browserify": "bin/cmd.js" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" }, "engines": { - "node": ">= 0.8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/browserify-aes": { + "node_modules/babel-preset-current-node-syntax": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", "dev": true, "license": "MIT", "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0 || ^8.0.0-0" } }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, "license": "MIT", "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/browserify-des": { + "node_modules/balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.1.tgz", - "integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^5.2.1", - "randombytes": "^2.1.0", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.10" - } + "license": "MIT" }, - "node_modules/browserify-sign": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz", - "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", + "node_modules/baseline-browser-mapping": { + "version": "2.9.17", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.17.tgz", + "integrity": "sha512-agD0MgJFUP/4nvjqzIB29zRPUuCF7Ge6mEv9s8dHrtYD7QWXRcx75rOADE/d5ah1NI+0vkDl0yorDd5U852IQQ==", "dev": true, - "license": "ISC", - "dependencies": { - "bn.js": "^5.2.1", - "browserify-rsa": "^4.1.0", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.5", - "hash-base": "~3.0", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.7", - "readable-stream": "^2.3.8", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.12" + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" } }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { - "pako": "~1.0.5" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/browserify/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "license": "MIT", "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" } }, "node_modules/browserslist": { - "version": "4.24.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", "dev": true, "funding": [ { @@ -1663,11 +2502,13 @@ } ], "license": "MIT", + "peer": true, "dependencies": { - "caniuse-lite": "^1.0.30001669", - "electron-to-chromium": "^1.5.41", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.1" + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" @@ -1699,17 +2540,6 @@ "node-int64": "^0.4.0" } }, - "node_modules/buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", - "dev": true, - "license": "MIT", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -1717,47 +2547,52 @@ "dev": true, "license": "MIT" }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "node_modules/bundle-require": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.1.0.tgz", + "integrity": "sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "load-tsconfig": "^0.2.3" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "esbuild": ">=0.18" + } }, - "node_modules/cached-path-relative": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz", - "integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==", + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dev": true, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0", "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "function-bind": "^1.1.2" }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/call-me-maybe": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", + "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", + "dev": true, + "license": "MIT" + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1779,9 +2614,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001686", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001686.tgz", - "integrity": "sha512-Y7deg0Aergpa24M3qLC5xjNklnKnhsmSyR/V89dLZ1n0ucJIFNs7PgR2Yfa/Zf6W79SbBicgtGxZr2juHkEUIA==", + "version": "1.0.30001765", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001765.tgz", + "integrity": "sha512-LWcNtSyZrakjECqmpP4qdg0MMGdN368D7X8XvvAqOcqMv0RxnlqVKZl2V6/mBR68oYMxOZPLw/gO7DuisMHUvQ==", "dev": true, "funding": [ { @@ -1827,28 +2662,19 @@ } }, "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "readdirp": "^4.0.1" }, "engines": { - "node": ">= 8.10.0" + "node": ">= 14.16.0" }, "funding": { "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" } }, "node_modules/ci-info": { @@ -1867,24 +2693,10 @@ "node": ">=8" } }, - "node_modules/cipher-base": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.6.tgz", - "integrity": "sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.4", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/cjs-module-lexer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", - "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", "dev": true, "license": "MIT" }, @@ -1915,9 +2727,9 @@ } }, "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", "dev": true, "license": "MIT" }, @@ -1941,41 +2753,26 @@ "dev": true, "license": "MIT" }, - "node_modules/combine-source-map": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", - "integrity": "sha512-UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==", - "dev": true, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "license": "MIT", "dependencies": { - "convert-source-map": "~1.1.0", - "inline-source-map": "~0.6.0", - "lodash.memoize": "~3.0.3", - "source-map": "~0.5.3" + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/combine-source-map/node_modules/convert-source-map": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", - "integrity": "sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==", - "dev": true, - "license": "MIT" - }, - "node_modules/combine-source-map/node_modules/lodash.memoize": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", - "integrity": "sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==", - "dev": true, - "license": "MIT" - }, - "node_modules/combine-source-map/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, "node_modules/concat-map": { @@ -1985,35 +2782,16 @@ "dev": true, "license": "MIT" }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", "dev": true, - "engines": [ - "node >= 0.8" - ], "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "engines": { + "node": "^14.18.0 || >=16.10.0" } }, - "node_modules/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", - "dev": true, - "license": "MIT" - }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -2021,60 +2799,6 @@ "dev": true, "license": "MIT" }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", - "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", - "dev": true, - "license": "MIT" - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, "node_modules/create-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", @@ -2097,14 +2821,12 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "license": "MIT", - "dependencies": { - "node-fetch": "2.6.7" - } + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "license": "MIT" }, "node_modules/cross-spawn": { "version": "7.0.6", @@ -2113,173 +2835,74 @@ "dev": true, "license": "MIT", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypto-browserify": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.1.tgz", - "integrity": "sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserify-cipher": "^1.0.1", - "browserify-sign": "^4.2.3", - "create-ecdh": "^4.0.4", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "diffie-hellman": "^5.0.3", - "hash-base": "~3.0.4", - "inherits": "^2.0.4", - "pbkdf2": "^3.1.2", - "public-encrypt": "^4.0.3", - "randombytes": "^2.1.0", - "randomfill": "^1.0.4" - }, - "engines": { - "node": ">= 0.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/dash-ast": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", - "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/dedent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 8" } }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" + "ms": "^2.1.3" }, "engines": { - "node": ">= 0.4" + "node": ">=6.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/defined": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", - "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/deps-sort": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", - "integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==", + "node_modules/dedent": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", + "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", "dev": true, "license": "MIT", - "dependencies": { - "JSONStream": "^1.0.3", - "shasum-object": "^1.0.0", - "subarg": "^1.0.0", - "through2": "^2.0.0" + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" }, - "bin": { - "deps-sort": "bin/cmd.js" + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } } }, - "node_modules/deps-sort/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, "license": "MIT", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/des.js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", - "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", - "dev": true, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "engines": { + "node": ">=0.4.0" } }, "node_modules/detect-newline": { @@ -2292,22 +2915,14 @@ "node": ">=8" } }, - "node_modules/detective": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", - "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", + "node_modules/diff": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", + "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", "dev": true, - "license": "MIT", - "dependencies": { - "acorn-node": "^1.8.2", - "defined": "^1.0.0", - "minimist": "^1.2.6" - }, - "bin": { - "detective": "bin/detective.js" - }, + "license": "BSD-3-Clause", "engines": { - "node": ">=0.8.0" + "node": ">=0.3.1" } }, "node_modules/diff-sequences": { @@ -2320,84 +2935,27 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "license": "MIT", "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", - "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", - "dev": true, - "license": "MIT" - }, - "node_modules/domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true, - "license": "MIT", + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, "engines": { - "node": ">=0.4", - "npm": ">=1.2" - } - }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "readable-stream": "^2.0.2" + "node": ">= 0.4" } }, "node_modules/electron-to-chromium": { - "version": "1.5.70", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.70.tgz", - "integrity": "sha512-P6FPqAWIZrC3sHDAwBitJBs7N7IF58m39XVny7DFseQXK2eiMn7nNQizFf63mWDDUnFvaqsM8FI0+ZZfLkdUGA==", + "version": "1.5.277", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.277.tgz", + "integrity": "sha512-wKXFZw4erWmmOz5N/grBoJ2XrNJGDFMu2+W5ACHza5rHtvsqrK4gb6rnLC7XxKB9WlJ+RmyQatuEXmtm86xbnw==", "dev": true, "license": "ISC" }, - "node_modules/elliptic": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", - "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", - "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", - "dev": true, - "license": "MIT" - }, - "node_modules/emitter-component": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/emitter-component/-/emitter-component-1.1.2.tgz", - "integrity": "sha512-QdXO3nXOzZB4pAjM0n6ZE+R9/+kPpECA/XSELIcc54NeYVnBqIk+4DFiBgK+8QbV3mdvTG6nedl7dTYgO+5wDw==", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/emittery": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", @@ -2419,9 +2977,9 @@ "license": "MIT" }, "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2429,14 +2987,10 @@ } }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dev": true, + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, "engines": { "node": ">= 0.4" } @@ -2445,12 +2999,81 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" } }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "peer": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -2485,27 +3108,6 @@ "node": ">=4" } }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -2556,6 +3158,30 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "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.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -2563,12 +3189,50 @@ "dev": true, "license": "MIT" }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", "dev": true, - "license": "MIT" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fast-xml-parser": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.0.8.tgz", + "integrity": "sha512-qY8NiI5L8ff00F2giyICiJxSSKHO52tC36LJqx2JtvGyAd5ZfehC/l4iUVVHpmpIa6sM9N5mneSLHQG2INGoHA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^2.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } }, "node_modules/fb-watchman": { "version": "2.0.2", @@ -2607,14 +3271,40 @@ "node": ">=8" } }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" } }, "node_modules/fs.realpath": { @@ -2643,7 +3333,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2659,13 +3348,6 @@ "node": ">=6.9.0" } }, - "node_modules/get-assigned-identifiers": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", - "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==", - "dev": true, - "license": "Apache-2.0" - }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -2677,17 +3359,21 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dev": true, + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -2706,6 +3392,19 @@ "node": ">=8.0.0" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", @@ -2754,21 +3453,10 @@ "node": ">= 6" } }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -2794,40 +3482,10 @@ "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.1.0.tgz", - "integrity": "sha512-QLdzI9IIO1Jg7f9GT1gXpPpXArAn6cS31R1eEZqz08Gc+uQ8/XiqHWt17Fiw+2p6oTTIq5GXEpQkAlA88YRl/Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -2840,7 +3498,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" @@ -2852,36 +3509,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hash-base": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.5.tgz", - "integrity": "sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.4", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -2890,18 +3521,6 @@ "node": ">= 0.4" } }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -2909,23 +3528,6 @@ "dev": true, "license": "MIT" }, - "node_modules/htmlescape": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", - "integrity": "sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", - "dev": true, - "license": "MIT" - }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -2936,27 +3538,6 @@ "node": ">=10.17.0" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, "node_modules/import-local": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", @@ -3006,76 +3587,6 @@ "dev": true, "license": "ISC" }, - "node_modules/inline-source-map": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.3.tgz", - "integrity": "sha512-1aVsPEsJWMJq/pdMU61CDlm1URcW702MTB4w9/zUjMus6H/Py8o7g68Pr9D4I6QluWGt/KdmswuRhaA05xVR1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "source-map": "~0.5.3" - } - }, - "node_modules/inline-source-map/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/insert-module-globals": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz", - "integrity": "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn-node": "^1.5.2", - "combine-source-map": "^0.8.0", - "concat-stream": "^1.6.1", - "is-buffer": "^1.1.0", - "JSONStream": "^1.0.3", - "path-is-absolute": "^1.0.1", - "process": "~0.11.0", - "through2": "^2.0.0", - "undeclared-identifiers": "^1.1.2", - "xtend": "^4.0.0" - }, - "bin": { - "insert-module-globals": "bin/cmd.js" - } - }, - "node_modules/insert-module-globals/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -3083,43 +3594,10 @@ "dev": true, "license": "MIT" }, - "node_modules/is-binary-path": { - "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, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, "license": "MIT", "dependencies": { @@ -3162,22 +3640,6 @@ "node": ">=6" } }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -3214,29 +3676,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -3272,9 +3711,9 @@ } }, "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", "bin": { @@ -3315,9 +3754,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -3334,6 +3773,7 @@ "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -3811,9 +4251,9 @@ } }, "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", "bin": { @@ -3924,6 +4364,16 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -3932,23 +4382,22 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, "license": "MIT", "bin": { @@ -3965,6 +4414,13 @@ "dev": true, "license": "MIT" }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -3978,33 +4434,6 @@ "node": ">=6" } }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "dev": true, - "engines": [ - "node >= 0.2.0" - ], - "license": "MIT" - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "license": "(MIT OR Apache-2.0)", - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, "node_modules/kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -4015,17 +4444,6 @@ "node": ">=6" } }, - "node_modules/labeled-stream-splicer": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", - "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "stream-splicer": "^2.0.0" - } - }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -4036,6 +4454,19 @@ "node": ">=6" } }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -4043,6 +4474,16 @@ "dev": true, "license": "MIT" }, + "node_modules/load-tsconfig": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", + "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -4063,6 +4504,13 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true, + "license": "MIT" + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -4090,9 +4538,9 @@ } }, "node_modules/make-dir/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", "bin": { @@ -4119,16 +4567,13 @@ "tmpl": "1.0.5" } }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "license": "MIT", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "engines": { + "node": ">= 0.4" } }, "node_modules/merge-stream": { @@ -4138,6 +4583,16 @@ "dev": true, "license": "MIT" }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", @@ -4152,27 +4607,27 @@ "node": ">=8.6" } }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "license": "MIT", "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" + "mime-db": "1.52.0" }, - "bin": { - "miller-rabin": "bin/miller-rabin" + "engines": { + "node": ">= 0.6" } }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", - "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", - "dev": true, - "license": "MIT" - }, "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -4183,20 +4638,6 @@ "node": ">=6" } }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true, - "license": "ISC" - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "dev": true, - "license": "MIT" - }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -4210,71 +4651,25 @@ "node": "*" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, - "node_modules/module-deps": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz", - "integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "browser-resolve": "^2.0.0", - "cached-path-relative": "^1.0.2", - "concat-stream": "~1.6.0", - "defined": "^1.0.0", - "detective": "^5.2.0", - "duplexer2": "^0.1.2", - "inherits": "^2.0.1", - "JSONStream": "^1.0.3", - "parents": "^1.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.4.0", - "stream-combiner2": "^1.1.1", - "subarg": "^1.0.0", - "through2": "^2.0.0", - "xtend": "^4.0.0" - }, - "bin": { - "module-deps": "bin/cmd.js" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/module-deps/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", "dev": true, "license": "MIT", "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" } }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -4282,26 +4677,6 @@ "dev": true, "license": "MIT" }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -4310,9 +4685,9 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", "dev": true, "license": "MIT" }, @@ -4339,47 +4714,22 @@ "node": ">=8" } }, - "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=0.10.0" } }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/ojp-shared-types": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ojp-shared-types/-/ojp-shared-types-0.1.2.tgz", + "integrity": "sha512-UX+ThZhZM4Qked7nI1uwjQhwzK3o2GMr1Mh8GSJhxaJiuweRmhUeESnfuVTKelHX2dieXue88b7AhaIgwo0Zrg==", + "license": "MIT", + "peer": true }, "node_modules/once": { "version": "1.4.0", @@ -4407,21 +4757,43 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "node_modules/openapi-types": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", + "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, - "node_modules/outpipe": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/outpipe/-/outpipe-1.1.1.tgz", - "integrity": "sha512-BnNY/RwnDrkmQdUa9U+OfN/Y7AWmKuUPCCd+hbRclZnnANvYpO72zp/a6Q4n829hPbdqEac31XCcsvlEvb+rtA==", + "node_modules/openapi-typescript": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-6.2.2.tgz", + "integrity": "sha512-5joJ8ME/wHxaH3gq+RW0kxT2iPqrfZdssrMRQQexlfFVeWbJ89nVmM7KnVgw99+iAkYncp/nI9AWKwJMkMPQtA==", "dev": true, "license": "MIT", "dependencies": { - "shell-quote": "^1.4.2" + "ansi-colors": "^4.1.3", + "fast-glob": "^3.2.12", + "js-yaml": "^4.1.0", + "supports-color": "^9.3.1", + "undici": "^5.22.0", + "yargs-parser": "^21.1.1" + }, + "bin": { + "openapi-typescript": "bin/cli.js" + } + }, + "node_modules/openapi-typescript/node_modules/supports-color": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", + "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/p-limit": { @@ -4479,41 +4851,6 @@ "node": ">=6" } }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true, - "license": "(MIT AND Zlib)" - }, - "node_modules/parents": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", - "integrity": "sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-platform": "~0.11.15" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz", - "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", - "dev": true, - "license": "ISC", - "dependencies": { - "asn1.js": "^4.10.1", - "browserify-aes": "^1.2.0", - "evp_bytestokey": "^1.0.3", - "hash-base": "~3.0", - "pbkdf2": "^3.1.2", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -4533,13 +4870,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true, - "license": "MIT" - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -4577,33 +4907,6 @@ "dev": true, "license": "MIT" }, - "node_modules/path-platform": { - "version": "0.11.15", - "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", - "integrity": "sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -4625,9 +4928,9 @@ } }, "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "dev": true, "license": "MIT", "engines": { @@ -4647,14 +4950,47 @@ "node": ">=8" } }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "node_modules/postcss-load-config": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", + "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1" + }, "engines": { - "node": ">= 0.4" + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } } }, "node_modules/pretty-format": { @@ -4685,23 +5021,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true, - "license": "MIT" - }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -4716,34 +5035,21 @@ "node": ">= 6" } }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", - "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", - "dev": true, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "license": "MIT" }, "node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=6" + } }, "node_modules/pure-rand": { "version": "6.1.0", @@ -4762,51 +5068,26 @@ ], "license": "MIT" }, - "node_modules/qs": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", - "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "node_modules/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, - "license": "MIT", - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" }, "node_modules/react-is": { "version": "18.3.1", @@ -4815,60 +5096,18 @@ "dev": true, "license": "MIT" }, - "node_modules/read-only-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", - "integrity": "sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/readable-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, "engines": { - "node": ">=8.10.0" + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, "node_modules/require-directory": { @@ -4881,20 +5120,40 @@ "node": ">=0.10.0" } }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true, + "license": "ISC" + }, "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4932,21 +5191,66 @@ "node": ">=10" } }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.56.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.56.0.tgz", + "integrity": "sha512-9FwVqlgUHzbXtDg9RCMgodF3Ua4Na6Gau+Sdt9vyCN4RhHfVKX2DCHy3BjMLTDd47ITDhYAnTwGulWTblJSDLg==", "dev": true, "license": "MIT", "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.56.0", + "@rollup/rollup-android-arm64": "4.56.0", + "@rollup/rollup-darwin-arm64": "4.56.0", + "@rollup/rollup-darwin-x64": "4.56.0", + "@rollup/rollup-freebsd-arm64": "4.56.0", + "@rollup/rollup-freebsd-x64": "4.56.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.56.0", + "@rollup/rollup-linux-arm-musleabihf": "4.56.0", + "@rollup/rollup-linux-arm64-gnu": "4.56.0", + "@rollup/rollup-linux-arm64-musl": "4.56.0", + "@rollup/rollup-linux-loong64-gnu": "4.56.0", + "@rollup/rollup-linux-loong64-musl": "4.56.0", + "@rollup/rollup-linux-ppc64-gnu": "4.56.0", + "@rollup/rollup-linux-ppc64-musl": "4.56.0", + "@rollup/rollup-linux-riscv64-gnu": "4.56.0", + "@rollup/rollup-linux-riscv64-musl": "4.56.0", + "@rollup/rollup-linux-s390x-gnu": "4.56.0", + "@rollup/rollup-linux-x64-gnu": "4.56.0", + "@rollup/rollup-linux-x64-musl": "4.56.0", + "@rollup/rollup-openbsd-x64": "4.56.0", + "@rollup/rollup-openharmony-arm64": "4.56.0", + "@rollup/rollup-win32-arm64-msvc": "4.56.0", + "@rollup/rollup-win32-ia32-msvc": "4.56.0", + "@rollup/rollup-win32-x64-gnu": "4.56.0", + "@rollup/rollup-win32-x64-msvc": "4.56.0", + "fsevents": "~2.3.2" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "node_modules/run-parallel": { + "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": [ { @@ -4962,13 +5266,10 @@ "url": "https://feross.org/support" } ], - "license": "MIT" - }, - "node_modules/sax": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", - "license": "ISC" + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } }, "node_modules/semver": { "version": "6.3.1", @@ -4980,47 +5281,12 @@ "semver": "bin/semver.js" } }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "license": "(MIT AND BSD-3-Clause)", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shasum-object": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", - "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==", + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "fast-safe-stringify": "^2.0.7" - } + "license": "ISC" }, "node_modules/shebang-command": { "version": "2.0.0", @@ -5045,65 +5311,12 @@ "node": ">=8" } }, - "node_modules/shell-quote": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", - "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" + "license": "ISC" }, "node_modules/sisteransi": { "version": "1.0.5", @@ -5163,101 +5376,6 @@ "node": ">=10" } }, - "node_modules/stream": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stream/-/stream-0.0.2.tgz", - "integrity": "sha512-gCq3NDI2P35B2n6t76YJuOp7d6cN/C7Rt0577l91wllh0sY9ZBuw9KaSGqH/b0hzn3CWWJbpbW0W0WvQ1H/Q7g==", - "license": "MIT", - "dependencies": { - "emitter-component": "^1.1.1" - } - }, - "node_modules/stream-browserify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", - "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" - } - }, - "node_modules/stream-browserify/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "duplexer2": "~0.1.0", - "readable-stream": "^2.0.2" - } - }, - "node_modules/stream-http": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", - "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", - "dev": true, - "license": "MIT", - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "xtend": "^4.0.2" - } - }, - "node_modules/stream-http/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/stream-splicer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", - "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.2" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -5333,14 +5451,39 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/subarg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", - "integrity": "sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==", + "node_modules/strnum": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.2.tgz", + "integrity": "sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, + "node_modules/sucrase": { + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.1.0" + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" } }, "node_modules/supports-color": { @@ -5369,14 +5512,20 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/syntax-error": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", - "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", + "node_modules/swagger-cli": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/swagger-cli/-/swagger-cli-4.0.4.tgz", + "integrity": "sha512-Cp8YYuLny3RJFQ4CvOBTaqmOOgYsem52dPx1xM5S4EUWFblIh2Q8atppMZvXKUr1e9xH5RwipYpmdUzdPcxWcA==", "dev": true, "license": "MIT", "dependencies": { - "acorn-node": "^1.2.0" + "@apidevtools/swagger-cli": "4.0.4" + }, + "bin": { + "swagger-cli": "swagger-cli.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/test-exclude": { @@ -5394,48 +5543,83 @@ "node": ">=8" } }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", "dev": true, "license": "MIT", "dependencies": { - "readable-stream": "3" + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" } }, - "node_modules/through2/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "fdir": "^6.5.0", + "picomatch": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/timers-browserify": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", - "integrity": "sha512-PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q==", + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, - "dependencies": { - "process": "~0.11.0" + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "peer": true, "engines": { - "node": ">=0.6.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/tmpl": { @@ -5459,15 +5643,36 @@ } }, "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/ts-jest": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.2.tgz", - "integrity": "sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==", + "version": "29.1.1", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", + "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", "dev": true, "license": "MIT", "dependencies": { @@ -5484,7 +5689,7 @@ "ts-jest": "cli.js" }, "engines": { - "node": "^16.10.0 || ^18.0.0 || >=20.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "@babel/core": ">=7.0.0-beta.0 <8", @@ -5509,9 +5714,9 @@ } }, "node_modules/ts-jest/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", "bin": { @@ -5521,12 +5726,116 @@ "node": ">=10" } }, - "node_modules/tty-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tsup": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.4.0.tgz", + "integrity": "sha512-b+eZbPCjz10fRryaAA7C8xlIHnf8VnsaRqydheLIqwG/Mcpfk8Z5zp3HayX7GaTygkigHl5cBUs+IhcySiIexQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bundle-require": "^5.1.0", + "cac": "^6.7.14", + "chokidar": "^4.0.3", + "consola": "^3.4.0", + "debug": "^4.4.0", + "esbuild": "^0.25.0", + "joycon": "^3.1.1", + "picocolors": "^1.1.1", + "postcss-load-config": "^6.0.1", + "resolve-from": "^5.0.0", + "rollup": "^4.34.8", + "source-map": "0.8.0-beta.0", + "sucrase": "^3.35.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.11", + "tree-kill": "^1.2.2" + }, + "bin": { + "tsup": "dist/cli-default.js", + "tsup-node": "dist/cli-node.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@microsoft/api-extractor": "^7.36.0", + "@swc/core": "^1", + "postcss": "^8.4.12", + "typescript": ">=4.5.0" + }, + "peerDependenciesMeta": { + "@microsoft/api-extractor": { + "optional": true + }, + "@swc/core": { + "optional": true + }, + "postcss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/tsup/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "deprecated": "The work that was done in this beta branch won't be included in future versions", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } }, "node_modules/type-detect": { "version": "4.0.8", @@ -5551,58 +5860,45 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true, - "license": "MIT" - }, "node_modules/typescript": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", - "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, - "node_modules/umd": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", - "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==", + "node_modules/undici": { + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", + "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==", "dev": true, "license": "MIT", - "bin": { - "umd": "bin/cli.js" - } - }, - "node_modules/undeclared-identifiers": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", - "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", - "dev": true, - "license": "Apache-2.0", "dependencies": { - "acorn-node": "^1.3.0", - "dash-ast": "^1.0.0", - "get-assigned-identifiers": "^1.2.0", - "simple-concat": "^1.0.0", - "xtend": "^4.0.1" + "@fastify/busboy": "^2.0.0" }, - "bin": { - "undeclared-identifiers": "bin.js" + "engines": { + "node": ">=14.0" } }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true, + "license": "MIT" + }, "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "dev": true, "funding": [ { @@ -5621,7 +5917,7 @@ "license": "MIT", "dependencies": { "escalade": "^3.2.0", - "picocolors": "^1.1.0" + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -5630,38 +5926,10 @@ "browserslist": ">= 4.21.0" } }, - "node_modules/url": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", - "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^1.4.1", - "qs": "^6.12.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true, "license": "MIT" }, @@ -5680,13 +5948,6 @@ "node": ">=10.12.0" } }, - "node_modules/vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true, - "license": "MIT" - }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -5697,42 +5958,23 @@ "makeerror": "1.0.12" } }, - "node_modules/watchify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/watchify/-/watchify-4.0.0.tgz", - "integrity": "sha512-2Z04dxwoOeNxa11qzWumBTgSAohTC0+ScuY7XMenPnH+W2lhTcpEOJP4g2EIG/SWeLadPk47x++Yh+8BqPM/lA==", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "^3.1.0", - "browserify": "^17.0.0", - "chokidar": "^3.4.0", - "defined": "^1.0.0", - "outpipe": "^1.1.0", - "through2": "^4.0.2", - "xtend": "^4.0.2" - }, - "bin": { - "watchify": "bin/cmd.js" - }, - "engines": { - "node": ">= 8.10.0" - } - }, "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true, "license": "BSD-2-Clause" }, "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, "license": "MIT", "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" } }, "node_modules/which": { @@ -5751,25 +5993,12 @@ "node": ">= 8" } }, - "node_modules/which-typed-array": { - "version": "1.1.16", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.16.tgz", - "integrity": "sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==", + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "ISC" }, "node_modules/wrap-ansi": { "version": "7.0.0", @@ -5810,25 +6039,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/xmlbuilder": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", - "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", - "license": "MIT", - "engines": { - "node": ">=8.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -5875,6 +6085,16 @@ "node": ">=12" } }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 0faad5cb..22a47a44 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,21 @@ { - "name": "ojp-sdk", - "version": "0.16.3", + "name": "ojp-sdk-next", "description": "OJP (Open Journey Planner) Javascript SDK", - "main": "lib/index.js", + "version": "0.21.2", "type": "module", + "main": "./lib/index.cjs", + "module": "./lib/index.js", "types": "lib/index.d.ts", + "exports": { + "require": "./lib/index.cjs", + "import": "./lib/index.js" + }, + "files": ["lib/**/*"], "scripts": { "test": "jest", - "build": "tsc", - "tscw": "tsc --watch" + "build": "rm -rf lib && tsup src/index.ts --dts --format esm,cjs --out-dir lib", + "dev": "tsup src/index.ts --dts --format esm,cjs --out-dir lib --watch", + "prepare": "npm run build" }, "repository": { "type": "git", @@ -22,28 +29,24 @@ ], "author": "Vasile Cotovanu", "license": "MIT", - "peerDependencies": { - "sax-ts": "1.2.13", - "@types/geojson": "7946.0.10", - "@types/sax": "1.2.7" - }, "dependencies": { - "@xmldom/xmldom": "0.8.7", - "cross-fetch": "3.1.5", - "sax": "1.3.0", - "stream": "0.0.2", - "xmlbuilder": "15.1.1" + "axios": "1.8.3", + "fast-xml-parser": "5.0.8" + }, + "peerDependencies": { + "ojp-shared-types": "0.1.2" }, "devDependencies": { - "@types/jest": "29.5.12", - "@types/node": "18.11.9", - "@types/xmldom": "0.1.31", + "@types/geojson": "7946.0.16", + "@types/jest": "^29.5.14", + "@types/node": "22.13.9", "jest": "29.7.0", - "ts-jest": "29.1.2", - "typescript": "4.9.3", - "watchify": "4.0.0" - }, - "files": [ - "lib/**/*" - ] + "js-yaml": "4.1.0", + "openapi-typescript": "6.2.2", + "swagger-cli": "4.0.4", + "ts-jest": "29.1.1", + "ts-node": "10.9.2", + "typescript": "5.8.2", + "tsup": "8.4.0" + } } diff --git a/src/constants.ts b/src/constants.ts index cd2f109c..ed40b97a 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -1,24 +1,28 @@ -type DEBUG_LEVEL_Type = 'DEBUG' | 'PROD'; -export const DEBUG_LEVEL: DEBUG_LEVEL_Type = (() => { - const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined'; - if (!isBrowser) { - return 'PROD'; - } +import { XML_Config } from "./types/_all"; - if (window.location.hostname.includes('github.io')) { - return 'PROD'; - } +export const SDK_VERSION = '0.21.2'; - return 'DEBUG'; -})(); +const mapNS = { + 'ojp': 'http://www.vdv.de/ojp', + 'siri': 'http://www.siri.org.uk/siri', +}; -type OJP_VERSION_Type = '1.0' | '2.0'; -export const OJP_VERSION: OJP_VERSION_Type = '1.0'; -export const SDK_VERSION = '0.16.3'; -export const IS_NODE_CLI = typeof process !== 'undefined' && process.versions && process.versions.node; +export const DefaultXML_Config: XML_Config = { + ojpVersion: '2.0', + defaultNS: 'ojp', + mapNS: mapNS, +}; -if (DEBUG_LEVEL === 'DEBUG') { - console.log('OJP version : ' + OJP_VERSION); - console.log('OJP-JS SDK version : ' + SDK_VERSION); - console.log('OJP-SDK : DEBUG features are enabled'); -} +// XML builder in OJPv1 siri: default +export const XML_BuilderConfigOJPv1: XML_Config = { + ojpVersion: '1.0', + defaultNS: 'siri', + mapNS: mapNS, +}; + +// XML parser in OJPv1 ojp: default +export const XML_ParserConfigOJPv1: XML_Config = { + ojpVersion: '1.0', + defaultNS: 'ojp', + mapNS: mapNS, +}; diff --git a/src/fare/fare.ts b/src/fare/fare.ts deleted file mode 100644 index 2ff7bd88..00000000 --- a/src/fare/fare.ts +++ /dev/null @@ -1,128 +0,0 @@ -import { TreeNode } from "../xml/tree-node"; - -type TravelClass = "first" | "second"; - -class FareProduct { - fareProductId: string; - fareProductName: string; - fareAuthorityRef: string; - price: number; - travelClass: TravelClass; - - constructor( - fareProductId: string, - fareProductName: string, - fareAuthorityRef: string, - price: number, - travelClass: TravelClass - ) { - this.fareProductId = fareProductId; - this.fareProductName = fareProductName; - this.fareAuthorityRef = fareAuthorityRef; - this.price = price; - this.travelClass = travelClass; - } - - public static initFromFareProductNode( - fareProductNode: TreeNode - ): FareProduct | null { - const fareProductId = - fareProductNode.findTextFromChildNamed("FareProductId"); - const fareProductName = fareProductNode.findTextFromChildNamed("FareProductName"); - const fareAuthorityRef = - fareProductNode.findTextFromChildNamed("FareAuthorityRef"); - const priceS = fareProductNode.findTextFromChildNamed("Price"); - const travelClassS = fareProductNode.findTextFromChildNamed("TravelClass"); - - if ( - fareProductId === null || - fareProductName === null || - fareAuthorityRef === null || - priceS === null || - travelClassS === null - ) { - return null; - } - - const price = parseFloat(priceS); - const travelClass = travelClassS as TravelClass; - - const fareProduct = new FareProduct( - fareProductId, - fareProductName, - fareAuthorityRef, - price, - travelClass - ); - return fareProduct; - } -} - -export interface TripFareResult { - fromTripLegIdRef: number; - toTripLegIdRef: number; - fareProduct: FareProduct; -} - -export class FareResult { - tripId: string; - tripFareResults: TripFareResult[]; - - constructor(tripId: string, tripFareResults: TripFareResult[]) { - this.tripId = tripId; - this.tripFareResults = tripFareResults; - } - - public static initWithFareResultTreeNode( - fareResultTreeNode: TreeNode - ): FareResult | null { - const tripId = fareResultTreeNode.findTextFromChildNamed("ResultId"); - if (tripId === null) { - return null; - } - - const tripFareResultNodes = - fareResultTreeNode.findChildrenNamed("TripFareResult"); - - const tripFareResults: TripFareResult[] = []; - tripFareResultNodes.forEach((tripFareResultNode) => { - const fromTripLegIdRefS = - tripFareResultNode.findTextFromChildNamed("FromTripLegIdRef"); - const toTripLegIdRefS = - tripFareResultNode.findTextFromChildNamed("ToTripLegIdRef"); - - if (fromTripLegIdRefS === null || toTripLegIdRefS === null) { - return; - } - - const fromTripLegIdRef = parseInt(fromTripLegIdRefS, 10); - const toTripLegIdRef = parseInt(toTripLegIdRefS, 10); - - const fareProductNode = tripFareResultNode.findChildNamed("FareProduct"); - if (fareProductNode === null) { - return; - } - - const fareProduct = FareProduct.initFromFareProductNode(fareProductNode); - if (fareProduct === null) { - return; - } - - const tripFareResult: TripFareResult = { - fromTripLegIdRef: fromTripLegIdRef, - toTripLegIdRef: toTripLegIdRef, - fareProduct: fareProduct, - }; - - tripFareResults.push(tripFareResult); - }); - - if (tripFareResults.length === 0) { - return null; - } - - const fareResult = new FareResult(tripId, tripFareResults); - - return fareResult; - } -} diff --git a/src/fare/nova-request-parser.ts b/src/fare/nova-request-parser.ts deleted file mode 100644 index 4b9d6bae..00000000 --- a/src/fare/nova-request-parser.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { BaseParser } from "../request/base-parser"; -import { FareResult } from "./fare"; - -type NovaFare_ParserMessage = "NovaFares.DONE" | "ERROR"; -export type NovaFare_Response = { - fareResults: FareResult[]; - message: NovaFare_ParserMessage | null; -}; -export type NovaFare_Callback = (response: NovaFare_Response) => void; - -export class NovaFareParser extends BaseParser { - public callback: NovaFare_Callback | null = null; - public fareResults: FareResult[]; - - constructor() { - super(); - this.fareResults = []; - } - - public parseXML(responseXMLText: string): void { - this.fareResults = []; - super.parseXML(responseXMLText); - } - - protected onCloseTag(nodeName: string): void { - if (nodeName === "FareResult") { - const fareResult = FareResult.initWithFareResultTreeNode( - this.currentNode - ); - if (fareResult) { - this.fareResults.push(fareResult); - } - } - } - - protected onError(saxError: any): void { - console.error("ERROR: SAX parser"); - console.log(saxError); - - if (this.callback) { - this.callback({ - fareResults: this.fareResults, - message: "ERROR", - }); - } - } - - protected onEnd(): void { - if (this.callback) { - this.callback({ - fareResults: this.fareResults, - message: "NovaFares.DONE", - }); - } - } -} diff --git a/src/fare/nova-request.ts b/src/fare/nova-request.ts deleted file mode 100644 index c6c79182..00000000 --- a/src/fare/nova-request.ts +++ /dev/null @@ -1,168 +0,0 @@ -import xmlbuilder from 'xmlbuilder'; - -import { RequestInfo } from "../request"; -import { Trip } from "../trip"; -import { NovaFare_Response, NovaFareParser } from "./nova-request-parser"; -import { ApiConfig } from '../types/stage-config'; -import { OJPBaseRequest } from '../request/base-request'; -import { OJP_Helpers } from '../helpers/ojp-helpers'; - -export class NovaRequest { - private stageConfig: ApiConfig; - public requestInfo: RequestInfo; - - constructor(stageConfig: ApiConfig) { - this.stageConfig = stageConfig; - - this.requestInfo = { - requestDateTime: null, - requestXML: null, - responseDateTime: null, - responseXML: null, - parseDateTime: null, - error: null - }; - } - - public fetchResponseForTrips(trips: Trip[]) { - const now = new Date(); - const serviceRequestNode = this.buildServiceRequestNode(now); - - trips.forEach(trip => { - this.addTripToServiceRequestNode(serviceRequestNode, trip, now); - }); - - return this.fetchResponse(serviceRequestNode); - } - - private buildServiceRequestNode(requestDate: Date) { - const rootNode = xmlbuilder.create('OJP', { - version: '1.0', - encoding: 'utf-8', - }); - - rootNode.att('xmlns', 'http://www.siri.org.uk/siri'); - rootNode.att('xmlns:ojp', 'http://www.vdv.de/ojp'); - rootNode.att('version', '1.0'); - - const serviceRequestNode = rootNode.ele('OJPRequest').ele('ServiceRequest'); - - const dateF = requestDate.toISOString(); - serviceRequestNode.ele('RequestTimestamp', dateF); - - const requestorRef = OJP_Helpers.buildRequestorRef(); - serviceRequestNode.ele("RequestorRef", requestorRef); - - return serviceRequestNode; - } - - private addTripToServiceRequestNode(serviceRequestNode: xmlbuilder.XMLElement, trip: Trip, requestDate: Date) { - const fareRequestNode = serviceRequestNode.ele('ojp:OJPFareRequest'); - - const dateF = requestDate.toISOString(); - fareRequestNode.ele('RequestTimestamp', dateF); - - const tripFareRequest = fareRequestNode.ele('ojp:TripFareRequest'); - trip.addToXMLNode(tripFareRequest); - - const paramsNode = fareRequestNode.ele('ojp:Params'); - paramsNode.ele('ojp:FareAuthorityFilter', 'ch:1:NOVA'); - paramsNode.ele('ojp:PassengerCategory', 'Adult'); - paramsNode.ele('ojp:TravelClass', 'second'); - - const travellerNode = paramsNode.ele('ojp:Traveller'); - travellerNode.ele('ojp:Age', '25'); - travellerNode.ele('ojp:PassengerCategory', 'Adult'); - travellerNode.ele('ojp:Age', '25'); - travellerNode.ele('ojp:Age', '25'); - - const entitlementProductNode = travellerNode.ele('ojp:EntitlementProducts').ele('ojp:EntitlementProduct'); - entitlementProductNode.ele('ojp:FareAuthorityRef', 'ch:1:NOVA'); - entitlementProductNode.ele('ojp:EntitlementProductRef', 'HTA'); - entitlementProductNode.ele('ojp:EntitlementProductName', 'Halbtax-Abonnement'); - } - - private fetchResponse(serviceRequestNode: xmlbuilder.XMLElement): Promise { - this.requestInfo.requestXML = serviceRequestNode.end({ pretty: true }); - - const requestHeaders: HeadersInit = { - "Content-Type": "text/xml" - }; - if (this.stageConfig.authToken) { - requestHeaders['Authorization'] = 'Bearer ' + this.stageConfig.authToken; - } - - const requestOptions: RequestInit = { - method: 'POST', - body: this.requestInfo.requestXML, - headers: requestHeaders, - }; - - const apiEndpoint = this.stageConfig.url; - - const promise = new Promise((resolve) => { - const errorNovaFare_Response: NovaFare_Response = { - fareResults: [], - message: 'ERROR', - }; - - fetch(apiEndpoint, requestOptions).then(response => { - if (!response.ok) { - this.requestInfo.error = { - error: 'FetchError', - message: 'HTTP ERROR - Status:' + response.status + ' - URL:' + apiEndpoint, - }; - - resolve(errorNovaFare_Response); - - return null; - } - - return response.text(); - }).then(responseText => { - if (responseText === null) { - this.requestInfo.error = { - error: 'FetchError', - message: 'Invalid NOVA Response', - }; - - resolve(errorNovaFare_Response); - - return; - } - - this.requestInfo.responseXML = responseText; - this.requestInfo.responseDateTime = new Date(); - - const parser = new NovaFareParser(); - parser.callback = (parserResponse) => { - this.requestInfo.parseDateTime = new Date(); - this.requestInfo.responseXML = responseText; - - if (parserResponse.message === 'ERROR') { - this.requestInfo.error = { - error: 'ParseXMLError', - message: 'error parsing XML', - }; - - resolve(errorNovaFare_Response); - return; - } - - resolve(parserResponse); - }; - parser.parseXML(responseText); - - }).catch(error => { - this.requestInfo.error = { - error: 'FetchError', - message: error, - }; - - resolve(errorNovaFare_Response); - }); - }); - - return promise; - } -} diff --git a/src/helpers/data-helpers.ts b/src/helpers/data-helpers.ts deleted file mode 100644 index 57d92c7c..00000000 --- a/src/helpers/data-helpers.ts +++ /dev/null @@ -1,26 +0,0 @@ -export class DataHelpers { - public static convertStopPointToStopPlace(stopPointRef: string): string { - if (!stopPointRef.includes(':sloid:')) { - return stopPointRef; - } - - // ch:1:sloid:92321:2:31 - const stopPointMatches = stopPointRef.match(/^([^:]+?):([^:]+?):sloid:([^:]+?):([^:]+?):([^:]+?)$/); - if (stopPointMatches === null) { - return stopPointRef; - } - - const stopRef = stopPointMatches[3]; - - const countryRef = stopPointMatches[1]; - if (countryRef === 'ch') { - const stopPlaceRef = '85' + stopRef.padStart(5, '0').slice(-5); - return stopPlaceRef; - } - - console.log('convertStopPointToStopPlace: unhandled countryRef for ' + stopPointRef); - console.log(stopPointMatches); - - return stopPointRef; - } -} \ No newline at end of file diff --git a/src/helpers/date-helpers.ts b/src/helpers/date-helpers.ts index 8267c881..52074524 100644 --- a/src/helpers/date-helpers.ts +++ b/src/helpers/date-helpers.ts @@ -19,17 +19,23 @@ export class DateHelpers { } // 21:38 - public static formatTimeHHMM(d: Date): string { - const dateFormatted = DateHelpers.formatDate(d) - return dateFormatted.substring(11,16); + public static formatTimeHHMM(d: Date = new Date()): string { + const dateFormatted = DateHelpers.formatDate(d); + + return dateFormatted.substring(11, 16); } - public static formatDistance(distanceMeters: number): string { - if (distanceMeters > 1000) { - const distanceKmS = (distanceMeters / 1000).toFixed(1) + 'km' - return distanceKmS + public static computeDelayMinutes(timetableTimeS: Date | string, estimatedTimeS: Date | string | null): number | null { + if (estimatedTimeS === null) { + return null; } - return distanceMeters + 'm' + const timetableTime = typeof timetableTimeS === 'string' ? new Date(timetableTimeS) : timetableTimeS; + const estimatedTime = typeof estimatedTimeS === 'string' ? new Date(estimatedTimeS) : estimatedTimeS; + + const dateDiffSeconds = (estimatedTime.getTime() - timetableTime.getTime()) / 1000; + const delayMinutes = Math.floor(dateDiffSeconds / 60); + + return delayMinutes; } } diff --git a/src/helpers/ojp-helpers.ts b/src/helpers/ojp-helpers.ts deleted file mode 100644 index a75651a4..00000000 --- a/src/helpers/ojp-helpers.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { SDK_VERSION } from "../constants"; - -export class OJP_Helpers { - public static buildRequestorRef(): string { - return "OJP_JS_SDK_v" + SDK_VERSION; - } -} diff --git a/src/helpers/ojp-v1.ts b/src/helpers/ojp-v1.ts new file mode 100644 index 00000000..dfe75e97 --- /dev/null +++ b/src/helpers/ojp-v1.ts @@ -0,0 +1,141 @@ +import * as OJP_Types from 'ojp-shared-types'; + +export class OJPv1_Helpers { + public static convertOJPv2Trip_to_v1Trip(tripV2: OJP_Types.TripSchema): OJP_Types.OJPv1_TripSchema { + const tripV2Copy = JSON.parse(JSON.stringify(tripV2)) as OJP_Types.TripSchema; + + const trip1: OJP_Types.OJPv1_TripSchema = { + tripId: tripV2Copy.id, + duration: tripV2Copy.duration, + startTime: tripV2Copy.startTime, + endTime: tripV2Copy.endTime, + transfers: tripV2Copy.transfers, + tripLeg: [], + }; + + tripV2Copy.leg.forEach(legV2 => { + const legV1: OJP_Types.OJPv1_TripLegSchema = { + legId: legV2.id, + duration: legV2.duration, + timedLeg: undefined, + transferLeg: legV2.transferLeg, + continuousLeg: legV2.continuousLeg, + }; + + if (legV2.timedLeg) { + const timedLegServiceV1: OJP_Types.OJPv1_DatedJourneySchema = { + conventionalModeOfOperation: legV2.timedLeg.service.conventionalModeOfOperation, + operatingDayRef: legV2.timedLeg.service.operatingDayRef, + journeyRef: legV2.timedLeg.service.journeyRef, + publicCode: legV2.timedLeg.service.publicCode, + lineRef: legV2.timedLeg.service.lineRef, + directionRef: legV2.timedLeg.service.directionRef, + mode: legV2.timedLeg.service.mode, + productCategory: legV2.timedLeg.service.productCategory, + publishedLineName: legV2.timedLeg.service.publishedServiceName, + trainNumber: legV2.timedLeg.service.trainNumber, + attribute: [], + operatorRef: legV2.timedLeg.service.operatorRef, + destinationStopPointRef: legV2.timedLeg.service.destinationStopPointRef, + destinationText: legV2.timedLeg.service.destinationText, + unplanned: legV2.timedLeg.service.unplanned, + cancelled: legV2.timedLeg.service.cancelled, + deviation: legV2.timedLeg.service.deviation, + }; + + legV2.timedLeg.service.attribute.forEach(attributeV2 => { + const attributeV1: OJP_Types.OJPv1_GeneralAttributeSchema = { + text: attributeV2.userText, + code: attributeV2.code, + importance: attributeV2.importance, + }; + timedLegServiceV1.attribute.push(attributeV1); + }); + + const timedLegV1: OJP_Types.OJPv1_TimedLegSchema = { + legBoard: legV2.timedLeg.legBoard, + legIntermediates: legV2.timedLeg.legIntermediate, + legAlight: legV2.timedLeg.legAlight, + service: timedLegServiceV1, + legTrack: legV2.timedLeg.legTrack, + }; + legV1.timedLeg = timedLegV1; + } + + trip1.tripLeg.push(legV1); + }); + + return trip1; + } + + // Keep minimum required nodes needed for nova service, strip everything else + public static cleanTripForFareRequest(trip: OJP_Types.OJPv1_TripSchema) { + trip.tripLeg.forEach(leg => { + if (leg.continuousLeg) { + leg.continuousLeg = { + legStart: { + name: leg.continuousLeg.legStart.name, + }, + legEnd: { + name: leg.continuousLeg.legEnd.name, + }, + service: { + personalMode: 'foot', + personalModeOfOperation: 'own', + }, + duration: leg.continuousLeg.duration, + }; + } + + if (leg.transferLeg) { + leg.transferLeg = { + transferType: leg.transferLeg.transferType, + legStart: { + name: leg.transferLeg.legStart.name, + }, + legEnd: { + name: leg.transferLeg.legEnd.name, + }, + duration: leg.transferLeg.duration, + }; + } + + if (leg.timedLeg) { + const newLegIntermediates = leg.timedLeg.legIntermediates.map(el => { + const newLeg = { + stopPointRef: el.stopPointRef, + stopPointName: el.stopPointName, + serviceArrival: el.serviceArrival, + serviceDeparture: el.serviceDeparture, + }; + + return newLeg; + }); + + leg.timedLeg = { + legBoard: { + stopPointRef: leg.timedLeg.legBoard.stopPointRef, + stopPointName: leg.timedLeg.legBoard.stopPointName, + serviceDeparture: leg.timedLeg.legBoard.serviceDeparture, + }, + legIntermediates: newLegIntermediates, + legAlight: { + stopPointRef: leg.timedLeg.legAlight.stopPointRef, + stopPointName: leg.timedLeg.legAlight.stopPointName, + serviceArrival: leg.timedLeg.legAlight.serviceArrival, + }, + service: { + operatingDayRef: leg.timedLeg.service.operatingDayRef, + journeyRef: leg.timedLeg.service.journeyRef, + lineRef: leg.timedLeg.service.lineRef, + directionRef: leg.timedLeg.service.directionRef, + mode: leg.timedLeg.service.mode, + publishedLineName: leg.timedLeg.service.publishedLineName, + attribute: leg.timedLeg.service.attribute, + operatorRef: leg.timedLeg.service.operatorRef, + }, + }; + } + }); + } +} diff --git a/src/helpers/request-helpers.ts b/src/helpers/request-helpers.ts new file mode 100644 index 00000000..6190e183 --- /dev/null +++ b/src/helpers/request-helpers.ts @@ -0,0 +1,74 @@ +import axios, { AxiosHeaders, AxiosRequestConfig } from "axios"; + +import { SDK } from "../sdk"; + +import { HTTPConfig, XML_Config } from "../types/_all"; +import { OJP_RequestType } from "../types/request"; + +export class RequestHelpers { + public static computeRequestTimestamp() { + const now = new Date(); + const requestTimestamp = now.toISOString(); + + return requestTimestamp; + } + + public static async computeResponse(request: OJP_RequestType, sdk: SDK<'1.0'> | SDK<'2.0'>, xmlConfig: XML_Config): Promise { + const requestXML = (() => { + if (request.mockRequestXML) { + // console.log('TR: using mock request XML'); + return request.mockRequestXML; + } + + const xml = request.buildRequestXML(sdk.language, sdk.requestorRef, xmlConfig); + return xml; + })(); + + request.requestInfo.requestDateTime = new Date(); + request.requestInfo.requestXML = requestXML; + + const responseXML: string = await (async () => { + if (request.mockResponseXML) { + // console.log('TR: using mock response XML'); + return request.mockResponseXML; + } + + const xml = await RequestHelpers.fetchResponseXML(requestXML, sdk.httpConfig); + return xml; + })(); + + request.requestInfo.responseDateTime = new Date(); + request.requestInfo.responseXML = responseXML; + + return responseXML; + } + + private static async fetchResponseXML(requestXML: string, httpConfig: HTTPConfig): Promise { + const headers = new AxiosHeaders(); + headers.set('Accept', 'application/xml'); + headers.set('Content-Type', 'application/xml'); + + if (httpConfig.authToken !== null) { + headers.set('Authorization', 'Bearer ' + httpConfig.authToken); + } + + const requestConfig: AxiosRequestConfig = { + method: 'POST', + url: httpConfig.url, + headers: headers, + }; + + if (httpConfig.url.startsWith('http://localhost')) { + requestConfig.method = 'GET'; + } + + if (requestConfig.method === 'POST') { + requestConfig.data = requestXML; + } + + const response = await axios.request(requestConfig); + const responseXML = response.data as string; + + return responseXML; + } +} diff --git a/src/helpers/xml-helpers.ts b/src/helpers/xml-helpers.ts deleted file mode 100644 index 6cd78b01..00000000 --- a/src/helpers/xml-helpers.ts +++ /dev/null @@ -1,30 +0,0 @@ -export class XML_Helpers { - // from https://stackoverflow.com/a/47317538 - public static prettyPrintXML(sourceXml: string): string { - var xmlDoc = new DOMParser().parseFromString(sourceXml, 'application/xml'); - var xsltDoc = new DOMParser().parseFromString([ - '', - ' ', - ' ', // change to just text() to strip space in text nodes - ' ', - ' ', - ' ', - ' ', - ' ', - ' ', - '', - ].join("\n"), 'application/xml'); - - try { - var xsltProcessor = new XSLTProcessor(); - // TODO - check what's wrong in Firefox, why this fails - xsltProcessor.importStylesheet(xsltDoc); - var resultDoc = xsltProcessor.transformToDocument(xmlDoc); - var resultXml = new XMLSerializer().serializeToString(resultDoc); - return resultXml - } catch(error) { - console.error('XML_Helpers.prettyPrintXML - fails, see TODO'); - return sourceXml - } - } -} diff --git a/src/helpers/xml/builder.ts b/src/helpers/xml/builder.ts new file mode 100644 index 00000000..6928d3c8 --- /dev/null +++ b/src/helpers/xml/builder.ts @@ -0,0 +1,139 @@ +import * as OJP_Types from 'ojp-shared-types'; + +import { XMLBuilder } from "fast-xml-parser"; +import { XML_Config } from "../../types/_all"; +import { DefaultXML_Config } from "../../constants"; + +// TODO - keep it abstract, handle the callback if needed +function transformKeys>(obj: T, path: string[] = [], callback:(key: string, value: any, path: string[]) => string): Record { + // Strip @_ generated by other OJP response + if ((obj !== null) && (typeof obj === 'object') && !Array.isArray(obj)) { + for (const key in obj) { + if (key.includes('@_')) { + delete obj[key]; + } + } + } + + return Object.entries(obj).reduce((acc, [key, value]) => { + const newKey = callback(key, value, path); + const newPath = path.concat([newKey]); + + acc[newKey] = (() => { + if (value instanceof Object) { + if (Array.isArray(value)) { + (value as any[]).forEach((el, idx) => { + if (el instanceof Object) { + value[idx] = transformKeys(el, newPath, callback); + } + }); + } else { + return transformKeys(value, newPath, callback); + } + } + + return value; + })(); + + return acc; + }, {} as Record); +} + +export function buildRootXML(obj: Record, xmlConfig: XML_Config = DefaultXML_Config, callbackTransformedObj: ((obj: Record) => void) | null = null): string { + const wrapperNodeName = 'OJP'; + + const rootXML = buildXML(obj, wrapperNodeName, xmlConfig, (objTransformed => { + const rootKeys = Object.keys(objTransformed); + if (typeof objTransformed === 'object' && (rootKeys.length === 1)) { + const rootKeyParts = rootKeys[0].split(':'); + if (rootKeyParts.length === 2) { + // HACK - OJP v1.0 - keep the root element without namespaces + const oldKey = rootKeys[0]; + const newKey = rootKeyParts[1]; + + objTransformed[newKey] = objTransformed[oldKey]; + delete objTransformed[oldKey]; + } + } + + if (callbackTransformedObj) { + callbackTransformedObj(objTransformed); + } + })); + + const wrapperRootXML_Lines: string[] = [ + '', + rootXML, + ]; + + const wrapperRootXML = wrapperRootXML_Lines.join('\n'); + + return wrapperRootXML; +} + +export function buildXML(obj: Record, wrapperNodeName: string = 'OJP', xmlConfig: XML_Config = DefaultXML_Config, callbackTransformedObj: ((obj: Record) => void) | null = null): string { + const objCopy = JSON.parse(JSON.stringify(obj)); + + const objTransformed = transformKeys(objCopy, [wrapperNodeName], (key: string, value: any, path: string[]) => { + // capitalize first letter + let newKey = key.charAt(0).toUpperCase() + key.slice(1); + + // ensure namespaces + const parentKey = path.at(-1) ?? null; + if (parentKey !== null) { + const tagNS_Key = parentKey.replace(/^.*:/, '') + '.' + newKey; + const tagNS = (() => { + const tagNSConfig = OJP_Types.OpenAPI_Dependencies.MapNS_Tags[tagNS_Key] ?? 'ojp'; + if (xmlConfig.defaultNS === tagNSConfig) { + return ''; + } + + return tagNSConfig + ':'; + })(); + + if (tagNS !== null) { + newKey = tagNS + newKey; + } + } + + return newKey; + }); + + if (callbackTransformedObj) { + callbackTransformedObj(objTransformed); + } + + const xmlParts: string[] = []; + + // By convention + const isRootNode = wrapperNodeName === 'OJP'; + if (isRootNode) { + const xmlAttrs: string[] = []; + for (const ns in xmlConfig.mapNS) { + const url = xmlConfig.mapNS[ns]; + const attrNS = ns === xmlConfig.defaultNS ? 'xmlns' : ('xmlns:' + ns); + const xmlAttr = attrNS + '="' + url + '"'; + xmlAttrs.push(xmlAttr); + } + + const xmlVersionAttr = 'version="' + xmlConfig.ojpVersion + '"'; + xmlAttrs.push(xmlVersionAttr); + + xmlParts.push(''); + } else { + xmlParts.push('<' + wrapperNodeName + '>'); + } + + const builder = new XMLBuilder({ + format: true, + ignoreAttributes: false, + suppressEmptyNode: true, + }); + xmlParts.push(builder.build(objTransformed)); + + xmlParts.push(''); + + const xmlS = xmlParts.join('\n'); + + return xmlS; +} diff --git a/src/helpers/xml/parser.ts b/src/helpers/xml/parser.ts new file mode 100644 index 00000000..c4b36a4c --- /dev/null +++ b/src/helpers/xml/parser.ts @@ -0,0 +1,174 @@ +import * as OJP_Types from 'ojp-shared-types'; + +import { XMLParser } from "fast-xml-parser"; +import { XmlSerializer } from '../../models/xml-serializer'; + +const MapParentArrayTags: Record = {}; +for (const key in OJP_Types.OpenAPI_Dependencies.MapArrayTags) { + const keyParts = key.split('.'); + if (keyParts.length !== 2) { + console.error('invalid OpenAPI_Dependencies.MapArrayTags key: ' + key); + continue; + } + + const parentTagName = keyParts[0]; + const childTagName = keyParts[1]; + + if (!(parentTagName in MapParentArrayTags)) { + MapParentArrayTags[parentTagName] = []; + } + + MapParentArrayTags[parentTagName].push(childTagName); +} + +export function transformJsonInPlace(root: unknown): void { + const hashTextKey = '#text'; + + function isHashKeyObject(v: unknown): v is Record { + if ((typeof v) !== 'object') { + return false; + } + if (Array.isArray(v)) { + return false; + } + + const hasKey = hashTextKey in (v as any); + + return hasKey; + } + + function normalizeValue(value: unknown, path: string[]): unknown { + if (path.length < 2) { + return value; + } + + const pathSuffix = path.slice(-2).join('.'); + + if ((pathSuffix in OJP_Types.OpenAPI_Dependencies.MapStringValues) && (typeof(value) !== 'string')) { + return String(value); + } + + return value; + } + + function visit(node: unknown, path: string[]): void { + const currentNodeKey = path.at(-1); + + if (Array.isArray(node)) { + for (let i = 0; i < node.length; i++) { + visit(node[i], path); + } + return; + } + + // Objects + if (node && typeof node === 'object') { + const rec = node as Record; + const keys = Object.keys(rec); + + for (const key of keys) { + let value = rec[key]; + const valuePath = [...path, key]; + + // Case 1: check for #text property values + if (isHashKeyObject(value)) { + const inner = value as Record; + + // hashTextKey -> main value for prop1 + rec[key] = inner[hashTextKey]; + + // other props -> 'prop1.other', etc. + for (const innerKey of Object.keys(inner)) { + if (innerKey === hashTextKey) { + continue; + } + const flatKey = `${key}.${innerKey}`; + rec[flatKey] = inner[innerKey]; + } + + // Do NOT recurse into old inner object; we've flattened it + continue; + } + + // Case 2: if arrays, check for #text property values in the children + if (Array.isArray(value) && value.length > 0 && value.every(isHashKeyObject)) { + const arr = value as Array>; + const basePath = valuePath; // path to prop1 + + // prop1 -> array of normalized hashTextKey values + rec[key] = arr.map(o => normalizeValue(o[hashTextKey], basePath)); + + // collect extra keys + const extraKeys = new Set(); + for (const o of arr) { + for (const k of Object.keys(o)) { + if (k !== hashTextKey) { + extraKeys.add(k); + } + } + } + + // prop1.other -> array of normalized 'other' values + for (const extraKey of extraKeys) { + const flatKey = `${key}.${extraKey}`; + // no need to normalize attributes to strings + rec[flatKey] = arr.map(o => o[extraKey]); + } + + continue; + } + + // Normal property: normalize then recurse + value = normalizeValue(value, valuePath); + rec[key] = value; + visit(value, valuePath); + } + + // Enforce arrays, create empty nodes if needed + if (currentNodeKey !== undefined) { + const expectedPropAsArray = MapParentArrayTags[currentNodeKey] ?? []; + expectedPropAsArray.forEach(prop => { + if (!(prop in rec)) { + rec[prop] = []; + } + // NOTE for later: do not try to enforce an array of an existing property + // this was handled in the parsing via isArrayHandler. + // MapParentArrayTags has low granularity + }); + } + } + } + + visit(root, []); +} + +const transformTagNameHandler = (tagName: string) => { + return XmlSerializer.transformTagName(tagName); +}; + +const isArrayHandler = (tagName: string, jPath: string) => { + const jPathParts = jPath.split('.'); + if (jPathParts.length >= 2) { + const pathPart = jPathParts.slice(-2).join('.'); + if (pathPart in OJP_Types.OpenAPI_Dependencies.MapArrayTags) { + return true; + } + } + + return false; +}; + +export function parseXML(xml: string, parentPath: string = ''): T { + const parser = new XMLParser({ + ignoreAttributes: false, + removeNSPrefix: true, + transformTagName: transformTagNameHandler, + isArray: isArrayHandler, + // parseTagValue: false, + }); + + const response = parser.parse(xml) as T; + transformJsonInPlace(response); + + return response; +} diff --git a/src/index.ts b/src/index.ts index 962d2da2..676f795d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,34 +1,46 @@ -export * from './constants' - -export * from './fare/fare' -export * from './fare/nova-request' - -export * from './helpers/date-helpers' -export * from './helpers/xml-helpers' - -export * from './journey/journey-service' -export * from './journey/public-transport-mode' - -export * from './location/location' -export * from './location/geoposition-bbox' -export * from './location/geoposition' - -export * from './shared/duration' - -export * from './situation/situation-element' - -export * from './stop-event/stop-event' - -export * from './request/index' - -export * from './trip/index' - -export * from './types/lir-restrictions.type' -export * from './types/mode-of-transport.type' -export * from './types/individual-mode.types' -export * from './types/journey-points' -export * from './types/language-type' -export * from './types/stage-config' -export * from './types/stop-event-type' -export * from './types/stop-point-type' -export * from './types/trip-mode-type' +export { SDK } from './sdk'; + +export { + SDK_VERSION, + DefaultXML_Config, XML_BuilderConfigOJPv1, XML_ParserConfigOJPv1, +} from './constants'; + +export { HTTPConfig, Language, RequestInfo, OJP_VERSION, AnySDK } from "./types/_all"; + +export { OJPv1_FareRequest } from './versions/legacy/v1/requests/fr'; +export { OJPv1_LocationInformationRequest } from './versions/legacy/v1/requests/lir'; +export { OJPv1_StopEventRequest } from './versions/legacy/v1/requests/ser'; +export { OJPv1_TripInfoRequest } from './versions/legacy/v1/requests/tir'; +export { OJPv1_TripRequest } from './versions/legacy/v1/requests/tr'; +export { LocationInformationRequest } from './versions/current/requests/lir'; +export { StopEventRequest } from './versions/current/requests/ser'; +export { TripInfoRequest } from './versions/current/requests/tir'; +export { TripRequest } from './versions/current/requests/tr'; +export { TripRefineRequest } from './versions/current/requests/trr'; + +export { + FareRequestResponse, + LocationInformationRequestResponse, + OJPv1_LocationInformationRequestResponse, + StopEventRequestResponse, + OJPv1_StopEventRequestResponse, + TripInfoRequestResponse, + OJPv1_TripInfoRequestResponse, + TripRefineRequestResponse, + TripRequestResponse, +} from "./types/response"; + +export { DateHelpers } from './helpers/date-helpers'; + +export { + XmlSerializer, +} from './models/xml-serializer'; + +export { GeoPosition } from './models/geoposition'; + +export { + Place, + PlaceResult, + StopEventResult, + Trip, +} from "./models/ojp"; diff --git a/src/journey/journey-service.ts b/src/journey/journey-service.ts deleted file mode 100644 index 6231b2f3..00000000 --- a/src/journey/journey-service.ts +++ /dev/null @@ -1,219 +0,0 @@ -import { XMLElement } from 'xmlbuilder'; - -import { PublicTransportMode } from './public-transport-mode' - -import { StopPlace } from '../location/stopplace'; -import { PtSituationElement } from '../situation/situation-element'; -import { TreeNode } from '../xml/tree-node'; - -interface ServiceAttribute { - code: string - text: string - extra: Record -} - -export class JourneyService { - public journeyRef: string; - public lineRef: string | null; - public directionRef: string | null; - public operatingDayRef: string | null; - - public ptMode: PublicTransportMode; - public agencyID: string; - public originStopPlace: StopPlace | null; - public destinationStopPlace: StopPlace | null; - public serviceLineNumber: string | null - public journeyNumber: string | null - - public siriSituationIds: string[] - public siriSituations: PtSituationElement[] - - public serviceAttributes: Record - - public hasCancellation: boolean | null - public hasDeviation: boolean | null - public isUnplanned: boolean | null - - constructor(journeyRef: string, ptMode: PublicTransportMode, agencyID: string) { - this.journeyRef = journeyRef; - this.lineRef = null; - this.operatingDayRef = null; - this.directionRef = null; - - this.ptMode = ptMode; - this.agencyID = agencyID; - - this.originStopPlace = null; - this.destinationStopPlace = null; - this.serviceLineNumber = null; - this.journeyNumber = null; - - this.siriSituationIds = []; - this.siriSituations = []; - - this.serviceAttributes = {}; - - this.hasCancellation = null; - this.hasDeviation = null; - this.isUnplanned = null; - } - - public static initWithTreeNode(treeNode: TreeNode): JourneyService | null { - const serviceTreeNode = treeNode.findChildNamed('Service'); - if (serviceTreeNode === null) { - return null; - } - - const journeyRef = serviceTreeNode.findTextFromChildNamed('JourneyRef'); - const ptMode = PublicTransportMode.initWithServiceTreeNode(serviceTreeNode); - - - const agencyID = (() => { - const ojpAgencyId = serviceTreeNode.findTextFromChildNamed('OperatorRef'); - if (ojpAgencyId === null) { - return 'n/a OperatorRef' - } - - return ojpAgencyId.replace('ojp:', ''); - })(); - - if (!(journeyRef && ptMode)) { - return null; - } - - const legService = new JourneyService(journeyRef, ptMode, agencyID); - - legService.lineRef = serviceTreeNode.findTextFromChildNamed('siri:LineRef'); - legService.directionRef = serviceTreeNode.findTextFromChildNamed('siri:DirectionRef'); - legService.operatingDayRef = serviceTreeNode.findTextFromChildNamed('OperatingDayRef'); - - legService.originStopPlace = StopPlace.initWithServiceTreeNode(serviceTreeNode, 'Origin'); - legService.destinationStopPlace = StopPlace.initWithServiceTreeNode(serviceTreeNode, 'Destination'); - - legService.serviceLineNumber = serviceTreeNode.findTextFromChildNamed('PublishedLineName/Text'); - legService.journeyNumber = treeNode.findTextFromChildNamed('Extension/PublishedJourneyNumber/Text'); - - legService.siriSituationIds = []; - const situationFullRefTreeNodes = serviceTreeNode.findChildrenNamed('SituationFullRef'); - situationFullRefTreeNodes.forEach(situationFullRefTreeNode => { - const situationNumber = situationFullRefTreeNode.findTextFromChildNamed('siri:SituationNumber'); - if (situationNumber) { - legService.siriSituationIds.push(situationNumber); - } - }); - - legService.serviceAttributes = {}; - serviceTreeNode.findChildrenNamed('Attribute').forEach(attributeTreeNode => { - let code = attributeTreeNode.findTextFromChildNamed('Code'); - if (code === null) { - console.error('ERROR - cant find code for Attribute'); - console.log(attributeTreeNode); - return; - } - - if (code.startsWith('A_')) { - // normalize HRDF *A attributes, strip A__ chars - code = code.replace(/A_*/, ''); - } - - const text = attributeTreeNode.findTextFromChildNamed('Text/Text'); - - if (text === null) { - console.error('ERROR - cant find code/text for Attribute'); - console.log(attributeTreeNode); - return; - } - - const serviceAttribute: ServiceAttribute = { - code: code, - text: text, - extra: {}, - }; - - attributeTreeNode.children.forEach(childTreeNode => { - if (childTreeNode.name.startsWith('siri:')) { - const extraAttributeParts = childTreeNode.name.split('siri:'); - if (extraAttributeParts.length !== 2) { - return; - } - const extraAttributeKey = extraAttributeParts[1]; - const extraAttributeValue = childTreeNode.text; - - if (extraAttributeValue === null) { - return; - } - - serviceAttribute.extra[extraAttributeKey] = extraAttributeValue; - } - }); - - legService.serviceAttributes[code] = serviceAttribute; - }); - - const cancelledNode = serviceTreeNode.findChildNamed('Cancelled'); - if (cancelledNode) { - legService.hasCancellation = cancelledNode.text === 'true'; - } - - const deviationNode = serviceTreeNode.findChildNamed('Deviation'); - if (deviationNode) { - legService.hasDeviation = deviationNode.text === 'true'; - } - - const unplannedNode = serviceTreeNode.findChildNamed('Unplanned'); - if (unplannedNode) { - legService.isUnplanned = unplannedNode.text === 'true'; - } - - return legService; - } - - public formatServiceName(): string { - if (this.ptMode.isDemandMode) { - return this.serviceLineNumber ?? 'OnDemand'; - } - - const nameParts: string[] = [] - - if (this.serviceLineNumber) { - if (!this.ptMode.isRail()) { - nameParts.push(this.ptMode.shortName ?? this.ptMode.ptMode) - } - - nameParts.push(this.serviceLineNumber) - nameParts.push(this.journeyNumber ?? '') - } else { - nameParts.push(this.ptMode.shortName ?? this.ptMode.ptMode) - } - - nameParts.push('(' + this.agencyID + ')') - - return nameParts.join(' ') - } - - public addToXMLNode(parentNode: XMLElement) { - const serviceNode = parentNode.ele('ojp:Service'); - - serviceNode.ele('ojp:JourneyRef', this.journeyRef); - - if (this.lineRef) { - serviceNode.ele('LineRef', this.lineRef); - } - if (this.directionRef) { - serviceNode.ele('DirectionRef', this.directionRef); - } - - this.ptMode.addToXMLNode(serviceNode); - - if (this.serviceLineNumber) { - serviceNode.ele('ojp:PublishedLineName').ele('ojp:Text', this.serviceLineNumber); - } - - let agencyID_s = this.agencyID; - if (!agencyID_s.startsWith('ojp:')) { - agencyID_s = 'ojp:' + agencyID_s; - } - - serviceNode.ele('ojp:OperatorRef', agencyID_s); - } -} diff --git a/src/journey/public-transport-mode.ts b/src/journey/public-transport-mode.ts deleted file mode 100644 index 58d66d23..00000000 --- a/src/journey/public-transport-mode.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { XMLElement } from 'xmlbuilder'; - -import { TreeNode } from '../xml/tree-node'; - -interface PublicTransportSubMode { - key: string - value: string -} - -export class PublicTransportMode { - public ptMode: string - public subMode: PublicTransportSubMode | null - public name: string | null - public shortName: string | null - public isDemandMode: boolean - - constructor(ptMode: string, subMode: PublicTransportSubMode | null, name: string | null, shortName: string | null) { - this.ptMode = ptMode; - this.subMode = subMode; - this.name = name; - this.shortName = shortName; - this.isDemandMode = false; - } - - public static initWithServiceTreeNode(serviceTreeNode: TreeNode): PublicTransportMode | null { - const ptModeNode = serviceTreeNode.findChildNamed('Mode'); - if (ptModeNode === null) { - return null; - } - - const ptModeS = ptModeNode.findTextFromChildNamed('PtMode'); - if (ptModeS === null) { - return null; - } - - let subMode: PublicTransportSubMode | null = null; - const subModeNode = ptModeNode.children.find(el => el.name.toLowerCase().endsWith('submode')) ?? null; - if (subModeNode !== null) { - subMode = { - key: subModeNode.name.replace('siri:', ''), - value: subModeNode.text ?? 'subMode text n/a', - }; - } - - const name = serviceTreeNode.findTextFromChildNamed('Mode/Name/Text'); - const shortName = serviceTreeNode.findTextFromChildNamed('Mode/ShortName/Text'); - const publicTransportMode = new PublicTransportMode(ptModeS, subMode, name, shortName); - - const busSubmode = serviceTreeNode.findTextFromChildNamed('Mode/siri:BusSubmode') - // TODO - do we still need this? - // publicTransportMode.isDemandMode = busSubmode !== null; - publicTransportMode.isDemandMode = (busSubmode === 'demandAndResponseBus' || busSubmode === 'unknown'); - - return publicTransportMode; - } - - public isRail(): boolean { - return this.ptMode === 'rail'; - } - - public hasPrecisePolyline(): boolean { - if (this.isDemandMode) { - return true; - } - - const ignorePtModes: string[] = [ - 'bus', - 'tram' - ]; - if (ignorePtModes.indexOf(this.ptMode) !== -1) { - return false; - } - - return true; - } - - public addToXMLNode(parentNode: XMLElement) { - const modeNode = parentNode.ele('ojp:Mode'); - modeNode.ele('ojp:PtMode', this.ptMode); - - if (this.name) { - modeNode.ele('ojp:Name').ele('ojp:Text', this.name); - } - - if (this.shortName) { - modeNode.ele('ojp:ShortName').ele('ojp:Text', this.shortName); - } - } -} diff --git a/src/location/address.ts b/src/location/address.ts deleted file mode 100644 index c4c37057..00000000 --- a/src/location/address.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { TreeNode } from "../xml/tree-node"; - -export class Address { - public addressCode: string - public addressName: string | null - - public topographicPlaceRef: string | null - public topographicPlaceName: string | null - - public street: string | null - public houseNumber: string | null - public postCode: string | null - - constructor(addressCode: string) { - this.addressCode = addressCode - - this.addressName = null; - this.topographicPlaceRef = null; - this.topographicPlaceName = null; - this.street = null; - this.houseNumber = null; - this.postCode = null; - } - - public static initWithLocationTreeNode(locationTreeNode: TreeNode): Address | null { - const addressTreeNode = locationTreeNode.findChildNamed('Address'); - if (addressTreeNode === null) { - return null; - } - - const addressCode = addressTreeNode.findTextFromChildNamed('AddressCode'); - if (addressCode === null) { - return null - } - - const address = new Address(addressCode); - - address.addressName = addressTreeNode.findTextFromChildNamed('AddressName/Text') - - address.topographicPlaceRef = addressTreeNode.findTextFromChildNamed('TopographicPlaceRef'); - address.topographicPlaceName = addressTreeNode.findTextFromChildNamed('TopographicPlaceName'); - - address.street = addressTreeNode.findTextFromChildNamed('Street'); - address.houseNumber = addressTreeNode.findTextFromChildNamed('HouseNumber'); - address.postCode = addressTreeNode.findTextFromChildNamed('PostCode'); - - return address; - } -} diff --git a/src/location/geoposition-bbox.ts b/src/location/geoposition-bbox.ts deleted file mode 100644 index 2e9cf58b..00000000 --- a/src/location/geoposition-bbox.ts +++ /dev/null @@ -1,181 +0,0 @@ -import * as GeoJSON from 'geojson' - -import { GeoPosition } from "./geoposition"; - -export class GeoPositionBBOX { - public southWest: GeoPosition - public northEast: GeoPosition - public center: GeoPosition - - public minLongitude: number - public minLatitude: number - public maxLongitude: number - public maxLatitude: number - - constructor(geoPositions: GeoPosition | GeoPosition[]) { - if (!Array.isArray(geoPositions)) { - geoPositions = [geoPositions]; - } - - this.minLongitude = Math.min.apply(null, geoPositions.map(gp => gp.longitude)); - this.minLatitude = Math.min.apply(null, geoPositions.map(gp => gp.latitude)); - - this.maxLongitude = Math.max.apply(null, geoPositions.map(gp => gp.longitude)); - this.maxLatitude = Math.max.apply(null, geoPositions.map(gp => gp.latitude)); - - this.southWest = new GeoPosition(this.minLongitude, this.minLatitude); - this.northEast = new GeoPosition(this.maxLongitude, this.maxLatitude); - - const centerX = (this.southWest.longitude + this.northEast.longitude) / 2; - const centerY = (this.southWest.latitude + this.northEast.latitude) / 2; - this.center = new GeoPosition(centerX, centerY); - } - - public static initFromGeoPosition(geoPosition: GeoPosition, width_x_meters: number, width_y_meters: number): GeoPositionBBOX { - // 7612m for 0.1deg long - for Switzerland, latitude 46.8 - // 11119m for 0.1deg lat - const spanLongitude = width_x_meters * 0.1 / 7612; - const spanLatitude = width_y_meters * 0.1 / 11119; - - const southWest = new GeoPosition(geoPosition.longitude - spanLongitude / 2, geoPosition.latitude - spanLatitude / 2); - const northEast = new GeoPosition(geoPosition.longitude + spanLongitude / 2, geoPosition.latitude + spanLatitude / 2); - - const bbox = new GeoPositionBBOX([southWest, northEast]); - return bbox; - } - - public static initFromGeoJSONFeatures(features: GeoJSON.Feature[]): GeoPositionBBOX { - const bbox = new GeoPositionBBOX([]) - - features.forEach(feature => { - const featureBBOX = feature.bbox ?? null; - if (featureBBOX) { - const bboxSW = new GeoPosition(featureBBOX[0], featureBBOX[1]) - bbox.extend(bboxSW) - - const bboxNE = new GeoPosition(featureBBOX[2], featureBBOX[3]) - bbox.extend(bboxNE) - } else { - if (feature.geometry.type === 'LineString') { - const points = feature.geometry as GeoJSON.LineString; - points.coordinates.forEach(pointCoords => { - const geoPosition = new GeoPosition(pointCoords[0], pointCoords[1]); - bbox.extend(geoPosition); - }); - } - } - }) - - return bbox; - } - - extend(geoPositions: GeoPosition | GeoPosition[]) { - if (!Array.isArray(geoPositions)) { - geoPositions = [geoPositions]; - } - - geoPositions.forEach(geoPosition => { - const southWestLongitude = Math.min(this.southWest.longitude, geoPosition.longitude); - const southWestLatitude = Math.min(this.southWest.latitude, geoPosition.latitude); - const northEastLongitude = Math.max(this.northEast.longitude, geoPosition.longitude); - const northEastLatitude = Math.max(this.northEast.latitude, geoPosition.latitude); - - this.southWest = new GeoPosition(southWestLongitude, southWestLatitude); - this.northEast = new GeoPosition(northEastLongitude, northEastLatitude); - }); - - const centerX = (this.southWest.longitude + this.northEast.longitude) / 2; - const centerY = (this.southWest.latitude + this.northEast.latitude) / 2; - this.center = new GeoPosition(centerX, centerY); - - this.minLongitude = this.southWest.longitude; - this.minLatitude = this.southWest.latitude; - this.maxLongitude = this.northEast.longitude; - this.maxLatitude = this.northEast.latitude; - } - - asFeatureBBOX(): [number, number, number, number] { - const bbox: [number, number, number, number] = [ - this.southWest.longitude, - this.southWest.latitude, - this.northEast.longitude, - this.northEast.latitude, - ] - - return bbox - } - - isValid(): boolean { - if (this.southWest.longitude === Infinity) { - return false - } - - return true; - } - - containsGeoPosition(geoPosition: GeoPosition): boolean { - if (geoPosition.longitude < this.southWest.longitude) { - return false - } - - if (geoPosition.latitude < this.southWest.latitude) { - return false - } - - if (geoPosition.longitude > this.northEast.longitude) { - return false - } - - if (geoPosition.latitude > this.northEast.latitude) { - return false - } - - return true - } - - public computeWidth(): number { - const northWest = new GeoPosition(this.southWest.longitude, this.northEast.latitude); - const southEast = new GeoPosition(this.northEast.longitude, this.southWest.latitude); - - const distLongitude1 = southEast.distanceFrom(this.southWest); - const distLongitude2 = this.northEast.distanceFrom(northWest); - const distance = (distLongitude1 + distLongitude2) / 2; - - return distance; - } - - public computeHeight(): number { - const northWest = new GeoPosition(this.southWest.longitude, this.northEast.latitude); - const southEast = new GeoPosition(this.northEast.longitude, this.southWest.latitude); - - const distLatitude1 = southEast.distanceFrom(this.northEast); - const distLatitude2 = this.southWest.distanceFrom(northWest); - const distance = (distLatitude1 + distLatitude2) / 2; - - return distance; - } - - public asPolygon(): GeoJSON.Polygon { - const bboxSW = this.southWest; - const bboxNW = new GeoPosition(this.southWest.longitude, this.northEast.latitude); - const bboxNE = this.northEast; - const bboxSE = new GeoPosition(this.northEast.longitude, this.southWest.latitude); - - const coords: GeoJSON.Position[] = [ - bboxSW.asPosition(), - bboxNW.asPosition(), - bboxNE.asPosition(), - bboxSE.asPosition(), - bboxSW.asPosition(), - ]; - - const polygon: GeoJSON.Polygon = { - type: "Polygon", - coordinates: [ - coords - ] - }; - - return polygon; - } -} diff --git a/src/location/geoposition.ts b/src/location/geoposition.ts deleted file mode 100644 index 336c23e1..00000000 --- a/src/location/geoposition.ts +++ /dev/null @@ -1,95 +0,0 @@ -import * as GeoJSON from 'geojson' -import { TreeNode } from "../xml/tree-node"; - -export class GeoPosition { - public longitude: number - public latitude: number - public properties: GeoJSON.GeoJsonProperties | null - - constructor(longitude: number, latitude: number) { - this.longitude = parseFloat(longitude.toFixed(6)); - this.latitude = parseFloat(latitude.toFixed(6)); - this.properties = null; - } - - public static initWithStringCoords(longitudeS: string | null, latitudeS: string | null) { - if (longitudeS === null || latitudeS === null) { - return null; - } - - const longitude = parseFloat(longitudeS); - const latitude = parseFloat(latitudeS); - - if (longitude === 0 || latitude === 0) { - return null; - } - - const geoPosition = new GeoPosition(longitude, latitude); - - return geoPosition; - } - - public static initWithLocationTreeNode(locationTreeNode: TreeNode): GeoPosition | null { - const longitudeS = locationTreeNode.findTextFromChildNamed('GeoPosition/siri:Longitude'); - const latitudeS = locationTreeNode.findTextFromChildNamed('GeoPosition/siri:Latitude'); - - const geoPosition = GeoPosition.initWithStringCoords(longitudeS, latitudeS); - return geoPosition; - } - - public static initWithFeature(feature: GeoJSON.Feature): GeoPosition | null { - if (feature.geometry.type !== 'Point') { - return null - } - - const lngLatAr = (feature.geometry as GeoJSON.Point).coordinates as [number, number] - const longitude = lngLatAr[0] - const latitude = lngLatAr[1] - - const geoPosition = new GeoPosition(longitude, latitude) - geoPosition.properties = feature.properties - - return geoPosition - } - - public asLngLat(): [number, number] { - const lnglat = [ - this.longitude, - this.latitude, - ]; - - return lnglat as [number, number]; - } - - public asLatLngString(roundCoords: boolean = true): string { - let s = '' - - if (roundCoords) { - s = this.latitude.toFixed(6) + ',' + this.longitude.toFixed(6); - } else { - s = this.latitude + ',' + this.longitude; - } - - return s - } - - public asPosition(): GeoJSON.Position { - return [this.longitude, this.latitude] - } - - // From https://stackoverflow.com/a/27943 - public distanceFrom(pointB: GeoPosition): number { - const R = 6371; // Radius of the earth in km - const dLat = (pointB.latitude - this.latitude) * Math.PI / 180; - const dLon = (pointB.longitude - this.longitude) * Math.PI / 180; - const a = - Math.sin(dLat/2) * Math.sin(dLat/2) + - Math.cos(this.latitude * Math.PI / 180) * Math.cos(pointB.latitude * Math.PI / 180) * - Math.sin(dLon/2) * Math.sin(dLon/2); - const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); - const d = R * c; - const dMeters = Math.round(d * 1000); - - return dMeters; - } -} diff --git a/src/location/location.ts b/src/location/location.ts deleted file mode 100644 index 23a6ee00..00000000 --- a/src/location/location.ts +++ /dev/null @@ -1,318 +0,0 @@ -import * as GeoJSON from 'geojson' - -import { GeoPosition } from "./geoposition"; -import { StopPlace } from "./stopplace"; -import { Address } from "./address"; -import { PointOfInterest } from "./poi"; -import { TopographicPlace } from "./topographic-place"; -import { TreeNode } from '../xml/tree-node'; - -interface NearbyLocation { - distance: number - location: Location -} - -// TODO - long term: subclass from Location? -export type LocationType = 'stop' | 'address' | 'poi' | 'topographicPlace' - -const literalCoordsRegexp = /^([0-9\.]+?),([0-9\.]+?)$/; - -export class Location { - public address: Address | null - public locationName: string | null - public stopPlace: StopPlace | null - public geoPosition: GeoPosition | null - public poi: PointOfInterest | null - public topographicPlace: TopographicPlace | null - public attributes: Record - public probability: number | null - public originSystem: string | null - - constructor() { - this.address = null - this.locationName = null; - this.stopPlace = null; - this.geoPosition = null; - this.poi = null; - this.topographicPlace = null; - this.attributes = {}; - this.probability = null; - this.originSystem = null; - } - - public static initWithTreeNode(treeNode: TreeNode): Location { - const location = new Location(); - - location.address = Address.initWithLocationTreeNode(treeNode); - location.geoPosition = GeoPosition.initWithLocationTreeNode(treeNode); - location.locationName = treeNode.findTextFromChildNamed('LocationName/Text'); - location.poi = PointOfInterest.initWithLocationTreeNode(treeNode); - location.stopPlace = StopPlace.initWithLocationTreeNode(treeNode); - location.topographicPlace = TopographicPlace.initWithLocationTreeNode(treeNode); - - location.attributes = Location.computeAttributes(treeNode); - - return location; - } - - public static initWithLocationResultTreeNode(locationResultTreeNode: TreeNode): Location | null { - const locationTreeNode = locationResultTreeNode.findChildNamed('Location'); - if (locationTreeNode === null) { - return null; - } - - const location = Location.initWithTreeNode(locationTreeNode); - - const probabilityS = locationResultTreeNode.findTextFromChildNamed('Probability'); - if (probabilityS) { - location.probability = parseFloat(probabilityS); - } - - location.originSystem = locationResultTreeNode.findTextFromChildNamed('OriginSystem'); - - return location; - } - - public static initWithStopPlaceRef(stopPlaceRef: string, stopPlaceName: string = ''): Location { - const location = new Location() - location.stopPlace = new StopPlace(stopPlaceRef, stopPlaceName, null) - - return location - } - - public static initWithLngLat(longitude: number, latitude: number): Location { - const location = new Location() - location.geoPosition = new GeoPosition(longitude, latitude); - - return location - } - - private static computeAttributes(treeNode: TreeNode): Record { - const attributes: Record = {}; - - // - // - // Berner Generationenhaus - // - // carvelo2go:1c741450-02ed-412e-ce4d-bfd470da7281 - // cycleHire - // - const attributeTreeNode = treeNode.findChildNamed('Attribute'); - if (attributeTreeNode) { - attributeTreeNode.children.forEach(attributeTreeNode => { - const nodeNameParts = attributeTreeNode.name.split(':'); - const attrKey = nodeNameParts.length === 1 ? nodeNameParts[0] : nodeNameParts[1]; - - const attrValue = attributeTreeNode.computeText(); - if (attrValue !== null) { - attributes[attrKey] = attrValue; - } - }); - } - - // - // - // 1 - // 0 - // - // - const extensionAttributesTreeNode = treeNode.findChildNamed('Extension/LocationExtensionStructure'); - if (extensionAttributesTreeNode) { - extensionAttributesTreeNode.children.forEach(attributeTreeNode => { - const attrKey = attributeTreeNode.name; - attributes[attrKey] = attributeTreeNode.text; - }); - } - - return attributes; - } - - public static initWithFeature(feature: GeoJSON.Feature): Location | null { - const geoPosition = GeoPosition.initWithFeature(feature) - if (geoPosition === null) { - return null - } - - const attrs = feature.properties - if (attrs === null) { - return null - } - - const location = new Location() - location.geoPosition = geoPosition; - location.locationName = attrs['locationName'] ?? null; - - const stopPlaceRef = attrs['stopPlace.stopPlaceRef']; - if (stopPlaceRef) { - const stopPlaceName = attrs['stopPlace.stopPlaceName'] ?? null; - location.stopPlace = new StopPlace(stopPlaceRef, stopPlaceName, null) - } - - const addressCode = attrs['addressCode']; - if (addressCode) { - const address = new Address(addressCode); - address.addressName = attrs['addressName'] ?? null; - address.topographicPlaceRef = attrs['topographicPlaceRef'] ?? null; - } - - return location - } - - public static initFromLiteralCoords(inputS: string): Location | null { - let inputLiteralCoords = inputS.trim(); - // strip: parantheses (groups) - inputLiteralCoords = inputLiteralCoords.replace(/\(.+?\)/g, ''); - // strip: characters NOT IN [0..9 , .] - inputLiteralCoords = inputLiteralCoords.replace(/[^0-9\.,]/g, ''); - - const inputMatches = inputLiteralCoords.match(literalCoordsRegexp); - if (inputMatches === null) { - return null - } - - let longitude = parseFloat(inputMatches[1]) - let latitude = parseFloat(inputMatches[2]) - // In CH always long < lat - if (longitude > latitude) { - longitude = parseFloat(inputMatches[2]) - latitude = parseFloat(inputMatches[1]) - } - - const location = Location.initWithLngLat(longitude, latitude) - - // Match the content inside the () - const locationNameMatches = inputS.trim().match(/\(([^\)]*)\)?/); - if (locationNameMatches !== null) { - const locationName = locationNameMatches[1]; - location.locationName = locationName; - } - - return location - } - - asGeoJSONFeature(): GeoJSON.Feature | null { - if (this.geoPosition === null) { - return null - } - - const featureProperties: GeoJSON.GeoJsonProperties = { - }; - - const stopPlaceRef = this.stopPlace?.stopPlaceRef ?? null; - if (stopPlaceRef) { - featureProperties['stopPlace.stopPlaceRef'] = this.stopPlace?.stopPlaceRef ?? '' - featureProperties['stopPlace.stopPlaceName'] = this.stopPlace?.stopPlaceName ?? '' - featureProperties['stopPlace.topographicPlaceRef'] = this.stopPlace?.topographicPlaceRef ?? '' - } - - if (this.address) { - featureProperties['addressCode'] = this.address?.addressCode ?? '' - featureProperties['addressName'] = this.address?.addressName ?? '' - featureProperties['topographicPlaceRef'] = this.address?.topographicPlaceRef ?? '' - } - - if (this.poi) { - featureProperties['poi.name'] = this.poi.name; - featureProperties['poi.code'] = this.poi.code; - featureProperties['poi.category'] = this.poi.category; - featureProperties['poi.subcategory'] = this.poi.subCategory; - featureProperties['poi.osm.tags'] = this.poi.categoryTags.join(','); - } - - featureProperties['locationName'] = this.locationName ?? ''; - - for (let attrKey in this.attributes) { - featureProperties['OJP.Attr.' + attrKey] = this.attributes[attrKey] - } - - const feature: GeoJSON.Feature = { - type: 'Feature', - properties: featureProperties, - geometry: { - type: 'Point', - coordinates: [ - this.geoPosition.longitude, - this.geoPosition.latitude - ] - } - } - - return feature - } - - public computeLocationName(includeLiteralCoords: boolean = true): string | null { - if (this.stopPlace?.stopPlaceName) { - return this.stopPlace.stopPlaceName; - } - - if (this.topographicPlace?.name) { - return this.topographicPlace.name; - } - - if (this.poi && this.poi.name) { - return this.poi.name; - } - - if (this.locationName) { - return this.locationName; - } - - if (includeLiteralCoords && this.geoPosition) { - return this.geoPosition.asLatLngString(); - } - - return null; - } - - public findClosestLocation(otherLocations: Location[]): NearbyLocation | null { - const geoPositionA = this.geoPosition; - if (geoPositionA === null) { - return null; - } - - let closestLocation: NearbyLocation | null = null; - - otherLocations.forEach(locationB => { - const geoPositionB = locationB.geoPosition; - if (geoPositionB === null) { - return; - } - - const dAB = geoPositionA.distanceFrom(geoPositionB); - if ((closestLocation === null) || (dAB < closestLocation.distance)) { - closestLocation = { - location: locationB, - distance: dAB - } - } - }); - - return closestLocation; - } - - public getLocationType(): LocationType | null { - if (this.stopPlace) { - return 'stop'; - } - - if (this.poi) { - return 'poi'; - } - - if (this.address) { - return 'address'; - } - - if (this.topographicPlace) { - return 'topographicPlace'; - } - - return null - } - - public patchWithAnotherLocation(anotherLocation: Location) { - this.locationName = anotherLocation.locationName; - this.stopPlace = anotherLocation.stopPlace; - this.geoPosition = anotherLocation.geoPosition; - } -} diff --git a/src/location/poi.ts b/src/location/poi.ts deleted file mode 100644 index 6421acbb..00000000 --- a/src/location/poi.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { RestrictionPoiOSMTag } from "../types/lir-restrictions.type" -import { TreeNode } from "../xml/tree-node" - -const mapPoiSubCategoryIcons = >{ - service: ['atm', 'hairdresser'], - shopping: ['all', 'clothes', 'optician'], - catering: ['all'], - accommodation: ['all'], -} - -export class PointOfInterest { - public code: string - public name: string - public category: RestrictionPoiOSMTag - public subCategory: string | null - public categoryTags: string[] - - constructor(code: string, name: string, category: RestrictionPoiOSMTag, subCategory: string | null, categoryTags: string[]) { - this.code = code - this.name = name - this.category = category - this.subCategory = subCategory - this.categoryTags = categoryTags - } - - public static initWithLocationTreeNode(locationTreeNode: TreeNode): PointOfInterest | null { - const treeNode = locationTreeNode.findChildNamed('PointOfInterest'); - if (treeNode === null) { - return null; - } - - const code = treeNode.findTextFromChildNamed('PointOfInterestCode'); - const name = treeNode.findTextFromChildNamed('PointOfInterestName/Text'); - - if (!(code && name)) { - return null; - } - - const categoryTags: string[] = []; - let category: RestrictionPoiOSMTag | null = null; - let subCategory: string | null = null; - - const categoryTreeNodes = treeNode.findChildrenNamed('PointOfInterestCategory'); - categoryTreeNodes.forEach(categoryTreeNode => { - const tagValue = categoryTreeNode.findTextFromChildNamed('OsmTag/Value'); - if (tagValue) { - categoryTags.push(tagValue); - } - - const tagKey = categoryTreeNode.findTextFromChildNamed('OsmTag/Tag'); - if (tagKey === 'POI_0' || tagKey === 'amenity') { - category = tagValue as RestrictionPoiOSMTag; - } - - if (tagKey === 'POI_1') { - subCategory = tagValue; - } - }); - - if (category === null) { - console.error('PointOfInterest.initWithLocationTreeNode error - no category'); - category = 'none'; - } - - const poi = new PointOfInterest(code, name, category, subCategory, categoryTags); - return poi; - } - - // The return is a 50px image in ./src/assets/map-style-icons - // i.e. ./src/assets/map-style-icons/poi-atm.png - // icons from https://www.shareicon.net/author/adiante-apps - public computePoiMapIcon(): string { - const fallbackIcon = 'poi-unknown'; - - if (!(this.category in mapPoiSubCategoryIcons)) { - return fallbackIcon; - } - - const hasSubCategory = this.subCategory && (mapPoiSubCategoryIcons[this.category].indexOf(this.subCategory) > -1); - if (hasSubCategory) { - const mapIcon = 'poi-' + this.category + '-' + this.subCategory; - return mapIcon; - } - - const hasAllSubCategory = mapPoiSubCategoryIcons[this.category].indexOf('all') > -1; - if (hasAllSubCategory) { - const mapIcon = 'poi-' + this.category + '-all'; - return mapIcon; - } - - return fallbackIcon; - } -} diff --git a/src/location/stopplace.ts b/src/location/stopplace.ts deleted file mode 100644 index 25a4ab1c..00000000 --- a/src/location/stopplace.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { TreeNode } from "../xml/tree-node" - -// OJP reference - these are the same? -// - 8.4.5.2 StopPoint Structure -// - 8.4.5.3 StopPlace Structure -type StopType = 'StopPlace' | 'StopPoint' - -export class StopPlace { - public stopPlaceRef: string - public stopPlaceName: string | null - public topographicPlaceRef: string | null - public stopType: StopType - - constructor(stopPlaceRef: string, stopPlaceName: string | null, topographicPlaceRef: string | null, stopType: StopType = 'StopPlace') { - this.stopPlaceRef = stopPlaceRef - this.stopPlaceName = stopPlaceName - this.topographicPlaceRef = topographicPlaceRef - this.stopType = stopType - } - - public static initWithLocationTreeNode(locationTreeNode: TreeNode): StopPlace | null { - let stopType: StopType = 'StopPlace'; - - let stopPlaceRef = locationTreeNode.findTextFromChildNamed('StopPlace/StopPlaceRef'); - let stopPlaceName = locationTreeNode.findTextFromChildNamed('StopPlace/StopPlaceName/Text'); - let topographicPlaceRef = locationTreeNode.findTextFromChildNamed('StopPlace/TopographicPlaceRef'); - - // Try to build the StopPlace from StopPoint - if (stopPlaceRef === null) { - stopType = 'StopPoint'; - stopPlaceRef = locationTreeNode.findTextFromChildNamed('StopPoint/siri:StopPointRef'); - stopPlaceName = locationTreeNode.findTextFromChildNamed('StopPoint/StopPointName/Text'); - topographicPlaceRef = locationTreeNode.findTextFromChildNamed('StopPoint/TopographicPlaceRef'); - } - - // Otherwise try to see if we have a single siri:StopPointRef node - if (stopPlaceRef === null) { - stopType = 'StopPoint'; - stopPlaceRef = locationTreeNode.findTextFromChildNamed('siri:StopPointRef'); - } - - if (stopPlaceRef === null) { - return null; - } - - const stopPlace = new StopPlace(stopPlaceRef, stopPlaceName, topographicPlaceRef, stopType); - - return stopPlace; - } - - public static initWithServiceTreeNode(treeNode: TreeNode, pointType: 'Origin' | 'Destination'): StopPlace | null { - const stopPlaceRef = treeNode.findTextFromChildNamed(pointType + 'StopPointRef'); - const stopPlaceText = treeNode.findTextFromChildNamed(pointType + 'Text/Text'); - - if (!(stopPlaceRef && stopPlaceText)) { - return null; - } - - const stopPlace = new StopPlace(stopPlaceRef, stopPlaceText, null, 'StopPlace'); - return stopPlace; - } -} diff --git a/src/location/topographic-place.ts b/src/location/topographic-place.ts deleted file mode 100644 index ba7ab4f1..00000000 --- a/src/location/topographic-place.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { TreeNode } from "../xml/tree-node" - -export class TopographicPlace { - public code: string - public name: string - - constructor(code: string, name: string) { - this.code = code - this.name = name - } - - public static initWithLocationTreeNode(locationTreeNode: TreeNode): TopographicPlace | null { - const code = locationTreeNode.findTextFromChildNamed('TopographicPlace/TopographicPlaceCode'); - const name = locationTreeNode.findTextFromChildNamed('TopographicPlace/TopographicPlaceName/Text'); - - if (!(code && name)) { - return null; - } - - const topographicPlace = new TopographicPlace(code, name); - return topographicPlace; - } -} diff --git a/src/models/geoposition.ts b/src/models/geoposition.ts new file mode 100644 index 00000000..a8748773 --- /dev/null +++ b/src/models/geoposition.ts @@ -0,0 +1,94 @@ +import * as OJP_Types from 'ojp-shared-types'; + +export type GeoPositionLike = OJP_Types.GeoPositionSchema | number[] | string; + +export class GeoPosition implements OJP_Types.GeoPositionSchema { + public longitude: number; + public latitude: number; + public properties: Record; + + constructor(geoPositionArg: GeoPositionLike | number, optionalLatitude: number | null = null) { + const invalidCoords: number[] = [Infinity, Infinity]; + const coords = (() => { + if ((typeof geoPositionArg === 'number') && isNaN(geoPositionArg)) { + return invalidCoords; + } + + if ((typeof geoPositionArg === 'number') && (optionalLatitude !== null)) { + const longitude = geoPositionArg; + const latitude = optionalLatitude; + return [longitude, latitude]; + } + + if (typeof geoPositionArg === 'string') { + const stringParts = geoPositionArg.split(','); + + if (stringParts.length < 2) { + return invalidCoords; + } + + // string is of format longitude, latitude - GoogleMaps like + const longitude = parseFloat(stringParts[1]); + const latitude = parseFloat(stringParts[0]); + return [longitude, latitude]; + } + + if (Array.isArray(geoPositionArg) && (geoPositionArg.length > 1)) { + return geoPositionArg; + } + + if (typeof geoPositionArg === 'object') { + const geoPositionObj = geoPositionArg as Object; + if (geoPositionObj.hasOwnProperty('longitude') && geoPositionObj.hasOwnProperty('latitude')) { + const longitude = (geoPositionArg as OJP_Types.GeoPositionSchema).longitude; + const latitude = (geoPositionArg as OJP_Types.GeoPositionSchema).latitude; + return [Number(longitude), Number(latitude)]; + } + } + + return invalidCoords; + })(); + + this.longitude = parseFloat(coords[0].toFixed(6)); + this.latitude = parseFloat(coords[1].toFixed(6)); + this.properties = {}; + } + + public isValid() { + return (this.longitude !== Infinity) && (this.latitude !== Infinity); + } + + // From https://stackoverflow.com/a/27943 + public distanceFrom(pointB: GeoPosition): number { + const R = 6371; // Radius of the earth in km + const dLat = (pointB.latitude - this.latitude) * Math.PI / 180; + const dLon = (pointB.longitude - this.longitude) * Math.PI / 180; + const a = + Math.sin(dLat/2) * Math.sin(dLat/2) + + Math.cos(this.latitude * Math.PI / 180) * Math.cos(pointB.latitude * Math.PI / 180) * + Math.sin(dLon/2) * Math.sin(dLon/2); + const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); + const d = R * c; + const dMeters = Math.round(d * 1000); + + return dMeters; + } + + public asLatLngString(roundCoords: boolean = true): string { + let s = ''; + + if (roundCoords) { + s = this.latitude.toFixed(6) + ',' + this.longitude.toFixed(6); + } else { + s = this.latitude + ',' + this.longitude; + } + + return s; + } + + // For Mapbox LngLat constructs + public asLngLat(): [number, number] { + const coords: [number, number] = [this.longitude, this.latitude]; + return coords; + } +} diff --git a/src/models/ojp.ts b/src/models/ojp.ts new file mode 100644 index 00000000..83dc9412 --- /dev/null +++ b/src/models/ojp.ts @@ -0,0 +1,274 @@ +import * as OJP_Types from 'ojp-shared-types'; + +import { parseXML } from '../helpers/xml/parser'; + +import { GeoPosition, GeoPositionLike } from "./geoposition"; + +export class PlaceRef implements OJP_Types.PlaceRefSchema { + public stopPointRef?: string; + public stopPlaceRef?: string; + public geoPosition?: OJP_Types.GeoPositionSchema; + public name: OJP_Types.InternationalTextSchema; + + private constructor(name: OJP_Types.InternationalTextSchema) { + this.stopPointRef = undefined; + this.stopPlaceRef = undefined; + this.geoPosition = undefined; + this.name = name; + } + + // TODO - introduce a PlaceRefOrCoordsLike type that handles + // - string (currently implemented) + // - PlaceRef (and /or Place) + // - GeoPosition (and /or GeoPositionLike) + public static initWithPlaceRefsOrCoords(placeRefOrCoords: string, nameS: string | null = null): PlaceRef { + const geoPosition = new GeoPosition(placeRefOrCoords); + if (geoPosition.isValid()) { + const nameText = nameS ?? geoPosition.asLatLngString(); + const placeRef = new PlaceRef({ + text: nameText, + }); + + placeRef.geoPosition = geoPosition; + + return placeRef; + } else { + const name: OJP_Types.InternationalTextSchema = { + text: nameS ?? 'n/a', + }; + const placeRef = new PlaceRef(name); + placeRef.stopPlaceRef = placeRefOrCoords; + + return placeRef; + } + } + + public asOJPv1Schema() { + const legacyPlaceRef: OJP_Types.OJPv1_PlaceRefSchema = { + stopPointRef: this.stopPointRef, + stopPlaceRef: this.stopPlaceRef, + geoPosition: this.geoPosition, + locationName: this.name, + } + + return legacyPlaceRef; + } +} + +export class Trip implements OJP_Types.TripSchema { + public id: string; + public duration: string; + public startTime: string; + public endTime: string; + public transfers: number; + public leg: OJP_Types.LegSchema[]; + public cancelled?: boolean; + public delayed?: boolean; + public deviation?: boolean; + public infeasible?: boolean; + public unplanned?: boolean; + + private constructor( + id: string, + duration: string, + startTime: string, + endTime: string, + transfers: number, + leg: OJP_Types.LegSchema[], + cancelled?: boolean, + delayed?: boolean, + deviation?: boolean, + infeasible?: boolean, + unplanned?: boolean + ) { + this.id = id; + this.duration = duration; + this.startTime = startTime; + this.endTime = endTime; + this.transfers = transfers; + this.leg = leg; + this.cancelled = cancelled; + this.delayed = delayed; + this.deviation = deviation; + this.infeasible = infeasible; + this.unplanned = unplanned; + } + + public static initWithTripXML(rawXML: string): Trip { + const parentTagName = 'TripResult'; + const parsedTrip = parseXML<{ trip: OJP_Types.TripSchema }>(rawXML, parentTagName); + const trip = new Trip( + parsedTrip.trip.id, + parsedTrip.trip.duration, + parsedTrip.trip.startTime, + parsedTrip.trip.endTime, + parsedTrip.trip.transfers, + parsedTrip.trip.leg, + parsedTrip.trip.cancelled, + parsedTrip.trip.delayed, + parsedTrip.trip.deviation, + parsedTrip.trip.infeasible, + parsedTrip.trip.unplanned, + ); + + return trip; + } +} + +// TODO - make it genetic NearbyObject +interface NearbyPlace { + distance: number + object: Place +} + +export class Place implements OJP_Types.PlaceSchema { + public stopPoint?: OJP_Types.StopPointSchema; + public stopPlace?: OJP_Types.StopPlaceSchema; + public topographicPlace?: OJP_Types.TopographicPlaceSchema; + public pointOfInterest?: OJP_Types.PointOfInterestSchema; + public address?: OJP_Types.AddressSchema; + public name: OJP_Types.InternationalTextSchema; + public geoPosition: GeoPosition; + public mode: OJP_Types.ModeStructureSchema[]; + public attribute: OJP_Types.GeneralAttributeSchema[]; + + public placeType: OJP_Types.PlaceTypeEnum | null; + + private constructor(stopPoint: OJP_Types.StopPointSchema | undefined, stopPlace: OJP_Types.StopPlaceSchema | undefined, topographicPlace: OJP_Types.TopographicPlaceSchema | undefined, pointOfInterest: OJP_Types.PointOfInterestSchema | undefined, address: OJP_Types.AddressSchema | undefined, name: OJP_Types.InternationalTextSchema, geoPosition: GeoPosition, mode: OJP_Types.ModeStructureSchema[], attribute: OJP_Types.GeneralAttributeSchema[]) { + this.stopPoint = stopPoint; + this.stopPlace = stopPlace; + this.topographicPlace = topographicPlace; + this.pointOfInterest = pointOfInterest; + this.address = address; + this.name = name; + this.geoPosition = geoPosition; + this.mode = mode; + this.attribute = attribute; + + this.placeType = geoPosition.isValid() ? 'location' : null; + if (stopPoint || stopPlace) { + this.placeType = 'stop'; + } + if (topographicPlace) { + this.placeType = 'topographicPlace'; + } + if (pointOfInterest) { + this.placeType = 'poi'; + } + if (address) { + this.placeType = 'address'; + } + } + + public static initWithXMLSchema(placeSchema: OJP_Types.PlaceSchema): Place { + const geoPosition = new GeoPosition(placeSchema.geoPosition); + const place = new Place(placeSchema.stopPoint, placeSchema.stopPlace, placeSchema.topographicPlace, placeSchema.pointOfInterest, placeSchema.address, placeSchema.name, geoPosition, placeSchema.mode, placeSchema.attribute); + return place; + } + + public static initWithCoords(geoPositionArg: GeoPositionLike | number, optionalLatitude: number | null = null): Place { + const geoPosition = new GeoPosition(geoPositionArg, optionalLatitude); + + const name: OJP_Types.InternationalTextSchema = { + text: geoPosition.latitude + ',' + geoPosition.longitude + }; + + const place = new Place(undefined, undefined, undefined, undefined, undefined, name, geoPosition, [], []); + + return place; + } + + public static Empty() { + const name: OJP_Types.InternationalTextSchema = { + text: 'n/a Empty' + }; + const geoPosition = new GeoPosition('0,0'); + const place = new Place(undefined, undefined, undefined, undefined, undefined, name, geoPosition, [], []); + + return place; + } + + public findClosestPlace(otherPlaces: Place[]): NearbyPlace | null { + const geoPositionA = this.geoPosition; + + let closestPlace: NearbyPlace | null = null; + + otherPlaces.forEach(locationB => { + const geoPositionB = locationB.geoPosition; + if (geoPositionB === null) { + return; + } + + const dAB = geoPositionA.distanceFrom(geoPositionB); + if ((closestPlace === null) || (dAB < closestPlace.distance)) { + closestPlace = { + object: locationB, + distance: dAB + } + } + }); + + return closestPlace; + } + + // used by TR + // TODO - logic should be added to Place.initWithPlaceRefsOrCoords + public asStopPlaceRefOrCoords(): string { + const stopPlaceRef = this.stopPlace?.stopPlaceRef ?? null; + if (stopPlaceRef !== null) { + return stopPlaceRef; + } + + const coordsS = this.geoPosition.asLatLngString(); + + return coordsS; + } +} + +export class PlaceResult implements OJP_Types.PlaceResultSchema { + public place: Place; + public complete: boolean; + public probability?: number; + + private constructor(place: Place, complete: boolean, probability?: number) { + this.place = place; + this.complete = complete; + this.probability = probability; + } + + public static initWithXMLSchema(placeResultSchema: OJP_Types.PlaceResultSchema): PlaceResult { + const place = Place.initWithXMLSchema(placeResultSchema.place); + const placeResult = new PlaceResult(place, placeResultSchema.complete, placeResultSchema.probability); + return placeResult; + } + + public static initWithXML(nodeXML: string): PlaceResult { + const parentTagName = 'PlaceResult'; + const parsedObj = parseXML<{ placeResult: OJP_Types.PlaceResultSchema }>(nodeXML, parentTagName); + + const placeSchema = parsedObj.placeResult.place; + const place = Place.initWithXMLSchema(placeSchema); + + const placeResult = new PlaceResult(place, parsedObj.placeResult.complete, parsedObj.placeResult.probability); + + return placeResult; + } +} + +export class StopEventResult implements OJP_Types.StopEventResultSchema { + public id: string; + public stopEvent: OJP_Types.StopEventSchema; + + private constructor(id: string, stopEvent: OJP_Types.StopEventSchema) { + this.id = id; + this.stopEvent = stopEvent; + } + + public static initWithXML(nodeXML: string): StopEventResult { + const parentTagName = 'StopEventResult'; + const parsedObj = parseXML<{ stopEventResult: OJP_Types.StopEventResultSchema }>(nodeXML, parentTagName); + const result = new StopEventResult(parsedObj.stopEventResult.id, parsedObj.stopEventResult.stopEvent); + + return result; + } +} diff --git a/src/models/xml-serializer.ts b/src/models/xml-serializer.ts new file mode 100644 index 00000000..54348498 --- /dev/null +++ b/src/models/xml-serializer.ts @@ -0,0 +1,36 @@ +import { DefaultXML_Config } from "../constants"; +import { buildXML } from "../helpers/xml/builder"; +import { XML_Config } from "../types/_all"; + +export class XmlSerializer { + public xmlConfig: XML_Config; + + constructor(xmlConfig: XML_Config = DefaultXML_Config) { + this.xmlConfig = xmlConfig; + } + + public serialize(obj: Record, wrapperNodeName: string): string { + const xml = buildXML(obj, wrapperNodeName, this.xmlConfig); + return xml; + } + + public static transformTagName(tagName: string) { + if (tagName.startsWith('OJP')) { + return tagName; + } + + // Leave unchanged all UPPERCASE only tags + if (tagName.toUpperCase() === tagName) { + return tagName; + } + + // Convert to camelCase, strip -_ + let newTagName = tagName.replace(/[-_](.)/g, (_, char) => char.toUpperCase()) + // Ensure first letter is lowercase + newTagName = newTagName.replace(/^([A-Z])/, (match) => match.toLowerCase()); + + // console.log('transformToCamelCase: ' + tagName + '->' + newTagName); + + return newTagName; + } +} diff --git a/src/request/base-parser.ts b/src/request/base-parser.ts deleted file mode 100644 index a788b379..00000000 --- a/src/request/base-parser.ts +++ /dev/null @@ -1,112 +0,0 @@ -import * as sax from 'sax'; - -import { TreeNode } from "../xml/tree-node"; -import { IS_NODE_CLI } from '../constants'; - -export class BaseParser { - protected rootNode: TreeNode; - protected currentNode: TreeNode; - protected stack: TreeNode[]; - - private mapUriNS: Record = { - "http://www.vdv.de/ojp": "", - "http://www.siri.org.uk/siri": "siri", - }; - - constructor() { - this.rootNode = new TreeNode("root", null, {}, [], null); - this.currentNode = this.rootNode; - this.stack = []; - } - - private resetNodes() { - this.rootNode = new TreeNode("root", null, {}, [], null); - this.currentNode = this.rootNode; - this.stack = []; - } - - public parseXML(responseXMLText: string) { - if (IS_NODE_CLI) { - // 'sax' doesnt have a default export - // and "import * as sax from 'sax';" - // will fail for node CLI apps - import('sax').then((module) => { - const stream = module.default.createStream(true, { trim: true, xmlns: true }); - this._parseXML(responseXMLText, stream); - }); - } else { - const stream = sax.createStream(true, { trim: true, xmlns: true }); - this._parseXML(responseXMLText, stream); - } - } - - private _parseXML(responseXMLText: string, saxStream: sax.SAXStream) { - this.resetNodes(); - - saxStream.on('opentag', (node: sax.QualifiedTag) => { - this.onOpenTag(node); - }); - saxStream.on('text', (text) => { - this.onText(text); - }); - saxStream.on('closetag', (saxNodeName) => { - this.onSaxCloseTag(saxNodeName); - }); - saxStream.on('error', (saxError) => { - this.onError(saxError); - }); - saxStream.on('end', () => { - this.onEnd(); - }); - - saxStream.write(responseXMLText); - saxStream.end(); - } - - private onOpenTag(node: sax.QualifiedTag) { - const nodeName = (() => { - const nodeParts = []; - const nodeNs = this.mapUriNS[node.uri] ?? ''; - if (nodeNs !== '') { - nodeParts.push(nodeNs); - } - nodeParts.push(node.local); - - return nodeParts.join(':'); - })(); - - const newNode = new TreeNode(nodeName, this.currentNode.name, node.attributes, [], null); - - this.currentNode.children.push(newNode); - this.stack.push(newNode); - this.currentNode = newNode; - } - - private onText(text: string) { - this.currentNode.text = text; - } - - private onSaxCloseTag(saxNodeName: string) { - // remove currentNode from stack - this.stack.pop(); - - // dont rely on callback saxNodeName because it might contain the wrong prefix - const nodeName = this.currentNode.name; - this.onCloseTag(nodeName); - - // currentNode becomes latest item from the stack - this.currentNode = this.stack[this.stack.length - 1]; - } - - protected onCloseTag(nodeName: string) { - // override - } - - protected onError(saxError: any) { - // override - } - - protected onEnd(): void { - // override - } -} diff --git a/src/request/base-request.ts b/src/request/base-request.ts deleted file mode 100644 index e4042c46..00000000 --- a/src/request/base-request.ts +++ /dev/null @@ -1,146 +0,0 @@ -import fetch from 'cross-fetch'; -import * as xmlbuilder from "xmlbuilder"; - -import { ApiConfig } from '../types/stage-config'; -import { RequestInfo } from './types/request-info.type'; -import { Language } from '../types/language-type'; -import { SDK_VERSION } from '../constants'; - -export class OJPBaseRequest { - private stageConfig: ApiConfig; - private language: Language; - protected serviceRequestNode: xmlbuilder.XMLElement; - - public requestInfo: RequestInfo; - - public logRequests: boolean - protected mockRequestXML: string | null; - protected mockResponseXML: string | null; - - constructor(stageConfig: ApiConfig, language: Language) { - this.stageConfig = stageConfig; - this.language = language; - this.serviceRequestNode = this.computeBaseServiceRequestNode(); - - this.requestInfo = { - requestDateTime: null, - requestXML: null, - responseDateTime: null, - responseXML: null, - parseDateTime: null, - error: null - }; - - this.logRequests = false; - this.mockRequestXML = null; - this.mockResponseXML = null; - } - - private buildRequestXML(): string { - this.buildRequestNode(); - - const bodyXML_s = this.serviceRequestNode.end({ - pretty: true, - }); - - return bodyXML_s; - } - - public updateRequestXML(): void { - this.requestInfo.requestXML = this.buildRequestXML(); - } - - protected fetchOJPResponse(): Promise { - this.requestInfo.requestDateTime = new Date(); - - if (this.mockRequestXML) { - this.requestInfo.requestXML = this.mockRequestXML; - } else { - this.requestInfo.requestXML = this.buildRequestXML(); - } - - const apiEndpoint = this.stageConfig.url; - - if (this.logRequests) { - console.log('OJP Request: /POST - ' + apiEndpoint); - console.log(this.requestInfo.requestXML); - } - - const requestHeaders: HeadersInit = { - "Content-Type": "text/xml" - }; - if (this.stageConfig.authToken) { - requestHeaders['Authorization'] = 'Bearer ' + this.stageConfig.authToken; - } - - const requestOptions: RequestInit = { - method: 'POST', - body: this.requestInfo.requestXML, - headers: requestHeaders, - }; - - const responsePromise = new Promise((resolve) => { - if (this.mockResponseXML) { - this.requestInfo.responseXML = this.mockResponseXML; - this.requestInfo.responseDateTime = new Date(); - - resolve(this.requestInfo); - return; - } - - fetch(apiEndpoint, requestOptions).then(response => { - if (!response.ok) { - this.requestInfo.error = { - error: 'FetchError', - message: 'HTTP ERROR - Status:' + response.status + ' - URL:' + apiEndpoint, - }; - return null; - } - - return response.text(); - }).then(responseText => { - if (responseText !== null) { - this.requestInfo.responseXML = responseText; - this.requestInfo.responseDateTime = new Date(); - } - - resolve(this.requestInfo); - }).catch(error => { - this.requestInfo.error = { - error: 'FetchError', - message: error, - }; - - resolve(this.requestInfo); - }); - }); - - return responsePromise; - } - - private computeBaseServiceRequestNode(): xmlbuilder.XMLElement { - const ojpNode = xmlbuilder.create("OJP", { - version: "1.0", - encoding: "utf-8", - }); - - ojpNode.att("xmlns:ojp", "http://www.vdv.de/ojp"); - ojpNode.att("xmlns", "http://www.siri.org.uk/siri"); - ojpNode.att("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); - ojpNode.att("xmlns:xsd", "http://www.w3.org/2001/XMLSchema"); - ojpNode.att("xsi:schemaLocation", "http://www.vdv.de/ojp"); - ojpNode.att("version", "1.0"); - - const serviceRequestNode = ojpNode - .ele("OJPRequest") - .ele("ServiceRequest"); - - serviceRequestNode.ele('ServiceRequestContext').ele('Language', this.language); - - return serviceRequestNode; - } - - protected buildRequestNode() { - this.serviceRequestNode = this.computeBaseServiceRequestNode(); - } -} diff --git a/src/request/index.ts b/src/request/index.ts deleted file mode 100644 index 7ffbbb50..00000000 --- a/src/request/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -export * from './location-information/location-information-request' -export * from './stop-event-request/stop-event-request' -export * from './trip-info-request/trip-info-request' -export * from './trips-request/trip-request-response' -export * from './trips-request/trips-request' - -export * from './types/request-info.type' - -export * from './xml-parser' diff --git a/src/request/location-information/location-information-parser.ts b/src/request/location-information/location-information-parser.ts deleted file mode 100644 index 7ba82595..00000000 --- a/src/request/location-information/location-information-parser.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { Location } from "../../location/location"; -import { BaseParser } from "../base-parser"; -import { LIR_Callback as ParserCallback } from "../types/location-information-request.type"; - -export class LocationInformationParser extends BaseParser { - private locations: Location[]; - public callback: ParserCallback | null = null; - - constructor() { - super(); - this.locations = []; - } - - public parseXML(responseXMLText: string): void { - this.locations = []; - super.parseXML(responseXMLText); - } - - protected onCloseTag(nodeName: string): void { - if (nodeName === 'Location' && this.currentNode.parentName === 'OJPLocationInformationDelivery') { - const location = Location.initWithLocationResultTreeNode( - this.currentNode - ); - - if (location) { - this.locations.push(location); - } - } - } - - protected onError(saxError: any): void { - console.error('ERROR: SAX parser'); - console.log(saxError); - - if (this.callback) { - this.callback({ - locations: this.locations, - message: 'ERROR', - }); - } - } - - protected onEnd(): void { - if (this.callback) { - this.callback({ - locations: this.locations, - message: 'LocationInformation.DONE', - }); - } - } -} diff --git a/src/request/location-information/location-information-request.ts b/src/request/location-information/location-information-request.ts deleted file mode 100644 index 703218b3..00000000 --- a/src/request/location-information/location-information-request.ts +++ /dev/null @@ -1,257 +0,0 @@ -import { EMPTY_API_CONFIG, ApiConfig } from '../../types/stage-config' -import { POI_Restriction, RestrictionType } from '../../types/lir-restrictions.type'; -import { OJPBaseRequest } from '../base-request' -import { LocationInformationParser } from './location-information-parser'; -import { LIR_Response } from '../types/location-information-request.type'; -import { Location } from '../../location/location'; -import { Language } from '../../types/language-type'; -import { GeoPosition } from '../../location/geoposition'; -import { OJP_Helpers } from '../../helpers/ojp-helpers'; - -export class LocationInformationRequest extends OJPBaseRequest { - public locationName: string | null; - public stopPlaceRef: string | null; - - public restrictionTypes: RestrictionType[]; - public poiRestriction: POI_Restriction | null; - - public numberOfResults: number | null; - - public bboxWest: number | null; - public bboxNorth: number | null; - public bboxEast: number | null; - public bboxSouth: number | null; - - public circleCenter: GeoPosition | null; - public circleRadius: number | null; - - public enableExtensions: boolean; - - constructor(stageConfig: ApiConfig, language: Language) { - super(stageConfig, language); - - this.locationName = null; - this.stopPlaceRef = null; - - this.restrictionTypes = []; - this.poiRestriction = null; - - this.numberOfResults = null; - - this.bboxWest = null; - this.bboxNorth = null; - this.bboxEast = null; - this.bboxSouth = null; - - this.circleCenter = null; - this.circleRadius = null; - - this.enableExtensions = true; - } - - public static initWithResponseMock(mockText: string) { - const request = new LocationInformationRequest(EMPTY_API_CONFIG, 'en'); - request.mockResponseXML = mockText; - - return request; - } - - public static initWithRequestMock(mockText: string, stageConfig: ApiConfig = EMPTY_API_CONFIG) { - const request = new LocationInformationRequest(stageConfig, 'en'); - request.mockRequestXML = mockText; - - return request; - } - - public static initWithLocationName(stageConfig: ApiConfig, language: Language, locationName: string, restrictionTypes: RestrictionType[], limit: number = 10): LocationInformationRequest { - const request = new LocationInformationRequest(stageConfig, language); - request.locationName = locationName; - request.numberOfResults = limit; - - if (restrictionTypes !== null) { - request.restrictionTypes = restrictionTypes; - } - - return request; - } - - public static initWithStopPlaceRef(stageConfig: ApiConfig, language: Language, stopPlaceRef: string): LocationInformationRequest { - const request = new LocationInformationRequest(stageConfig, language); - request.stopPlaceRef = stopPlaceRef; - - return request; - } - - public static initWithCircleLngLatRadius( - stageConfig: ApiConfig, - language: Language, - circleLongitude: number, - circleLatitude: number, - circleRadius: number, - restrictionTypes: RestrictionType[] = [], - numberOfResults: number = 1000 - ): LocationInformationRequest { - const request = new LocationInformationRequest(stageConfig, language); - - request.circleCenter = new GeoPosition(circleLongitude, circleLatitude); - request.circleRadius = circleRadius; - request.restrictionTypes = restrictionTypes; - request.numberOfResults = numberOfResults; - - return request; - } - - public static initWithBBOXAndType( - stageConfig: ApiConfig, - language: Language, - bboxWest: number, - bboxNorth: number, - bboxEast: number, - bboxSouth: number, - restrictionTypes: RestrictionType[], - limit: number = 1000, - poiRestriction: POI_Restriction | null = null, - ): LocationInformationRequest { - const request = new LocationInformationRequest(stageConfig, language); - - request.numberOfResults = limit; - - request.bboxWest = bboxWest; - request.bboxNorth = bboxNorth; - request.bboxEast = bboxEast; - request.bboxSouth = bboxSouth; - - request.restrictionTypes = restrictionTypes; - request.poiRestriction = poiRestriction; - - return request; - } - - protected buildRequestNode() { - super.buildRequestNode(); - - const now = new Date(); - const dateF = now.toISOString(); - this.serviceRequestNode.ele("RequestTimestamp", dateF); - - this.serviceRequestNode.ele("RequestorRef", OJP_Helpers); - - const requestNode = this.serviceRequestNode.ele("ojp:OJPLocationInformationRequest"); - requestNode.ele("RequestTimestamp", dateF); - - const locationName = this.locationName ?? null; - if (locationName !== null) { - requestNode.ele('ojp:InitialInput').ele('ojp:LocationName', locationName); - } - - const stopPlaceRef = this.stopPlaceRef ?? null; - if (stopPlaceRef) { - const requestPlaceRefNode = requestNode.ele("ojp:PlaceRef"); - requestPlaceRefNode.ele("ojp:StopPlaceRef", stopPlaceRef); - requestPlaceRefNode.ele("ojp:LocationName").ele("Text", "n/a"); - } - - const bboxWest = this.bboxWest ?? null; - const bboxNorth = this.bboxNorth ?? null; - const bboxEast = this.bboxEast ?? null; - const bboxSouth = this.bboxSouth ?? null; - if (bboxWest && bboxNorth && bboxEast && bboxSouth) { - const rectangleNode = requestNode.ele('ojp:InitialInput') - .ele("ojp:GeoRestriction") - .ele("ojp:Rectangle"); - - const upperLeftNode = rectangleNode.ele("ojp:UpperLeft"); - upperLeftNode.ele("Longitude", bboxWest.toFixed(6)); - upperLeftNode.ele("Latitude", bboxNorth.toFixed(6)); - - const lowerRightNode = rectangleNode.ele("ojp:LowerRight"); - lowerRightNode.ele("Longitude", bboxEast.toFixed(6)); - lowerRightNode.ele("Latitude", bboxSouth.toFixed(6)); - } - - if (this.circleCenter !== null && this.circleRadius !== null) { - const circleNode = requestNode.ele('ojp:InitialInput') - .ele("ojp:GeoRestriction") - .ele("ojp:Circle"); - - const centerNode = circleNode.ele('ojp:Center'); - centerNode.ele('Longitude', this.circleCenter.longitude.toFixed(6)); - centerNode.ele('Latitude', this.circleCenter.latitude.toFixed(6)); - - circleNode.ele('Radius', this.circleRadius); - } - - const restrictionsNode = requestNode.ele("ojp:Restrictions"); - - this.restrictionTypes.forEach(restrictionType => { - restrictionsNode.ele("ojp:Type", restrictionType); - - const isPOI = restrictionType === 'poi'; - if (isPOI && this.poiRestriction) { - const poiCategoryNode = restrictionsNode.ele("ojp:PointOfInterestFilter").ele("PointOfInterestCategory"); - - const isSharedMobility = this.poiRestriction.poiType === 'shared_mobility'; - const poiOsmTagKey = isSharedMobility ? 'amenity' : 'POI'; - this.poiRestriction.tags.forEach((poiOsmTag) => { - const osmTagNode = poiCategoryNode.ele("OsmTag"); - osmTagNode.ele("ojp:Tag", poiOsmTagKey); - osmTagNode.ele("ojp:Value", poiOsmTag); - }); - } - }); - - const numberOfResults = this.numberOfResults ?? 10; - restrictionsNode.ele("ojp:NumberOfResults", numberOfResults); - - if (this.enableExtensions) { - const extensionsNode = requestNode.ele("Extensions"); - extensionsNode - .ele("ojp:ParamsExtension") - .ele("ojp:PrivateModeFilter") - .ele("ojp:Exclude", "false"); - } - } - - public async fetchResponse(): Promise { - await this.fetchOJPResponse(); - - const promise = new Promise((resolve) => { - const response: LIR_Response = { - locations: [], - message: null, - } - - if (this.requestInfo.error !== null || this.requestInfo.responseXML === null) { - response.message = 'ERROR'; - resolve(response); - return; - } - - const parser = new LocationInformationParser(); - parser.callback = ({ locations, message }) => { - response.locations = locations; - response.message = message; - - if (message === 'LocationInformation.DONE') { - this.requestInfo.parseDateTime = new Date(); - } - - resolve(response); - }; - parser.parseXML(this.requestInfo.responseXML); - }); - - return promise; - } - - public async fetchLocations(): Promise { - const apiPromise = await this.fetchResponse(); - const promise = new Promise((resolve) => { - if (apiPromise.message === 'LocationInformation.DONE') { - resolve(apiPromise.locations); - } - }); - - return promise; - } -} diff --git a/src/request/stop-event-request/stop-event-request-parser.ts b/src/request/stop-event-request/stop-event-request-parser.ts deleted file mode 100644 index 18637f37..00000000 --- a/src/request/stop-event-request/stop-event-request-parser.ts +++ /dev/null @@ -1,132 +0,0 @@ -import { DEBUG_LEVEL } from "../../constants"; -import { Location } from "../../location/location"; -import { PtSituationElement } from "../../situation/situation-element"; -import { StopEvent } from "../../stop-event/stop-event"; -import { BaseParser } from "../base-parser"; -import { StopEventRequest_Callback as ParserCallback } from "../types/stop-event-request.type"; - -export class StopEventRequestParser extends BaseParser { - public stopEvents: StopEvent[]; - private mapContextLocations: Record; - private mapContextSituations: Record; - public callback: ParserCallback | null = null; - - constructor() { - super(); - - this.stopEvents = []; - this.mapContextLocations = {}; - this.mapContextSituations = {}; - } - - private reset() { - this.stopEvents = []; - this.mapContextLocations = {}; - this.mapContextSituations = {}; - } - - public parseXML(responseXMLText: string): void { - this.reset(); - super.parseXML(responseXMLText); - } - - protected onCloseTag(nodeName: string): void { - if (nodeName === 'StopEventResult') { - const stopEvent = StopEvent.initWithTreeNode(this.currentNode); - if (stopEvent) { - stopEvent.patchStopEventLocations(this.mapContextLocations); - stopEvent.patchSituations(this.mapContextSituations); - this.stopEvents.push(stopEvent); - } - } - - if (nodeName === 'StopEventResponseContext') { - const placesTreeNode = this.currentNode.findChildNamed('Places'); - if (placesTreeNode) { - this.mapContextLocations = {}; - - const locationTreeNodes = placesTreeNode.findChildrenNamed('Location'); - locationTreeNodes.forEach(locationTreeNode => { - const location = Location.initWithTreeNode(locationTreeNode); - const stopPlaceRef = location.stopPlace?.stopPlaceRef ?? null; - if (stopPlaceRef !== null) { - this.mapContextLocations[stopPlaceRef] = location; - } - }); - } - - const situationsTreeNode = this.currentNode.findChildNamed('Situations'); - if (situationsTreeNode) { - this.mapContextSituations = {}; - - const situationTreeNodes = situationsTreeNode.findChildrenNamed('PtSituation'); - situationTreeNodes.forEach(situationTreeNode => { - const situation = PtSituationElement.initWithSituationTreeNode(situationTreeNode); - if (situation) { - this.mapContextSituations[situation.situationNumber] = situation; - } - }); - } - } - } - - protected onEnd(): void { - if (DEBUG_LEVEL === 'DEBUG') { - this.validateSituations(); - } - - if (this.callback) { - this.callback({ - stopEvents: this.stopEvents, - message: 'StopEvent.DONE', - }); - } - } - - private validateSituations() { - const contextSituations = Object.values(this.mapContextSituations); - if (contextSituations.length === 0) { - return; - } - - const mapExpectedSituationIDs: Record = {}; - contextSituations.forEach(situation => { - mapExpectedSituationIDs[situation.situationNumber] = false; - }); - - this.stopEvents.forEach(stopEvent => { - stopEvent.stopPoint.siriSituations.forEach(serviceSituation => { - if (serviceSituation.situationNumber in mapExpectedSituationIDs) { - mapExpectedSituationIDs[serviceSituation.situationNumber] = true; - } else { - console.error('StopPoint has situation which can be found in context'); - console.log(serviceSituation.situationNumber); - console.log(this.mapContextSituations); - console.log('======================================================================'); - } - }); - }) - - for (const situationNumber in mapExpectedSituationIDs) { - if (mapExpectedSituationIDs[situationNumber] === false) { - console.error('Situation ' + situationNumber + ' cant be map to any of the stop events'); - console.log(this.mapContextSituations[situationNumber]); - console.log(this.stopEvents); - console.log('======================================================================'); - } - } - - this.stopEvents.forEach(stopEvent => { - stopEvent.stopPoint.siriSituationIds.forEach(situationNumber => { - if (situationNumber in mapExpectedSituationIDs) { - return; - } - - console.error('Situation ' + situationNumber + ' is in the stopEvent but cant be found in the context'); - console.log(this.mapContextSituations); - console.log(stopEvent.stopPoint); - console.log('======================================================================'); - }); - }); - } -} diff --git a/src/request/stop-event-request/stop-event-request.ts b/src/request/stop-event-request/stop-event-request.ts deleted file mode 100644 index 1f0d76a1..00000000 --- a/src/request/stop-event-request/stop-event-request.ts +++ /dev/null @@ -1,136 +0,0 @@ -import { EMPTY_API_CONFIG, ApiConfig } from '../../types/stage-config' -import { OJPBaseRequest } from '../base-request' - -import { StopEventType } from '../../types/stop-event-type'; - -import { StopEventRequest_Response } from '../types/stop-event-request.type'; -import { StopEventRequestParser } from './stop-event-request-parser'; -import { Language } from '../../types/language-type'; -import { OJP_Helpers } from '../../helpers/ojp-helpers'; - -export class StopEventRequest extends OJPBaseRequest { - public stopPlaceRef: string | null; - public geoPosition: GeoPosition | null; - - public depArrTime: Date; - public numberOfResults: number; - - public stopEventType: StopEventType; - - public includePreviousCalls: boolean; - public includeOnwardCalls: boolean; - public includeRealtimeData: boolean; - - public enableExtensions: boolean; - - constructor(stageConfig: ApiConfig, language: Language, stopPlaceRef: string | null, geoPosition: GeoPosition | null, stopEventType: StopEventType, stopEventDate: Date) { - super(stageConfig, language); - - this.stopPlaceRef = stopPlaceRef; - this.geoPosition = geoPosition; - - this.depArrTime = stopEventDate; - this.numberOfResults = 10; - - this.stopEventType = stopEventType; - - this.includePreviousCalls = true; - this.includeOnwardCalls = true; - this.includeRealtimeData = true; - - this.enableExtensions = true; - } - - public static Empty(stageConfig: ApiConfig = EMPTY_API_CONFIG): StopEventRequest { - const request = new StopEventRequest(stageConfig, 'en', null, null, 'departure', new Date()); - - return request; - } - - public static initWithMock(mockText: string) { - const request = StopEventRequest.Empty(); - request.mockResponseXML = mockText; - - return request; - } - - public static initWithRequestMock(mockText: string, stageConfig: ApiConfig = EMPTY_API_CONFIG) { - const request = StopEventRequest.Empty(stageConfig); - request.mockRequestXML = mockText; - - return request; - } - - public static initWithStopPlaceRef(stageConfig: ApiConfig, language: Language, stopPlaceRef: string, stopEventType: StopEventType, stopEventDate: Date): StopEventRequest { - const stopEventRequest = new StopEventRequest(stageConfig, language, stopPlaceRef, null, stopEventType, stopEventDate); - - return stopEventRequest; - } - - protected buildRequestNode() { - super.buildRequestNode(); - - const dateNowF = new Date().toISOString(); - const dateF = this.depArrTime.toISOString(); - - this.serviceRequestNode.ele('RequestTimestamp', dateNowF); - - this.serviceRequestNode.ele("RequestorRef", OJP_Helpers.buildRequestorRef()); - - const requestNode = this.serviceRequestNode.ele('ojp:OJPStopEventRequest'); - requestNode.ele('RequestTimestamp', dateNowF); - - const locationNode = requestNode.ele('ojp:Location'); - - if (this.stopPlaceRef) { - const requestPlaceRefNode = locationNode.ele('ojp:PlaceRef'); - requestPlaceRefNode.ele('ojp:StopPlaceRef', this.stopPlaceRef); - requestPlaceRefNode.ele('ojp:LocationName').ele('Text', ''); - } - - locationNode.ele('ojp:DepArrTime', dateF); - - const requestParamsNode = requestNode.ele('ojp:Params'); - requestParamsNode.ele('ojp:NumberOfResults', this.numberOfResults); - requestParamsNode.ele('ojp:StopEventType', this.stopEventType); - requestParamsNode.ele('ojp:IncludePreviousCalls', this.includePreviousCalls); - requestParamsNode.ele('ojp:IncludeOnwardCalls', this.includeOnwardCalls); - requestParamsNode.ele('ojp:IncludeRealtimeData', this.includeRealtimeData); - - if (this.enableExtensions) { - const extensionsNode = requestNode.ele('Extensions'); - extensionsNode.ele('ojp:ParamsExtension').ele('ojp:PrivateModeFilter').ele('ojp:Exclude', 'false'); - } - } - - public async fetchResponse(): Promise { - await this.fetchOJPResponse(); - - const promise = new Promise((resolve) => { - const response: StopEventRequest_Response = { - stopEvents: [], - message: null, - } - - if (this.requestInfo.error !== null || this.requestInfo.responseXML === null) { - response.message = 'ERROR'; - resolve(response); - return; - } - - const parser = new StopEventRequestParser(); - parser.callback = ({ stopEvents, message }) => { - response.stopEvents = stopEvents; - response.message = message; - - if (message === 'StopEvent.DONE') { - this.requestInfo.parseDateTime = new Date(); - resolve(response); - } - }; - parser.parseXML(this.requestInfo.responseXML); - }); - - return promise; - } -} diff --git a/src/request/trip-info-request/trip-info-request-parser.ts b/src/request/trip-info-request/trip-info-request-parser.ts deleted file mode 100644 index 421d8d4b..00000000 --- a/src/request/trip-info-request/trip-info-request-parser.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { Location } from "../../location/location"; -import { PtSituationElement } from "../../situation/situation-element"; -import { TripInfoResult } from "../../trip/trip-info/trip-info-result"; -import { BaseParser } from "../base-parser"; -import { TripInfoRequest_Callback as ParserCallback } from "../types/trip-info-request.type"; - -export class TripInfoRequestParser extends BaseParser { - public tripInfoResult: TripInfoResult | null - private mapContextLocations: Record; - private mapContextSituations: Record; - public callback: ParserCallback | null = null; - - constructor() { - super(); - - this.tripInfoResult = null; - this.mapContextLocations = {}; - this.mapContextSituations = {}; - } - - private reset() { - this.tripInfoResult = null; - this.mapContextLocations = {}; - this.mapContextSituations = {}; - } - - public parseXML(responseXMLText: string): void { - this.reset(); - super.parseXML(responseXMLText); - } - - protected onCloseTag(nodeName: string): void { - if (nodeName === 'TripInfoResult') { - const tripInfoResult = TripInfoResult.initFromTreeNode(this.currentNode); - if (tripInfoResult) { - tripInfoResult.patchLocations(this.mapContextLocations); - } - - this.tripInfoResult = tripInfoResult; - } - - if (nodeName === 'TripInfoResponseContext') { - const placesTreeNode = this.currentNode.findChildNamed('Places'); - if (placesTreeNode) { - this.mapContextLocations = {}; - - const locationTreeNodes = placesTreeNode.findChildrenNamed('Location'); - locationTreeNodes.forEach(locationTreeNode => { - const location = Location.initWithTreeNode(locationTreeNode); - const stopPlaceRef = location.stopPlace?.stopPlaceRef ?? null; - if (stopPlaceRef !== null) { - this.mapContextLocations[stopPlaceRef] = location; - } - }); - } - - const situationsTreeNode = this.currentNode.findChildNamed('Situations'); - if (situationsTreeNode) { - this.mapContextSituations = {}; - - const situationTreeNodes = situationsTreeNode.findChildrenNamed('PtSituation'); - situationTreeNodes.forEach(situationTreeNode => { - const situation = PtSituationElement.initWithSituationTreeNode(situationTreeNode); - if (situation) { - this.mapContextSituations[situation.situationNumber] = situation; - } - }); - } - } - } - - protected onEnd(): void { - if (this.callback) { - this.callback({ - tripInfoResult: this.tripInfoResult, - message: 'TripInfoRequest.DONE', - }); - } - } -} diff --git a/src/request/trip-info-request/trip-info-request.ts b/src/request/trip-info-request/trip-info-request.ts deleted file mode 100644 index 159a05eb..00000000 --- a/src/request/trip-info-request/trip-info-request.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { EMPTY_API_CONFIG, ApiConfig } from '../../types/stage-config' -import { OJPBaseRequest } from '../base-request' - -import { TripInfoRequest_Response } from '../types/trip-info-request.type'; -import { TripInfoRequestParser } from './trip-info-request-parser'; -import { Language } from '../../types/language-type'; -import { OJP_Helpers } from '../../helpers/ojp-helpers'; - -export class TripInfoRequest extends OJPBaseRequest { - public journeyRef: string; - public operatingDayRef: string; - - constructor(stageConfig: ApiConfig, language: Language, journeyRef: string, operatingDayRef: string) { - super(stageConfig, language); - - this.journeyRef = journeyRef; - this.operatingDayRef = operatingDayRef; - } - - public static Empty(stageConfig: ApiConfig = EMPTY_API_CONFIG): TripInfoRequest { - const request = new TripInfoRequest(stageConfig, 'en', 'n/a', 'n/a'); - - return request; - } - - public static initWithMock(mockText: string) { - const request = TripInfoRequest.Empty(); - request.mockResponseXML = mockText; - - return request; - } - - public static initWithRequestMock(mockText: string, stageConfig: ApiConfig = EMPTY_API_CONFIG) { - const request = TripInfoRequest.Empty(stageConfig); - request.mockRequestXML = mockText; - - return request; - } - - public static initWithJourneyRef(stageConfig: ApiConfig, language: Language, journeyRef: string, operatingDayRef: string | null = null): TripInfoRequest { - if (operatingDayRef === null) { - const dateNowF = new Date().toISOString(); - operatingDayRef = dateNowF.substring(0, 10); - } - - const request = new TripInfoRequest(stageConfig, language, journeyRef, operatingDayRef); - - return request; - } - - protected buildRequestNode(): void { - super.buildRequestNode(); - - const dateNowF = new Date().toISOString(); - - this.serviceRequestNode.ele('RequestTimestamp', dateNowF); - this.serviceRequestNode.ele("RequestorRef", OJP_Helpers.buildRequestorRef()); - - const requestNode = this.serviceRequestNode.ele('ojp:OJPTripInfoRequest'); - requestNode.ele('RequestTimestamp', dateNowF); - - requestNode.ele('ojp:JourneyRef', this.journeyRef); - requestNode.ele('ojp:OperatingDayRef', this.operatingDayRef); - - const paramsNode = requestNode.ele('ojp:Params'); - paramsNode.ele('ojp:IncludeCalls', true); - paramsNode.ele('ojp:IncludeService', true); - } - - public async fetchResponse(): Promise { - await this.fetchOJPResponse(); - - const promise = new Promise((resolve) => { - - - const response: TripInfoRequest_Response = { - tripInfoResult: null, - message: null, - } - - if (this.requestInfo.error !== null || this.requestInfo.responseXML === null) { - response.message = 'ERROR'; - resolve(response); - return; - } - - const parser = new TripInfoRequestParser(); - parser.callback = ({ tripInfoResult, message }) => { - response.tripInfoResult = tripInfoResult; - response.message = message; - - if (message === 'TripInfoRequest.DONE') { - this.requestInfo.parseDateTime = new Date(); - resolve(response); - } - }; - parser.parseXML(this.requestInfo.responseXML); - }); - - return promise; - } -} diff --git a/src/request/trips-request/trip-request-parser.ts b/src/request/trips-request/trip-request-parser.ts deleted file mode 100644 index 0e84156a..00000000 --- a/src/request/trips-request/trip-request-parser.ts +++ /dev/null @@ -1,177 +0,0 @@ -import { DEBUG_LEVEL } from "../../constants"; -import { Location } from "../../location/location"; -import { PtSituationElement } from "../../situation/situation-element"; -import { Trip, TripTimedLeg } from "../../trip"; -import { BaseParser } from "../base-parser"; -import { TripRequest_Callback as ParserCallback } from "../types/trip-request.type"; - -export class TripRequestParser extends BaseParser { - private trips: Trip[]; - private tripsNo: number; - private mapContextLocations: Record; - private mapContextSituations: Record; - public callback: ParserCallback | null = null; - - constructor() { - super(); - - this.trips = []; - this.tripsNo = 0; - this.mapContextLocations = {}; - this.mapContextSituations = {}; - } - - private reset() { - this.trips = []; - this.tripsNo = 0; - this.mapContextLocations = {}; - this.mapContextSituations = {}; - } - - public parseXML(responseXMLText: string): void { - this.reset(); - - this.tripsNo = responseXMLText.split('').length - 1; - if (this.tripsNo === 0) { - // Handle ojp: NS in the server response - this.tripsNo = responseXMLText.split('').length - 1; - } - - if (this.callback) { - this.callback({ - trips: this.trips, - tripsNo: this.tripsNo, - message: 'TripRequest.TripsNo', - }); - } - - super.parseXML(responseXMLText); - } - - protected onCloseTag(nodeName: string): void { - if (nodeName === "Trip" && this.currentNode.parentName === "TripResult") { - const trip = Trip.initFromTreeNode(this.currentNode); - if (trip) { - trip.legs.forEach((leg) => { - leg.patchLocations(this.mapContextLocations); - leg.patchSituations(this.mapContextSituations); - }); - - this.trips.push(trip); - - if (this.callback) { - this.callback({ - tripsNo: this.tripsNo, - trips: this.trips, - message: 'TripRequest.Trip', - }); - } - } - } - - if (nodeName === 'TripResponseContext') { - const placesTreeNode = this.currentNode.findChildNamed('Places'); - if (placesTreeNode) { - this.mapContextLocations = {}; - - const locationTreeNodes = placesTreeNode.findChildrenNamed('Location'); - locationTreeNodes.forEach(locationTreeNode => { - const location = Location.initWithTreeNode(locationTreeNode); - const stopPlaceRef = location.stopPlace?.stopPlaceRef ?? null; - if (stopPlaceRef !== null) { - this.mapContextLocations[stopPlaceRef] = location; - } - }); - } - - const situationsTreeNode = this.currentNode.findChildNamed('Situations'); - if (situationsTreeNode) { - this.mapContextSituations = {}; - - const situationTreeNodes = situationsTreeNode.findChildrenNamed('PtSituation'); - situationTreeNodes.forEach(situationTreeNode => { - const situation = PtSituationElement.initWithSituationTreeNode(situationTreeNode); - if (situation) { - this.mapContextSituations[situation.situationNumber] = situation; - } - }); - } - } - } - - protected onEnd(): void { - if (DEBUG_LEVEL === 'DEBUG') { - this.validateSituations(); - } - - if (this.callback) { - this.callback({ - tripsNo: this.tripsNo, - trips: this.trips, - message: 'TripRequest.DONE', - }); - } - } - - private validateSituations() { - const contextSituations = Object.values(this.mapContextSituations); - if (contextSituations.length === 0) { - return; - } - - const mapExpectedSituationIDs: Record = {}; - contextSituations.forEach(situation => { - mapExpectedSituationIDs[situation.situationNumber] = false; - }); - - this.trips.forEach(trip => { - trip.legs.forEach(leg => { - if (leg.legType !== 'TimedLeg') { - return; - } - - const timedLeg = leg as TripTimedLeg; - timedLeg.service.siriSituations.forEach(serviceSituation => { - if (serviceSituation.situationNumber in mapExpectedSituationIDs) { - mapExpectedSituationIDs[serviceSituation.situationNumber] = true; - } else { - console.error('TimedLeg has situation which can be found in context'); - console.log(serviceSituation.situationNumber); - console.log(this.mapContextSituations); - console.log('======================================================================'); - } - }); - }); - }); - - for (const situationNumber in mapExpectedSituationIDs) { - if (mapExpectedSituationIDs[situationNumber] === false) { - console.error('Situation ' + situationNumber + ' cant be map to any of the trips'); - console.log(this.mapContextSituations[situationNumber]); - console.log(this.trips); - console.log('======================================================================'); - } - } - - this.trips.forEach(trip => { - trip.legs.forEach(leg => { - if (leg.legType !== 'TimedLeg') { - return; - } - - const timedLeg = leg as TripTimedLeg; - timedLeg.service.siriSituationIds.forEach(situationNumber => { - if ((situationNumber in mapExpectedSituationIDs)) { - return; - } - - console.error('Situation ' + situationNumber + ' is in the but cant be found in the context'); - console.log(this.mapContextSituations); - console.log(trip); - console.log(timedLeg); - console.log('======================================================================'); - }); - }); - }); - } -} diff --git a/src/request/trips-request/trip-request-response.ts b/src/request/trips-request/trip-request-response.ts deleted file mode 100644 index 32782f1b..00000000 --- a/src/request/trips-request/trip-request-response.ts +++ /dev/null @@ -1,41 +0,0 @@ -import * as xmlbuilder from "xmlbuilder"; - -import { Trip } from "../../trip"; - -// This is different than `TripRequest_Response` -// because of the XML serialisation which is done here -export class TripRequestResponse { - public trips: Trip[] - - constructor(trips: Trip[]) { - this.trips = trips - } - - public asXML(): string { - const rootNode = xmlbuilder.create("siri:OJP", { - version: "1.0", - encoding: "utf-8", - }); - - rootNode.att("xmlns:ojp", "http://www.vdv.de/ojp"); - rootNode.att("xmlns:siri", "http://www.siri.org.uk/siri"); - rootNode.att("version", "1.0"); - - const tripDeliveryNode = rootNode - .ele("siri:OJPResponse") - .ele("siri:ServiceDelivery") - .ele("ojp:OJPTripDelivery"); - - this.trips.forEach(trip => { - const tripResultNode = tripDeliveryNode.ele('ojp:TripResult'); - tripResultNode.ele('ojp:ResultId', trip.id); - trip.addToXMLNode(tripResultNode); - }); - - const bodyXML_s = tripDeliveryNode.end({ - pretty: true - }); - - return bodyXML_s; - } -} diff --git a/src/request/trips-request/trips-request.ts b/src/request/trips-request/trips-request.ts deleted file mode 100644 index cba5b872..00000000 --- a/src/request/trips-request/trips-request.ts +++ /dev/null @@ -1,434 +0,0 @@ -import * as xmlbuilder from "xmlbuilder"; - -import { OJPBaseRequest } from '../base-request'; -import { EMPTY_API_CONFIG, ApiConfig } from '../../types/stage-config'; -import { TripRequest_Response, TripRequest_Callback } from '../types/trip-request.type'; -import { TripRequestParser } from './trip-request-parser'; -import { TripLocationPoint } from '../../trip'; -import { Location } from '../../location/location'; -import { Language } from '../../types/language-type'; - -import { TripModeType } from '../../types/trip-mode-type'; -import { IndividualTransportMode } from '../../types/individual-mode.types'; -import { ModeOfTransportType } from '../../types/mode-of-transport.type'; -import { JourneyPointType } from '../../types/journey-points'; -import { OJP_Helpers } from "../../helpers/ojp-helpers"; - -export type TripRequestBoardingType = 'Dep' | 'Arr' - -export class TripRequest extends OJPBaseRequest { - public fromTripLocation: TripLocationPoint; - public toTripLocation: TripLocationPoint; - public departureDate: Date; - public tripRequestBoardingType: TripRequestBoardingType; - - public numberOfResults: number | null; - public numberOfResultsAfter: number | null; - public numberOfResultsBefore: number | null; - - public publicTransportModes: ModeOfTransportType[]; - - public modeType: TripModeType; - public transportMode: IndividualTransportMode; - public includeLegProjection: boolean; - - public viaLocations: TripLocationPoint[]; - - public response: TripRequest_Response | null; - - public enableExtensions: boolean; - - constructor( - stageConfig: ApiConfig, - language: Language, - fromTripLocation: TripLocationPoint, - toTripLocation: TripLocationPoint, - departureDate: Date = new Date(), - tripRequestBoardingType: TripRequestBoardingType = 'Dep', - numberOfResults: number | null = null, - numberOfResultsBefore: number | null = null, - numberOfResultsAfter: number | null = null, - publicTransportModes: ModeOfTransportType[] = [], - ) { - super(stageConfig, language); - - this.fromTripLocation = fromTripLocation; - this.toTripLocation = toTripLocation; - this.departureDate = departureDate; - this.tripRequestBoardingType = tripRequestBoardingType; - - this.numberOfResults = numberOfResults; - this.numberOfResultsBefore = numberOfResultsBefore; - this.numberOfResultsAfter = numberOfResultsAfter; - - this.publicTransportModes = publicTransportModes; - - this.modeType = "monomodal"; - this.transportMode = "public_transport"; - this.includeLegProjection = true; - - this.viaLocations = []; - - this.enableExtensions = true; - - this.response = null; - } - - private static Empty(): TripRequest { - const emptyTripLocationPoint = TripLocationPoint.Empty(); - const request = new TripRequest(EMPTY_API_CONFIG, 'en', emptyTripLocationPoint, emptyTripLocationPoint, new Date(), 'Dep'); - - return request; - } - - public static initWithResponseMock(mockText: string) { - const request = TripRequest.Empty(); - request.mockResponseXML = mockText; - - return request; - } - - public static initWithRequestMock(mockText: string, stageConfig: ApiConfig = EMPTY_API_CONFIG) { - const request = TripRequest.Empty(); - request.mockRequestXML = mockText; - request.requestInfo.requestXML = mockText; - - return request; - } - - public static initWithStopRefs(stageConfig: ApiConfig, language: Language, fromStopRef: string, toStopRef: string, departureDate: Date = new Date(), tripRequestBoardingType: TripRequestBoardingType = 'Dep') { - const fromLocation = Location.initWithStopPlaceRef(fromStopRef); - const toLocation = Location.initWithStopPlaceRef(toStopRef); - const fromTripLocationPoint = new TripLocationPoint(fromLocation); - const toTripLocationPoint = new TripLocationPoint(toLocation); - - const request = new TripRequest(stageConfig, language, fromTripLocationPoint, toTripLocationPoint, departureDate, tripRequestBoardingType); - - return request; - } - - public static initWithLocationsAndDate(stageConfig: ApiConfig, language: Language, fromLocation: Location, toLocation: Location, departureDate: Date, tripRequestBoardingType: TripRequestBoardingType = 'Dep') { - const fromTripLocationPoint = new TripLocationPoint(fromLocation); - const toTripLocationPoint = new TripLocationPoint(toLocation); - - const request = new TripRequest(stageConfig, language, fromTripLocationPoint, toTripLocationPoint, departureDate, tripRequestBoardingType); - - return request; - } - - public static initWithTripLocationsAndDate( - stageConfig: ApiConfig, - language: Language, - fromTripLocation: TripLocationPoint | null, - toTripLocation: TripLocationPoint | null, - departureDate: Date, - tripRequestBoardingType: TripRequestBoardingType = 'Dep', - includeLegProjection: boolean = false, - modeType: TripModeType = 'monomodal', - transportMode: IndividualTransportMode = 'public_transport', - viaTripLocations: TripLocationPoint[] = [], - numberOfResults: number | null = null, - numberOfResultsBefore: number | null = null, - numberOfResultsAfter: number | null = null, - publicTransportModes: ModeOfTransportType[] = [], - ) { - if ((fromTripLocation === null) || (toTripLocation === null)) { - return null; - } - - if ( - !( - (fromTripLocation.location.geoPosition || - fromTripLocation.location.stopPlace) && - (toTripLocation.location.geoPosition || - toTripLocation.location.stopPlace) - ) - ) { - return null; - } - - const request = new TripRequest( - stageConfig, - language, - fromTripLocation, - toTripLocation, - departureDate, - tripRequestBoardingType, - - numberOfResults, - numberOfResultsBefore, - numberOfResultsAfter, - - publicTransportModes, - ); - request.includeLegProjection = includeLegProjection; - request.modeType = modeType; - request.transportMode = transportMode; - request.viaLocations = viaTripLocations; - - return request; - } - - protected buildRequestNode(): void { - super.buildRequestNode(); - - const now = new Date(); - const dateF = now.toISOString(); - this.serviceRequestNode.ele("RequestTimestamp", dateF); - - this.serviceRequestNode.ele("RequestorRef", OJP_Helpers.buildRequestorRef()); - - const tripRequestNode = this.serviceRequestNode.ele("ojp:OJPTripRequest"); - tripRequestNode.ele("RequestTimestamp", dateF); - - const modeType = this.modeType; - const isMonomodal = modeType === "monomodal"; - - const transportMode = this.transportMode; - - const tripEndpoints: JourneyPointType[] = ["From", "To"]; - tripEndpoints.forEach((tripEndpoint) => { - const isFrom = tripEndpoint === "From"; - const tripLocation = isFrom - ? this.fromTripLocation - : this.toTripLocation; - const location = tripLocation.location; - - let tagName = isFrom ? "ojp:Origin" : "ojp:Destination"; - - const endPointNode = tripRequestNode.ele(tagName); - const placeRefNode = endPointNode.ele("ojp:PlaceRef"); - - if (location.stopPlace?.stopPlaceRef) { - const locationName = location.locationName ?? "n/a"; - - let stopPlaceRef = location.stopPlace?.stopPlaceRef ?? ""; - - placeRefNode.ele("ojp:StopPlaceRef", stopPlaceRef); - placeRefNode.ele("ojp:LocationName").ele("ojp:Text", locationName); - } else { - if (location.geoPosition) { - const geoPositionNode = placeRefNode.ele("ojp:GeoPosition"); - geoPositionNode.ele("Longitude", location.geoPosition.longitude); - geoPositionNode.ele("Latitude", location.geoPosition.latitude); - - const locationName = location.geoPosition.asLatLngString(); - placeRefNode.ele("ojp:LocationName").ele("ojp:Text", locationName); - } - } - - const dateF = this.departureDate.toISOString(); - if (isFrom) { - if (this.tripRequestBoardingType === 'Dep') { - endPointNode.ele("ojp:DepArrTime", dateF); - } - } else { - if (this.tripRequestBoardingType === 'Arr') { - endPointNode.ele("ojp:DepArrTime", dateF); - } - } - - if (!isMonomodal) { - // https://opentransportdata.swiss/en/cookbook/ojptriprequest/#Parameters_for_Configuration_of_the_TripRequest - // non-monomodal cycle transport modes is rendered in Origin/Destination - const isCycle = transportMode === 'cycle'; - if (isCycle) { - (() => { - if (modeType === 'mode_at_start' && !isFrom) { - return; - } - - if (modeType === 'mode_at_end' && isFrom) { - return; - } - - const itNode = endPointNode.ele('ojp:IndividualTransportOptions'); - this.addAdditionalRestrictions(itNode, tripLocation); - })(); - } - } - }); - - this.viaLocations.forEach(viaLocation => { - const viaNode = tripRequestNode.ele('ojp:Via'); - const viaPointNode = viaNode.ele('ojp:ViaPoint'); - const stopPlace = viaLocation.location.stopPlace; - if (stopPlace === null) { - const geoPosition = viaLocation.location.geoPosition; - if (geoPosition !== null) { - const geoPositionNode = viaPointNode.ele('ojp:GeoPosition'); - geoPositionNode.ele('Longitude', geoPosition.longitude); - geoPositionNode.ele('Latitude', geoPosition.latitude); - - viaPointNode.ele('ojp:Name').ele('ojp:Text', viaLocation.location.computeLocationName() ?? 'n/a'); - } - } else { - viaPointNode.ele('ojp:StopPlaceRef', stopPlace.stopPlaceRef); - viaPointNode.ele('ojp:LocationName').ele('ojp:Text', stopPlace.stopPlaceName ?? (viaLocation.location.computeLocationName() ?? 'n/a')); - } - - if (viaLocation.dwellTimeMinutes !== null) { - viaNode.ele('ojp:DwellTime', 'PT' + viaLocation.dwellTimeMinutes.toString() + 'M'); - } - }); - - const paramsNode = tripRequestNode.ele("ojp:Params"); - - if (this.transportMode === 'public_transport' && (this.publicTransportModes.length > 0)) { - // https://opentransportdata.swiss/en/cookbook/ojptriprequest/#Params - const modeContainerNode = paramsNode.ele('PtModeFilter'); - modeContainerNode.ele('ojp:Exclude', 'false'); - this.publicTransportModes.forEach(publicTransportMode => { - modeContainerNode.ele('ojp:PtMode', publicTransportMode); - }); - } - - if (this.enableExtensions) { - paramsNode.ele('ojp:PrivateModeFilter').ele('ojp:Exclude', 'false'); - } - - if (this.numberOfResults !== null) { - paramsNode.ele('ojp:NumberOfResults', this.numberOfResults); - } - if (this.numberOfResultsBefore !== null) { - paramsNode.ele('ojp:NumberOfResultsBefore', this.numberOfResultsBefore); - } - if (this.numberOfResultsAfter !== null) { - paramsNode.ele('ojp:NumberOfResultsAfter', this.numberOfResultsAfter); - } - - paramsNode.ele("ojp:IncludeTrackSections", true); - paramsNode.ele("ojp:IncludeLegProjection", this.includeLegProjection); - paramsNode.ele("ojp:IncludeTurnDescription", true); - - const isPublicTransport = this.transportMode === 'public_transport'; - if (isPublicTransport) { - paramsNode.ele("ojp:IncludeIntermediateStops", true); - } - - const sharingModes: IndividualTransportMode[] = [ - "bicycle_rental", - "car_sharing", - "escooter_rental", - ]; - const isSharingMode = sharingModes.indexOf(transportMode) !== -1; - - if (isMonomodal) { - const standardModes: IndividualTransportMode[] = [ - "foot", - "walk", - "self-drive-car", - "cycle", - "taxi", - "others-drive-car", - ]; - if (standardModes.indexOf(transportMode) !== -1) { - paramsNode.ele("ojp:ItModesToCover", transportMode); - } - - // https://opentransportdata.swiss/en/cookbook/ojptriprequest/#Parameters_for_Configuration_of_the_TripRequest - // - monomodal - // - sharing transport modes - // => Params/Extension/ItModesToCover=transportMode - if (isSharingMode) { - const paramsExtensionNode = paramsNode.ele("ojp:Extension"); - paramsExtensionNode.ele("ojp:ItModesToCover", transportMode); - } - } else { - // https://opentransportdata.swiss/en/cookbook/ojptriprequest/#Parameters_for_Configuration_of_the_TripRequest - // - non-monomodal - // - sharing transport modes - // => Params/Extension/Origin/Mode=transportMode - - if (isSharingMode) { - const paramsExtensionNode = paramsNode.ele("ojp:Extension"); - - tripEndpoints.forEach((tripEndpoint) => { - const isFrom = tripEndpoint === "From"; - if (isFrom && this.modeType === "mode_at_end") { - return; - } - if (!isFrom && this.modeType === "mode_at_start") { - return; - } - - const tripLocation = isFrom ? this.fromTripLocation : this.toTripLocation; - const tagName = isFrom ? 'ojp:Origin' : 'ojp:Destination'; - const endPointNode = paramsExtensionNode.ele(tagName); - - this.addAdditionalRestrictions(endPointNode, tripLocation); - }); - } - } - - paramsNode.ele("ojp:UseRealtimeData", 'explanatory'); - } - - private addAdditionalRestrictions(nodeEl: xmlbuilder.XMLElement, tripLocation: TripLocationPoint) { - const hasAdditionalRestrictions = (tripLocation.minDuration !== null) || (tripLocation.maxDuration !== null) || (tripLocation.minDistance !== null) || (tripLocation.maxDistance !== null); - if (!hasAdditionalRestrictions) { - return; - } - - if (tripLocation.customTransportMode) { - nodeEl.ele('ojp:Mode', tripLocation.customTransportMode); - } - if (tripLocation.minDuration !== null) { - nodeEl.ele('ojp:MinDuration', 'PT' + tripLocation.minDuration + 'M'); - } - if (tripLocation.maxDuration !== null) { - nodeEl.ele('ojp:MaxDuration', 'PT' + tripLocation.maxDuration + 'M'); - } - if (tripLocation.minDistance !== null) { - nodeEl.ele('ojp:MinDistance', tripLocation.minDistance); - } - if (tripLocation.maxDistance !== null) { - nodeEl.ele('ojp:MaxDistance', tripLocation.maxDistance); - } - } - - public async fetchResponse(): Promise { - await this.fetchOJPResponse(); - - const promise = new Promise((resolve) => { - this.parseTripRequestResponse(resolve); - }); - - return promise; - } - - public fetchResponseWithCallback(callback: TripRequest_Callback) { - this.fetchOJPResponse().then((requestInfo) => { - this.requestInfo = requestInfo; - this.parseTripRequestResponse(callback); - }); - } - - private parseTripRequestResponse(callback: TripRequest_Callback) { - this.response = null; - - if (this.requestInfo.error !== null || this.requestInfo.responseXML === null) { - const errorResponse: TripRequest_Response = { - tripsNo: 0, - trips: [], - message: null - } - - errorResponse.message = 'ERROR'; - callback(errorResponse); - return; - } - - const parser = new TripRequestParser(); - parser.callback = (parserResponse) => { - if (parserResponse.message === 'TripRequest.Trip' && parserResponse.trips.length === 1) { - this.requestInfo.parseDateTime = new Date(); - } - - this.response = parserResponse; - - callback(parserResponse); - }; - parser.parseXML(this.requestInfo.responseXML); - } -} diff --git a/src/request/types/location-information-request.type.ts b/src/request/types/location-information-request.type.ts deleted file mode 100644 index 257ff4b5..00000000 --- a/src/request/types/location-information-request.type.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Location } from "../../location/location"; - -type LIR_ParserMessage = "LocationInformation.DONE" | "ERROR"; -export type LIR_Response = { - locations: Location[] - message: LIR_ParserMessage | null -} -export type LIR_Callback = (response: LIR_Response) => void; diff --git a/src/request/types/request-info.type.ts b/src/request/types/request-info.type.ts deleted file mode 100644 index 747ce01b..00000000 --- a/src/request/types/request-info.type.ts +++ /dev/null @@ -1,15 +0,0 @@ -export type RequestError = 'FetchError' | 'ParseTripsXMLError' | 'ParseXMLError' - -export interface RequestErrorData { - error: RequestError - message: string -} - -export interface RequestInfo { - requestDateTime: Date | null; - requestXML: string | null; - responseDateTime: Date | null; - responseXML: string | null; - parseDateTime: Date | null; - error: RequestErrorData | null; -} diff --git a/src/request/types/stop-event-request.type.ts b/src/request/types/stop-event-request.type.ts deleted file mode 100644 index ff661c9d..00000000 --- a/src/request/types/stop-event-request.type.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { StopEvent } from "../../stop-event/stop-event"; - -type StopEventRequest_ParserMessage = 'StopEvent.DONE' | 'ERROR'; -export type StopEventRequest_Response = { - stopEvents: StopEvent[] - message: StopEventRequest_ParserMessage | null -} -export type StopEventRequest_Callback = (response: StopEventRequest_Response) => void; diff --git a/src/request/types/trip-info-request.type.ts b/src/request/types/trip-info-request.type.ts deleted file mode 100644 index f7f279dc..00000000 --- a/src/request/types/trip-info-request.type.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { TripInfoResult } from "../../trip/trip-info/trip-info-result"; - -type TripInfoRequest_ParserMessage = 'TripInfoRequest.DONE' | 'ERROR'; -export type TripInfoRequest_Response = { - tripInfoResult: TripInfoResult | null - message: TripInfoRequest_ParserMessage | null -} -export type TripInfoRequest_Callback = (response: TripInfoRequest_Response) => void; diff --git a/src/request/types/trip-request.type.ts b/src/request/types/trip-request.type.ts deleted file mode 100644 index ea19fc8a..00000000 --- a/src/request/types/trip-request.type.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Trip } from "../../trip"; - -export type TripRequest_ParserMessage = 'TripRequest.TripsNo' | 'TripRequest.Trip' | 'TripRequest.DONE' | 'ERROR'; -export type TripRequest_Response = { - tripsNo: number - trips: Trip[] - message: TripRequest_ParserMessage | null -} - -export type TripRequest_Callback = (response: TripRequest_Response) => void; diff --git a/src/request/xml-parser.ts b/src/request/xml-parser.ts deleted file mode 100644 index a6cd9e1b..00000000 --- a/src/request/xml-parser.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { TreeNode } from "../xml/tree-node"; -import { BaseParser } from "./base-parser"; - -type XMLParserMessage = "DONE" | "ERROR"; -export type XMLParserResponse = { - message: XMLParserMessage | null - rootNode: TreeNode -} -export type XMLParserCallback = (response: XMLParserResponse) => void; - -export class XMLParser extends BaseParser { - public callback: XMLParserCallback | null = null; - - public parseXML(responseXMLText: string): void { - super.parseXML(responseXMLText); - } - - protected onError(saxError: any): void { - console.error('ERROR: SAX parser'); - console.log(saxError); - - if (this.callback) { - this.callback({ - message: 'ERROR', - rootNode: this.rootNode, - }); - } - } - - protected onEnd(): void { - if (this.callback) { - this.callback({ - message: 'DONE', - rootNode: this.rootNode, - }); - } - } -} diff --git a/src/sdk.ts b/src/sdk.ts new file mode 100644 index 00000000..9505dcd0 --- /dev/null +++ b/src/sdk.ts @@ -0,0 +1,70 @@ +import { HTTPConfig, Language, OJP_VERSION } from './types/_all'; + +import { LocationInformationRequest } from './versions/current/requests/lir'; +import { StopEventRequest } from "./versions/current/requests/ser"; +import { TripInfoRequest } from "./versions/current/requests/tir"; +import { TripRefineRequest } from "./versions/current/requests/trr"; +import { TripRequest } from "./versions/current/requests/tr"; + +import { OJPv1_FareRequest } from "./versions/legacy/v1/requests/fr"; +import { OJPv1_LocationInformationRequest } from './versions/legacy/v1/requests/lir'; +import { OJPv1_StopEventRequest } from "./versions/legacy/v1/requests/ser"; +import { OJPv1_TripInfoRequest } from "./versions/legacy/v1/requests/tir"; +import { OJPv1_TripRequest } from "./versions/legacy/v1/requests/tr"; + +class EmptyRequest { + public static init() { + throw new Error('this request is not available for the selected OJP version'); + } +} + +// Registry of classes per version +const builders = { + '1.0': { + FareRequest: OJPv1_FareRequest, + LocationInformationRequest: OJPv1_LocationInformationRequest, + StopEventRequest: OJPv1_StopEventRequest, + TripInfoRequest: OJPv1_TripInfoRequest, + TripRefineRequest: EmptyRequest, + TripRequest: OJPv1_TripRequest, + }, + '2.0': { + FareRequest: EmptyRequest, + LocationInformationRequest: LocationInformationRequest, + StopEventRequest: StopEventRequest, + TripInfoRequest: TripInfoRequest, + TripRefineRequest: TripRefineRequest, + TripRequest: TripRequest, + }, +} as const; + +type Builders = typeof builders; +type RequestKey = keyof Builders['2.0']; +type ClassFor = Builders[V][K]; + +export class SDK { + public readonly version: OJP_VERSION; + public requestorRef: string; + public httpConfig: HTTPConfig; + public language: Language; + + private constructor(requestorRef: string, httpConfig: HTTPConfig, language: Language = 'en', version: OJP_VERSION = '2.0') { + this.requestorRef = requestorRef; + this.httpConfig = httpConfig; + this.language = language; + this.version = version; + } + + public static create(requestorRef: string, httpConfig: HTTPConfig, language: Language = 'en'): SDK<'2.0'> { + const sdk = new SDK<'2.0'>(requestorRef, httpConfig, language, '2.0'); + return sdk; + } + public static v1(requestorRef: string, httpConfig: HTTPConfig, language: Language = 'en'): SDK<'1.0'> { + const sdk = new SDK<'1.0'>(requestorRef, httpConfig, language, '1.0'); + return sdk; + } + + get requests(): { [K in RequestKey]: ClassFor } { + return builders[this.version] as { [K in RequestKey]: ClassFor }; + } +} diff --git a/src/shared/duration.ts b/src/shared/duration.ts deleted file mode 100644 index 4c6ea8f2..00000000 --- a/src/shared/duration.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { TreeNode } from "../xml/tree-node" - -export class Duration { - public hours: number - public minutes: number - public totalMinutes: number - - constructor(hours: number, minutes: number) { - this.hours = hours - this.minutes = minutes - this.totalMinutes = hours * 60 + minutes - } - - public static initWithTreeNode(parentTreeNode: TreeNode, nodeName: string = 'Duration'): Duration | null { - const durationS = parentTreeNode.findTextFromChildNamed(nodeName); - if (durationS === null) { - return null; - } - - const duration = Duration.initFromDurationText(durationS); - - return duration; - } - - public static initFromDurationText(durationS: string | null): Duration | null { - if (durationS === null) { - return null; - } - - // PT4H19M - durationS = durationS.replace('PT', ''); - - let hours = 0 - const hoursMatches = durationS.match(/([0-9]+?)H/); - if (hoursMatches) { - hours = parseInt(hoursMatches[1]) - } - - let minutes = 0 - const minutesMatches = durationS.match(/([0-9]+?)M/); - if (minutesMatches) { - minutes = parseInt(minutesMatches[1]) - } - - const duration = new Duration(hours, minutes) - return duration; - } - - public static initFromTotalMinutes(totalMinutes: number): Duration { - const hours = Math.floor(totalMinutes / 60) - const minutes = totalMinutes - hours * 60 - - const duration = new Duration(hours, minutes) - return duration - } - - public formatDuration(): string { - const durationParts: string[] = [] - - if (this.hours > 0) { - durationParts.push(this.hours + 'h ') - } - - durationParts.push(this.minutes + 'min') - - return durationParts.join('') - } - - public plus(otherDuration: Duration): Duration { - return Duration.initFromTotalMinutes(this.totalMinutes + otherDuration.totalMinutes) - } - - public asOJPFormattedText(): string { - const parts: string[] = []; - - parts.push('PT'); - parts.push('' + this.hours + 'H'); - parts.push('' + this.minutes + 'M'); - - return parts.join(''); - } -} diff --git a/src/situation/situation-element.ts b/src/situation/situation-element.ts deleted file mode 100644 index ae1765bf..00000000 --- a/src/situation/situation-element.ts +++ /dev/null @@ -1,564 +0,0 @@ -import { TreeNode } from "../xml/tree-node" - -import { PtSituationSource } from './situation-source' - -interface TimeInterval { - startDate: Date - endDate: Date -} - -type ScopeType = 'line' | 'stopPlace' | 'vehicleJourney' | 'unknown' - -interface PassengerInformationAction { - actionRef: string | null - ownerRef: string | null - perspectives: string[] - mapTextualContent: Record -} - -interface StopPlace { - stopPlaceRef: string - placeName: string -} - -interface NetworkOperator { - operatorRef: string -} - -interface LineNetwork { - operator: NetworkOperator - lineRef: string - publishedLineName: string - stopPlaces: StopPlace[] -} - -interface AffectedLineNetworkWithStops { - lineNetwork: LineNetwork - directionRef: string - stopPlaces: StopPlace[] -} - -interface FramedVehicleJourneyRef { - dataFrameRef: string - datedVehicleJourneyRef: string -} - -interface AffectedStopPlace { - stopPlaceRef: string - placeName: string | null -} - -interface AffectedVehicleJourney { - framedVehicleJourneyRef: FramedVehicleJourneyRef - operator: NetworkOperator - origin: AffectedStopPlace | null - destination: AffectedStopPlace | null - callStopsRef: string[] - lineRef: string | null - publishedLineName: string | null -} - -interface PublishingActionAffect { - type: 'stop' | 'entire-line' | 'partial-line' | 'vehicle-journey' - affect: StopPlace | LineNetwork | AffectedLineNetworkWithStops | AffectedVehicleJourney -} - -interface PublishingAction { - passengerInformation: PassengerInformationAction - affects: PublishingActionAffect[] -} - -// Support also the v1 model with Description/Detail in the root level of the -export interface SituationContent { - summary: string - descriptions: string[] - details: string[] -} - -export class PtSituationElement { - public situationNumber: string - public creationTime: Date - public countryRef: string - public participantRef: string - public version: number - public source: PtSituationSource - public progress: string - public validityPeriods: TimeInterval[] - public alertCause: string - public priority: number - public scopeType: ScopeType - public publishingActions: PublishingAction[] - public isPlanned: boolean - - public situationContent: SituationContent | null - - public treeNode: TreeNode | null - - constructor( - situationNumber: string, - creationTime: Date, - countryRef: string, - participantRef: string, - version: number, - source: PtSituationSource, - progress: string, - validityPeriods: TimeInterval[], - alertCause: string, - priority: number, - scopeType: ScopeType, - publishingActions: PublishingAction[], - isPlanned: boolean - ) { - this.situationNumber = situationNumber - this.creationTime = creationTime - this.countryRef = countryRef - this.participantRef = participantRef - this.version = version - this.source = source - this.progress = progress - this.validityPeriods = validityPeriods - this.alertCause = alertCause - this.priority = priority - this.scopeType = scopeType - this.publishingActions = publishingActions - this.isPlanned = isPlanned - - this.situationContent = null - - this.treeNode = null; - } - - public static initWithSituationTreeNode(treeNode: TreeNode): PtSituationElement | null { - const situationNumber = treeNode.findTextFromChildNamed('siri:SituationNumber'); - - const creationTimeS = treeNode.findTextFromChildNamed('siri:CreationTime'); - if (creationTimeS === null) { - console.error('ERROR - creationTimeS is null', 'PtSituationElement.initFromSituationNode'); - console.log(treeNode); - return null; - } - const creationTime = new Date(creationTimeS); - - const countryRef = treeNode.findTextFromChildNamed('siri:CountryRef') ?? 'n/a CountryRef'; - const participantRef = treeNode.findTextFromChildNamed('siri:ParticipantRef') ?? 'n/a ParticipantRef'; - - const versionS = treeNode.findTextFromChildNamed('siri:Version'); - if (versionS === null) { - console.error('ERROR - Version is NULL', 'PtSituationElement.initFromSituationNode'); - console.log(treeNode); - return null; - } - const version = parseInt(versionS) - - const situationSource = PtSituationSource.initWithSituationTreeNode(treeNode); - - const situationProgress = treeNode.findTextFromChildNamed('siri:Progress') ?? 'n/a Progress'; - - const validityPeriods: TimeInterval[] = []; - const validityPeriodNodes = treeNode.findChildrenNamed('siri:ValidityPeriod'); - validityPeriodNodes.forEach(validityPeriodNode => { - const validityPeriodStartDateS = validityPeriodNode.findTextFromChildNamed('siri:StartTime'); - const validityPeriodEndDateS = validityPeriodNode.findTextFromChildNamed('siri:EndTime'); - if (!(validityPeriodStartDateS && validityPeriodEndDateS)) { - return; - } - const validityPeriod: TimeInterval = { - startDate: new Date(validityPeriodStartDateS), - endDate: new Date(validityPeriodEndDateS) - }; - validityPeriods.push(validityPeriod); - }); - - if (validityPeriods.length === 0) { - console.error('initFromSituationNode: EMPTY ') - console.log(situationNumber); - console.log(treeNode); - return null; - } - - const alertCause = treeNode.findTextFromChildNamed('siri:AlertCause') ?? 'n/a AlertCause'; - - const situationPriorityS = treeNode.findTextFromChildNamed('siri:Priority'); - if (situationPriorityS === null) { - console.error('ERROR - Priority is NULL', 'PtSituationElement.initFromSituationNode'); - console.log(treeNode); - return null; - } - const situationPriority = parseInt(situationPriorityS); - - const scopeType: ScopeType = (() => { - const scopeTypeS = treeNode.findTextFromChildNamed('siri:ScopeType'); - - if (scopeTypeS === 'line' || scopeTypeS === 'route') { - return 'line' - }; - - if (scopeTypeS === 'stopPlace' || scopeTypeS === 'stopPoint') { - return 'stopPlace' - }; - - if (scopeTypeS === 'vehicleJourney') { - return 'vehicleJourney'; - }; - - return 'unknown'; - })(); - - if (!(situationNumber && situationSource)) { - console.error('ERROR - cant init', 'PtSituationElement.initFromSituationNode'); - console.log(treeNode); - return null; - } - - const plannedS = treeNode.findTextFromChildNamed('siri:Planned'); - const isPlanned = plannedS === 'true'; - - const publishingActions = PtSituationElement.computePublishingActionsFromSituationNode(situationNumber, scopeType, treeNode); - - const situationElement = new PtSituationElement( - situationNumber, - creationTime, - countryRef, - participantRef, - version, - situationSource, - situationProgress, - validityPeriods, - alertCause, - situationPriority, - scopeType, - publishingActions, - isPlanned, - ); - situationElement.treeNode = treeNode; - situationElement.situationContent = this.computeSituationContent(treeNode); - - if ((situationElement.publishingActions.length === 0) && (situationElement.situationContent === null)) { - console.error('PtSituationElement.initFromSituationNode: NO publishing action found and also situationContent is null') - } - - return situationElement; - } - - private static computePublishingActionsFromSituationNode(situationNumber: string, scopeType: ScopeType, treeNode: TreeNode): PublishingAction[] { - const publishingActions: PublishingAction[] = []; - - const publishingActionsNode = treeNode.findChildNamed('siri:PublishingActions'); - if (publishingActionsNode === null) { - return publishingActions; - } - - const publishingActionNodes = publishingActionsNode.findChildrenNamed('siri:PublishingAction'); - publishingActionNodes.forEach(publishingActionNode => { - const publishingAction = PtSituationElement.computePublishingAction(situationNumber, scopeType, publishingActionNode); - if (publishingAction === null) { - console.error('ERROR - cant compute PublishingAction', 'PtSituationElement.initFromSituationNode'); - console.log(publishingActionNode); - return; - } - - publishingActions.push(publishingAction); - }); - - return publishingActions; - } - - private static computePublishingAction(situationNumber: string, scopeType: ScopeType, publishingActionTreeNode: TreeNode): PublishingAction | null { - const infoActionNode = publishingActionTreeNode.findChildNamed('siri:PassengerInformationAction'); - if (infoActionNode === null) { - console.error('computePublishingAction: NO '); - console.log(situationNumber); - console.log(publishingActionTreeNode); - return null; - } - - const actionRef = infoActionNode.findTextFromChildNamed('siri:ActionRef'); - const ownerRef = infoActionNode.findTextFromChildNamed('siri:OwnerRef'); - - const perspectives: string[] = []; - const perspectiveNodes = infoActionNode.findChildrenNamed('siri:Perspective') - perspectiveNodes.forEach(perspectiveNode => { - const perspectiveText = perspectiveNode.text; - if (perspectiveText) { - perspectives.push(perspectiveText); - } - }); - - const textualContentTreeNode = publishingActionTreeNode.findChildNamed('siri:PassengerInformationAction/siri:TextualContent'); - let mapTextualContent: Record = {}; - if (textualContentTreeNode) { - mapTextualContent = {}; - textualContentTreeNode.children.forEach(childTreeNode => { - const textKey = childTreeNode.name.replace('siri:', '').replace('Content', ''); - if (!(textKey in mapTextualContent)) { - mapTextualContent[textKey] = []; - } - - if (childTreeNode.children.length > 0) { - const textValue = childTreeNode.children[0].text; - if (textValue !== null) { - mapTextualContent[textKey].push(textValue.trim()); - } - } - }); - } - - const actionAffects = PtSituationElement.computeAffects(situationNumber, scopeType, publishingActionTreeNode); - - const publishingAction: PublishingAction = { - affects: actionAffects, - passengerInformation: { - actionRef: actionRef, - ownerRef: ownerRef, - perspectives: perspectives, - mapTextualContent: mapTextualContent, - }, - } - - return publishingAction; - } - - private static computeAffects(situationNumber: string, scopeType: ScopeType, publishingActionNode: TreeNode): PublishingActionAffect[] { - const actionAffects: PublishingActionAffect[] = [] - - const affectedNetworkTreeNode = publishingActionNode.findChildNamed('siri:PublishAtScope/siri:Affects/siri:Networks/siri:AffectedNetwork'); - if (affectedNetworkTreeNode) { - const affectedLineNetworkNodes = affectedNetworkTreeNode.findChildrenNamed('siri:AffectedLine'); - affectedLineNetworkNodes.forEach(affectedLineNetworkNode => { - const lineNetwork = PtSituationElement.computeLineNetwork(affectedLineNetworkNode); - if (lineNetwork === null) { - return - } - - if (scopeType === 'line') { - actionAffects.push({ - type: 'entire-line', - affect: lineNetwork - }) - } - - if (scopeType === 'stopPlace') { - const directionRef = affectedLineNetworkNode.findTextFromChildNamed('siri:Direction/siri:DirectionRef') ?? 'n/a'; - - const stopPlacesNodes = affectedLineNetworkNode.findChildrenNamed('siri:StopPlaces/siri:AffectedStopPlace'); - const stopPlaces = PtSituationElement.computeAffectedStopPlaces(stopPlacesNodes); - - const affectedPartialLine: AffectedLineNetworkWithStops = { - lineNetwork: lineNetwork, - directionRef: directionRef, - stopPlaces: stopPlaces, - } - - actionAffects.push({ - type: 'partial-line', - affect: affectedPartialLine - }); - } - }); - } - - if (scopeType === 'stopPlace') { - const stopPlacesTreeNode = publishingActionNode.findChildNamed('siri:PublishAtScope/siri:Affects/siri:StopPlaces'); - if (stopPlacesTreeNode) { - const affectedStopPlaceNodes = stopPlacesTreeNode.findChildrenNamed('siri:AffectedStopPlace'); - const stopPlaces = PtSituationElement.computeAffectedStopPlaces(affectedStopPlaceNodes); - stopPlaces.forEach(stopPlace => { - actionAffects.push({ - type: 'stop', - affect: stopPlace - }); - }); - } - } - - if (scopeType === 'vehicleJourney') { - const affectedVehicleJourneys = PtSituationElement.computeAffectedJourneys(situationNumber, publishingActionNode); - affectedVehicleJourneys.forEach(affectedVehicleJourney => { - actionAffects.push({ - type: 'vehicle-journey', - affect: affectedVehicleJourney - }); - }); - } - - return actionAffects; - } - - private static computeLineNetwork(lineNetworkNode: TreeNode): LineNetwork | null { - const operatorRef = lineNetworkNode.findTextFromChildNamed('siri:AffectedOperator/siri:OperatorRef'); - const lineRef = lineNetworkNode.findTextFromChildNamed('siri:LineRef'); - const publishedLineName = lineNetworkNode.findTextFromChildNamed('siri:PublishedLineName'); - - if ((operatorRef === null) || (lineRef === null) || (publishedLineName === null)) { - console.log('ERROR: LineNetwork cant init'); - console.log(lineNetworkNode); - return null; - } - - const stopPlaceNodes = lineNetworkNode.findChildrenNamed('siri:StopPlaces/siri:AffectedStopPlace'); - const stopPlaces = PtSituationElement.computeAffectedStopPlaces(stopPlaceNodes); - - const lineNetwork: LineNetwork = { - operator: { - operatorRef: operatorRef - }, - lineRef: lineRef, - publishedLineName: publishedLineName, - stopPlaces: stopPlaces - }; - - return lineNetwork; - } - - private static computeAffectedStopPlaces(stopPlaceNodes: TreeNode[]): StopPlace[] { - const stopPlaces: StopPlace[] = [] - - stopPlaceNodes.forEach(stopPlaceNode => { - const stopPlaceRef = stopPlaceNode.findTextFromChildNamed('siri:StopPlaceRef'); - const placeName = stopPlaceNode.findTextFromChildNamed('siri:PlaceName'); - - if ((stopPlaceRef === null) || (placeName === null)) { - console.log('ERROR: StopPlace cant init'); - console.log(stopPlaceNode); - return null; - } - - const stopPlace: StopPlace = { - stopPlaceRef: stopPlaceRef, - placeName: placeName, - } - stopPlaces.push(stopPlace); - }); - - return stopPlaces; - } - - private static computeAffectedJourneys(situationNumber: string, publishingActionNode: TreeNode): AffectedVehicleJourney[] { - const affectedVehicleJourneys: AffectedVehicleJourney[] = []; - - const affectedVehicleJourneyNodes = publishingActionNode.findChildrenNamed('siri:PublishAtScope/siri:Affects/siri:VehicleJourneys/siri:AffectedVehicleJourney'); - affectedVehicleJourneyNodes.forEach((vehicleJourneyNode, idx) => { - const framedVehicleJourneyRefNode = vehicleJourneyNode.findChildNamed('siri:FramedVehicleJourneyRef'); - if (framedVehicleJourneyRefNode === null) { - console.error('computeAffectedJourneys - NULL FramedVehicleJourneyRef'); - console.log(situationNumber); - console.log(vehicleJourneyNode); - return; - } - - const dataFrameRef = framedVehicleJourneyRefNode.findTextFromChildNamed('siri:DataFrameRef'); - const datedVehicleJourneyRef = framedVehicleJourneyRefNode.findTextFromChildNamed('siri:DatedVehicleJourneyRef'); - if (dataFrameRef === null || datedVehicleJourneyRef === null) { - console.error('computeAffectedJourneys - NULL FramedVehicleJourneyRef members'); - console.log(situationNumber); - console.log(framedVehicleJourneyRefNode); - return; - } - - const framedVehicleJourneyRef: FramedVehicleJourneyRef = { - dataFrameRef: dataFrameRef, - datedVehicleJourneyRef: datedVehicleJourneyRef, - } - - const operatorRef = vehicleJourneyNode.findTextFromChildNamed('siri:Operator/siri:OperatorRef'); - if (operatorRef === null) { - console.error('computeAffectedJourneys - NULL operatorRef'); - console.log(situationNumber); - console.log(vehicleJourneyNode); - return; - } - - let origin: AffectedStopPlace | null = null; - const orginRef = vehicleJourneyNode.findTextFromChildNamed('siri:Origins/siri:StopPlaceRef'); - if (orginRef !== null) { - origin = { - stopPlaceRef: orginRef, - placeName: vehicleJourneyNode.findTextFromChildNamed('siri:Origins/siri:PlaceName') - } - } - - let destination: AffectedStopPlace | null = null; - const destinationRef = vehicleJourneyNode.findTextFromChildNamed('siri:Destinations/siri:StopPlaceRef'); - if (destinationRef !== null) { - destination = { - stopPlaceRef: destinationRef, - placeName: vehicleJourneyNode.findTextFromChildNamed('siri:Destinations/siri:PlaceName') - } - } - - const stopCallNodes = vehicleJourneyNode.findChildrenNamed('siri:Calls/siri:Call'); - const callStopsRef: string[] = []; - stopCallNodes.forEach(stopCallNode => { - const stopPlaceRef = stopCallNode.findTextFromChildNamed('siri:StopPlaceRef'); - if (stopPlaceRef === null) { - return - } - - callStopsRef.push(stopPlaceRef); - }); - - const lineRef = vehicleJourneyNode.findTextFromChildNamed('siri:LineRef'); - const publishedLineName = vehicleJourneyNode.findTextFromChildNamed('siri:PublishedLineName'); - - const affectedVehicleJourney: AffectedVehicleJourney = { - framedVehicleJourneyRef: framedVehicleJourneyRef, - operator: { - operatorRef: operatorRef - }, - origin: origin, - destination: destination, - callStopsRef: callStopsRef, - lineRef: lineRef, - publishedLineName: publishedLineName, - }; - - affectedVehicleJourneys.push(affectedVehicleJourney); - }); - - return affectedVehicleJourneys; - } - - public isActive(date: Date = new Date()): boolean { - const activePeriod = this.validityPeriods.find(el => { - return (el.startDate < date) && (el.endDate > date); - }) ?? null; - - return activePeriod !== null; - } - - - public static computeSituationContent(treeNode: TreeNode): SituationContent | null { - const summary = treeNode.findTextFromChildNamed('siri:Summary'); - - if (summary === null) { - return null; - } - - const descriptions: string[] = [] - const descriptionNodes = treeNode.findChildrenNamed('siri:Description'); - descriptionNodes.forEach(descriptionTreeNode => { - const descriptionText = descriptionTreeNode.text; - if (descriptionText) { - descriptions.push(descriptionText); - } - }); - - const details: string[] = [] - const detailNodes = treeNode.findChildrenNamed('siri:Detail'); - detailNodes.forEach(detailTreeNode => { - const detailText = detailTreeNode.text; - if (detailText) { - details.push(detailText); - } - }); - - const situationContent: SituationContent = { - summary: summary, - descriptions: descriptions, - details: details - }; - - return situationContent; - } - -} diff --git a/src/situation/situation-source.ts b/src/situation/situation-source.ts deleted file mode 100644 index 7d462b11..00000000 --- a/src/situation/situation-source.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { TreeNode } from "../xml/tree-node" - -export class PtSituationSource { - public sourceType: string - public countryRef: string | null - public name: string | null - public externalCode: string | null - - constructor(sourceType: string) { - this.sourceType = sourceType - this.countryRef = null; - this.name = null - this.externalCode = null - } - - public static initWithSituationTreeNode(treeNode: TreeNode): PtSituationSource | null { - const sourceType = treeNode.findTextFromChildNamed('siri:Source/siri:SourceType'); - - if (sourceType === null) { - console.log('ERROR - cant PtSituationSource.initFromSituationNode') - console.log(treeNode); - return null; - } - - const situationSource = new PtSituationSource(sourceType); - situationSource.countryRef = treeNode.findTextFromChildNamed('siri:Source/siri:CountryRef'); - situationSource.name = treeNode.findTextFromChildNamed('siri:Source/siri:Name'); - situationSource.externalCode = treeNode.findTextFromChildNamed('siri:Source/siri:ExternalCode'); - - return situationSource; - } -} diff --git a/src/stop-event/stop-event.ts b/src/stop-event/stop-event.ts deleted file mode 100644 index d07420de..00000000 --- a/src/stop-event/stop-event.ts +++ /dev/null @@ -1,125 +0,0 @@ -import { TreeNode } from '../xml/tree-node'; - -import { DEBUG_LEVEL } from '../constants'; - -import { DataHelpers } from '../helpers/data-helpers'; -import { StopPoint } from '../trip/leg/timed-leg/stop-point' -import { JourneyService } from '../journey/journey-service' -import { Location } from '../location/location'; -import { PtSituationElement } from '../situation/situation-element'; - -export type StationBoardType = 'Departures' | 'Arrivals' - -export class StopEvent { - public journeyService: JourneyService; - public stopPoint: StopPoint; - public prevStopPoints: StopPoint[]; - public nextStopPoints: StopPoint[]; - - constructor(stopPoint: StopPoint, journeyService: JourneyService) { - this.stopPoint = stopPoint; - this.journeyService = journeyService; - this.prevStopPoints = []; - this.nextStopPoints = []; - } - - public static initWithTreeNode(treeNode: TreeNode): StopEvent | null { - const stopEventTreeNode = treeNode.findChildNamed('StopEvent'); - if (stopEventTreeNode === null) { - return null; - } - - const currentStopTreeNode = stopEventTreeNode.findChildNamed('ThisCall/CallAtStop'); - if (currentStopTreeNode === null) { - return null; - } - - const stopPoint = StopPoint.initWithTreeNode(currentStopTreeNode, 'Intermediate'); - if (stopPoint === null) { - return null; - } - - const journeyService = JourneyService.initWithTreeNode(stopEventTreeNode); - if (journeyService === null) { - return null; - } - - const stopEvent = new StopEvent(stopPoint, journeyService); - - const tripNodeTypes = ['PreviousCall', 'OnwardCall']; - tripNodeTypes.forEach(tripNodeType => { - const is_previous = tripNodeType === 'PreviousCall'; - const stopPointsRef = is_previous ? stopEvent.prevStopPoints : stopEvent.nextStopPoints; - - const groupStopsTreeNodes = stopEventTreeNode.findChildrenNamed(tripNodeType); - groupStopsTreeNodes.forEach(groupStopsTreeNode => { - const tripStopPointNode = groupStopsTreeNode.findChildNamed('CallAtStop'); - if (tripStopPointNode === null) { - return; - } - - const tripStopPoint = StopPoint.initWithTreeNode(tripStopPointNode, 'Intermediate'); - if (tripStopPoint) { - stopPointsRef.push(tripStopPoint); - } - }); - }); - - return stopEvent; - } - - public patchStopEventLocations(mapContextLocations: Record) { - let stopPointsToPatch = [this.stopPoint]; - - const stopPointEventTypes = ['prev', 'next']; - stopPointEventTypes.forEach(stopPointEventType => { - const is_previous = stopPointEventType === 'prev'; - let stopPointsRef = is_previous ? this.prevStopPoints : this.nextStopPoints; - stopPointsToPatch = stopPointsToPatch.concat(stopPointsRef); - }); - - stopPointsToPatch.forEach(stopPoint => { - let stopRef = stopPoint.location.stopPlace?.stopPlaceRef ?? null; - if (stopRef === null) { - if (DEBUG_LEVEL === 'DEBUG') { - console.error('StopEvent.patchStopEventLocations - no stopPlaceRef found in location'); - console.log(stopPoint); - } - - return; - } - - if (!(stopRef in mapContextLocations)) { - // For StopPoint try to get the StopPlace - // see https://github.com/openTdataCH/ojp-sdk/issues/97 - stopRef = DataHelpers.convertStopPointToStopPlace(stopRef); - } - - if (!(stopRef in mapContextLocations)) { - if (DEBUG_LEVEL === 'DEBUG') { - console.error('StopEvent.patchLocation - no stopPlaceRef found in mapContextLocations'); - console.log(stopPoint); - console.log('location.stopPlace?.stopPlaceRef :' + stopRef); - console.log(mapContextLocations); - } - - return; - } - - const contextLocation = mapContextLocations[stopRef]; - stopPoint.location.patchWithAnotherLocation(contextLocation); - }); - } - - public patchSituations(mapContextSituations: Record) { - this.stopPoint.siriSituations = []; - - const siriSituationIds = this.stopPoint.siriSituationIds.concat(this.journeyService.siriSituationIds); - siriSituationIds.forEach(siriSituationId => { - const siriSituation = mapContextSituations[siriSituationId] ?? null; - if (siriSituation) { - this.stopPoint.siriSituations.push(siriSituation) - } - }); - } -} diff --git a/src/trip/index.ts b/src/trip/index.ts deleted file mode 100644 index 4e880113..00000000 --- a/src/trip/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -export * from './leg/continous-leg/service-booking' -export * from './leg/timed-leg/stop-point' -export * from './leg/trip-leg' -export * from './leg/trip-continous-leg' -export * from './leg/trip-timed-leg' -export * from './trip-location-point' -export * from './trip-info/trip-info-result' -export * from './trip' diff --git a/src/trip/leg/continous-leg/service-booking.ts b/src/trip/leg/continous-leg/service-booking.ts deleted file mode 100644 index 7103e6e1..00000000 --- a/src/trip/leg/continous-leg/service-booking.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { TreeNode } from "../../../xml/tree-node"; - -export interface BookingArrangement { - agencyCode: string, - agencyName: string, - infoURL: string, -} - -export class ServiceBooking { - public bookingArrangements: BookingArrangement[] - - constructor(bookingArrangements: BookingArrangement[]) { - this.bookingArrangements = bookingArrangements; - } - - public static initWithLegTreeNode(legTreeNode: TreeNode): ServiceBooking | null { - const bookingArrangementsTreeNode = legTreeNode.findChildNamed('Service/BookingArrangements'); - if (bookingArrangementsTreeNode === null) { - return null; - } - - const bookingArrangementTreeNodes = bookingArrangementsTreeNode.findChildrenNamed('BookingArrangement'); - if (bookingArrangementTreeNodes.length === 0) { - console.error('ERROR - no BookingArrangements nodes found'); - return null; - } - - const bookingArrangements: BookingArrangement[] = []; - bookingArrangementTreeNodes.forEach(bookingArrangementTreeNode => { - const agencyCode = bookingArrangementTreeNode.findTextFromChildNamed('BookingAgencyName/Text'); - let infoURL = bookingArrangementTreeNode.findTextFromChildNamed('InfoUrl'); - - if ((agencyCode === null) || (infoURL === null)) { - return; - } - - infoURL = infoURL.trim(); - if (infoURL.length < 2) { - return; - } - // strip out <> - if (infoURL[0] === '<') { - infoURL = infoURL.substring(1, infoURL.length - 1); - } - - var el = document.createElement('textarea'); - el.innerHTML = infoURL.trim(); - infoURL = el.innerText; - - const bookingArrangement: BookingArrangement = { - agencyCode: agencyCode.trim(), - agencyName: ServiceBooking.computeAgencyName(agencyCode), - infoURL: infoURL, - }; - - bookingArrangements.push(bookingArrangement); - }); - - const serviceBooking = new ServiceBooking(bookingArrangements); - - return serviceBooking; - } - - private static computeAgencyName(agencyCode: string): string { - agencyCode = agencyCode.trim(); - if (agencyCode.endsWith('_local.ch')) { - return 'local.ch'; - } - if (agencyCode.endsWith('_maps.google.ch')) { - return 'maps.google.com'; - } - if (agencyCode.endsWith('_openstreetmap.org')) { - return 'openstreetmap.org'; - } - - return 'n/a catalog: ' + agencyCode; - } -} diff --git a/src/trip/leg/leg-track.ts b/src/trip/leg/leg-track.ts deleted file mode 100644 index b8b60d04..00000000 --- a/src/trip/leg/leg-track.ts +++ /dev/null @@ -1,142 +0,0 @@ -import { GeoPosition } from "../../location/geoposition"; -import { Location } from "../../location/location" -import { Duration } from "../../shared/duration"; -import { TreeNode } from "../../xml/tree-node"; -import { LinkProjection } from "../link-projection"; - -export class LegTrack { - public trackSections: TrackSection[] - public hasGeoData: boolean - public duration: Duration | null - - constructor(trackSections: TrackSection[]) { - this.trackSections = trackSections; - let durationMinutes = 0 - - this.hasGeoData = false - trackSections.forEach(trackSection => { - if (trackSection.linkProjection) { - this.hasGeoData = true - } - - if (trackSection.duration) { - durationMinutes += trackSection.duration.totalMinutes - } - }) - - this.duration = null - if (durationMinutes > 0) { - this.duration = Duration.initFromTotalMinutes(durationMinutes) - } - } - - public plus(otherLegTrack: LegTrack): LegTrack { - if (this.duration !== null && otherLegTrack.duration !== null) { - this.duration = this.duration.plus(otherLegTrack.duration); - } - - this.trackSections = this.trackSections.concat(otherLegTrack.trackSections); - - return this; - } - - public static initWithLegTreeNode(treeNode: TreeNode): LegTrack | null { - const legTrackTreeNode = treeNode.findChildNamed('LegTrack'); - if (legTrackTreeNode === null) { - return null; - } - - const trackSections: TrackSection[] = []; - - const trackSectionTreeNodes = legTrackTreeNode.findChildrenNamed('TrackSection'); - trackSectionTreeNodes.forEach(trackSectionTreeNode => { - const trackSection = TrackSection.initWithTreeNode(trackSectionTreeNode); - if (trackSection) { - trackSections.push(trackSection); - } - }); - - const legTrack = new LegTrack(trackSections); - - return legTrack; - } - - public fromGeoPosition(): GeoPosition | null { - const hasSections = this.trackSections.length === 0 - if (hasSections) { - return null - } - - const firstLinkProjection = this.trackSections[0].linkProjection - if (firstLinkProjection === null) { - return null - } - - return firstLinkProjection.coordinates[0] - } - - public toGeoPosition(): GeoPosition | null { - const hasSections = this.trackSections.length === 0 - if (hasSections) { - return null - } - - const lastLinkProjection = this.trackSections[this.trackSections.length - 1].linkProjection - if (lastLinkProjection === null) { - return null - } - - return lastLinkProjection.coordinates[lastLinkProjection.coordinates.length - 1] - } -} - -class TrackSection { - public fromLocation: Location - public toLocation: Location - public duration: Duration | null - public length: number | null - public linkProjection: LinkProjection | null; - - constructor(fromLocation: Location, toLocation: Location) { - this.fromLocation = fromLocation - this.toLocation = toLocation - this.duration = null - this.length = null - this.linkProjection = null - } - - public static initWithTreeNode(treeNode: TreeNode): TrackSection | null { - const trackStartTreeNode = treeNode.findChildNamed('TrackStart'); - const trackEndTreeNode = treeNode.findChildNamed('TrackEnd'); - - if (!(trackStartTreeNode && trackEndTreeNode)) { - return null; - } - - const fromLocation = Location.initWithTreeNode(trackStartTreeNode); - const toLocation = Location.initWithTreeNode(trackEndTreeNode); - - if (!(fromLocation && toLocation)) { - console.error('CANT instantiate TrackSection.initWithTreeNode'); - console.log(treeNode); - return null; - } - - const trackSection = new TrackSection(fromLocation, toLocation); - trackSection.duration = Duration.initWithTreeNode(treeNode); - - const linkProjection = LinkProjection.initWithTreeNode(treeNode); - trackSection.linkProjection = linkProjection; - - const lengthS = treeNode.findTextFromChildNamed('Length'); - if (lengthS === null) { - if (linkProjection) { - trackSection.length = linkProjection.computeLength(); - } - } else { - trackSection.length = parseInt(lengthS, 10); - } - - return trackSection; - } -} diff --git a/src/trip/leg/timed-leg/stop-point-time.ts b/src/trip/leg/timed-leg/stop-point-time.ts deleted file mode 100644 index 336fcad8..00000000 --- a/src/trip/leg/timed-leg/stop-point-time.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { TreeNode } from "../../../xml/tree-node" - -export class StopPointTime { - public timetableTime: Date - public estimatedTime: Date | null - public delayMinutes: number | null - - constructor(timetableTime: Date, estimatedTime: Date | null) { - this.timetableTime = timetableTime - this.estimatedTime = estimatedTime - - if (estimatedTime) { - const dateDiffSeconds = (estimatedTime.getTime() - timetableTime.getTime()) / 1000 - this.delayMinutes = Math.floor(dateDiffSeconds / 60) - } else { - this.delayMinutes = null - } - } - - public static initWithParentTreeNode(parentTreeNode: TreeNode, stopTimeType: string): StopPointTime | null { - const stopTimeTreeNode = parentTreeNode.findChildNamed(stopTimeType); - if (stopTimeTreeNode === null) { - return null - } - - const stopTime = StopPointTime.initWithContextTreeNode(stopTimeTreeNode); - return stopTime; - } - - private static initWithContextTreeNode(contextNode: TreeNode): StopPointTime | null { - const timetableTimeS = contextNode.findTextFromChildNamed('TimetabledTime'); - if (timetableTimeS === null) { - return null; - } - - const timetableTime = new Date(Date.parse(timetableTimeS)); - - let estimatedTime: Date | null = null; - const estimatedTimeS = contextNode.findTextFromChildNamed('EstimatedTime'); - if (estimatedTimeS) { - estimatedTime = new Date(Date.parse(estimatedTimeS)); - } - - const stopPointTime = new StopPointTime(timetableTime, estimatedTime) - return stopPointTime; - } - -} diff --git a/src/trip/leg/timed-leg/stop-point.ts b/src/trip/leg/timed-leg/stop-point.ts deleted file mode 100644 index 9f56dbad..00000000 --- a/src/trip/leg/timed-leg/stop-point.ts +++ /dev/null @@ -1,128 +0,0 @@ -import { Location } from "../../../location/location" -import { StopPointTime } from "./stop-point-time" -import { StopPointType } from "../../../types/stop-point-type" -import { PtSituationElement } from "../../../situation/situation-element" -import { TreeNode } from "../../../xml/tree-node" -import { StopPlace } from "../../../location/stopplace" -import { DEBUG_LEVEL } from "../../../constants" - - -type VehicleAccessType = - 'PLATFORM_ACCESS_WITHOUT_ASSISTANCE' | 'PLATFORM_ACCESS_WITH_ASSISTANCE' | 'PLATFORM_ACCESS_WITH_ASSISTANCE_WHEN_NOTIFIED' - | 'PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE' | 'ALTERNATIVE_TRANSPORT' | 'NO_DATA'; - -export class StopPoint { - public stopPointType: StopPointType - - public location: Location - public arrivalData: StopPointTime | null - public departureData: StopPointTime | null - public plannedPlatform: string | null - public actualPlatform: string | null - public sequenceOrder: number | null - public isNotServicedStop: boolean | null - - public siriSituationIds: string[] - public siriSituations: PtSituationElement[] - - public vehicleAccessType: VehicleAccessType | null - - constructor( - stopPointType: StopPointType, - location: Location, arrivalData: StopPointTime | null, - departureData: StopPointTime | null, - plannedPlatform: string | null, - sequenceOrder: number | null - ) { - this.stopPointType = stopPointType - this.location = location - this.arrivalData = arrivalData - this.departureData = departureData - this.plannedPlatform = plannedPlatform - this.actualPlatform = null - this.sequenceOrder = sequenceOrder - this.isNotServicedStop = null; - - this.siriSituationIds = []; - this.siriSituations = []; - - this.vehicleAccessType = null; - } - - public static initWithTreeNode(treeNode: TreeNode, stopPointType: StopPointType): StopPoint | null { - const stopPointRef = treeNode.findTextFromChildNamed('siri:StopPointRef'); - const stopPointName = treeNode.findTextFromChildNamed('StopPointName/Text'); - if (!(stopPointRef && stopPointName)) { - return null; - } - - const location = new Location(); - location.stopPlace = new StopPlace(stopPointRef, stopPointName, null); - - const arrivalData = StopPointTime.initWithParentTreeNode(treeNode, 'ServiceArrival'); - const departureData = StopPointTime.initWithParentTreeNode(treeNode, 'ServiceDeparture'); - const plannedPlatform = treeNode.findTextFromChildNamed('PlannedQuay/Text'); - - const sequenceOrderS = treeNode.findTextFromChildNamed('Order'); - const sequenceOrder = sequenceOrderS === null ? null : parseInt(sequenceOrderS, 10); - - const stopPoint = new StopPoint(stopPointType, location, arrivalData, departureData, plannedPlatform, sequenceOrder); - - stopPoint.actualPlatform = treeNode.findTextFromChildNamed('EstimatedQuay/Text'); - - const notServicedStopNode = treeNode.findChildNamed('NotServicedStop'); - if (notServicedStopNode) { - stopPoint.isNotServicedStop = notServicedStopNode.text === 'true'; - } - - stopPoint.siriSituationIds = []; - const situationFullRefTreeNodes = treeNode.findChildrenNamed('SituationFullRef'); - situationFullRefTreeNodes.forEach(situationFullRefTreeNode => { - const situationNumber = situationFullRefTreeNode.findTextFromChildNamed('siri:SituationNumber'); - if (situationNumber) { - stopPoint.siriSituationIds.push(situationNumber); - } - }); - - stopPoint.vehicleAccessType = StopPoint.computePlatformAssistance(treeNode); - - return stopPoint; - } - - private static computePlatformAssistance(treeNode: TreeNode): VehicleAccessType | null { - const platformText = treeNode.findTextFromChildNamed('NameSuffix/Text'); - if (platformText === null) { - return null; - } - - if (platformText === 'PLATFORM_ACCESS_WITH_ASSISTANCE') { - return 'PLATFORM_ACCESS_WITH_ASSISTANCE'; - } - - if (platformText === 'PLATFORM_ACCESS_WITH_ASSISTANCE_WHEN_NOTIFIED') { - return 'PLATFORM_ACCESS_WITH_ASSISTANCE_WHEN_NOTIFIED'; - } - - if (platformText === 'PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE') { - return 'PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE'; - } - - if (platformText === 'PLATFORM_ACCESS_WITHOUT_ASSISTANCE') { - return 'PLATFORM_ACCESS_WITHOUT_ASSISTANCE'; - } - - if (platformText === 'NO_DATA') { - return 'NO_DATA'; - } - - if (platformText === 'ALTERNATIVE_TRANSPORT') { - return 'ALTERNATIVE_TRANSPORT'; - } - - if (DEBUG_LEVEL === 'DEBUG') { - console.log('StopPoint.computePlatformAssistance - cant compute platform from text:--' + platformText + '--'); - } - - return null; - } -} diff --git a/src/trip/leg/trip-continous-leg.ts b/src/trip/leg/trip-continous-leg.ts deleted file mode 100644 index ae35b616..00000000 --- a/src/trip/leg/trip-continous-leg.ts +++ /dev/null @@ -1,210 +0,0 @@ -import { Location } from '../../location/location' - -import { PathGuidance } from '../path-guidance' - -import { LegTrack } from './leg-track' - -import { TripLeg, LegType } from "./trip-leg" -import { Duration } from '../../shared/duration' -import { IndividualTransportMode, TransferMode } from '../../types/individual-mode.types' -import { ServiceBooking } from './continous-leg/service-booking' -import { TreeNode } from '../../xml/tree-node' -import { XMLElement } from 'xmlbuilder' - -export class TripContinousLeg extends TripLeg { - public legTransportMode: IndividualTransportMode | null - public legDistance: number - public pathGuidance: PathGuidance | null - public walkDuration: Duration | null - public serviceBooking: ServiceBooking | null; - public transferMode: TransferMode | null - - constructor(legType: LegType, legIDx: number, legDistance: number, fromLocation: Location, toLocation: Location) { - super(legType, legIDx, fromLocation, toLocation) - - this.legTransportMode = null - this.legDistance = legDistance - this.pathGuidance = null - this.walkDuration = null; - this.serviceBooking = null; - this.transferMode = null; - } - - public static initWithTreeNode(legIDx: number, treeNode: TreeNode, legType: LegType): TripContinousLeg | null { - const legStartPlaceRefTreeNode = treeNode.findChildNamed('LegStart'); - const legEndPlaceRefTreeNode = treeNode.findChildNamed('LegEnd'); - if (legStartPlaceRefTreeNode === null || legEndPlaceRefTreeNode === null) { - return null; - } - - const legStartPlaceRef = Location.initWithTreeNode(legStartPlaceRefTreeNode); - const legEndPlaceRef = Location.initWithTreeNode(legEndPlaceRefTreeNode); - if (legStartPlaceRef === null || legEndPlaceRef === null) { - return null; - } - - let distanceS = treeNode.findTextFromChildNamed('Length') ?? '0'; - const legDistance = parseInt(distanceS); - - const tripLeg = new TripContinousLeg(legType, legIDx, legDistance, legStartPlaceRef, legEndPlaceRef); - tripLeg.legDuration = Duration.initWithTreeNode(treeNode); - - tripLeg.pathGuidance = PathGuidance.initWithTreeNode(treeNode); - - tripLeg.legTransportMode = tripLeg.computeLegTransportModeFromTreeNode(treeNode, legType); - tripLeg.transferMode = tripLeg.computeLegTransferModeFromTreeNode(treeNode); - - const isOthersDriveCar = tripLeg.legTransportMode === 'taxi' || tripLeg.legTransportMode === 'others-drive-car'; - - if (isOthersDriveCar) { - tripLeg.serviceBooking = ServiceBooking.initWithLegTreeNode(treeNode); - } - - tripLeg.legTrack = LegTrack.initWithLegTreeNode(treeNode); - - if (legType === 'TransferLeg') { - tripLeg.walkDuration = Duration.initWithTreeNode(treeNode, 'WalkDuration'); - } - - return tripLeg; - } - - private computeLegTransportModeFromTreeNode(treeNode: TreeNode, legType: LegType): IndividualTransportMode | null { - let legModeS: string | null = null; - - if (legType === 'TransferLeg') { - return null; - } - - if (legType === 'TimedLeg' || legType === 'ContinousLeg') { - legModeS = treeNode.findTextFromChildNamed('Service/IndividualMode'); - if (legModeS === null) { - const personalModeParts: string[] = []; - - const personalNodePaths: string[] = [ - 'Service/PersonalMode', - 'Service/PersonalModeOfOperation', - 'Service/Mode/PtMode', - 'Service/Mode/siri:RailSubmode', - 'Service/Mode/siri:WaterSubmode', - ]; - - personalNodePaths.forEach(personalNodePath => { - const personalNodeValue = treeNode.findTextFromChildNamed(personalNodePath); - if (personalNodeValue !== null) { - personalModeParts.push(personalNodeValue); - } - }); - - legModeS = personalModeParts.join('.'); - } - } - - const firstBookingAgency = treeNode.findTextFromChildNamed('Service/BookingArrangements/BookingArrangement/BookingAgencyName/Text'); - const legMode = this.computeLegTransportModeFromString(legModeS, firstBookingAgency); - - if (legMode === null) { - console.error('ERROR computeLegTransportModeFromString'); - console.log('=> CANT handle mode --' + legModeS + '--'); - console.log(treeNode); - } - - return legMode; - } - - private computeLegTransferModeFromTreeNode(treeNode: TreeNode): TransferMode | null { - const transferModeS = treeNode.findTextFromChildNamed('TransferMode'); - if (transferModeS === null) { - return null; - } - - if (transferModeS === 'walk') { - return 'walk' - } - if (transferModeS === 'remainInVehicle') { - return 'remainInVehicle' - } - - console.error('CANT map TransferMode from ==' + transferModeS + '=='); - - return null; - } - - private computeLegTransportModeFromString(legModeS: string | null, firstBookingAgency: string | null = null): IndividualTransportMode | null { - if (legModeS === null) { - return null - } - - if (legModeS === 'walk') { - return 'walk' - } - - if (legModeS === 'self-drive-car') { - return 'self-drive-car' - } - - if (legModeS === 'cycle') { - return 'cycle' - } - - if (legModeS === 'taxi') { - // HACK: BE returns 'taxi' for limo, check first booking agency to see if is actually a limo leg - if (firstBookingAgency?.indexOf('_limousine_') !== -1) { - return 'others-drive-car'; - } - return 'taxi' - } - - if (legModeS === 'car.own') { - return 'self-drive-car'; - } - - if (legModeS === 'car.own.rail.vehicleTunnelTransportRailService') { - return 'car-shuttle-train'; - } - - if (legModeS === 'car.own.water.localCarFerry') { - return 'car-ferry' - } - - return null - } - - public isDriveCarLeg(): boolean { - return this.legTransportMode === 'self-drive-car'; - } - - public isSharedMobility(): boolean { - if (this.legTransportMode === null) { - return false; - } - - const sharedMobilityModes: IndividualTransportMode[] = ['cycle', 'bicycle_rental', 'car_sharing', 'escooter_rental']; - const hasSharedMobilityMode = sharedMobilityModes.indexOf(this.legTransportMode) !== -1; - - return hasSharedMobilityMode; - } - - public isWalking(): boolean { - return this.legTransportMode === 'walk'; - } - - public isTaxi(): boolean { - return this.legTransportMode === 'taxi' || this.legTransportMode === 'others-drive-car'; - } - - public formatDistance(): string { - if (this.legDistance > 1000) { - const distanceKmS = (this.legDistance / 1000).toFixed(1) + ' km' - return distanceKmS - } - - return this.legDistance + ' m' - } - - public addToXMLNode(parentNode: XMLElement) { - const tripLegNode = parentNode.ele('ojp:TripLeg'); - tripLegNode.ele('ojp:LegId', this.legID); - tripLegNode.ele('ojp:' + this.legType); - } -} diff --git a/src/trip/leg/trip-leg-factory.ts b/src/trip/leg/trip-leg-factory.ts deleted file mode 100644 index 66bebbb4..00000000 --- a/src/trip/leg/trip-leg-factory.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { TreeNode } from "../../xml/tree-node"; - -import { TripContinousLeg } from "./trip-continous-leg"; -import { TripTimedLeg } from "./trip-timed-leg"; - -export class TripLegFactory { - public static initWithTreeNode(treeNode: TreeNode): TripContinousLeg | TripTimedLeg | null { - const legID_string = treeNode.findTextFromChildNamed('LegId'); - if (legID_string === null) { - return null; - } - const legID = parseInt(legID_string, 10); - - const transferLegTreeNode = treeNode.findChildNamed('TransferLeg'); - if (transferLegTreeNode) { - const transferLeg = TripContinousLeg.initWithTreeNode(legID, transferLegTreeNode, 'TransferLeg'); - if (transferLeg) { - return transferLeg; - } - } - - const timedLegTreeNode = treeNode.findChildNamed('TimedLeg'); - if (timedLegTreeNode) { - const timedLeg = TripTimedLeg.initWithTreeNode(legID, timedLegTreeNode); - if (timedLeg) { - return timedLeg; - } - } - - const tripContinousLegTreeNode = treeNode.findChildNamed('ContinuousLeg'); - if (tripContinousLegTreeNode) { - const tripContinousLeg = TripContinousLeg.initWithTreeNode(legID, tripContinousLegTreeNode, 'ContinousLeg'); - if (tripContinousLeg) { - return tripContinousLeg; - } - } - - return null; - } -} diff --git a/src/trip/leg/trip-leg.ts b/src/trip/leg/trip-leg.ts deleted file mode 100644 index 979dc7e2..00000000 --- a/src/trip/leg/trip-leg.ts +++ /dev/null @@ -1,105 +0,0 @@ -import * as GeoJSON from 'geojson' - -import { XMLElement } from 'xmlbuilder' - -import { DataHelpers } from '../../helpers/data-helpers' - -import { Location } from '../../location/location' -import { LegTrack } from './leg-track' - -import { StopPointType } from '../../types/stop-point-type' -import { Duration } from '../../shared/duration' -import { PtSituationElement } from '../../situation/situation-element' -import { DEBUG_LEVEL } from '../../constants' - -export type LegType = 'ContinousLeg' | 'TimedLeg' | 'TransferLeg' - -export interface LinePointData { - type: StopPointType, - feature: GeoJSON.Feature -} - -export class TripLeg { - public legType: LegType - public legID: number - public fromLocation: Location - public toLocation: Location - public legTrack: LegTrack | null - public legDuration: Duration | null - - constructor(legType: LegType, legIDx: number, fromLocation: Location, toLocation: Location) { - this.legType = legType - this.legID = legIDx - this.fromLocation = fromLocation - this.toLocation = toLocation - this.legTrack = null - this.legDuration = null - } - - public patchLocations(mapContextLocations: Record) { - [this.fromLocation, this.toLocation].forEach(location => { - this.patchLocation(location, mapContextLocations); - - if (location.geoPosition) { - return - } - - if (this.legTrack?.hasGeoData) { - const isFrom = location === this.fromLocation - if (isFrom) { - this.fromLocation.geoPosition = this.legTrack.fromGeoPosition() - } else { - this.toLocation.geoPosition = this.legTrack.toGeoPosition() - } - } - }) - } - - public patchSituations(mapContextSituations: Record) { - // override - } - - protected patchLocation(location: Location, mapContextLocations: Record) { - if (location.geoPosition) { - return - } - - let stopRef = location.stopPlace?.stopPlaceRef ?? null; - if (stopRef === null) { - if (DEBUG_LEVEL === 'DEBUG') { - console.error('TripLeg.patchLocation - no stopPlaceRef found in location'); - console.log(location); - } - - return; - } - - if (!(stopRef in mapContextLocations)) { - // For StopPoint try to get the StopPlace - // see https://github.com/openTdataCH/ojp-sdk/issues/97 - stopRef = DataHelpers.convertStopPointToStopPlace(stopRef); - } - - if (!(stopRef in mapContextLocations)) { - if (DEBUG_LEVEL === 'DEBUG') { - console.error('TripLeg.patchLocation - no stopPlaceRef found in mapContextLocations'); - console.log(location); - console.log('location.stopPlace?.stopPlaceRef :' + stopRef); - console.log(mapContextLocations); - } - - return; - } - - const contextLocation = mapContextLocations[stopRef]; - - location.patchWithAnotherLocation(contextLocation); - } - - public addToXMLNode(parentNode: XMLElement) { - // override - debugger; - } - -} - diff --git a/src/trip/leg/trip-timed-leg.ts b/src/trip/leg/trip-timed-leg.ts deleted file mode 100644 index 4d5d7f61..00000000 --- a/src/trip/leg/trip-timed-leg.ts +++ /dev/null @@ -1,157 +0,0 @@ -import { JourneyService } from '../../journey/journey-service' -import { StopPoint } from './timed-leg/stop-point' -import { LegTrack } from './leg-track' - -import { TripLeg, LegType, LinePointData } from "./trip-leg" - -import { StopPointTime } from './timed-leg/stop-point-time'; - -import { Location } from '../../location/location'; -import { PtSituationElement } from '../../situation/situation-element' -import { TreeNode } from '../../xml/tree-node' -import { XMLElement } from 'xmlbuilder' -import { StopPointType } from '../../types/stop-point-type' -import { TripRequestBoardingType } from '../../request' - -export class TripTimedLeg extends TripLeg { - public service: JourneyService - - public fromStopPoint: StopPoint - public toStopPoint: StopPoint - public intermediateStopPoints: StopPoint[] - - constructor( - legIDx: number, - service: JourneyService, - fromStopPoint: StopPoint, - toStopPoint: StopPoint, - intermediateStopPoints: StopPoint[] = [] - ) { - const legType: LegType = 'TimedLeg' - super(legType, legIDx, fromStopPoint.location, toStopPoint.location); - this.service = service - this.fromStopPoint = fromStopPoint - this.toStopPoint = toStopPoint - this.intermediateStopPoints = intermediateStopPoints - } - - public static initWithTreeNode(legIDx: number, treeNode: TreeNode): TripTimedLeg | null { - const service = JourneyService.initWithTreeNode(treeNode); - if (service === null) { - return null; - } - - const fromStopTreeNode = treeNode.findChildNamed('LegBoard'); - const toStopTreeNode = treeNode.findChildNamed('LegAlight'); - if (fromStopTreeNode === null || toStopTreeNode === null) { - return null; - } - - const fromStopPoint = StopPoint.initWithTreeNode(fromStopTreeNode, 'From') - const toStopPoint = StopPoint.initWithTreeNode(toStopTreeNode, 'To') - if (fromStopPoint === null || toStopPoint === null) { - return null; - } - - const intermediateStopPoints: StopPoint[] = [] - const intermediaryStopTreeNodes: TreeNode[] = treeNode.findChildrenNamed('LegIntermediates'); - intermediaryStopTreeNodes.forEach(intermediaryStopTreeNode => { - const stopPoint = StopPoint.initWithTreeNode(intermediaryStopTreeNode, 'Intermediate'); - if (stopPoint) { - intermediateStopPoints.push(stopPoint) - } - }); - - const timedLeg = new TripTimedLeg(legIDx, service, fromStopPoint, toStopPoint, intermediateStopPoints); - - timedLeg.legTrack = LegTrack.initWithLegTreeNode(treeNode); - if (timedLeg.legTrack && timedLeg.legDuration === null) { - timedLeg.legDuration = timedLeg.legTrack.duration; - } - - return timedLeg; - } - - public override patchLocations(mapContextLocations: Record) { - super.patchLocations(mapContextLocations) - - this.intermediateStopPoints.forEach(stopPoint => { - this.patchLocation(stopPoint.location, mapContextLocations); - }); - } - - public computeDepartureTime(): Date | null { - return this.computeStopPointTime(this.fromStopPoint.departureData) - } - - public computeArrivalTime(): Date | null { - return this.computeStopPointTime(this.toStopPoint.arrivalData) - } - - private computeStopPointTime(timeData: StopPointTime | null): Date | null { - if (timeData === null) { - return null - } - - const stopPointDate = timeData.estimatedTime ?? timeData.timetableTime; - return stopPointDate - } - - public patchSituations(mapContextSituations: Record) { - this.service.siriSituations = []; - this.service.siriSituationIds.forEach(siriSituationId => { - const siriSituation = mapContextSituations[siriSituationId] ?? null; - if (siriSituation) { - this.service.siriSituations.push(siriSituation) - } - }) - } - - public addToXMLNode(parentNode: XMLElement) { - const tripLegNode = parentNode.ele('ojp:TripLeg'); - tripLegNode.ele('ojp:LegId', this.legID); - - const timedLeg = tripLegNode.ele('ojp:TimedLeg'); - - const boardingTypes: TripRequestBoardingType[] = ['Arr', 'Dep']; - - const addStopPoint = (stopPoint: StopPoint, stopPointType: StopPointType) => { - const legEndpointName: string = (() => { - if (stopPointType === 'From') { - return 'ojp:LegBoard'; - } - if (stopPointType === 'To') { - return 'ojp:LegAlight'; - } - - return 'ojp:LegIntermediates'; - })(); - - const legEndpoint = timedLeg.ele(legEndpointName); - - const stopPlace = stopPoint.location.stopPlace; - if (stopPlace) { - legEndpoint.ele('StopPointRef', stopPlace.stopPlaceRef); - legEndpoint.ele('ojp:StopPointName').ele('ojp:Text', stopPlace.stopPlaceName ?? 'n/a'); - } - - boardingTypes.forEach(boardingType => { - const isArrival = boardingType === 'Arr'; - const serviceDepArrData = isArrival ? stopPoint.arrivalData : stopPoint.departureData; - - if (serviceDepArrData) { - const serviceDepArrName = isArrival ? 'ojp:ServiceArrival' : 'ojp:ServiceDeparture'; - legEndpoint.ele(serviceDepArrName).ele('ojp:TimetabledTime', serviceDepArrData.timetableTime.toISOString()); - } - }); - }; - - addStopPoint(this.fromStopPoint, 'From'); - this.intermediateStopPoints.forEach(stopPoint => { - addStopPoint(stopPoint, 'Intermediate'); - }); - addStopPoint(this.toStopPoint, 'To'); - - this.service.addToXMLNode(timedLeg); - } -} diff --git a/src/trip/link-projection.ts b/src/trip/link-projection.ts deleted file mode 100644 index 9e466aee..00000000 --- a/src/trip/link-projection.ts +++ /dev/null @@ -1,84 +0,0 @@ -import * as GeoJSON from 'geojson' - -import { GeoPosition } from "../location/geoposition"; -import { GeoPositionBBOX } from "../location/geoposition-bbox"; -import { TreeNode } from '../xml/tree-node'; - -export class LinkProjection { - public coordinates: GeoPosition[]; - public bbox: GeoPositionBBOX; - // TODO - add length or computeLength() - - constructor(coordinates: GeoPosition[], bbox: GeoPositionBBOX) { - this.coordinates = coordinates; - this.bbox = bbox; - } - - public static initWithTreeNode(treeNode: TreeNode): LinkProjection | null { - const linkProjectionTreeNode = treeNode.findChildNamed('LinkProjection'); - if (linkProjectionTreeNode === null) { - return null; - } - - const coordinates: GeoPosition[] = []; - - const positionTreeNodes = linkProjectionTreeNode.findChildrenNamed('Position'); - positionTreeNodes.forEach(positionTreeNode => { - const longitudeS = positionTreeNode.findTextFromChildNamed('siri:Longitude'); - const latitudeS = positionTreeNode.findTextFromChildNamed('siri:Latitude'); - - if (longitudeS && latitudeS) { - const position = new GeoPosition( - parseFloat(longitudeS), - parseFloat(latitudeS), - ) - - coordinates.push(position); - } - }); - - if (coordinates.length < 2) { - return null; - } - - const bbox = new GeoPositionBBOX(coordinates) - - const linkProjection = new LinkProjection(coordinates, bbox); - - return linkProjection; - } - - public computeLength(): number { - let distAB = 0; - - this.coordinates.forEach((geoPositionB, idx) => { - if (idx === 0) { - return; - } - - const geoPositionA = this.coordinates[idx - 1]; - distAB += geoPositionB.distanceFrom(geoPositionA); - }); - - return distAB; - } - - asGeoJSONFeature(): GeoJSON.Feature { - const feature: GeoJSON.Feature = { - type: 'Feature', - bbox: this.bbox.asFeatureBBOX(), - properties: {}, - geometry: { - type: 'LineString', - coordinates: [] - } - } - - this.coordinates.forEach(geoPosition => { - const pointCoords = [geoPosition.longitude, geoPosition.latitude]; - feature.geometry.coordinates.push(pointCoords) - }) - - return feature - } -} diff --git a/src/trip/path-guidance.ts b/src/trip/path-guidance.ts deleted file mode 100644 index 0851775a..00000000 --- a/src/trip/path-guidance.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { TreeNode } from "../xml/tree-node"; -import { LinkProjection } from "./link-projection"; - -export class PathGuidance { - public sections: PathGuidanceSection[]; - - constructor(sections: PathGuidanceSection[]) { - this.sections = sections; - } - - public static initWithTreeNode(treeNode: TreeNode): PathGuidance | null { - const pathGuidanceTreeNode = treeNode.findChildNamed('PathGuidance'); - if (pathGuidanceTreeNode === null) { - return null; - } - - let sections: PathGuidanceSection[] = []; - - const sectionTreeNodes = pathGuidanceTreeNode.findChildrenNamed('PathGuidanceSection'); - sectionTreeNodes.forEach(sectionTreeNode => { - const pathGuidanceSection = PathGuidanceSection.initWithSectionTreeNode(sectionTreeNode); - if (pathGuidanceSection) { - sections.push(pathGuidanceSection) - } - }); - - const pathGuidance = new PathGuidance(sections); - - return pathGuidance; - } -} - -class PathGuidanceSection { - public trackSection: TrackSection | null - public guidanceAdvice: string | null - public turnAction: string | null - - constructor() { - this.trackSection = null - this.guidanceAdvice = null - this.turnAction = null - } - - public static initWithSectionTreeNode(sectionTreeNode: TreeNode): PathGuidanceSection { - const pathGuidanceSection = new PathGuidanceSection(); - const trackSectionTreeNode = sectionTreeNode.findChildNamed('TrackSection'); - - if (trackSectionTreeNode) { - pathGuidanceSection.trackSection = TrackSection.initWithTrackSectionTreeNode(trackSectionTreeNode); - } - - pathGuidanceSection.guidanceAdvice = sectionTreeNode.findTextFromChildNamed('GuidanceAdvice'); - pathGuidanceSection.turnAction = sectionTreeNode.findTextFromChildNamed('TurnAction'); - - return pathGuidanceSection; - } -} - -class TrackSection { - public linkProjection: LinkProjection | null; - public roadName: string | null; - public duration: string | null; - public length: number | null; - - constructor() { - this.linkProjection = null; - this.roadName = null; - this.duration = null; - this.length = null; - } - - public static initWithTrackSectionTreeNode(trackSectionTreeNode: TreeNode): TrackSection { - const trackSection = new TrackSection(); - - trackSection.linkProjection = LinkProjection.initWithTreeNode(trackSectionTreeNode); - trackSection.roadName = trackSectionTreeNode.findTextFromChildNamed('RoadName'); - trackSection.duration = trackSectionTreeNode.findTextFromChildNamed('Duration'); - - const lengthS = trackSectionTreeNode.findTextFromChildNamed('Length'); - if (lengthS !== null) { - trackSection.length = parseInt(lengthS, 10); - } - - return trackSection; - } -} diff --git a/src/trip/trip-info/trip-info-result.ts b/src/trip/trip-info/trip-info-result.ts deleted file mode 100644 index 4b36fd4e..00000000 --- a/src/trip/trip-info/trip-info-result.ts +++ /dev/null @@ -1,103 +0,0 @@ -import { DEBUG_LEVEL } from "../../constants"; -import { DataHelpers } from "../../helpers/data-helpers"; -import { JourneyService } from "../../journey/journey-service"; -import { Location } from "../../location/location"; -import { TreeNode } from "../../xml/tree-node"; -import { StopPoint } from "../leg/timed-leg/stop-point"; - -interface TripInfoResultMetadata { - transportTypeName: string, - publishedJourneyNumber: string, - operatorName: string -} - -export class TripInfoResult { - public stopPoints: StopPoint[]; - public service: JourneyService; - public metadata: TripInfoResultMetadata - - constructor(stopPoints: StopPoint[], service: JourneyService, metadata: TripInfoResultMetadata) { - this.stopPoints = stopPoints; - this.service = service; - this.metadata = metadata - } - - public static initFromTreeNode(treeNode: TreeNode): TripInfoResult | null { - const serviceNode = treeNode.findChildNamed('Service'); - if (serviceNode === null) { - console.error('TripInfoResult.initFromTreeNode: no service node found'); - console.log(treeNode); - - return null; - } - const service = JourneyService.initWithTreeNode(treeNode); - if (service === null) { - console.error('JourneyService.initFromTreeNode: cant init service'); - console.log(serviceNode); - - return null; - } - - const previousCallNodes = treeNode.findChildrenNamed('PreviousCall'); - const onwardCallNodes = treeNode.findChildrenNamed('OnwardCall'); - - const callNodes = previousCallNodes.concat(onwardCallNodes); - - const stopPoints: StopPoint[] = []; - callNodes.forEach(callNode => { - const stopPoint = StopPoint.initWithTreeNode(callNode, 'Intermediate'); - if (stopPoint !== null) { - stopPoints.push(stopPoint); - } - }); - if (stopPoints.length < 2) { - console.error('TripInfoResult.initFromTreeNode: expected minimum 2 stops'); - console.log(treeNode); - - return null; - } - - const metadata: TripInfoResultMetadata = { - transportTypeName: treeNode.findTextFromChildNamed('Extension/TransportTypeName/Text') ?? 'TransportTypeName n/a', - publishedJourneyNumber: treeNode.findTextFromChildNamed('Extension/PublishedJourneyNumber/Text') ?? 'PublishedJourneyNumber n/a', - operatorName: treeNode.findTextFromChildNamed('Extension/OperatorName/Text') ?? 'OperatorName n/a', - }; - - const tripInfoResult = new TripInfoResult(stopPoints, service, metadata); - - return tripInfoResult; - } - - public patchLocations(mapContextLocations: Record) { - this.stopPoints.forEach(stopPoint => { - let stopPlaceRef = stopPoint.location.stopPlace?.stopPlaceRef ?? null; - if (stopPlaceRef === null) { - if (DEBUG_LEVEL === 'DEBUG') { - console.error('TripInfoResult.patchLocations - no stopPlaceRef found in location'); - console.log(stopPoint); - } - return; - } - - if (!(stopPlaceRef in mapContextLocations)) { - // For StopPoint try to get the StopPlace - // see https://github.com/openTdataCH/ojp-sdk/issues/97 - stopPlaceRef = DataHelpers.convertStopPointToStopPlace(stopPlaceRef); - } - - if (!(stopPlaceRef in mapContextLocations)) { - if (DEBUG_LEVEL === 'DEBUG') { - console.error('TripInfoResult.patchLocations - no stopPlaceRef found in mapContextLocations'); - console.log('stopPoint:'); - console.log(stopPoint); - console.log('mapContextLocations:'); - console.log(mapContextLocations); - } - return; - } - - const contextLocation = mapContextLocations[stopPlaceRef]; - stopPoint.location.patchWithAnotherLocation(contextLocation); - }); - } -} diff --git a/src/trip/trip-location-point.ts b/src/trip/trip-location-point.ts deleted file mode 100644 index 39159556..00000000 --- a/src/trip/trip-location-point.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { Location } from "../location/location" -import { IndividualTransportMode } from "../types/individual-mode.types" - -export class TripLocationPoint { - public location: Location; - public minDuration: number | null; - public maxDuration: number | null; - public minDistance: number | null; - public maxDistance: number | null; - - public customTransportMode?: IndividualTransportMode | null - - public dwellTimeMinutes: number | null - - constructor(location: Location) { - this.location = location; - this.minDuration = null; - this.maxDuration = null; - this.minDistance = null; - this.maxDistance = null; - this.customTransportMode = null; - this.dwellTimeMinutes = null; - } - - public static Empty(): TripLocationPoint { - const location = new Location(); - const locationPoint = new TripLocationPoint(location); - return locationPoint; - } -} \ No newline at end of file diff --git a/src/trip/trip.ts b/src/trip/trip.ts deleted file mode 100644 index e044417a..00000000 --- a/src/trip/trip.ts +++ /dev/null @@ -1,180 +0,0 @@ -import { DistanceSource, TripStats } from '../types/trip-stats' - -import { TripLeg } from './leg/trip-leg' -import { TripLegFactory } from './leg/trip-leg-factory' -import { TripTimedLeg } from './leg/trip-timed-leg' -import { Duration } from '../shared/duration' -import { TreeNode } from '../xml/tree-node' -import { TripFareResult } from '../fare/fare' - -import { XMLElement } from 'xmlbuilder' -import { DEBUG_LEVEL } from '../constants' - -export class Trip { - public id: string - public legs: TripLeg[] - public stats: TripStats - public tripFareResults: TripFareResult[] - - constructor(tripID: string, legs: TripLeg[], tripStats: TripStats) { - this.id = tripID; - this.legs = legs; - this.stats = tripStats - this.tripFareResults = [] - } - - public static initFromTreeNode(treeNode: TreeNode): Trip | null { - let tripId = treeNode.findTextFromChildNamed('TripId'); - - // HACK for solution demo, backend sometimes delivers Trip with empty Id - // TODO: revert when backend is ready, DONT merge to main - if (tripId === null) { - tripId = 'RandomTripId'; - if (DEBUG_LEVEL === 'DEBUG') { - console.error('Trip.initFromTreeNode: No Id node found for trip, assigning a random one'); - console.log(treeNode); - console.log('======================================='); - } - } - - const duration = Duration.initFromDurationText(treeNode.findTextFromChildNamed('Duration')); - if (duration === null) { - return null; - } - - // Adds hack for OJP-SI, eventhough Transfers is required in XSD - const transfersNoS = treeNode.findTextFromChildNamed('Transfers') ?? '0'; - - const tripStartTimeS = treeNode.findTextFromChildNamed('StartTime'); - const tripEndTimeS = treeNode.findTextFromChildNamed('EndTime'); - if (tripStartTimeS === null || tripEndTimeS === null) { - return null; - } - - const tripStartTime = new Date(Date.parse(tripStartTimeS)); - const tripEndTime = new Date(Date.parse(tripEndTimeS)); - - const legs: TripLeg[] = []; - let tripLegsTotalDistance = 0; - - const tripLegTreeNodes = treeNode.findChildrenNamed('TripLeg'); - tripLegTreeNodes.forEach(tripLegTreeNode => { - const tripLeg = TripLegFactory.initWithTreeNode(tripLegTreeNode); - if (tripLeg === null) { - return; - } - - const legTrackSections = tripLeg.legTrack?.trackSections ?? []; - legTrackSections.forEach(legTrackSection => { - tripLegsTotalDistance += legTrackSection.length ?? 0; - }); - - legs.push(tripLeg); - }); - - if (legs.length === 0) { - console.error('Trip.initFromTreeNode no legs found ?'); - console.log(treeNode); - return null; - } - - let distanceMeters = 0; - let distanceSource: DistanceSource = 'trip'; - const distanceS = treeNode.findTextFromChildNamed('Distance'); - if (distanceS === null) { - distanceSource = 'legs-sum'; - distanceMeters = tripLegsTotalDistance; - } else { - distanceMeters = parseInt(distanceS); - } - - const tripStats: TripStats = { - duration: duration, - distanceMeters: distanceMeters, - distanceSource: distanceSource, - transferNo: parseInt(transfersNoS), - startDatetime: tripStartTime, - endDatetime: tripEndTime, - - isCancelled: null, - isInfeasable: null, - isUnplanned: null, - }; - - const cancelledNode = treeNode.findChildNamed('Cancelled'); - if (cancelledNode) { - tripStats.isCancelled = cancelledNode.text === 'true'; - } - const infeasableNode = treeNode.findChildNamed('Infeasible'); - if (infeasableNode) { - tripStats.isInfeasable = infeasableNode.text === 'true'; - } - const unplannedNode = treeNode.findChildNamed('Unplanned'); - if (unplannedNode) { - tripStats.isUnplanned = unplannedNode.text === 'true'; - } - - const trip = new Trip(tripId, legs, tripStats); - - return trip; - } - - public computeDepartureTime(): Date | null { - const timedLegs = this.legs.filter(leg => { - return leg instanceof TripTimedLeg; - }); - - if (timedLegs.length === 0) { - console.log('No TimedLeg found for this trip'); - console.log(this); - return null; - } - - const firstTimedLeg = timedLegs[0] as TripTimedLeg; - const timeData = firstTimedLeg.fromStopPoint.departureData; - if (timeData === null) { - return null - } - - const stopPointDate = timeData.estimatedTime ?? timeData.timetableTime; - - return stopPointDate; - } - - public computeArrivalTime(): Date | null { - const timedLegs = this.legs.filter(leg => { - return leg instanceof TripTimedLeg; - }); - - if (timedLegs.length === 0) { - console.log('No TimedLeg found for this trip'); - console.log(this); - return new Date(); - } - - const lastTimedLeg = timedLegs[timedLegs.length - 1] as TripTimedLeg; - const timeData = lastTimedLeg.toStopPoint.arrivalData; - if (timeData === null) { - return null - } - - const stopPointDate = timeData.estimatedTime ?? timeData.timetableTime; - - return stopPointDate; - } - - public addToXMLNode(parentNode: XMLElement) { - const tripNode = parentNode.ele('ojp:Trip'); - - tripNode.ele('ojp:TripId', this.id); - tripNode.ele('ojp:Duration', this.stats.duration.asOJPFormattedText()); - tripNode.ele('ojp:StartTime', this.stats.startDatetime.toISOString()); - tripNode.ele('ojp:EndTime', this.stats.endDatetime.toISOString()); - tripNode.ele('ojp:Transfers', this.stats.transferNo); - tripNode.ele('ojp:Distance', this.stats.distanceMeters); - - this.legs.forEach(leg => { - leg.addToXMLNode(tripNode); - }); - } -} diff --git a/src/types/_all.ts b/src/types/_all.ts new file mode 100644 index 00000000..cbd464cd --- /dev/null +++ b/src/types/_all.ts @@ -0,0 +1,34 @@ +import { SDK } from "../sdk"; + +export interface HTTPConfig { + url: string; + authToken: string | null; +} + +export type Language = 'de' | 'fr' | 'it' | 'en'; + +export type OJP_VERSION = '1.0' | '2.0'; + +export type AnySDK = SDK<'1.0'> | SDK<'2.0'>; + +export interface XML_Config { + ojpVersion: OJP_VERSION, + defaultNS: 'ojp' | 'siri' | null, + mapNS: Record +} + +export interface RequestInfo { + requestDateTime: Date | null; + requestXML: string | null; + responseDateTime: Date | null; + responseXML: string | null; + parseDateTime: Date | null; +} + +// https://vdvde.github.io/OJP/develop/documentation-tables/siri.html#type_siri__RailSubmodesOfTransportEnumeration +// international - ICE, TGV, EC, RJX, NJ, EN +// highSpeedRail - IC +// interregionalRail - IR, IRN, IRE +// railShuttle - ATZ +// local - S, SN, RB, RE, PE +export type RailSubmodeType = 'international' | 'highSpeedRail' | 'interregionalRail' | 'railShuttle' | 'local'; diff --git a/src/types/individual-mode.types.ts b/src/types/individual-mode.types.ts deleted file mode 100644 index 7df84b2c..00000000 --- a/src/types/individual-mode.types.ts +++ /dev/null @@ -1,8 +0,0 @@ -// walk is in v1, walk/foot is in v2 -type DefaultIndividualTransportMode = 'public_transport' | 'walk' | 'foot' | 'cycle' | 'car' -type SharedIndividualTransportMode = 'escooter_rental' | 'car_sharing' | 'self-drive-car' | 'bicycle_rental' - -type OtherTransportMode = 'charging_station' | 'taxi' | 'others-drive-car' | 'car-shuttle-train' | 'car-ferry' -export type IndividualTransportMode = DefaultIndividualTransportMode | SharedIndividualTransportMode | OtherTransportMode - -export type TransferMode = 'walk' | 'remainInVehicle' \ No newline at end of file diff --git a/src/types/journey-points.ts b/src/types/journey-points.ts deleted file mode 100644 index e31e460d..00000000 --- a/src/types/journey-points.ts +++ /dev/null @@ -1 +0,0 @@ -export type JourneyPointType = 'From' | 'To' | 'Via' diff --git a/src/types/language-type.ts b/src/types/language-type.ts deleted file mode 100644 index 1927310d..00000000 --- a/src/types/language-type.ts +++ /dev/null @@ -1 +0,0 @@ -export type Language = 'de' | 'fr' | 'it' | 'en' \ No newline at end of file diff --git a/src/types/lir-restrictions.type.ts b/src/types/lir-restrictions.type.ts deleted file mode 100644 index 7293b089..00000000 --- a/src/types/lir-restrictions.type.ts +++ /dev/null @@ -1,10 +0,0 @@ -type POI_OSM_TagSharedMobility = 'escooter_rental' | 'car_sharing' | 'bicycle_rental' | 'charging_station' -type POI_OSM_TagPOI = 'service' | 'shopping' | 'leisure' | 'catering' | 'public' | 'parkride' | 'accommodation' | 'sbb_services' | 'other' -export type RestrictionPoiOSMTag = POI_OSM_TagSharedMobility | POI_OSM_TagPOI | 'none' - -export type POI_Restriction = { - poiType: 'shared_mobility' | 'poi' - tags: RestrictionPoiOSMTag[] -} - -export type RestrictionType = 'stop' | 'address' | 'coord' | 'location' | 'topographicPlace' | 'poi' \ No newline at end of file diff --git a/src/types/mode-of-transport.type.ts b/src/types/mode-of-transport.type.ts deleted file mode 100644 index 8bcfad7d..00000000 --- a/src/types/mode-of-transport.type.ts +++ /dev/null @@ -1,7 +0,0 @@ -// https://vdvde.github.io/OJP/develop/documentation-tables/siri.html#type_siri__VehicleModesOfTransportEnumeration -export type ModeOfTransportType = 'air' | - 'bus' | 'coach' | 'trolleyBus' | - 'metro' | 'rail' | 'tram' | - 'water' | 'ferry' | - 'cableway' | 'funicular' | 'lift' | - 'other' | 'unknown'; diff --git a/src/types/request.ts b/src/types/request.ts new file mode 100644 index 00000000..612cd90a --- /dev/null +++ b/src/types/request.ts @@ -0,0 +1,23 @@ +import { LocationInformationRequest } from "../versions/current/requests/lir"; +import { OJPv1_LocationInformationRequest } from "../versions/legacy/v1/requests/lir"; + +import { OJPv1_FareRequest } from "../versions/legacy/v1/requests/fr"; + +import { TripInfoRequest } from "../versions/current/requests/tir"; +import { OJPv1_TripInfoRequest } from "../versions/legacy/v1/requests/tir"; + +import { StopEventRequest } from "../versions/current/requests/ser"; +import { OJPv1_StopEventRequest } from "../versions/legacy/v1/requests/ser"; + +import { TripRefineRequest } from "../versions/current/requests/trr"; + +import { TripRequest } from "../versions/current/requests/tr"; +import { OJPv1_TripRequest } from "../versions/legacy/v1/requests/tr"; + +export type OJP_RequestType = + LocationInformationRequest | OJPv1_LocationInformationRequest | + OJPv1_FareRequest | + StopEventRequest | OJPv1_StopEventRequest | + TripInfoRequest | OJPv1_TripInfoRequest | + TripRefineRequest | + TripRequest | OJPv1_TripRequest; diff --git a/src/types/response.ts b/src/types/response.ts new file mode 100644 index 00000000..ae2ba505 --- /dev/null +++ b/src/types/response.ts @@ -0,0 +1,20 @@ +import * as OJP_Types from 'ojp-shared-types'; + +type ResponseOk = { ok: true; value: T }; +type ResponseError = { ok: false; error: E }; +type OJP_Response = ResponseOk | ResponseError; + +export type FareRequestResponse = OJP_Response; + +export type LocationInformationRequestResponse = OJP_Response; +export type OJPv1_LocationInformationRequestResponse = OJP_Response; + +export type StopEventRequestResponse = OJP_Response; +export type OJPv1_StopEventRequestResponse = OJP_Response; + +export type TripInfoRequestResponse = OJP_Response; +export type OJPv1_TripInfoRequestResponse = OJP_Response; + +export type TripRefineRequestResponse = OJP_Response; + +export type TripRequestResponse = OJP_Response; diff --git a/src/types/stage-config.ts b/src/types/stage-config.ts deleted file mode 100644 index 67827079..00000000 --- a/src/types/stage-config.ts +++ /dev/null @@ -1,9 +0,0 @@ -export interface ApiConfig { - url: string; - authToken: string | null; -} - -export const EMPTY_API_CONFIG: ApiConfig = { - url: 'n/a', - authToken: null -}; diff --git a/src/types/stop-event-type.ts b/src/types/stop-event-type.ts deleted file mode 100644 index 8e4a3bca..00000000 --- a/src/types/stop-event-type.ts +++ /dev/null @@ -1 +0,0 @@ -export type StopEventType = 'departure' | 'arrival' diff --git a/src/types/stop-point-type.ts b/src/types/stop-point-type.ts deleted file mode 100644 index 4f7eca2c..00000000 --- a/src/types/stop-point-type.ts +++ /dev/null @@ -1 +0,0 @@ -export type StopPointType = 'From' | 'To' | 'Intermediate' diff --git a/src/types/trip-mode-type.ts b/src/types/trip-mode-type.ts deleted file mode 100644 index f7be91bd..00000000 --- a/src/types/trip-mode-type.ts +++ /dev/null @@ -1 +0,0 @@ -export type TripModeType = 'monomodal' | 'mode_at_start' | 'mode_at_end' | 'mode_at_start_end' diff --git a/src/types/trip-stats.ts b/src/types/trip-stats.ts deleted file mode 100644 index 677f1d88..00000000 --- a/src/types/trip-stats.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Duration } from "../shared/duration"; - -export type DistanceSource = 'trip' | 'legs-sum'; - -export interface TripStats { - duration: Duration - distanceMeters: number - distanceSource: DistanceSource - transferNo: number - startDatetime: Date - endDatetime: Date - - isCancelled: boolean | null - isInfeasable: boolean | null - isUnplanned: boolean | null -} diff --git a/src/versions/current/requests/base.ts b/src/versions/current/requests/base.ts new file mode 100644 index 00000000..34d020ea --- /dev/null +++ b/src/versions/current/requests/base.ts @@ -0,0 +1,45 @@ +import { AnySDK, Language, RequestInfo, XML_Config } from "../../../types/_all"; + +export type ResultSpec = { fetchResponse: unknown }; + +export abstract class BaseRequest { + public requestInfo: RequestInfo; + + public mockRequestXML: string | null; + public mockResponseXML: string | null; + + protected constructor() { + const now = new Date(); + + this.requestInfo = { + requestDateTime: null, + requestXML: null, + responseDateTime: null, + responseXML: null, + parseDateTime: null, + }; + + this.mockRequestXML = null; + this.mockResponseXML = null; + } + + public static initWithRequestMock(this: T_This, mockText: string): ReturnType { + const instance = this.Default(); + (instance as BaseRequest).mockRequestXML = mockText; + return instance as ReturnType; + } + + public static initWithResponseMock(this: T_This, mockText: string): ReturnType { + const instance = this.Default(); + (instance as BaseRequest).mockResponseXML = mockText; + return instance as ReturnType; + } + + protected abstract _fetchResponse(sdk: AnySDK): Promise; + public async fetchResponse(sdk: AnySDK): Promise { + const response = await this._fetchResponse(sdk); + return response; + } + + public abstract buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string; +} diff --git a/src/versions/current/requests/lir.shared.ts b/src/versions/current/requests/lir.shared.ts new file mode 100644 index 00000000..f0b7e36a --- /dev/null +++ b/src/versions/current/requests/lir.shared.ts @@ -0,0 +1,60 @@ +import * as OJP_Types from 'ojp-shared-types'; + +import { BaseRequest, ResultSpec } from "./base"; + +export abstract class SharedLocationInformationRequest extends BaseRequest { + protected static DefaultRestrictionParams(): OJP_Types.LIR_RequestParamsSchema { + const restrictionParams: OJP_Types.LIR_RequestParamsSchema = { + type: [], + numberOfResults: undefined, + modes: undefined, + includePtModes: true, + }; + + return restrictionParams; + } + + public updateRestrictions(restrictions: OJP_Types.LIR_RequestParamsSchema, placeTypes: OJP_Types.PlaceTypeEnum[], numberOfResults: number) { + if (placeTypes.length > 0) { + restrictions.type = placeTypes; + } + + if (numberOfResults !== null) { + restrictions.numberOfResults = numberOfResults; + } + } + + public static computeGeoRestriction(bboxData: string | number[]): OJP_Types.GeoRestrictionsSchema | null { + const bboxDataParts: number[] = (() => { + if (Array.isArray(bboxData)) { + return bboxData; + } + + return (bboxData as string).split(',').map(el => Number(el)); + })(); + + if (bboxDataParts.length !== 4) { + return null; + } + + const minLongitude = bboxDataParts[0]; + const minLatitude = bboxDataParts[1]; + const maxLongitude = bboxDataParts[2]; + const maxLatitude = bboxDataParts[3]; + + const geoRestrictionsSchema: OJP_Types.GeoRestrictionsSchema = { + rectangle: { + upperLeft: { + longitude: minLongitude, + latitude: maxLatitude, + }, + lowerRight: { + longitude: maxLongitude, + latitude: minLatitude, + }, + } + }; + + return geoRestrictionsSchema; + } +} diff --git a/src/versions/current/requests/lir.ts b/src/versions/current/requests/lir.ts new file mode 100644 index 00000000..41b64bee --- /dev/null +++ b/src/versions/current/requests/lir.ts @@ -0,0 +1,126 @@ +import * as OJP_Types from 'ojp-shared-types'; + +import { SDK } from '../../../sdk'; +import { buildRootXML } from '../../../helpers/xml/builder'; +import { parseXML } from '../../../helpers/xml/parser'; + +import { PlaceRef } from '../../../models/ojp'; +import { Language, XML_Config } from '../../../types/_all'; + +import { RequestHelpers } from '../../../helpers/request-helpers'; + +import { LocationInformationRequestResponse } from '../../../types/response'; +import { SharedLocationInformationRequest } from './lir.shared'; +import { DefaultXML_Config, XML_BuilderConfigOJPv1 } from '../../../constants'; + +export class LocationInformationRequest extends SharedLocationInformationRequest<{ fetchResponse: LocationInformationRequestResponse }> { + public payload: OJP_Types.LocationInformationRequestSchema; + + protected constructor(restrictions: OJP_Types.LIR_RequestParamsSchema | undefined) { + super(); + + this.payload = { + requestTimestamp: RequestHelpers.computeRequestTimestamp(), + initialInput: undefined, + placeRef: undefined, + restrictions: restrictions, + }; + } + + public static Default() { + const restrictions = SharedLocationInformationRequest.DefaultRestrictionParams(); + const request = new LocationInformationRequest(restrictions); + + return request; + } + + public static initWithLocationName(name: string, placeTypes: OJP_Types.PlaceTypeEnum[] = [], numberOfResults: number = 10) { + const request = LocationInformationRequest.Default(); + request.payload.initialInput = { + name: name, + }; + + if (request.payload.restrictions) { + request.updateRestrictions(request.payload.restrictions, placeTypes, numberOfResults); + } + + return request; + } + + public static initWithPlaceRef(placeRefOrCoords: string, numberOfResults: number = 10) { + const request = LocationInformationRequest.Default(); + + request.payload.placeRef = PlaceRef.initWithPlaceRefsOrCoords(placeRefOrCoords); + + if (request.payload.restrictions) { + request.updateRestrictions(request.payload.restrictions, ['stop'], numberOfResults); + } + + return request; + } + + public static initWithBBOX(bboxData: string | number[], placeTypes: OJP_Types.PlaceTypeEnum[] = [], numberOfResults: number = 10) { + const request = LocationInformationRequest.Default(); + + const geoRestriction = this.computeGeoRestriction(bboxData); + if (geoRestriction) { + request.payload.initialInput = { + name: undefined, + geoRestriction: geoRestriction, + }; + } + + if (request.payload.restrictions) { + request.updateRestrictions(request.payload.restrictions, placeTypes, numberOfResults); + } + + return request; + } + + public buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string { + this.payload.requestTimestamp = RequestHelpers.computeRequestTimestamp(); + + const requestOJP: OJP_Types.LocationInformationRequestOJP = { + OJPRequest: { + serviceRequest: { + serviceRequestContext: { + language: language + }, + requestTimestamp: this.payload.requestTimestamp, + requestorRef: requestorRef, + OJPLocationInformationRequest: this.payload, + } + }, + }; + + const xmlS = buildRootXML(requestOJP, xmlConfig); + + return xmlS; + } + + protected async _fetchResponse(sdk: SDK<'2.0'>): Promise { + const xmlConfig: XML_Config = sdk.version === '2.0' ? DefaultXML_Config : XML_BuilderConfigOJPv1; + + const responseXML = await RequestHelpers.computeResponse(this, sdk, xmlConfig); + + try { + const parsedObj = parseXML<{ OJP: OJP_Types.LocationInformationRequestResponseOJP }>(responseXML, 'OJP'); + const response = parsedObj.OJP.OJPResponse.serviceDelivery.OJPLocationInformationDelivery; + + if (response === undefined) { + console.log(responseXML); + throw new Error('Parse error'); + } + + return { + ok: true, + value: response, + }; + } catch (error) { + return { + ok: false, + error: error instanceof Error ? error : new Error('Unknown error'), + }; + } + } +} diff --git a/src/versions/current/requests/ser.shared.ts b/src/versions/current/requests/ser.shared.ts new file mode 100644 index 00000000..2a2b0ea5 --- /dev/null +++ b/src/versions/current/requests/ser.shared.ts @@ -0,0 +1,23 @@ +import * as OJP_Types from 'ojp-shared-types'; + +import { BaseRequest, ResultSpec } from "./base"; +import { OJP_VERSION } from '../../../types/_all'; + +export abstract class SharedStopEventRequest extends BaseRequest { + protected static DefaultRequestParams(version: OJP_VERSION = '2.0'): OJP_Types.SER_RequestParamsSchema { + const params: OJP_Types.SER_RequestParamsSchema = { + includeAllRestrictedLines: undefined, // this works only with OJP v2 + numberOfResults: 10, + stopEventType: 'departure', + includePreviousCalls: true, + includeOnwardCalls: true, + useRealtimeData: 'explanatory', + }; + + if (version === '2.0') { + params.includeAllRestrictedLines = true; + } + + return params; + } +} diff --git a/src/versions/current/requests/ser.ts b/src/versions/current/requests/ser.ts new file mode 100644 index 00000000..c9b6189e --- /dev/null +++ b/src/versions/current/requests/ser.ts @@ -0,0 +1,112 @@ +import * as OJP_Types from 'ojp-shared-types'; + +import { SDK } from '../../../sdk'; + +import { buildRootXML } from '../../../helpers/xml/builder'; +import { parseXML } from '../../../helpers/xml/parser'; +import { RequestHelpers } from '../../../helpers/request-helpers'; + +import { Language, XML_Config } from '../../../types/_all'; + +import { StopEventRequestResponse } from '../../../types/response'; +import { DefaultXML_Config, XML_BuilderConfigOJPv1 } from '../../../constants'; + +import { SharedStopEventRequest } from './ser.shared'; + +export class StopEventRequest extends SharedStopEventRequest <{ fetchResponse: StopEventRequestResponse }> { + public payload: OJP_Types.StopEventRequestSchema; + + protected constructor(location: OJP_Types.SER_RequestLocationSchema, params: OJP_Types.SER_RequestParamsSchema | undefined = undefined) { + super(); + + this.payload = { + requestTimestamp: RequestHelpers.computeRequestTimestamp(), + location: location, + params: params, + } + } + + // Used by Base.initWithRequestMock / initWithResponseMock + public static Default() { + const date = new Date(); + const location: OJP_Types.SER_RequestLocationSchema = { + placeRef: { + stopPointRef: '8507000', + name: { + text: 'n/a' + } + }, + depArrTime: date.toISOString(), + }; + + const requestParams = SharedStopEventRequest.DefaultRequestParams(); + const request = new StopEventRequest(location, requestParams); + + return request; + } + + public static initWithPlaceRefAndDate(placeRefS: string, date: Date = new Date()) { + const location: OJP_Types.SER_RequestLocationSchema = { + placeRef: { + stopPointRef: placeRefS, + name: { + text: 'n/a' + } + }, + depArrTime: date.toISOString(), + }; + + const params = SharedStopEventRequest.DefaultRequestParams(); + + const request = new StopEventRequest(location, params); + + return request; + } + + public buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string { + this.payload.requestTimestamp = RequestHelpers.computeRequestTimestamp(); + + const requestOJP: OJP_Types.SER_RequestOJP = { + OJPRequest: { + serviceRequest: { + serviceRequestContext: { + language: language + }, + requestTimestamp: this.payload.requestTimestamp, + requestorRef: requestorRef, + OJPStopEventRequest: this.payload, + } + }, + }; + + const xmlS = buildRootXML(requestOJP, xmlConfig); + + return xmlS; + } + + protected override async _fetchResponse(sdk: SDK<'2.0'>): Promise { + const xmlConfig: XML_Config = sdk.version === '2.0' ? DefaultXML_Config : XML_BuilderConfigOJPv1; + + const responseXML = await RequestHelpers.computeResponse(this, sdk, xmlConfig); + + try { + const parsedObj = parseXML<{ OJP: OJP_Types.StopEventRequestResponseOJP }>(responseXML, 'OJP'); + const response = parsedObj.OJP.OJPResponse.serviceDelivery.OJPStopEventDelivery; + + if (response === undefined) { + console.log(responseXML); + throw new Error('Parse error'); + } + + return { + ok: true, + value: response, + }; + } catch (error) { + return { + ok: false, + error: error instanceof Error ? error : new Error('Unknown error'), + }; + } + } +} diff --git a/src/versions/current/requests/tir.shared.ts b/src/versions/current/requests/tir.shared.ts new file mode 100644 index 00000000..4006776d --- /dev/null +++ b/src/versions/current/requests/tir.shared.ts @@ -0,0 +1,17 @@ +import * as OJP_Types from 'ojp-shared-types'; + +import { BaseRequest, ResultSpec } from "./base"; + +export abstract class SharedTripInfoRequest extends BaseRequest { + protected static DefaultRequestParams() { + const params: OJP_Types.TIR_RequestParamsSchema = { + includeCalls: true, + includeService: true, + includeTrackProjection: false, + includePlacesContext: true, + includeSituationsContext: true, + }; + + return params; + } +} diff --git a/src/versions/current/requests/tir.ts b/src/versions/current/requests/tir.ts new file mode 100644 index 00000000..269f73b4 --- /dev/null +++ b/src/versions/current/requests/tir.ts @@ -0,0 +1,97 @@ +import * as OJP_Types from 'ojp-shared-types'; + +import { SDK } from '../../../sdk'; + +import { buildRootXML } from '../../../helpers/xml/builder'; +import { parseXML } from '../../../helpers/xml/parser'; +import { DateHelpers } from '../../../helpers/date-helpers'; +import { RequestHelpers } from '../../../helpers/request-helpers'; + +import { Language, XML_Config } from '../../../types/_all'; + +import { TripInfoRequestResponse } from '../../../types/response'; +import { SharedTripInfoRequest } from './tir.shared'; +import { DefaultXML_Config, XML_BuilderConfigOJPv1 } from '../../../constants'; + +export class TripInfoRequest extends SharedTripInfoRequest<{ fetchResponse: TripInfoRequestResponse }> { + public payload: OJP_Types.TIR_RequestSchema; + + protected constructor(journeyRef: string, operatingDayRef: string, params?: OJP_Types.TIR_RequestParamsSchema) { + super(); + + this.payload = { + requestTimestamp: RequestHelpers.computeRequestTimestamp(), + journeyRef: journeyRef, + operatingDayRef: operatingDayRef, + params: params, + }; + } + + // Used by Base.initWithRequestMock / initWithResponseMock + public static Default() { + const request = new TripInfoRequest('n/a', 'n/a', SharedTripInfoRequest.DefaultRequestParams()); + return request; + } + + public static initWithJourneyRef(journeyRef: string, journeyDate: Date = new Date()) { + const operatingDayRef = DateHelpers.formatDate(journeyDate).substring(0, 10); + + const params = TripInfoRequest.DefaultRequestParams(); + const request = new TripInfoRequest(journeyRef, operatingDayRef, params); + + return request; + } + + public enableTrackProjection() { + if (this.payload.params) { + this.payload.params.includeTrackProjection = true; + } + } + + public buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string { + this.payload.requestTimestamp = RequestHelpers.computeRequestTimestamp(); + + const requestOJP: OJP_Types.TIR_RequestOJP = { + OJPRequest: { + serviceRequest: { + serviceRequestContext: { + language: language + }, + requestTimestamp: this.payload.requestTimestamp, + requestorRef: requestorRef, + OJPTripInfoRequest: this.payload, + } + }, + }; + + const xmlS = buildRootXML(requestOJP, xmlConfig); + + return xmlS; + } + + protected override async _fetchResponse(sdk: SDK<'2.0'>): Promise { + const xmlConfig: XML_Config = sdk.version === '2.0' ? DefaultXML_Config : XML_BuilderConfigOJPv1; + + const responseXML = await RequestHelpers.computeResponse(this, sdk, xmlConfig); + + try { + const parsedObj = parseXML<{ OJP: OJP_Types.TripInfoResponseOJP }>(responseXML, 'OJP'); + const response = parsedObj.OJP.OJPResponse.serviceDelivery.OJPTripInfoDelivery; + + if (response === undefined) { + console.log(responseXML); + throw new Error('Parse error'); + } + + return { + ok: true, + value: response, + }; + } catch (error) { + return { + ok: false, + error: error instanceof Error ? error : new Error('Unknown error'), + }; + } + } +} diff --git a/src/versions/current/requests/tr.shared.ts b/src/versions/current/requests/tr.shared.ts new file mode 100644 index 00000000..0ddf5b08 --- /dev/null +++ b/src/versions/current/requests/tr.shared.ts @@ -0,0 +1,24 @@ +import * as OJP_Types from 'ojp-shared-types'; + +import { BaseRequest, ResultSpec } from "./base"; + +export abstract class SharedTripRequest extends BaseRequest { + protected static DefaultRequestParams(): OJP_Types.TripParamsSchema { + const requestParams: OJP_Types.TripParamsSchema = { + modeAndModeOfOperationFilter: [], + + numberOfResults: 5, + numberOfResultsBefore: undefined, + numberOfResultsAfter: undefined, + + useRealtimeData: 'explanatory', + + includeAllRestrictedLines: true, + includeTrackSections: true, + includeLegProjection: false, + includeIntermediateStops: true, + }; + + return requestParams; + } +} diff --git a/src/versions/current/requests/tr.ts b/src/versions/current/requests/tr.ts new file mode 100644 index 00000000..960ba261 --- /dev/null +++ b/src/versions/current/requests/tr.ts @@ -0,0 +1,238 @@ +import * as OJP_Types from 'ojp-shared-types'; + +import { SDK } from '../../../sdk'; + +import { buildRootXML } from '../../../helpers/xml/builder'; +import { parseXML } from '../../../helpers/xml/parser'; +import { RequestHelpers } from '../../../helpers/request-helpers'; + +import { Language, RailSubmodeType, XML_Config } from '../../../types/_all'; + +import { TripRequestResponse } from '../../../types/response'; +import { Place, PlaceRef } from '../../../models/ojp'; +import { DefaultXML_Config, XML_BuilderConfigOJPv1 } from '../../../constants'; + +import { SharedTripRequest } from './tr.shared'; + +type EndpointType = 'origin' | 'destination' | 'both'; + +export class TripRequest extends SharedTripRequest<{ fetchResponse: TripRequestResponse }> { + public payload: OJP_Types.TripRequestSchema; + + protected constructor( + origin: OJP_Types.PlaceContextSchema, + destination: OJP_Types.PlaceContextSchema, + via: OJP_Types.ViaPointSchema[] = [], + + params: OJP_Types.TripParamsSchema | null = null, + ) { + super(); + + this.payload = { + requestTimestamp: RequestHelpers.computeRequestTimestamp(), + origin: origin, + destination: destination, + via: via, + params: params ??= {}, + }; + } + + // Used by Base.initWithRequestMock / initWithResponseMock + public static Default() { + const date = new Date(); + const origin: OJP_Types.PlaceContextSchema = { + placeRef: PlaceRef.initWithPlaceRefsOrCoords('8503000', 'Zürich'), + depArrTime: date.toISOString(), + individualTransportOption: [], + }; + const destination: OJP_Types.PlaceContextSchema = { + placeRef: PlaceRef.initWithPlaceRefsOrCoords('8507000', 'Bern'), + individualTransportOption: [], + }; + const params = SharedTripRequest.DefaultRequestParams(); + + const request = new TripRequest(origin, destination, [], params); + return request; + } + + public static initWithPlaceRefsOrCoords(originPlaceRefS: string, destinationPlaceRefS: string) { + const origin: OJP_Types.PlaceContextSchema = { + placeRef: PlaceRef.initWithPlaceRefsOrCoords(originPlaceRefS), + individualTransportOption: [], + }; + const destination: OJP_Types.PlaceContextSchema = { + placeRef: PlaceRef.initWithPlaceRefsOrCoords(destinationPlaceRefS), + individualTransportOption: [], + }; + + const params = TripRequest.DefaultRequestParams(); + + const request = new TripRequest(origin, destination, [], params); + request.setDepartureDatetime(); + + return request; + } + + public static initWithPlaces(origin: Place, destination: Place) { + const originPlaceRefS = origin.asStopPlaceRefOrCoords(); + const destinationPlaceRefS = destination.asStopPlaceRefOrCoords(); + + const request = TripRequest.initWithPlaceRefsOrCoords(originPlaceRefS, destinationPlaceRefS); + return request; + } + + public setArrivalDatetime(newDatetime: Date = new Date()) { + delete(this.payload.origin.depArrTime); + this.payload.destination.depArrTime = newDatetime.toISOString(); + } + + public setDepartureDatetime(newDatetime: Date = new Date()) { + delete(this.payload.destination.depArrTime); + this.payload.origin.depArrTime = newDatetime.toISOString(); + } + + public setPublicTransportRequest(motFilter: OJP_Types.VehicleModesOfTransportEnum[] | null = null) { + if (!this.payload.params) { + return; + } + + this.payload.params.modeAndModeOfOperationFilter = undefined; + if ((motFilter !== null) && (motFilter.length > 0)) { + this.payload.params.modeAndModeOfOperationFilter = [ + { + exclude: false, + ptMode: motFilter, + personalMode: [], + } + ]; + } + } + + public disableLinkProkection() { + if (!this.payload.params) { + return; + } + + this.payload.params.includeLegProjection = false; + } + + public enableLinkProkection() { + if (!this.payload.params) { + return; + } + + this.payload.params.includeLegProjection = true; + } + + public setCarRequest() { + if (!this.payload.params) { + return; + } + + this.payload.params.numberOfResults = 0; + + this.payload.params.modeAndModeOfOperationFilter = [ + { + ptMode: [], + personalMode: [], + railSubmode: 'vehicleTunnelTransportRailService', + waterSubmode: 'localCarFerry', + } + ]; + } + + public setMaxDurationWalkingTime(maxDurationMinutes: number | undefined = undefined, endpointType: EndpointType = 'both') { + if (!maxDurationMinutes) { + maxDurationMinutes = 30; + } + const maxDuration = 'PT' + maxDurationMinutes + 'M'; + + const individualTransportOption: OJP_Types.IndividualTransportOptionSchema = { + maxDuration: maxDuration, + itModeAndModeOfOperation: { + personalMode: 'foot', + personalModeOfOperation: ['own'], + } + }; + + if (endpointType === 'origin' || endpointType === 'both') { + this.payload.origin.individualTransportOption = [individualTransportOption]; + } + + if (endpointType === 'destination' || endpointType === 'both') { + this.payload.destination.individualTransportOption = [individualTransportOption]; + } + } + + // https://vdvde.github.io/OJP/develop/documentation-tables/siri.html#type_siri__RailSubmodesOfTransportEnumeration + public setRailSubmodes(railSubmodes: RailSubmodeType | RailSubmodeType[]) { + if (!Array.isArray(railSubmodes)) { + railSubmodes = [railSubmodes]; + } + + if (!this.payload.params) { + return; + } + + this.payload.params.modeAndModeOfOperationFilter = []; + const modeFilters: OJP_Types.ModeFilterSchema[] = []; + railSubmodes.forEach(railSubmode => { + const modeFilter: OJP_Types.ModeFilterSchema = { + exclude: false, + ptMode: [], + personalMode: [], + railSubmode: railSubmode, + }; + modeFilters.push(modeFilter); + }); + + this.payload.params.modeAndModeOfOperationFilter = modeFilters; + } + + public buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string { + this.payload.requestTimestamp = RequestHelpers.computeRequestTimestamp(); + + const requestOJP: OJP_Types.TripRequestOJP = { + OJPRequest: { + serviceRequest: { + serviceRequestContext: { + language: language + }, + requestTimestamp: this.payload.requestTimestamp, + requestorRef: requestorRef, + OJPTripRequest: this.payload, + } + }, + }; + + const xmlS = buildRootXML(requestOJP, xmlConfig); + + return xmlS; + } + + protected override async _fetchResponse(sdk: SDK<'2.0'>): Promise { + const xmlConfig: XML_Config = sdk.version === '2.0' ? DefaultXML_Config : XML_BuilderConfigOJPv1; + + const responseXML = await RequestHelpers.computeResponse(this, sdk, xmlConfig); + + try { + const parsedObj = parseXML<{ OJP: OJP_Types.TripRequestResponseOJP }>(responseXML, 'OJP'); + const response = parsedObj.OJP.OJPResponse.serviceDelivery.OJPTripDelivery; + + if (response === undefined) { + console.log(responseXML); + throw new Error('Parse error'); + } + + return { + ok: true, + value: response, + }; + } catch (error) { + return { + ok: false, + error: error instanceof Error ? error : new Error('Unknown error'), + }; + } + } +} diff --git a/src/versions/current/requests/trr.ts b/src/versions/current/requests/trr.ts new file mode 100644 index 00000000..7fecef79 --- /dev/null +++ b/src/versions/current/requests/trr.ts @@ -0,0 +1,111 @@ +import * as OJP_Types from 'ojp-shared-types'; + +import { SDK } from '../../../sdk'; + +import { buildRootXML } from '../../../helpers/xml/builder'; +import { parseXML } from '../../../helpers/xml/parser'; +import { RequestHelpers } from '../../../helpers/request-helpers'; + +import { Language, XML_Config } from '../../../types/_all'; + +import { TripRefineRequestResponse } from '../../../types/response'; +import { Trip } from '../../../models/ojp'; +import { DefaultXML_Config, XML_BuilderConfigOJPv1 } from '../../../constants'; + +import { BaseRequest } from './base'; + +export class TripRefineRequest extends BaseRequest<{ fetchResponse: TripRefineRequestResponse }> { + public payload: OJP_Types.TRR_RequestSchema; + + protected constructor(tripResult: OJP_Types.TripResultSchema, refineParams?: OJP_Types.TRR_RequestParamsSchema) { + super(); + + this.payload = { + requestTimestamp: RequestHelpers.computeRequestTimestamp(), + refineParams: refineParams, + tripResult: tripResult, + }; + } + + private static DefaultRequestParams(): OJP_Types.TRR_RequestParamsSchema { + const params: OJP_Types.TRR_RequestParamsSchema = { + numberOfResults: undefined, + useRealtimeData: 'explanatory', + includeAllRestrictedLines: true, + includeLegProjection: false, + includeTurnDescription: true, + includeIntermediateStops: true, + }; + + return params; + } + + // Used by Base.initWithRequestMock / initWithResponseMock + public static Default() { + const fakeTripResult = {}; + // update fake + const params = TripRefineRequest.DefaultRequestParams(); + const request = new TripRefineRequest(fakeTripResult, params); + + return request; + } + + public static initWithTrip(trip: Trip) { + const tripResult: OJP_Types.TripResultSchema = { + id: trip.id, + trip: trip, + }; + + const params = TripRefineRequest.DefaultRequestParams(); + const request = new TripRefineRequest(tripResult, params); + + return request; + } + + public buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string { + this.payload.requestTimestamp = RequestHelpers.computeRequestTimestamp(); + + const requestOJP: OJP_Types.TRR_RequestOJP = { + OJPRequest: { + serviceRequest: { + serviceRequestContext: { + language: language + }, + requestTimestamp: this.payload.requestTimestamp, + requestorRef: requestorRef, + OJPTripRefineRequest: this.payload, + } + }, + }; + + const xmlS = buildRootXML(requestOJP, xmlConfig); + + return xmlS; + } + + protected override async _fetchResponse(sdk: SDK<'2.0'>): Promise { + const xmlConfig: XML_Config = sdk.version === '2.0' ? DefaultXML_Config : XML_BuilderConfigOJPv1; + + const responseXML = await RequestHelpers.computeResponse(this, sdk, xmlConfig); + + try { + const parsedObj = parseXML<{ OJP: OJP_Types.TRR_ResponseOJP }>(responseXML, 'OJP'); + const response = parsedObj.OJP.OJPResponse.serviceDelivery.OJPTripRefineDelivery; + + if (response === undefined) { + console.log(responseXML); + throw new Error('Parse error'); + } + + return { + ok: true, + value: response, + }; + } catch (error) { + return { + ok: false, + error: error instanceof Error ? error : new Error('Unknown error'), + }; + } + } +} diff --git a/src/versions/legacy/v1/requests/fr.ts b/src/versions/legacy/v1/requests/fr.ts new file mode 100644 index 00000000..5a605d05 --- /dev/null +++ b/src/versions/legacy/v1/requests/fr.ts @@ -0,0 +1,166 @@ +import * as OJP_Types from 'ojp-shared-types'; + +import { SDK } from '../../../../sdk'; + +import { buildRootXML } from '../../../../helpers/xml/builder'; +import { parseXML } from '../../../../helpers/xml/parser'; +import { RequestHelpers } from '../../../../helpers/request-helpers'; +import { OJPv1_Helpers } from '../../../../helpers/ojp-v1'; + +import { Language, XML_Config } from '../../../../types/_all'; + +import { FareRequestResponse } from '../../../../types/response'; +import { DefaultXML_Config, XML_BuilderConfigOJPv1 } from '../../../../constants'; + +import { BaseRequest } from '../../../current/requests/base'; + +export class OJPv1_FareRequest extends BaseRequest<{ fetchResponse: FareRequestResponse }> { + public payload: OJP_Types.FareRequestSchema[]; + + protected constructor(items: OJP_Types.FareRequestSchema[]) { + super(); + + this.payload = items; + } + + private static DefaultRequestParams(): OJP_Types.FareRequestParamsSchema { + const params: OJP_Types.FareRequestParamsSchema = { + fareAuthorityFilter: ['ch:1:NOVA'], + passengerCategory: ['Adult'], + travelClass: 'second', + traveller: [ + { + age: 25, + passengerCategory: 'Adult', + entitlementProducts: { + entitlementProduct: [ + { + fareAuthorityRef: 'ch:1:NOVA', + entitlementProductRef: 'HTA', + entitlementProductName: 'Halbtax-Abonnement', + } + ] + } + } + ], + }; + + return params; + } + + // Used by Base.initWithRequestMock / initWithResponseMock + public static Default(): OJPv1_FareRequest { + const request = new OJPv1_FareRequest([]); + return request; + } + + private static initWithOJPv1Trips(trips: OJP_Types.OJPv1_TripSchema[]) { + trips.map(tripV1 => { + OJPv1_Helpers.cleanTripForFareRequest(tripV1); + }); + + const now = new Date(); + const requestTimestamp = now.toISOString(); + + const fareRequests: OJP_Types.FareRequestSchema[] = []; + trips.forEach(trip => { + const fareRequest: OJP_Types.FareRequestSchema = { + requestTimestamp: requestTimestamp, + tripFareRequest: { + trip: trip, + }, + params: OJPv1_FareRequest.DefaultRequestParams(), + }; + + fareRequests.push(fareRequest); + }); + + const request = new OJPv1_FareRequest(fareRequests); + return request; + } + + public static initWithOJPv2Trips(trips: OJP_Types.TripSchema[]) { + const newTrips: OJP_Types.OJPv1_TripSchema[] = []; + trips.forEach(trip => { + const tripV1 = OJPv1_Helpers.convertOJPv2Trip_to_v1Trip(trip); + newTrips.push(tripV1); + }); + + const request = OJPv1_FareRequest.initWithOJPv1Trips(newTrips); + return request; + } + + public buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string { + if (xmlConfig.ojpVersion !== '1.0') { + throw new Error('FareRequest can be consructed only with OJPv1 XML_Config'); + } + + const requestTimestamp = RequestHelpers.computeRequestTimestamp(); + + this.payload.forEach(fareRequestPayload => { + fareRequestPayload.requestTimestamp = requestTimestamp; + }); + + const requestOJP: OJP_Types.FareRequestOJP = { + OJPRequest: { + serviceRequest: { + serviceRequestContext: { + language: language + }, + requestTimestamp: requestTimestamp, + requestorRef: requestorRef, + OJPFareRequest: this.payload, + } + }, + }; + + const xmlS = buildRootXML(requestOJP, xmlConfig, (objTransformed => { + const siriPrefix = xmlConfig.defaultNS !== 'siri' ? 'siri:' : ''; + const ojpPrefix = xmlConfig.defaultNS !== 'ojp' ? 'ojp:' : ''; + + // Hack to patch the Service.OperatorRef + // - in OJP1 is under ojp: namespace + // - value needs a prefix ojp: otherwise FareService throws an error + // -> ojp:11 + const fareRequests = objTransformed[siriPrefix + 'OJPRequest'][siriPrefix + 'ServiceRequest'][ojpPrefix + 'OJPFareRequest'] as any[]; + fareRequests.forEach(fareRequest => { + const trip = fareRequest[ojpPrefix + 'TripFareRequest'][ojpPrefix + 'Trip']; + (trip[ojpPrefix + 'TripLeg'] as any[]).forEach(leg => { + if (ojpPrefix + 'TimedLeg' in leg) { + const service = leg[ojpPrefix + 'TimedLeg'][ojpPrefix + 'Service']; + service[ojpPrefix + 'OperatorRef'] = 'ojp:' + service[siriPrefix + 'OperatorRef']; + delete service[siriPrefix + 'OperatorRef']; + } + }); + }); + })); + + return xmlS; + } + + protected override async _fetchResponse(sdk: SDK<'1.0'>): Promise { + const xmlConfig: XML_Config = sdk.version === '2.0' ? DefaultXML_Config : XML_BuilderConfigOJPv1; + + const responseXML = await RequestHelpers.computeResponse(this, sdk, xmlConfig); + + try { + const parsedObj = parseXML<{ OJP: OJP_Types.FareResponseOJP }>(responseXML, 'OJP'); + const response = parsedObj.OJP.OJPResponse.serviceDelivery.OJPFareDelivery; + + if (response === undefined) { + console.log(responseXML); + throw new Error('Parse error'); + } + + return { + ok: true, + value: response, + }; + } catch (error) { + return { + ok: false, + error: error instanceof Error ? error : new Error('Unknown error'), + }; + } + } +} diff --git a/src/versions/legacy/v1/requests/lir.ts b/src/versions/legacy/v1/requests/lir.ts new file mode 100644 index 00000000..cdc55543 --- /dev/null +++ b/src/versions/legacy/v1/requests/lir.ts @@ -0,0 +1,129 @@ +import * as OJP_Types from 'ojp-shared-types'; + +import { SDK } from '../../../../sdk'; +import { buildRootXML } from '../../../../helpers/xml/builder'; +import { parseXML } from '../../../../helpers/xml/parser'; + +import { PlaceRef } from '../../../../models/ojp'; +import { Language, XML_Config } from '../../../../types/_all'; + +import { RequestHelpers } from '../../../../helpers/request-helpers'; + +import { DefaultXML_Config, XML_BuilderConfigOJPv1 } from '../../../../constants'; + +import { OJPv1_LocationInformationRequestResponse } from '../../../../types/response'; +import { SharedLocationInformationRequest } from '../../../current/requests/lir.shared'; + +export class OJPv1_LocationInformationRequest extends SharedLocationInformationRequest<{ fetchResponse: OJPv1_LocationInformationRequestResponse }> { + public payload: OJP_Types.OJPv1_LocationInformationRequestSchema; + + protected constructor(restrictions: OJP_Types.LIR_RequestParamsSchema) { + super(); + + this.payload = { + requestTimestamp: RequestHelpers.computeRequestTimestamp(), + initialInput: undefined, + placeRef: undefined, + restrictions: restrictions, + }; + } + + public static Default() { + const restrictions = SharedLocationInformationRequest.DefaultRestrictionParams(); + const request = new OJPv1_LocationInformationRequest(restrictions); + + return request; + } + + public static initWithLocationName(name: string, placeTypes: OJP_Types.PlaceTypeEnum[] = [], numberOfResults: number = 10) { + const request = OJPv1_LocationInformationRequest.Default(); + + request.payload.initialInput = { + locationName: name, + }; + + if (request.payload.restrictions) { + request.updateRestrictions(request.payload.restrictions, placeTypes, numberOfResults); + } + + return request; + } + + public static initWithPlaceRef(placeRefOrCoords: string, numberOfResults: number = 10) { + const request = OJPv1_LocationInformationRequest.Default(); + + const placeRef = PlaceRef.initWithPlaceRefsOrCoords(placeRefOrCoords); + request.payload.placeRef = placeRef.asOJPv1Schema(); + + if (request.payload.restrictions) { + request.updateRestrictions(request.payload.restrictions, ['stop'], numberOfResults); + } + + return request; + } + + public static initWithBBOX(bboxData: string | number[], placeTypes: OJP_Types.PlaceTypeEnum[] = [], numberOfResults: number = 10) { + const request = OJPv1_LocationInformationRequest.Default(); + + const geoRestriction = this.computeGeoRestriction(bboxData); + if (geoRestriction) { + request.payload.initialInput = { + locationName: undefined, + geoRestriction: geoRestriction, + }; + } + + if (request.payload.restrictions) { + request.updateRestrictions(request.payload.restrictions, placeTypes, numberOfResults); + } + + return request; + } + + public buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string { + this.payload.requestTimestamp = RequestHelpers.computeRequestTimestamp(); + + const requestOJP: OJP_Types.OJPv1_LocationInformationRequestOJP = { + OJPRequest: { + serviceRequest: { + serviceRequestContext: { + language: language + }, + requestTimestamp: this.payload.requestTimestamp, + requestorRef: requestorRef, + OJPLocationInformationRequest: this.payload, + } + }, + }; + + const xmlS = buildRootXML(requestOJP, xmlConfig); + + return xmlS; + } + + protected async _fetchResponse(sdk: SDK<'1.0'>): Promise { + const xmlConfig: XML_Config = sdk.version === '2.0' ? DefaultXML_Config : XML_BuilderConfigOJPv1; + + const responseXML = await RequestHelpers.computeResponse(this, sdk, xmlConfig); + + try { + const parsedObj = parseXML<{ OJP: OJP_Types.OJPv1_LocationInformationRequestResponseOJP }>(responseXML, 'OJP'); + const response = parsedObj.OJP.OJPResponse.serviceDelivery.OJPLocationInformationDelivery; + + if (response === undefined) { + console.log(responseXML); + throw new Error('Parse error'); + } + + return { + ok: true, + value: response, + }; + } catch (error) { + return { + ok: false, + error: error instanceof Error ? error : new Error('Unknown error'), + }; + } + } +} diff --git a/src/versions/legacy/v1/requests/ser.ts b/src/versions/legacy/v1/requests/ser.ts new file mode 100644 index 00000000..4689a897 --- /dev/null +++ b/src/versions/legacy/v1/requests/ser.ts @@ -0,0 +1,113 @@ +import * as OJP_Types from 'ojp-shared-types'; + +import { SDK } from '../../../../sdk'; + +import { buildRootXML } from '../../../../helpers/xml/builder'; +import { parseXML } from '../../../../helpers/xml/parser'; +import { RequestHelpers } from '../../../../helpers/request-helpers'; + +import { Language, XML_Config } from '../../../../types/_all'; + +import { OJPv1_StopEventRequestResponse } from '../../../../types/response'; +import { DefaultXML_Config, XML_BuilderConfigOJPv1 } from '../../../../constants'; + +import { SharedStopEventRequest } from '../../../current/requests/ser.shared'; + +export class OJPv1_StopEventRequest extends SharedStopEventRequest <{ fetchResponse: OJPv1_StopEventRequestResponse }> { + public payload: OJP_Types.OJPv1_StopEventRequestSchema; + + protected constructor(location: OJP_Types.OJPv1_SER_RequestLocationSchema, params: OJP_Types.SER_RequestParamsSchema | undefined = undefined) { + super(); + + this.payload = { + requestTimestamp: RequestHelpers.computeRequestTimestamp(), + location: location, + params: params, + } + } + + // Used by Base.initWithRequestMock / initWithResponseMock + public static Default() { + const date = new Date(); + const location: OJP_Types.OJPv1_SER_RequestLocationSchema = { + placeRef: { + stopPlaceRef: '8507000', + locationName: { + text: 'n/a' + } + }, + depArrTime: date.toISOString(), + }; + + const requestParams = SharedStopEventRequest.DefaultRequestParams('1.0'); + + const request = new OJPv1_StopEventRequest(location, requestParams); + + return request; + } + + public static initWithPlaceRefAndDate(placeRefS: string, date: Date = new Date()) { + const location: OJP_Types.OJPv1_SER_RequestLocationSchema = { + placeRef: { + stopPlaceRef: placeRefS, + locationName: { + text: 'n/a' + } + }, + depArrTime: date.toISOString(), + }; + + const params = SharedStopEventRequest.DefaultRequestParams('1.0'); + + const request = new OJPv1_StopEventRequest(location, params); + + return request; + } + + public buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string { + this.payload.requestTimestamp = RequestHelpers.computeRequestTimestamp(); + + const requestOJP: OJP_Types.OJPv1_StopEventRequestOJP = { + OJPRequest: { + serviceRequest: { + serviceRequestContext: { + language: language + }, + requestTimestamp: this.payload.requestTimestamp, + requestorRef: requestorRef, + OJPStopEventRequest: this.payload, + } + }, + }; + + const xmlS = buildRootXML(requestOJP, xmlConfig); + + return xmlS; + } + + protected override async _fetchResponse(sdk: SDK<'1.0'>): Promise { + const xmlConfig: XML_Config = sdk.version === '2.0' ? DefaultXML_Config : XML_BuilderConfigOJPv1; + + const responseXML = await RequestHelpers.computeResponse(this, sdk, xmlConfig); + + try { + const parsedObj = parseXML<{ OJP: OJP_Types.OJPv1_StopEventResponseOJP }>(responseXML, 'OJP'); + const response = parsedObj.OJP.OJPResponse.serviceDelivery.OJPStopEventDelivery; + + if (response === undefined) { + console.log(responseXML); + throw new Error('Parse error'); + } + + return { + ok: true, + value: response, + }; + } catch (error) { + return { + ok: false, + error: error instanceof Error ? error : new Error('Unknown error'), + }; + } + } +} diff --git a/src/versions/legacy/v1/requests/tir.ts b/src/versions/legacy/v1/requests/tir.ts new file mode 100644 index 00000000..265cd619 --- /dev/null +++ b/src/versions/legacy/v1/requests/tir.ts @@ -0,0 +1,104 @@ +import * as OJP_Types from 'ojp-shared-types'; + +import { SDK } from "../../../../sdk"; + +import { buildRootXML } from '../../../../helpers/xml/builder'; +import { parseXML } from '../../../../helpers/xml/parser'; +import { DateHelpers } from '../../../../helpers/date-helpers'; +import { RequestHelpers } from "../../../../helpers/request-helpers"; + +import { Language, XML_Config } from '../../../../types/_all'; + +import { OJPv1_TripInfoRequestResponse } from "../../../../types/response"; +import { SharedTripInfoRequest } from '../../../current/requests/tir.shared'; +import { DefaultXML_Config, XML_BuilderConfigOJPv1 } from '../../../../constants'; + +export class OJPv1_TripInfoRequest extends SharedTripInfoRequest<{ fetchResponse: OJPv1_TripInfoRequestResponse }> { + public payload: OJP_Types.TIR_RequestSchema; + + protected constructor(journeyRef: string, operatingDayRef: string, params?: OJP_Types.TIR_RequestParamsSchema) { + super(); + + this.payload = { + requestTimestamp: RequestHelpers.computeRequestTimestamp(), + journeyRef: journeyRef, + operatingDayRef: operatingDayRef, + params: params, + }; + + // OJP 2.0 TIR request XML can be used also for OJP 1.0 + // except for following params which need to be removed / unset + if (this.payload.params) { + // IncludeSituationsContext is only in 2.0, in 1.0 will return in 400 error on server + this.payload.params.includeSituationsContext = undefined; + } + } + + // Used by Base.initWithRequestMock / initWithResponseMock + public static Default() { + const request = new OJPv1_TripInfoRequest('n/a', 'n/a', SharedTripInfoRequest.DefaultRequestParams()); + return request; + } + + public static initWithJourneyRef(journeyRef: string, journeyDate: Date = new Date()) { + const operatingDayRef = DateHelpers.formatDate(journeyDate).substring(0, 10); + + const params = OJPv1_TripInfoRequest.DefaultRequestParams(); + const request = new OJPv1_TripInfoRequest(journeyRef, operatingDayRef, params); + + return request; + } + + public enableTrackProjection() { + if (this.payload.params) { + this.payload.params.includeTrackProjection = true; + } + } + + public buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string { + this.payload.requestTimestamp = RequestHelpers.computeRequestTimestamp(); + + const requestOJP: OJP_Types.TIR_RequestOJP = { + OJPRequest: { + serviceRequest: { + serviceRequestContext: { + language: language + }, + requestTimestamp: this.payload.requestTimestamp, + requestorRef: requestorRef, + OJPTripInfoRequest: this.payload, + } + }, + }; + + const xmlS = buildRootXML(requestOJP, xmlConfig); + + return xmlS; + } + + protected override async _fetchResponse(sdk: SDK<'1.0'>): Promise { + const xmlConfig: XML_Config = sdk.version === '2.0' ? DefaultXML_Config : XML_BuilderConfigOJPv1; + + const responseXML = await RequestHelpers.computeResponse(this, sdk, xmlConfig); + + try { + const parsedObj = parseXML<{ OJP: OJP_Types.OJPv1_TripInfoResponseOJP }>(responseXML, 'OJP'); + const response = parsedObj.OJP.OJPResponse.serviceDelivery.OJPTripInfoDelivery; + + if (response === undefined) { + console.log(responseXML); + throw new Error('Parse error'); + } + + return { + ok: true, + value: response, + }; + } catch (error) { + return { + ok: false, + error: error instanceof Error ? error : new Error('Unknown error'), + }; + } + } +} diff --git a/src/versions/legacy/v1/requests/tr.ts b/src/versions/legacy/v1/requests/tr.ts new file mode 100644 index 00000000..ca6178e5 --- /dev/null +++ b/src/versions/legacy/v1/requests/tr.ts @@ -0,0 +1,102 @@ +import * as OJP_Types from 'ojp-shared-types'; + +import { SDK } from "../../../../sdk"; + +import { buildRootXML } from '../../../../helpers/xml/builder'; +import { parseXML } from '../../../../helpers/xml/parser'; +import { RequestHelpers } from "../../../../helpers/request-helpers"; + +import { Language, XML_Config } from '../../../../types/_all'; + +import { TripRequestResponse } from "../../../../types/response"; +import { DefaultXML_Config, XML_BuilderConfigOJPv1 } from '../../../../constants'; +import { PlaceRef } from '../../../../models/ojp'; + +import { SharedTripRequest } from '../../../current/requests/tr.shared'; + +// TODO - TripRequestResponse is wrong, should be OJPv1_TripRequestResponse +export class OJPv1_TripRequest extends SharedTripRequest<{ fetchResponse: TripRequestResponse }> { + // TODO - adapt schema if needed + public payload: OJP_Types.TripRequestSchema; + + protected constructor( + origin: OJP_Types.PlaceContextSchema, + destination: OJP_Types.PlaceContextSchema, + via: OJP_Types.ViaPointSchema[] = [], + + params: OJP_Types.TripParamsSchema | null = null, + ) { + super(); + + throw new Error('No OJP types defined for TR OJP 1.0'); + } + + // Used by Base.initWithRequestMock / initWithResponseMock + public static Default() { + const date = new Date(); + const origin: OJP_Types.PlaceContextSchema = { + placeRef: PlaceRef.initWithPlaceRefsOrCoords('8503000', 'Zürich'), + depArrTime: date.toISOString(), + individualTransportOption: [], + }; + const destination: OJP_Types.PlaceContextSchema = { + placeRef: PlaceRef.initWithPlaceRefsOrCoords('8507000', 'Bern'), + individualTransportOption: [], + }; + const params = SharedTripRequest.DefaultRequestParams(); + + const request = new OJPv1_TripRequest(origin, destination, [], params); + return request; + } + + // TODO - add the rest of the initializers + + public buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string { + this.payload.requestTimestamp = RequestHelpers.computeRequestTimestamp(); + + // TODO - should be OJPv1_TripRequestOJP + const requestOJP: OJP_Types.TripRequestOJP = { + OJPRequest: { + serviceRequest: { + serviceRequestContext: { + language: language + }, + requestTimestamp: this.payload.requestTimestamp, + requestorRef: requestorRef, + OJPTripRequest: this.payload, + } + }, + }; + + const xmlS = buildRootXML(requestOJP, xmlConfig); + + return xmlS; + } + + // TODO - should be OJPv1_TripRequestResponse, OJPv1_TripRequestResponseOJP + protected override async _fetchResponse(sdk: SDK<'1.0'>): Promise { + const xmlConfig: XML_Config = sdk.version === '2.0' ? DefaultXML_Config : XML_BuilderConfigOJPv1; + + const responseXML = await RequestHelpers.computeResponse(this, sdk, xmlConfig); + + try { + const parsedObj = parseXML<{ OJP: OJP_Types.TripRequestResponseOJP }>(responseXML, 'OJP'); + const response = parsedObj.OJP.OJPResponse.serviceDelivery.OJPTripDelivery; + + if (response === undefined) { + console.log(responseXML); + throw new Error('Parse error'); + } + + return { + ok: true, + value: response, + }; + } catch (error) { + return { + ok: false, + error: error instanceof Error ? error : new Error('Unknown error'), + }; + } + } +} diff --git a/src/xml/tree-node.ts b/src/xml/tree-node.ts deleted file mode 100644 index 0be5e7ee..00000000 --- a/src/xml/tree-node.ts +++ /dev/null @@ -1,93 +0,0 @@ -import * as sax from 'sax'; - -export class TreeNode { - public name: string; - public parentName: string | null; - public attributes: { [key: string]: sax.QualifiedAttribute }; - public children: TreeNode[]; - public text: string | null; - - constructor( - name: string, - parentName: string | null, - attributes: { [key: string]: sax.QualifiedAttribute }, - children: TreeNode[], - text: string | null - ) { - this.name = name; - this.parentName = parentName; - this.attributes = attributes; - this.children = children; - this.text = text; - } - - findTextFromChildNamed(expr: string): string | null { - const exprParts = expr.split("/"); - - let contextNode: TreeNode | null = this; - exprParts.forEach((nodeName, idx) => { - if (contextNode) { - const newContextNode = contextNode.findChildNamed(nodeName); - contextNode = newContextNode; - } - }); - - const contextNodeText = contextNode?.text ?? null; - return contextNodeText; - } - - findChildNamed(expr: string): TreeNode | null { - const exprParts = expr.split("/"); - - let contextNode: TreeNode | null = this; - exprParts.forEach((nodeName, idx) => { - const newContextNode = - contextNode?.children.find((el) => { - return el.name === nodeName; - }) ?? null; - - contextNode = newContextNode; - }); - - return contextNode; - } - - findChildrenNamed(name: string): TreeNode[] { - if (name.includes("/")) { - console.error( - "ERROR - do you want to use more than one level for findChildrenNamed? Use findTextFromChildNamed." - ); - console.log(name); - debugger; - } - - const foundTreeNodes: TreeNode[] = []; - - this.children.forEach((el) => { - if (el.name === name) { - foundTreeNodes.push(el); - } - }); - - return foundTreeNodes; - } - - computeText(): string | null { - const textParts: string[] = []; - if (this.text === null) { - if (this.children.length === 0) { - return null; - } - this.children.forEach((child) => { - const childText = child.computeText(); - if (childText) { - textParts.push(childText); - } - }); - } else { - textParts.push(this.text); - } - - return textParts.join(' '); - } -} diff --git a/tests/fare-request.test.ts b/tests/fare-request.test.ts new file mode 100644 index 00000000..24039c69 --- /dev/null +++ b/tests/fare-request.test.ts @@ -0,0 +1,39 @@ +import { FileHelpers } from './helpers/file-helpers'; + +import * as OJP_Types from 'ojp-shared-types'; +import { OJP_Helpers } from './helpers/ojp-test.helpers'; + +describe('OJP Test TripRequest Response', () => { + let response1: OJP_Types.FareDeliverySchema; + let response2: OJP_Types.FareDeliverySchema; + + beforeAll(async () => { + const ojp = OJP_Helpers.LegacySDK(); + + const mockXML_1 = FileHelpers.loadMockXML('fare-response.xml'); + const mockRequest1 = ojp.requests.FareRequest.initWithResponseMock(mockXML_1); + const ojpResponse1 = await mockRequest1.fetchResponse(ojp); + if (ojpResponse1.ok) { + response1 = ojpResponse1.value; + } + + const mockXML_2 = FileHelpers.loadMockXML('fare-response-single-result.xml'); + const mockRequest2 = ojp.requests.FareRequest.initWithResponseMock(mockXML_2); + const ojpResponse2 = await mockRequest2.fetchResponse(ojp); + if (ojpResponse2.ok) { + response2 = ojpResponse2.value; + } + }); + + test('Test FareRequest - single result', () => { + expect(response2.fareResult.length).toBe(1); + // console.log(response1.fareResult.length); + // console.log(response2.fareResult.length); + }); + + test('Test FareRequest - response model', () => { + const fareProduct = response1.fareResult[0].tripFareResult[0].fareProduct[0]; + expect(fareProduct.price).toBe(12.2); + expect(fareProduct.travelClass).toBe('second'); + }); +}); diff --git a/tests/helpers/ojp-test.helpers.ts b/tests/helpers/ojp-test.helpers.ts new file mode 100644 index 00000000..1ee2b2c9 --- /dev/null +++ b/tests/helpers/ojp-test.helpers.ts @@ -0,0 +1,20 @@ +import * as OJP from '../../src'; +import { OJP_VERSION } from '../../src/types/_all'; + +const httpConfig: OJP.HTTPConfig = { + url: 'https://endpoint.com', + authToken: null, +}; + +const requestorRef = 'test.requestorRef'; +export class OJP_Helpers { + public static DefaultSDK(language: OJP.Language = 'de') { + const sdk = OJP.SDK.create(requestorRef, httpConfig, language); + return sdk; + } + + public static LegacySDK(language: OJP.Language = 'de') { + const sdk = OJP.SDK.v1(requestorRef, httpConfig, language); + return sdk; + } +} diff --git a/tests/journey.test.ts b/tests/journey.test.ts deleted file mode 100644 index e025d47d..00000000 --- a/tests/journey.test.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { FileHelpers } from './helpers/file-helpers'; - -import * as OJP from '../src/index' - -describe('OJP Test JourneyService', () => { - test('Test HRDF attributes', async () => { - // https://opentdatach.github.io/ojp-demo-app/search?from=8503057&to=8507099 - const mockXML = FileHelpers.loadMockXML('tr-uetliberg-gurten.xml') - const request = OJP.TripRequest.initWithResponseMock(mockXML); - - const response = await request.fetchResponse(); - const tripsFilter = response.trips.filter(trip => trip.id === 'ID-0F1A3116-ACFE-4C0C-945C-342EA202BA24'); - - expect(tripsFilter).toHaveLength(1); - - const trip = tripsFilter[0]; - const timedLeg = trip.legs[0] as OJP.TripTimedLeg; - - const attributeVN = timedLeg.service.serviceAttributes['VN']; - expect(attributeVN.code).toBe('VN'); - expect(attributeVN.text).toBe('VELOS: Keine Beförderung möglich'); - - const attributeNF = timedLeg.service.serviceAttributes['NF']; - expect(attributeNF.extra['AccessFacility']).toBe('palletAccess_lowFloor'); - }); -}); diff --git a/tests/lir-response.test.ts b/tests/lir-response.test.ts new file mode 100644 index 00000000..a5630f5f --- /dev/null +++ b/tests/lir-response.test.ts @@ -0,0 +1,37 @@ +import { FileHelpers } from './helpers/file-helpers'; + +import * as OJP from '../src'; +import { OJP_Helpers } from './helpers/ojp-test.helpers'; + +describe('OJP Test TripRequest Response', () => { + let placeResults: OJP.PlaceResult[]; + + beforeAll(async () => { + const ojp = OJP_Helpers.DefaultSDK(); + const mockXML = FileHelpers.loadMockXML('lir-response-be.xml'); + const mockRequest = ojp.requests.LocationInformationRequest.initWithResponseMock(mockXML); + + const response = await mockRequest.fetchResponse(ojp); + if (response.ok) { + placeResults = response.value.placeResult.map(el => OJP.PlaceResult.initWithXMLSchema(el)); + } else { + // TODO: handle errors + } + }); + + test('Test LIR response parse strings', () => { + const place1 = placeResults[0].place; + expect(place1.stopPlace?.stopPlaceRef).toBe('8507000'); + }); + + test('Test LIR response array type', () => { + const place1 = placeResults[0].place; + expect(place1.mode.length).toBe(1); + expect(place1.mode[0].ptMode).toBe('rail'); + + const place3 = placeResults[2].place; + expect(place3.mode.length).toBe(2); + expect(place3.mode[0].ptMode).toBe('tram'); + expect(place3.mode[1].ptMode).toBe('bus'); + }); +}); diff --git a/tests/lir.test.ts b/tests/lir.test.ts deleted file mode 100644 index e8f8d473..00000000 --- a/tests/lir.test.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { FileHelpers } from './helpers/file-helpers'; - -import * as OJP from '../src/index' - -describe('OJP Test Namespaces', () => { - test('Test LIR with ojp: siri: namespaces', async () => { - const mockXML = FileHelpers.loadMockXML('lir-be.xml') - const request = OJP.LocationInformationRequest.initWithResponseMock(mockXML); - - const response = await request.fetchResponse(); - const location = response.locations[0]; - - expect(location.stopPlace?.stopPlaceRef).toBe('8507000'); - }); - - test('Test LIR with ojp default namespace + siri: namespaces', async () => { - const mockXML = FileHelpers.loadMockXML('lir-be-ns-ojp.xml'); - const request = OJP.LocationInformationRequest.initWithResponseMock(mockXML); - - const response = await request.fetchResponse(); - const location = response.locations[0]; - - expect(location.stopPlace?.stopPlaceRef).toBe('8507000'); - }); -}); - - -describe('LIR POI', () => { - test('Test Shared Mobility', async () => { - const mockXML = FileHelpers.loadMockXML('lir-poi-be-mobility.xml'); - const request = OJP.LocationInformationRequest.initWithResponseMock(mockXML); - - const response = await request.fetchResponse(); - const location = response.locations[0]; - - // Find the location having a POI with num_vehicles_available attribute - const locationPOIs = response.locations.filter(location => { - return location.poi?.code === 'coord:828397:6066636:MRCV:Publibike Bundesgasse' - }); - - expect(locationPOIs).toHaveLength(1); - - expect(locationPOIs[0].attributes['num_vehicles_available']).toBe('2'); - }); -}) \ No newline at end of file diff --git a/tests/ojp-fixtures/fare-response-single-result.xml b/tests/ojp-fixtures/fare-response-single-result.xml new file mode 100644 index 00000000..8ccac7fa --- /dev/null +++ b/tests/ojp-fixtures/fare-response-single-result.xml @@ -0,0 +1,31 @@ + + + + + 2025-06-11T12:37:24.698329 + OJP2NOVA + + 2025-06-11T12:37:24.698329 + true + + ID-D2F6B378-90D7-4708-B60B-61857AFA022A + + 1 + 5 + + 125 + Streckenbillett + NOVA + NOVA + 12.20 + 11.21 + CHF + 8.1 + second + + + + + + + diff --git a/tests/ojp-fixtures/fare-response.xml b/tests/ojp-fixtures/fare-response.xml new file mode 100644 index 00000000..2fd2e215 --- /dev/null +++ b/tests/ojp-fixtures/fare-response.xml @@ -0,0 +1,103 @@ + + + + + 2025-06-11T12:37:24.698329 + OJP2NOVA + + 2025-06-11T12:37:24.698329 + true + + ID-D2F6B378-90D7-4708-B60B-61857AFA022A + + 1 + 5 + + 125 + Streckenbillett + NOVA + NOVA + 12.20 + 11.21 + CHF + 8.1 + second + + + + + ID-830971D9-EEEF-42FF-A7E3-77A0486AB259 + + 1 + 5 + + 125 + Streckenbillett + NOVA + NOVA + 12.20 + 11.21 + CHF + 8.1 + second + + + + + ID-BCBA35A8-65E3-40EE-8819-123BCF6D614C + + 1 + 5 + + 125 + Streckenbillett + NOVA + NOVA + 12.20 + 11.21 + CHF + 8.1 + second + + + + + ID-8670642D-D079-4ACA-9EE8-549894E41F2C + + 1 + 5 + + 125 + Streckenbillett + NOVA + NOVA + 12.20 + 11.21 + CHF + 8.1 + second + + + + + ID-CE3304C1-3022-4E31-B443-325F8D002D4B + + 1 + 5 + + 125 + Streckenbillett + NOVA + NOVA + 12.20 + 11.21 + CHF + 8.1 + second + + + + + + + diff --git a/tests/ojp-fixtures/lir-be-ns-ojp.xml b/tests/ojp-fixtures/lir-be-ns-ojp.xml deleted file mode 100644 index 508757e4..00000000 --- a/tests/ojp-fixtures/lir-be-ns-ojp.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - 2024-01-12T19:48:51Z - EFAController10.6.14.20-OJP-EFA01-P - true - - 2024-01-12T19:48:51Z - true - 3 - - - - 8507000 - - Bern - - 23006351:1 - - - Bern - - - 7.43913 - 46.94883 - - - true - 0.905595005 - - - - - \ No newline at end of file diff --git a/tests/ojp-fixtures/lir-be.xml b/tests/ojp-fixtures/lir-be.xml deleted file mode 100644 index 11c2dbe7..00000000 --- a/tests/ojp-fixtures/lir-be.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - 2024-01-12T19:48:51Z - EFAController10.6.14.20-OJP-EFA01-P - true - - 2024-01-12T19:48:51Z - true - 3 - - - - 8507000 - - Bern - - 23006351:1 - - - Bern - - - 7.43913 - 46.94883 - - - true - 0.905595005 - - - - - \ No newline at end of file diff --git a/tests/ojp-fixtures/lir-poi-be-mobility.xml b/tests/ojp-fixtures/lir-poi-be-mobility.xml deleted file mode 100644 index 96cfca5d..00000000 --- a/tests/ojp-fixtures/lir-poi-be-mobility.xml +++ /dev/null @@ -1,835 +0,0 @@ - - - - - 2024-03-07T23:26:10Z - optmentzEFAControllerEFAController10.6.16.8-build-1414-3ed7ef6c19ab - d58dc4c30198ffa1 - true - - 2024-03-07T23:26:10Z - true - 6 - - - - poiID:39639:23006351:-1:Veloparking Bern, - Bern:Bern:Veloparking Bern, Bern:ANY:POI:828165:6066305:MRCV:ROKAS - - Veloparking Bern, Bern - - - - POI_1 - bike_parking - - - - - POI_0 - parking - - - 23006351:-1 - - - Bern - - - 7.43953 - 46.94864 - - - true - 0.826373637 - - - - - poiID:39631:23006351:-1:Veloparking Bern, - Bern:Bern:Veloparking Bern, Bern:ANY:POI:828277:6066352:MRCV:ROKAS - - Veloparking Bern, Bern - - - - POI_1 - bike_parking - - - - - POI_0 - parking - - - 23006351:-1 - - - Bern - - - 7.44054 - 46.94835 - - - true - 0.706868112 - - - - - poiID:39638:23006351:-1:Veloparking Bern, - Bern:Bern:Veloparking Bern, Bern:ANY:POI:828320:6066380:MRCV:ROKAS - - Veloparking Bern, Bern - - - - POI_1 - bike_parking - - - - - POI_0 - parking - - - 23006351:-1 - - - Bern - - - 7.44093 - 46.94818 - - - true - 0.646428585 - - - - - poiID:39636:23006351:-1:Veloparking Bern, - Bern:Bern:Veloparking Bern, Bern:ANY:POI:827930:6066206:MRCV:ROKAS - - Veloparking Bern, Bern - - - - POI_1 - bike_parking - - - - - POI_0 - parking - - - 23006351:-1 - - - Bern - - - 7.43742 - 46.94925 - - - true - 0.62994504 - - - - - poiID:39632:23006351:-1:Veloparking Bern, - Bern:Bern:Veloparking Bern, Bern:ANY:POI:827881:6066279:MRCV:ROKAS - - Veloparking Bern, Bern - - - - POI_1 - bike_parking - - - - - POI_0 - parking - - - 23006351:-1 - - - Bern - - - 7.43698 - 46.94880 - - - true - 0.627197802 - - - - - poiID:39637:23006351:-1:Veloparking Bern, - Bern:Bern:Veloparking Bern, Bern:ANY:POI:828260:6066191:MRCV:ROKAS - - Veloparking Bern, Bern - - - - POI_1 - bike_parking - - - - - POI_0 - parking - - - 23006351:-1 - - - Bern - - - 7.44039 - 46.94934 - - - true - 0.624450564 - - - - - poiID:39630:23006351:-1:Veloparking Bern, - Bern:Bern:Veloparking Bern, Bern:ANY:POI:828287:6066164:MRCV:ROKAS - - Veloparking Bern, Bern - - - - POI_1 - bike_parking - - - - - POI_0 - parking - - - 23006351:-1 - - - Bern - - - 7.44063 - 46.94951 - - - true - 0.57225275 - - - - - poiID:39635:23006351:-1:Veloparking Bern, - Bern:Bern:Veloparking Bern, Bern:ANY:POI:827843:6066246:MRCV:ROKAS - - Veloparking Bern, Bern - - - - POI_1 - bike_parking - - - - - POI_0 - parking - - - 23006351:-1 - - - Bern - - - 7.43664 - 46.94900 - - - true - 0.559890091 - - - - - poiID:39634:23006351:-1:Veloparking Bern, - Bern:Bern:Veloparking Bern, Bern:ANY:POI:827862:6066206:MRCV:ROKAS - - Veloparking Bern, Bern - - - - POI_1 - bike_parking - - - - - POI_0 - parking - - - 23006351:-1 - - - Bern - - - 7.43681 - 46.94925 - - - true - 0.555769205 - - - - - poiID:39629:23006351:-1:Veloparking Bern, - Bern:Bern:Veloparking Bern, Bern:ANY:POI:828264:6066120:MRCV:ROKAS - - Veloparking Bern, Bern - - - - POI_1 - bike_parking - - - - - POI_0 - parking - - - 23006351:-1 - - - Bern - - - 7.44042 - 46.94978 - - - true - 0.543406606 - - - - - poiID:39633:23006351:-1:Veloparking Bern, - Bern:Bern:Veloparking Bern, Bern:ANY:POI:827787:6066259:MRCV:ROKAS - - Veloparking Bern, Bern - - - - POI_1 - bike_parking - - - - - POI_0 - parking - - - 23006351:-1 - - - Bern - - - 7.43614 - 46.94892 - - - true - 0.496703297 - - - - - poiID:39627:23006351:-1:Veloparking Bern, - Bern:Bern:Veloparking Bern, Bern:ANY:POI:828343:6066095:MRCV:ROKAS - - Veloparking Bern, Bern - - - - POI_1 - bike_parking - - - - - POI_0 - parking - - - 23006351:-1 - - - Bern - - - 7.44113 - 46.94993 - - - true - 0.449999988 - - - - - coord:828304:6066355:MRCV:Publibike - Bahnhofplatz - - Bahnhofplatz - - - - amenity - bicycle_rental - - - - - Publibike - - - 7.44078 - 46.94833 - - - - 6 - 0 - - - - true - 1 - - - - - coord:827863:6066208:MRCV:Publibike Open 07:00 - - 18:00 In der Velostation Schanzenbrücke - - Open 07:00 - 18:00 In der Velostation - Schanzenbrücke - - - - amenity - bicycle_rental - - - - - Publibike - - - 7.43682 - 46.94924 - - - - 1 - 0 - - - - true - 1 - - - - - coord:827872:6066432:MRCV:Publibike PostParc - Velostation (06:00-22:00)- INSIDE the building! - - PostParc Velostation (06:00-22:00)- INSIDE - the building! - - - - amenity - bicycle_rental - - - - - Publibike - - - 7.43690 - 46.94786 - - - - 2 - 0 - - - - true - 1 - - - - - coord:827828:6066445:MRCV:Publibike Welle 7 - Velostation (06:00-22:00)- INSIDE the building! - - Welle 7 Velostation (06:00-22:00)- INSIDE - the building! - - - - amenity - bicycle_rental - - - - - Publibike - - - 7.43651 - 46.94778 - - - - 1 - 0 - - - - true - 1 - - - - - coord:828397:6066636:MRCV:Publibike Bundesgasse - - Bundesgasse - - - - amenity - bicycle_rental - - - - - Publibike - - - 7.44162 - 46.94661 - - - - 2 - 0 - - - - true - 1 - - - - - coord:828255:6066358:MRCV:Publibike - Bahnhofplatz Mobile Station Bern 4 - - Bahnhofplatz Mobile Station Bern 4 - - - - amenity - bicycle_rental - - - - - Publibike - - - 7.44034 - 46.94832 - - - - 22 - 0 - - - - true - 1 - - - - - coord:828304:6066355:MRCV:Publiebike - Bahnhofplatz - - Bahnhofplatz - - - - amenity - bicycle_rental - - - - - Publiebike - - - 7.44078 - 46.94833 - - - - 4 - 0 - - - - true - 1 - - - - - coord:827863:6066208:MRCV:Publiebike Open 07:00 - - 18:00 In der Velostation Schanzenbrücke - - Open 07:00 - 18:00 In der Velostation - Schanzenbrücke - - - - amenity - bicycle_rental - - - - - Publiebike - - - 7.43682 - 46.94924 - - - - 3 - 0 - - - - true - 1 - - - - - coord:827872:6066432:MRCV:Publiebike PostParc - Velostation (06:00-22:00)- INSIDE the building! - - PostParc Velostation (06:00-22:00)- INSIDE - the building! - - - - amenity - bicycle_rental - - - - - Publiebike - - - 7.43690 - 46.94786 - - - - 4 - 0 - - - - true - 1 - - - - - coord:827828:6066445:MRCV:Publiebike Welle 7 - Velostation (06:00-22:00)- INSIDE the building! - - Welle 7 Velostation (06:00-22:00)- INSIDE - the building! - - - - amenity - bicycle_rental - - - - - Publiebike - - - 7.43651 - 46.94778 - - - - 3 - 0 - - - - true - 1 - - - - - coord:828397:6066636:MRCV:Publiebike - Bundesgasse - - Bundesgasse - - - - amenity - bicycle_rental - - - - - Publiebike - - - 7.44162 - 46.94661 - - - - 9 - 0 - - - - true - 1 - - - - - coord:828255:6066358:MRCV:Publiebike - Bahnhofplatz Mobile Station Bern 4 - - Bahnhofplatz Mobile Station Bern 4 - - - - amenity - bicycle_rental - - - - - Publiebike - - - 7.44034 - 46.94832 - - - - 9 - 0 - - - - true - 1 - - - - - coord:828148:6066451:MRCV:Carvelo2go Berner - Generationenhaus - - Berner Generationenhaus - - - - amenity - bicycle_rental - - - - - Carvelo2go - - - 7.43938 - 46.94775 - - - - Berner Generationenhaus - - carvelo2go:1c741450-02ed-412e-ce4d-bfd470da7281 - cycleHire - - - - true - 1 - - - - - \ No newline at end of file diff --git a/tests/ojp-fixtures/lir-response-be.xml b/tests/ojp-fixtures/lir-response-be.xml new file mode 100644 index 00000000..3b4b7f49 --- /dev/null +++ b/tests/ojp-fixtures/lir-response-be.xml @@ -0,0 +1,323 @@ + + + + + 2025-04-15T11:20:16.4063772+02:00 + MENTZ + + 2025-04-15T11:20:16.4065242+02:00 + eb6a9853-a5c2-481b-9ac3-5fe74519117b + de + 2 + + + + 8507000 + + Bern + + + EFA + 111055 + + 23006351:1 + + + Bern (Bern) + + + 7.43913 + 46.94883 + + + rail + + + true + 1 + + + + + 8588699 + + Bern, Wankdorf Center + + + EFA + 126079 + + 23006351:1 + + + Bern, Wankdorf Center (Bern) + + + 7.4659 + 46.96165 + + + tram + cityTram + + + bus + localBus + + + true + 0.865 + + + + + 8576646 + + Bern, Bahnhof + + + EFA + 119184 + + 23006351:1 + + + Bern, Bahnhof (Bern) + + + 7.44021 + 46.94811 + + + tram + cityTram + + + bus + localBus + + + true + 0.853 + + + + + 8507062 + + Muri b. Bern + + + EFA + 111070 + + 23006356:3 + + + Muri b. Bern (Muri b. Bern) + + + 7.48641 + 46.93141 + + + tram + cityTram + + + bus + localBus + + + true + 0.851 + + + + + 8588174 + + Bern, Weltpostverein + + + EFA + 125663 + + 23006351:1 + + + Bern, Weltpostverein (Bern) + + + 7.47205 + 46.93882 + + + tram + cityTram + + + bus + localBus + + + true + 0.844 + + + + + 8504106 + + Bern Bümpliz Süd + + + EFA + 109025 + + 23006351:1 + + + Bern Bümpliz Süd (Bern) + + + 7.39524 + 46.93749 + + + rail + + + true + 0.817 + + + + + 8589226 + + Bern Bümpliz Süd, Bahnhof + + + EFA + 126537 + + 23006351:1 + + + Bern Bümpliz Süd, Bahnhof (Bern) + + + 7.39556 + 46.93753 + + + bus + localBus + + + true + 0.811 + + + + + 8504108 + + Bern Europaplatz + + + EFA + 109026 + + 23006351:1 + + + Bern Europaplatz (Bern) + + + 7.40612 + 46.94421 + + + rail + + + true + 0.784 + + + + + 8580939 + + Bern Europaplatz, Bahnhof + + + EFA + 122517 + + 23006351:1 + + + Bern Europaplatz, Bahnhof (Bern) + + + 7.40631 + 46.94325 + + + tram + cityTram + + + bus + localBus + + + true + 0.776 + + + + + 46021039:2 + + Berndorf (Bruck/Mur) + + + + Berndorf (Bruck/Mur) + + + 15.27131 + 47.42428 + + + true + 0.771 + + + + + 8136088:7 + + Bernlohe (Aalen) + + + + Bernlohe (Aalen) + + + 10.16667 + 48.85 + + + true + 0.771 + + + + + \ No newline at end of file diff --git a/tests/ojp-fixtures/ser-response-situations.xml b/tests/ojp-fixtures/ser-response-situations.xml new file mode 100644 index 00000000..c66a875d --- /dev/null +++ b/tests/ojp-fixtures/ser-response-situations.xml @@ -0,0 +1,2914 @@ + + + + 2025-06-02T11:33:47.5750769+02:00 + MENTZ + + 2025-06-02T11:33:47.5750777+02:00 + 2b80884b-160e-484c-8f75-6fd5f07d0d55 + en + 27 + + + + + 8504780 + + Payerne, gare + + + EFA + 109570:0:10000 + + 23023822:3 + + + Payerne, gare + + + 6.94034 + 46.82007 + + + + + ch:1:sloid:4780:0:421229 + + Payerne, gare + + + EFA + 109570:0:10000 + + 8504780 + 23023822:3 + + + Payerne, gare + + + 6.94034 + 46.82007 + + + + + 23023822:3 + + Payerne + + + + Payerne + + + 6.94034 + 46.82007 + + + + + 8583428 + + Payerne, aérodrome + + + EFA + 124272:0:10001 + + 23008054:13 + + + Payerne, aérodrome + + + 6.92066 + 46.85034 + + + + + ch:1:sloid:83428:0:405616 + + Payerne, aérodrome + + + EFA + 124272:0:10001 + + 8583428 + 23008054:13 + + + Payerne, aérodrome + + + 6.92066 + 46.85034 + + + + + 23008054:13 + + Rueyres-les-Prés + + + + Rueyres-les-Prés + + + 6.92066 + 46.85034 + + + + + 8595537 + + Rueyres-les-Prés, école + + + EFA + 131983:0:A + + 23008054:13 + + + Rueyres-les-Prés, école + + + 6.91927 + 46.85719 + + + + + ch:1:sloid:95537:0:15644 + + Rueyres-les-Prés, école + + + EFA + 131983:0:A + + 8595537 + 23008054:13 + + + Rueyres-les-Prés, école + + + 6.91927 + 46.85719 + + + + + 8570410 + + Rueyres-les-Prés, village + + + EFA + 113796:0:10000 + + 23008054:13 + + + Rueyres-les-Prés, village + + + 6.91613 + 46.86097 + + + + + ch:1:sloid:70410:0:17795 + + Rueyres-les-Prés, village + + + EFA + 113796:0:10000 + + 8570410 + 23008054:13 + + + Rueyres-les-Prés, village + + + 6.91613 + 46.86097 + + + + + 8577639 + + Rueyres-les-Prés, bif. + + + EFA + 120006:0:10001 + + 23023817:2 + + + Rueyres-les-Prés, bif. + + + 6.91303 + 46.86583 + + + + + ch:1:sloid:77639:0:15641 + + Rueyres-les-Prés, bif. + + + EFA + 120006:0:10001 + + 8577639 + 23023817:2 + + + Rueyres-les-Prés, bif. + + + 6.91303 + 46.86583 + + + + + 23023817:2 + + Grandcour + + + + Grandcour + + + 6.91303 + 46.86583 + + + + + 8504986 + + Grandcour, poste + + + EFA + 109727:0:10001 + + 23023817:2 + + + Grandcour, poste + + + 6.92873 + 46.87189 + + + + + ch:1:sloid:4986:0:589868 + + Grandcour, poste + + + EFA + 109727:0:10001 + + 8504986 + 23023817:2 + + + Grandcour, poste + + + 6.92873 + 46.87189 + + + + + 8557020 + + Grandcour, rte de Chevroux + + + EFA + 113334:0:10001 + + 23023817:2 + + + Grandcour, rte de Chevroux + + + 6.92628 + 46.87552 + + + + + ch:1:sloid:57020:0:432306 + + Grandcour, rte de Chevroux + + + EFA + 113334:0:10001 + + 8557020 + 23023817:2 + + + Grandcour, rte de Chevroux + + + 6.92628 + 46.87552 + + + + + 8583485 + + Chevroux, La Motte + + + EFA + 124319:0:10000 + + 23023813:1 + + + Chevroux, La Motte + + + 6.90981 + 46.88831 + + + + + ch:1:sloid:83485:0:531304 + + Chevroux, La Motte + + + EFA + 124319:0:10000 + + 8583485 + 23023813:1 + + + Chevroux, La Motte + + + 6.90981 + 46.88831 + + + + + 23023813:1 + + Chevroux (CH) + + + + Chevroux (CH) + + + 6.90981 + 46.88831 + + + + + 8570416 + + Chevroux, port + + + EFA + 113800:0:10000 + + 23023813:1 + + + Chevroux, port + + + 6.90362 + 46.89103 + + + + + ch:1:sloid:70416:0:414704 + + Chevroux, port + + + EFA + 113800:0:10000 + + 8570416 + 23023813:1 + + + Chevroux, port + + + 6.90362 + 46.89103 + + + + + 8583724 + + Grandcour, rte d'Estavayer + + + EFA + 124530:0:10001 + + 23023817:2 + + + Grandcour, rte d'Estavayer + + + 6.92486 + 46.87014 + + + + + ch:1:sloid:83724:0:897647 + + Grandcour, rte d'Estavayer + + + EFA + 124530:0:10001 + + 8583724 + 23023817:2 + + + Grandcour, rte d'Estavayer + + + 6.92486 + 46.87014 + + + + + 8570415 + + Chevroux, village + + + EFA + 113799:0:10000 + + 23023813:1 + + + Chevroux, village + + + 6.90583 + 46.88817 + + + + + ch:1:sloid:70415:0:870131 + + Chevroux, village + + + EFA + 113799:0:10000 + + 8570415 + 23023813:1 + + + Chevroux, village + + + 6.90583 + 46.88817 + + + + + ch:1:sloid:83485:0:108292 + + Chevroux, La Motte + + + EFA + 124319:0:10001 + + 8583485 + 23023813:1 + + + Chevroux, La Motte + + + 6.91047 + 46.88793 + + + + + ch:1:sloid:57020:0:187425 + + Grandcour, rte de Chevroux + + + EFA + 113334:0:10000 + + 8557020 + 23023817:2 + + + Grandcour, rte de Chevroux + + + 6.9262 + 46.87547 + + + + + ch:1:sloid:4986:0:286437 + + Grandcour, poste + + + EFA + 109727:0:10000 + + 8504986 + 23023817:2 + + + Grandcour, poste + + + 6.92871 + 46.87189 + + + + + ch:1:sloid:77639:0:15640 + + Rueyres-les-Prés, bif. + + + EFA + 120006:0:10000 + + 8577639 + 23023817:2 + + + Rueyres-les-Prés, bif. + + + 6.91301 + 46.86578 + + + + + 8570410 + + Rueyres-les-Prés, village + + + EFA + 113796 + + 8570410 + 23008054:13 + + + Rueyres-les-Prés, village + + + 6.91617 + 46.86104 + + + + + ch:1:sloid:83428:0:450358 + + Payerne, aérodrome + + + EFA + 124272:0:10000 + + 8583428 + 23008054:13 + + + Payerne, aérodrome + + + 6.92039 + 46.85035 + + + + + ch:1:sloid:83724:0:52637 + + Grandcour, rte d'Estavayer + + + EFA + 124530:0:10000 + + 8583724 + 23023817:2 + + + Grandcour, rte d'Estavayer + + + 6.92501 + 46.87028 + + + + + + 2025-06-02T06:44:00Z + ski-ddip-out-sx_prod + ch:1:sstid:100602:prod:683d48652ab79c0ec72e6898-0 + 3 + + directReport + + + 2025-06-02T06:44:00Z + 2025-06-02T10:44:00Z + + unknown + 3 + line + + + + line + + + + + 2025-06-02T06:44:00Z + vehicleJourney + + + Bus services of line 560 are running at irregular intervals. + + + This is due to an accident. + + + Expect delays. + + + Please consult online timetable before each trip. + + + The duration of the restriction is not known. + + + https://www.PostAuto.ch + Information from <a href="https://www.PostBus.ch">PostBus.ch</a>. + + + + + + + + 2025-06-02T06:33:00Z + ski-ddip-out-sx_prod + ch:1:sstid:100602:prod:683d45a32ab79c0ec72e688d-0 + 6 + + directReport + + + 2025-06-02T06:28:00Z + 2025-06-02T22:00:00Z + + unknown + 3 + stopPoint + + + + stopPoint + + + + + 2025-06-02T06:33:00Z + stopPoint + + + The Grandcour, rte d'Estavayer, Rueyres-les-Prés, bif. and Rueyres-les-Prés, village stops are closed. + + + This is due to an accident. + + + Please consult online timetable before each trip. + + + The restriction lasts until approx. 23:59. + + + The online timetable has been changed. + + + https://www.PostAuto.ch + Information from <a href="https://www.PostBus.ch">PostBus.ch</a>. + + + + + + + + + + 00000000-0000-0000-0000-000000000000 + + + + ch:1:sloid:4780:0:421229 + + Payerne, gare + + + 2025-06-02T10:03:00Z + 2025-06-02T10:03:00Z + + 1 + + + + + ch:1:sloid:83428:0:405616 + + Payerne, aérodrome + + + 2025-06-02T10:11:00Z + 2025-06-02T10:11:00Z + + + 2025-06-02T10:11:00Z + 2025-06-02T10:11:00Z + + 2 + + + + + ch:1:sloid:95537:0:15644 + + Rueyres-les-Prés, école + + + A + + + 2025-06-02T10:12:00Z + 2025-06-02T10:12:00Z + + + 2025-06-02T10:12:00Z + 2025-06-02T10:12:00Z + + 3 + + + + + ch:1:sloid:70410:0:17795 + + Rueyres-les-Prés, village + + + 2025-06-02T10:13:00Z + 2025-06-02T10:13:00Z + + + 2025-06-02T10:13:00Z + 2025-06-02T10:13:00Z + + 4 + + + + + ch:1:sloid:77639:0:15641 + + Rueyres-les-Prés, bif. + + + 2025-06-02T10:14:00Z + 2025-06-02T10:14:00Z + + + 2025-06-02T10:14:00Z + 2025-06-02T10:14:00Z + + 5 + + + + + ch:1:sloid:83724:0:897647 + + Grandcour, rte d'Estavayer + + + 2025-06-02T10:16:00Z + 2025-06-02T10:16:00Z + + 6 + + + + + ch:1:sloid:4986:0:589868 + + Grandcour, poste + + + 2025-06-02T10:18:00Z + 2025-06-02T10:18:00Z + + + 2025-06-02T10:18:00Z + 2025-06-02T10:18:00Z + + 7 + + + + + ch:1:sloid:57020:0:432306 + + Grandcour, rte de Chevroux + + + 2025-06-02T10:19:00Z + 2025-06-02T10:19:00Z + + + 2025-06-02T10:19:00Z + 2025-06-02T10:19:00Z + + 8 + + + + + ch:1:sloid:83485:0:531304 + + Chevroux, La Motte + + + 2025-06-02T10:21:00Z + 2025-06-02T10:21:00Z + + + 2025-06-02T10:21:00Z + 2025-06-02T10:21:00Z + + 9 + + + + + ch:1:sloid:70416:0:414704 + + Chevroux, port + + + 2025-06-02T10:24:00Z + 2025-06-02T10:24:00Z + + + + + 2025-06-02 + ojp:96231:_x0020_:H:j25:8 + Bus + ojp:96231:_x0020_ + H + + bus + localBus + + Bus + + + B + + + + + Bus + + + B + + 29 + + + 560 + + 56015 + + + Low-floor access + + A__NF + + ch:1:sloid:4780:0:421229 + + Payerne, gare + + 801 + ch:1:sloid:70416:0:414704 + + Chevroux + + + + ski-ddip-out-sx_prod + ch:1:sstid:100602:prod:683d48652ab79c0ec72e6898-0 + + + + + 2025-05-14 + 2025-12-12 + 011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111000111100111110011111001111100111110011111001111100111100011111001011100111110011 + + + + + 00000000-0000-0000-0000-000000000000 + + + + ch:1:sloid:70416:0:414704 + + Chevroux, port + + + 2025-06-02T10:28:00Z + + 1 + + + + + ch:1:sloid:70415:0:870131 + + Chevroux, village + + + 2025-06-02T10:29:00Z + + + 2025-06-02T10:29:00Z + + 2 + + + + + ch:1:sloid:83485:0:108292 + + Chevroux, La Motte + + + 2025-06-02T10:30:00Z + + + 2025-06-02T10:30:00Z + + 3 + + + + + ch:1:sloid:57020:0:187425 + + Grandcour, rte de Chevroux + + + 2025-06-02T10:32:00Z + + + 2025-06-02T10:32:00Z + + 4 + + + + + ch:1:sloid:4986:0:286437 + + Grandcour, poste + + + 2025-06-02T10:37:00Z + + + 2025-06-02T10:37:00Z + + 5 + + + + + ch:1:sloid:83724:0:52637 + + Grandcour, rte d'Estavayer + + + 2025-06-02T10:38:00Z + + 6 + + + + + ch:1:sloid:77639:0:15640 + + Rueyres-les-Prés, bif. + + + 2025-06-02T10:39:00Z + + + 2025-06-02T10:39:00Z + + 7 + + + + + 8570410 + + Rueyres-les-Prés, village + + + 2025-06-02T10:40:00Z + + + 2025-06-02T10:40:00Z + + 8 + + + + + ch:1:sloid:95537:0:15644 + + Rueyres-les-Prés, école + + + A + + + 2025-06-02T10:41:00Z + + + 2025-06-02T10:41:00Z + + 9 + + + + + ch:1:sloid:83428:0:450358 + + Payerne, aérodrome + + + 2025-06-02T10:42:00Z + + + 2025-06-02T10:42:00Z + + 10 + + + + + ch:1:sloid:4780:0:421229 + + Payerne, gare + + + 2025-06-02T10:55:00Z + + + + + 2025-06-02 + ojp:96231:_x0020_:R:j25:32 + Bus + ojp:96231:_x0020_ + R + + bus + localBus + + Bus + + + B + + + + + Bus + + + B + + 29 + + + 560 + + 56022 + + + Low-floor access + + A__NF + + ch:1:sloid:70416:0:414704 + + Chevroux, port + + 801 + ch:1:sloid:4780:0:421229 + + Payerne gare + + + + ski-ddip-out-sx_prod + ch:1:sstid:100602:prod:683d48652ab79c0ec72e6898-0 + + + ski-ddip-out-sx_prod + ch:1:sstid:100602:prod:683d45a32ab79c0ec72e688d-0 + + + + + 2025-05-14 + 2025-12-12 + 011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111000111100111110011111001111100111110011111001111100111100011111001011100111110011 + + + + + 00000000-0000-0000-0000-000000000000 + + + + ch:1:sloid:4780:0:421229 + + Payerne, gare + + + 2025-06-02T10:33:00Z + + 1 + + + + + ch:1:sloid:83428:0:405616 + + Payerne, aérodrome + + + 2025-06-02T10:41:00Z + + + 2025-06-02T10:41:00Z + + 2 + + + + + ch:1:sloid:95537:0:15644 + + Rueyres-les-Prés, école + + + A + + + 2025-06-02T10:42:00Z + + + 2025-06-02T10:42:00Z + + 3 + + + + + ch:1:sloid:70410:0:17795 + + Rueyres-les-Prés, village + + + 2025-06-02T10:43:00Z + + + 2025-06-02T10:43:00Z + + 4 + + + + + ch:1:sloid:77639:0:15641 + + Rueyres-les-Prés, bif. + + + 2025-06-02T10:44:00Z + + + 2025-06-02T10:44:00Z + + 5 + + + + + ch:1:sloid:83724:0:897647 + + Grandcour, rte d'Estavayer + + + 2025-06-02T10:46:00Z + + 6 + + + + + ch:1:sloid:4986:0:589868 + + Grandcour, poste + + + 2025-06-02T10:48:00Z + + + 2025-06-02T10:48:00Z + + 7 + + + + + ch:1:sloid:57020:0:432306 + + Grandcour, rte de Chevroux + + + 2025-06-02T10:49:00Z + + + 2025-06-02T10:49:00Z + + 8 + + + + + ch:1:sloid:83485:0:531304 + + Chevroux, La Motte + + + 2025-06-02T10:51:00Z + + + 2025-06-02T10:51:00Z + + 9 + + + + + ch:1:sloid:70416:0:414704 + + Chevroux, port + + + 2025-06-02T10:54:00Z + + + + + 2025-06-02 + ojp:96231:_x0020_:H:j25:10 + Bus + ojp:96231:_x0020_ + H + + bus + localBus + + Bus + + + B + + + + + Bus + + + B + + 29 + + + 560 + + 56019 + + + Low-floor access + + A__NF + + ch:1:sloid:4780:0:421229 + + Payerne, gare + + 801 + ch:1:sloid:70416:0:414704 + + Chevroux + + + + ski-ddip-out-sx_prod + ch:1:sstid:100602:prod:683d45a32ab79c0ec72e688d-0 + + + + + 2025-05-14 + 2025-12-12 + 011111001111100111110011111001111100111110011111000000000000000011111001111100111100011111001111100111110011111001111100000000000000000000000000000000000000000000000000011111001111100111100011111000011100111110011 + + + + + 00000000-0000-0000-0000-000000000000 + + + + ch:1:sloid:70416:0:414704 + + Chevroux, port + + + 2025-06-02T10:58:00Z + + 1 + + + + + ch:1:sloid:70415:0:870131 + + Chevroux, village + + + 2025-06-02T10:59:00Z + + + 2025-06-02T10:59:00Z + + 2 + + + + + ch:1:sloid:83485:0:108292 + + Chevroux, La Motte + + + 2025-06-02T11:00:00Z + + + 2025-06-02T11:00:00Z + + 3 + + + + + ch:1:sloid:57020:0:187425 + + Grandcour, rte de Chevroux + + + 2025-06-02T11:02:00Z + + + 2025-06-02T11:02:00Z + + 4 + + + + + ch:1:sloid:4986:0:286437 + + Grandcour, poste + + + 2025-06-02T11:07:00Z + + + 2025-06-02T11:07:00Z + + 5 + + + + + ch:1:sloid:83724:0:52637 + + Grandcour, rte d'Estavayer + + + 2025-06-02T11:08:00Z + + 6 + + + + + ch:1:sloid:77639:0:15640 + + Rueyres-les-Prés, bif. + + + 2025-06-02T11:09:00Z + + + 2025-06-02T11:09:00Z + + 7 + + + + + 8570410 + + Rueyres-les-Prés, village + + + 2025-06-02T11:10:00Z + + + 2025-06-02T11:10:00Z + + 8 + + + + + ch:1:sloid:95537:0:15644 + + Rueyres-les-Prés, école + + + A + + + 2025-06-02T11:11:00Z + + + 2025-06-02T11:11:00Z + + 9 + + + + + ch:1:sloid:83428:0:450358 + + Payerne, aérodrome + + + 2025-06-02T11:12:00Z + + + 2025-06-02T11:12:00Z + + 10 + + + + + ch:1:sloid:4780:0:421229 + + Payerne, gare + + + 2025-06-02T11:25:00Z + + + + + 2025-06-02 + ojp:96231:_x0020_:R:j25:33 + Bus + ojp:96231:_x0020_ + R + + bus + localBus + + Bus + + + B + + + + + Bus + + + B + + 29 + + + 560 + + 56024 + + + Low-floor access + + A__NF + + ch:1:sloid:70416:0:414704 + + Chevroux, port + + 801 + ch:1:sloid:4780:0:421229 + + Payerne gare + + + + ski-ddip-out-sx_prod + ch:1:sstid:100602:prod:683d45a32ab79c0ec72e688d-0 + + + + + 2025-05-14 + 2025-12-12 + 011111001111100111110011111001111100111110011111000000000000000011111001111100111100011111001111100111110011111001111100000000000000000000000000000000000000000000000000011111001111100111100011111000011100111110011 + + + + + 00000000-0000-0000-0000-000000000000 + + + + ch:1:sloid:4780:0:421229 + + Payerne, gare + + + 2025-06-02T12:03:00Z + + 1 + + + + + ch:1:sloid:83428:0:405616 + + Payerne, aérodrome + + + 2025-06-02T12:11:00Z + + + 2025-06-02T12:11:00Z + + 2 + + + + + ch:1:sloid:95537:0:15644 + + Rueyres-les-Prés, école + + + A + + + 2025-06-02T12:12:00Z + + + 2025-06-02T12:12:00Z + + 3 + + + + + ch:1:sloid:70410:0:17795 + + Rueyres-les-Prés, village + + + 2025-06-02T12:13:00Z + + + 2025-06-02T12:13:00Z + + 4 + + + + + ch:1:sloid:77639:0:15641 + + Rueyres-les-Prés, bif. + + + 2025-06-02T12:14:00Z + + + 2025-06-02T12:14:00Z + + 5 + + + + + ch:1:sloid:83724:0:897647 + + Grandcour, rte d'Estavayer + + + 2025-06-02T12:16:00Z + + 6 + + + + + ch:1:sloid:4986:0:589868 + + Grandcour, poste + + + 2025-06-02T12:18:00Z + + + 2025-06-02T12:18:00Z + + 7 + + + + + ch:1:sloid:57020:0:432306 + + Grandcour, rte de Chevroux + + + 2025-06-02T12:19:00Z + + + 2025-06-02T12:19:00Z + + 8 + + + + + ch:1:sloid:83485:0:531304 + + Chevroux, La Motte + + + 2025-06-02T12:21:00Z + + + 2025-06-02T12:21:00Z + + 9 + + + + + ch:1:sloid:70416:0:414704 + + Chevroux, port + + + 2025-06-02T12:24:00Z + + + + + 2025-06-02 + ojp:96231:_x0020_:H:j25:11 + Bus + ojp:96231:_x0020_ + H + + bus + localBus + + Bus + + + B + + + + + Bus + + + B + + 29 + + + 560 + + 56021 + + + Low-floor access + + A__NF + + ch:1:sloid:4780:0:421229 + + Payerne, gare + + 801 + ch:1:sloid:70416:0:414704 + + Chevroux + + + + ski-ddip-out-sx_prod + ch:1:sstid:100602:prod:683d45a32ab79c0ec72e688d-0 + + + + + 2025-05-14 + 2025-12-12 + 011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111000111100111110011111001111100111110011111001111100111100011111001011100111110011 + + + + + 00000000-0000-0000-0000-000000000000 + + + + ch:1:sloid:70416:0:414704 + + Chevroux, port + + + 2025-06-02T12:28:00Z + + 1 + + + + + ch:1:sloid:70415:0:870131 + + Chevroux, village + + + 2025-06-02T12:29:00Z + + + 2025-06-02T12:29:00Z + + 2 + + + + + ch:1:sloid:83485:0:108292 + + Chevroux, La Motte + + + 2025-06-02T12:30:00Z + + + 2025-06-02T12:30:00Z + + 3 + + + + + ch:1:sloid:57020:0:187425 + + Grandcour, rte de Chevroux + + + 2025-06-02T12:32:00Z + + + 2025-06-02T12:32:00Z + + 4 + + + + + ch:1:sloid:4986:0:286437 + + Grandcour, poste + + + 2025-06-02T12:37:00Z + + + 2025-06-02T12:37:00Z + + 5 + + + + + ch:1:sloid:83724:0:52637 + + Grandcour, rte d'Estavayer + + + 2025-06-02T12:38:00Z + + 6 + + + + + ch:1:sloid:77639:0:15640 + + Rueyres-les-Prés, bif. + + + 2025-06-02T12:39:00Z + + + 2025-06-02T12:39:00Z + + 7 + + + + + 8570410 + + Rueyres-les-Prés, village + + + 2025-06-02T12:40:00Z + + + 2025-06-02T12:40:00Z + + 8 + + + + + ch:1:sloid:95537:0:15644 + + Rueyres-les-Prés, école + + + A + + + 2025-06-02T12:41:00Z + + + 2025-06-02T12:41:00Z + + 9 + + + + + ch:1:sloid:83428:0:450358 + + Payerne, aérodrome + + + 2025-06-02T12:42:00Z + + + 2025-06-02T12:42:00Z + + 10 + + + + + ch:1:sloid:4780:0:421229 + + Payerne, gare + + + 2025-06-02T12:55:00Z + + + + + 2025-06-02 + ojp:96231:_x0020_:R:j25:35 + Bus + ojp:96231:_x0020_ + R + + bus + localBus + + Bus + + + B + + + + + Bus + + + B + + 29 + + + 560 + + 56028 + + + Low-floor access + + A__NF + + ch:1:sloid:70416:0:414704 + + Chevroux, port + + 801 + ch:1:sloid:4780:0:421229 + + Payerne gare + + + + ski-ddip-out-sx_prod + ch:1:sstid:100602:prod:683d45a32ab79c0ec72e688d-0 + + + + + 2025-05-14 + 2025-12-12 + 011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111000111100111110011111001111100111110011111001111100111100011111001011100111110011 + + + + + 00000000-0000-0000-0000-000000000000 + + + + ch:1:sloid:4780:0:421229 + + Payerne, gare + + + 2025-06-02T13:33:00Z + + 1 + + + + + ch:1:sloid:83428:0:405616 + + Payerne, aérodrome + + + 2025-06-02T13:41:00Z + + + 2025-06-02T13:41:00Z + + 2 + + + + + ch:1:sloid:95537:0:15644 + + Rueyres-les-Prés, école + + + A + + + 2025-06-02T13:42:00Z + + + 2025-06-02T13:42:00Z + + 3 + + + + + ch:1:sloid:70410:0:17795 + + Rueyres-les-Prés, village + + + 2025-06-02T13:43:00Z + + + 2025-06-02T13:43:00Z + + 4 + + + + + ch:1:sloid:77639:0:15641 + + Rueyres-les-Prés, bif. + + + 2025-06-02T13:44:00Z + + + 2025-06-02T13:44:00Z + + 5 + + + + + ch:1:sloid:83724:0:897647 + + Grandcour, rte d'Estavayer + + + 2025-06-02T13:46:00Z + + 6 + + + + + ch:1:sloid:4986:0:589868 + + Grandcour, poste + + + 2025-06-02T13:48:00Z + + + 2025-06-02T13:48:00Z + + 7 + + + + + ch:1:sloid:57020:0:432306 + + Grandcour, rte de Chevroux + + + 2025-06-02T13:49:00Z + + + 2025-06-02T13:49:00Z + + 8 + + + + + ch:1:sloid:83485:0:531304 + + Chevroux, La Motte + + + 2025-06-02T13:51:00Z + + + 2025-06-02T13:51:00Z + + 9 + + + + + ch:1:sloid:70416:0:414704 + + Chevroux, port + + + 2025-06-02T13:54:00Z + + + + + 2025-06-02 + ojp:96231:_x0020_:H:j25:13 + Bus + ojp:96231:_x0020_ + H + + bus + localBus + + Bus + + + B + + + + + Bus + + + B + + 29 + + + 560 + + 56025 + + + Low-floor access + + A__NF + + ch:1:sloid:4780:0:421229 + + Payerne, gare + + 801 + ch:1:sloid:70416:0:414704 + + Chevroux + + + + ski-ddip-out-sx_prod + ch:1:sstid:100602:prod:683d45a32ab79c0ec72e688d-0 + + + + + 2025-05-14 + 2025-12-12 + 011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111000111100111110011111001111100111110011111001111100111100011111001011100111110011 + + + + + 00000000-0000-0000-0000-000000000000 + + + + ch:1:sloid:70416:0:414704 + + Chevroux, port + + + 2025-06-02T13:58:00Z + + 1 + + + + + ch:1:sloid:70415:0:870131 + + Chevroux, village + + + 2025-06-02T13:59:00Z + + + 2025-06-02T13:59:00Z + + 2 + + + + + ch:1:sloid:83485:0:108292 + + Chevroux, La Motte + + + 2025-06-02T14:00:00Z + + + 2025-06-02T14:00:00Z + + 3 + + + + + ch:1:sloid:57020:0:187425 + + Grandcour, rte de Chevroux + + + 2025-06-02T14:02:00Z + + + 2025-06-02T14:02:00Z + + 4 + + + + + ch:1:sloid:4986:0:286437 + + Grandcour, poste + + + 2025-06-02T14:07:00Z + + + 2025-06-02T14:07:00Z + + 5 + + + + + ch:1:sloid:83724:0:52637 + + Grandcour, rte d'Estavayer + + + 2025-06-02T14:08:00Z + + 6 + + + + + ch:1:sloid:77639:0:15640 + + Rueyres-les-Prés, bif. + + + 2025-06-02T14:09:00Z + + + 2025-06-02T14:09:00Z + + 7 + + + + + 8570410 + + Rueyres-les-Prés, village + + + 2025-06-02T14:10:00Z + + + 2025-06-02T14:10:00Z + + 8 + + + + + ch:1:sloid:95537:0:15644 + + Rueyres-les-Prés, école + + + A + + + 2025-06-02T14:11:00Z + + + 2025-06-02T14:11:00Z + + 9 + + + + + ch:1:sloid:83428:0:450358 + + Payerne, aérodrome + + + 2025-06-02T14:12:00Z + + + 2025-06-02T14:12:00Z + + 10 + + + + + ch:1:sloid:4780:0:421229 + + Payerne, gare + + + 2025-06-02T14:25:00Z + + + + + 2025-06-02 + ojp:96231:_x0020_:R:j25:37 + Bus + ojp:96231:_x0020_ + R + + bus + localBus + + Bus + + + B + + + + + Bus + + + B + + 29 + + + 560 + + 56032 + + + Low-floor access + + A__NF + + ch:1:sloid:70416:0:414704 + + Chevroux, port + + 801 + ch:1:sloid:4780:0:421229 + + Payerne gare + + + + ski-ddip-out-sx_prod + ch:1:sstid:100602:prod:683d45a32ab79c0ec72e688d-0 + + + + + 2025-05-14 + 2025-12-12 + 011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111000111100111110011111001111100111110011111001111100111100011111001011100111110011 + + + + + 00000000-0000-0000-0000-000000000000 + + + + ch:1:sloid:4780:0:421229 + + Payerne, gare + + + 2025-06-02T14:33:00Z + + 1 + + + + + ch:1:sloid:83428:0:405616 + + Payerne, aérodrome + + + 2025-06-02T14:41:00Z + + + 2025-06-02T14:41:00Z + + 2 + + + + + ch:1:sloid:95537:0:15644 + + Rueyres-les-Prés, école + + + A + + + 2025-06-02T14:42:00Z + + + 2025-06-02T14:42:00Z + + 3 + + + + + ch:1:sloid:70410:0:17795 + + Rueyres-les-Prés, village + + + 2025-06-02T14:43:00Z + + + 2025-06-02T14:43:00Z + + 4 + + + + + ch:1:sloid:77639:0:15641 + + Rueyres-les-Prés, bif. + + + 2025-06-02T14:44:00Z + + + 2025-06-02T14:44:00Z + + 5 + + + + + ch:1:sloid:83724:0:897647 + + Grandcour, rte d'Estavayer + + + 2025-06-02T14:46:00Z + + 6 + + + + + ch:1:sloid:4986:0:589868 + + Grandcour, poste + + + 2025-06-02T14:48:00Z + + + 2025-06-02T14:48:00Z + + 7 + + + + + ch:1:sloid:57020:0:432306 + + Grandcour, rte de Chevroux + + + 2025-06-02T14:49:00Z + + + 2025-06-02T14:49:00Z + + 8 + + + + + ch:1:sloid:83485:0:531304 + + Chevroux, La Motte + + + 2025-06-02T14:51:00Z + + + 2025-06-02T14:51:00Z + + 9 + + + + + ch:1:sloid:70416:0:414704 + + Chevroux, port + + + 2025-06-02T14:54:00Z + + + + + 2025-06-02 + ojp:96231:_x0020_:H:j25:15 + Bus + ojp:96231:_x0020_ + H + + bus + localBus + + Bus + + + B + + + + + Bus + + + B + + 29 + + + 560 + + 56029 + + + Low-floor access + + A__NF + + ch:1:sloid:4780:0:421229 + + Payerne, gare + + 801 + ch:1:sloid:70416:0:414704 + + Chevroux + + + + ski-ddip-out-sx_prod + ch:1:sstid:100602:prod:683d45a32ab79c0ec72e688d-0 + + + + + 2025-05-14 + 2025-12-12 + 011111001111100111110011111001111100111110011111000000000000000011111001111100111100011111001111100111110011111001111100000000000000000000000000000000000000000000000000011111001111100111100011111000011100111110011 + + + + + 00000000-0000-0000-0000-000000000000 + + + + ch:1:sloid:70416:0:414704 + + Chevroux, port + + + 2025-06-02T14:58:00Z + + 1 + + + + + ch:1:sloid:70415:0:870131 + + Chevroux, village + + + 2025-06-02T14:59:00Z + + + 2025-06-02T14:59:00Z + + 2 + + + + + ch:1:sloid:83485:0:108292 + + Chevroux, La Motte + + + 2025-06-02T15:00:00Z + + + 2025-06-02T15:00:00Z + + 3 + + + + + ch:1:sloid:57020:0:187425 + + Grandcour, rte de Chevroux + + + 2025-06-02T15:02:00Z + + + 2025-06-02T15:02:00Z + + 4 + + + + + ch:1:sloid:4986:0:286437 + + Grandcour, poste + + + 2025-06-02T15:07:00Z + + + 2025-06-02T15:07:00Z + + 5 + + + + + ch:1:sloid:83724:0:52637 + + Grandcour, rte d'Estavayer + + + 2025-06-02T15:08:00Z + + 6 + + + + + ch:1:sloid:77639:0:15640 + + Rueyres-les-Prés, bif. + + + 2025-06-02T15:09:00Z + + + 2025-06-02T15:09:00Z + + 7 + + + + + 8570410 + + Rueyres-les-Prés, village + + + 2025-06-02T15:10:00Z + + + 2025-06-02T15:10:00Z + + 8 + + + + + ch:1:sloid:95537:0:15644 + + Rueyres-les-Prés, école + + + A + + + 2025-06-02T15:11:00Z + + + 2025-06-02T15:11:00Z + + 9 + + + + + ch:1:sloid:83428:0:450358 + + Payerne, aérodrome + + + 2025-06-02T15:12:00Z + + + 2025-06-02T15:12:00Z + + 10 + + + + + ch:1:sloid:4780:0:421229 + + Payerne, gare + + + 2025-06-02T15:25:00Z + + + + + 2025-06-02 + ojp:96231:_x0020_:R:j25:38 + Bus + ojp:96231:_x0020_ + R + + bus + localBus + + Bus + + + B + + + + + Bus + + + B + + 29 + + + 560 + + 56034 + + + Low-floor access + + A__NF + + ch:1:sloid:70416:0:414704 + + Chevroux, port + + 801 + ch:1:sloid:4780:0:421229 + + Payerne gare + + + + ski-ddip-out-sx_prod + ch:1:sstid:100602:prod:683d45a32ab79c0ec72e688d-0 + + + + + 2025-05-14 + 2025-12-12 + 011111001111100111110011111001111100111110011111000000000000000011111001111100111100011111001111100111110011111001111100000000000000000000000000000000000000000000000000011111001111100111100011111000011100111110011 + + + + + + + diff --git a/tests/ojp-fixtures/tr-response-situations.xml b/tests/ojp-fixtures/tr-response-situations.xml new file mode 100644 index 00000000..eead60b6 --- /dev/null +++ b/tests/ojp-fixtures/tr-response-situations.xml @@ -0,0 +1,5754 @@ + + + + 2025-05-29T15:58:49.6971099+02:00 + MENTZ + + 2025-05-29T15:58:49.6971108+02:00 + 2f4b14aa-d3b9-4e99-945d-2590a751a510 + en + 598 + + + + + 8504577 + + Murten/Morat (Schiff/bateau) + + + EFA + 109398 + + 23008275:5 + + + Murten/Morat (Schiff/bateau) + + + 7.11664 + 46.93064 + + + + + 8504577 + + Murten/Morat (Schiff/bateau) + + + EFA + 109398 + + 8504577 + 23008275:5 + + + Murten/Morat (Schiff/bateau) + + + 7.11664 + 46.93064 + + + + + 23008275:5 + + Murten + + + + Murten/Morat (Schiff/bateau) + + + 7.11664 + 46.93064 + + + + + 8504574 + + Môtier (Vully) + + + EFA + 109396 + + 23008284:8 + + + Môtier (Vully) + + + 7.08406 + 46.94685 + + + + + 8504574 + + Môtier (Vully) + + + EFA + 109396 + + 8504574 + 23008284:8 + + + Môtier (Vully) + + + 7.08406 + 46.94685 + + + + + 23008284:8 + + Môtier (Vully) + + + + Môtier (Vully) + + + 7.08406 + 46.94685 + + + + + 8504573 + + Praz + + + EFA + 109395 + + 23008284:11 + + + Praz + + + 7.09727 + 46.95166 + + + + + 8504573 + + Praz + + + EFA + 109395 + + 8504573 + 23008284:11 + + + Praz + + + 7.09727 + 46.95166 + + + + + 23008284:11 + + Praz (Vully) + + + + Praz + + + 7.09727 + 46.95166 + + + + + 8504572 + + Sugiez (bateau) + + + EFA + 109394 + + 23008284:12 + + + Sugiez (bateau) + + + 7.11415 + 46.96415 + + + + + 8504572 + + Sugiez (bateau) + + + EFA + 109394 + + 8504572 + 23008284:12 + + + Sugiez (bateau) + + + 7.11415 + 46.96415 + + + + + 23008284:12 + + Sugiez + + + + Sugiez (bateau) + + + 7.11415 + 46.96415 + + + + + 8504499 + + Trois-Lacs (camping) + + + EFA + 109336 + + 23008284:12 + + + Trois-Lacs (camping) + + + 7.09321 + 46.97568 + + + + + 8504499 + + Trois-Lacs (camping) + + + EFA + 109336 + + 8504499 + 23008284:12 + + + Trois-Lacs (camping) + + + 7.09321 + 46.97568 + + + + + 8504571 + + La Sauge (bateau) + + + EFA + 109393 + + 23023456:2 + + + La Sauge (bateau) + + + 7.05403 + 46.97575 + + + + + 8504571 + + La Sauge (bateau) + + + EFA + 109393 + + 8504571 + 23023456:2 + + + La Sauge (bateau) + + + 7.05403 + 46.97575 + + + + + 23023456:2 + + Cudrefin + + + + La Sauge (bateau) + + + 7.05403 + 46.97575 + + + + + 8504560 + + St-Blaise (bateau) + + + EFA + 109384 + + 23013459:1 + + + St-Blaise (bateau) + + + 6.98281 + 47.01013 + + + + + 8504560 + + St-Blaise (bateau) + + + EFA + 109384 + + 8504560 + 23013459:1 + + + St-Blaise (bateau) + + + 6.98281 + 47.01013 + + + + + 23013459:1 + + St-Blaise + + + + St-Blaise (bateau) + + + 6.98281 + 47.01013 + + + + + 8504808 + + Hauterive NE débarcadère + + + EFA + 109588 + + 23013454:1 + + + Hauterive NE débarcadère + + + 6.97037 + 47.00568 + + + + + 8504808 + + Hauterive NE débarcadère + + + EFA + 109588 + + 8504808 + 23013454:1 + + + Hauterive NE débarcadère + + + 6.97037 + 47.00568 + + + + + 23013454:1 + + Hauterive NE + + + + Hauterive NE débarcadère + + + 6.97037 + 47.00568 + + + + + 8504550 + + Neuchâtel (bateau) + + + EFA + 109374 + + 23013458:3 + + + Neuchâtel (bateau) + + + 6.93332 + 46.99096 + + + + + 8504550 + + Neuchâtel (bateau) + + + EFA + 109374 + + 8504550 + 23013458:3 + + + Neuchâtel (bateau) + + + 6.93332 + 46.99096 + + + + + 23013458:3 + + Neuchâtel + + + + Neuchâtel (bateau) + + + 6.93332 + 46.99096 + + + + + 8504128 + + Murten/Morat + + + EFA + 109041:0:4 + + 23008275:5 + + + Murten/Morat + + + 7.11512 + 46.92499 + + + + + ch:1:sloid:4128:3:4 + + Murten/Morat + + + EFA + 109041:0:4 + + 8504128 + 23008275:5 + + + Murten/Morat + + + 7.11512 + 46.92499 + + + + + 8504188 + + Sugiez + + + EFA + 109088:0:1 + + 23008284:12 + + + Sugiez + + + 7.11956 + 46.96418 + + + + + ch:1:sloid:4188:0:870696 + + Sugiez + + + EFA + 109088:0:1 + + 8504188 + 23008284:12 + + + Sugiez + + + 7.11956 + 46.96418 + + + + + 8504483 + + Ins + + + EFA + 109325:0:4 + + 23006496:2 + + + Ins + + + 7.09995 + 46.99952 + + + + + ch:1:sloid:4483::161772 + + Ins + + + EFA + 109325:0:4 + + 8504483 + 23006496:2 + + + Ins + + + 7.09995 + 46.99952 + + + + + 23006496:2 + + Ins + + + + Ins + + + 7.09995 + 46.99952 + + + + + 8504481 + + Marin-Epagnier + + + EFA + 109323:0:3 + + 23013461:22 + + + Marin-Epagnier + + + 7.01044 + 47.00929 + + + + + ch:1:sloid:4481:0:203140 + + Marin-Epagnier + + + EFA + 109323:0:3 + + 8504481 + 23013461:22 + + + Marin-Epagnier + + + 7.01044 + 47.00929 + + + + + 23013461:22 + + Marin-Epagnier + + + + Marin-Epagnier + + + 7.01044 + 47.00929 + + + + + 8504480 + + St-Blaise-Lac + + + EFA + 109322 + + 23013459:1 + + + St-Blaise-Lac + + + 6.98469 + 47.0121 + + + + + 8504480 + + St-Blaise-Lac + + + EFA + 109322 + + 8504480 + 23013459:1 + + + St-Blaise-Lac + + + 6.98469 + 47.0121 + + + + + 8504221 + + Neuchâtel + + + EFA + 109111:0:2 + + 23013458:3 + + + Neuchâtel + + + 6.9359 + 46.99692 + + + + + ch:1:sloid:4221:2:2 + + Neuchâtel + + + EFA + 109111:0:2 + + 8504221 + 23013458:3 + + + Neuchâtel + + + 6.9359 + 46.99692 + + + + + 8579625 + + Neuchâtel, gare nord + + + EFA + 121593:0:B + + 23013458:3 + + + Neuchâtel, gare nord + + + 6.93352 + 46.99651 + + + + + ch:1:sloid:79625::2 + + Neuchâtel, gare nord + + + EFA + 121593:0:B + + 8579625 + 23013458:3 + + + gare nord + + + 6.93352 + 46.99651 + + + + + 8593591 + + Neuchâtel, Rochettes + + + EFA + 130446 + + 23013458:3 + + + Neuchâtel, Rochettes + + + 6.93272 + 46.99466 + + + + + 8593591 + + Neuchâtel, Rochettes + + + EFA + 130446 + + 8593591 + 23013458:3 + + + Rochettes + + + 6.93272 + 46.99466 + + + + + 8579624 + + Neuchâtel, Terreaux Muséum + + + EFA + 121592 + + 23013458:3 + + + Neuchâtel, Terreaux Muséum + + + 6.93012 + 46.99277 + + + + + 8579624 + + Neuchâtel, Terreaux Muséum + + + EFA + 121592 + + 8579624 + 23013458:3 + + + Terreaux Muséum + + + 6.93012 + 46.99277 + + + + + 8579623 + + Neuchâtel, St-Honoré + + + EFA + 121591 + + 23013458:3 + + + Neuchâtel, St-Honoré + + + 6.93127 + 46.99086 + + + + + 8579623 + + Neuchâtel, St-Honoré + + + EFA + 121591 + + 8579623 + 23013458:3 + + + St-Honoré + + + 6.93127 + 46.99086 + + + + + 8504140 + + Muntelier-Löwenberg + + + EFA + 109053:0:1 + + 23008275:5 + + + Muntelier-Löwenberg + + + 7.13321 + 46.93804 + + + + + ch:1:sloid:4140:0:1 + + Muntelier-Löwenberg + + + EFA + 109053:0:1 + + 8504140 + 23008275:5 + + + Muntelier-Löwenberg + + + 7.13321 + 46.93804 + + + + + ch:1:sloid:4221:1:1 + + Neuchâtel + + + EFA + 109111:0:1 + + 8504221 + 23013458:3 + + + Neuchâtel + + + 6.93534 + 46.99665 + + + + + + 2025-04-01T14:50:00Z + ch:1:sboid:100025 + FAKE-ID + 158713 + + directReport + + + 2025-04-07T06:00:00Z + 2025-06-06T15:00:00Z + + unknown + 3 + stopPoint + + + + stopPoint + + + + + 2025-04-01T14:50:00Z + stopPoint + + + The Neuchâtel, St-Honoré stop is closed. + + + This is due to construction work. + + + The restriction lasts from 07.04.2025, 08:00 until 06.06.2025, 17:00. + + + https://www.transn.ch/ + transN + + + + + + + + 2025-04-01T14:50:00Z + ch:1:sboid:100025 + ems-12261 + 158713 + + directReport + + + 2025-04-07T06:00:00Z + 2025-06-06T15:00:00Z + + unknown + 3 + stopPoint + + + + stopPoint + + + + + 2025-04-01T14:50:00Z + stopPoint + + + The Neuchâtel, St-Honoré stop is closed. + + + This is due to construction work. + + + The restriction lasts from 07.04.2025, 08:00 until 06.06.2025, 17:00. + + + https://www.transn.ch/ + transN + + + + + + + + 2025-05-14T11:50:00Z + ch:1:sboid:100025 + ems-13031 + 1 + + directReport + + + 2025-05-19T05:30:00Z + 2025-06-06T15:00:00Z + + unknown + 3 + stopPoint + + + + stopPoint + + + + + 2025-05-14T11:50:00Z + stopPoint + + + The Neuchâtel, St-Honoré stop is closed. + + + This is due to construction work. + + + The restriction lasts from 19.05.2025, 07:30 until 06.06.2025, 17:00. + + + https://www.transn.ch/ + transN + + + + + + + + 2025-04-02T15:06:00Z + ch:1:sboid:100025 + ems-12273 + 4056323 + + directReport + + + 2025-04-07T06:00:00Z + 2025-06-06T15:00:00Z + + unknown + 3 + line + + + + line + + + + + 2025-04-02T15:06:00Z + vehicleJourney + + + The Neuchâtel, Ste-Hélène stop has been moved. + + + This is due to construction work. + + + Line 107 is affected. + + + Due to construction work, the stop Neuchatel , Ste-Hèléne towards Neuchâtel, Place Pury will be moved 170 metres after the usual stop , for more information you can visit our website WWW.transn.ch. + + + The restriction lasts until 06.06.2025, 17:00. + + + https://www.transn.ch/ + transN + + + + + + + + + + ID-E1C8245D-554F-4CC9-B784-74D2B9E35A06 + + ID-E1C8245D-554F-4CC9-B784-74D2B9E35A06 + PT1H55M + 2025-05-29T15:05:00Z + 2025-05-29T17:00:00Z + 0 + + 1 + PT1H55M + + + 8504577 + + Murten/Morat (Schiff/bateau) + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + 2025-05-29T15:05:00Z + + 1 + + + 8504574 + + Môtier (Vully) + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + 2025-05-29T15:22:00Z + + + 2025-05-29T15:22:00Z + + 2 + + + 8504573 + + Praz + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + 2025-05-29T15:28:00Z + + + 2025-05-29T15:28:00Z + + 3 + + + 8504572 + + Sugiez (bateau) + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + 2025-05-29T15:41:00Z + + + 2025-05-29T15:41:00Z + + 4 + + + 8504499 + + Trois-Lacs (camping) + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 2025-05-29T15:52:00Z + + + 2025-05-29T15:52:00Z + + 5 + + + 8504571 + + La Sauge (bateau) + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + 2025-05-29T16:09:00Z + + + 2025-05-29T16:09:00Z + + 6 + + + 8504560 + + St-Blaise (bateau) + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + 2025-05-29T16:37:00Z + + + 2025-05-29T16:37:00Z + + 7 + + + 8504808 + + Hauterive NE débarcadère + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + 2025-05-29T16:43:00Z + + + 2025-05-29T16:43:00Z + + 8 + + + 8504550 + + Neuchâtel (bateau) + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + 2025-05-29T17:00:00Z + + 9 + + + 2025-05-29 + ojp:94321:2:H:j25:2 + Boat + ojp:94321:2 + H + + water + + Ship + + + BAT + + + + + Ship + + + BAT + + 10 + + + 3212 + + 26 + + + BICYCLES: Limited number of places + + A__VB + + + + Bistro + + A__WS + + + + Low-floor access + + A__NF + + + n/a + + 189 + 8504550 + + Neuchâtel (bateau) + + + + + ch:1:sboid:100025 + ems-12261 + + + + + + + 8504577 + + Murten/Morat (Schiff/bateau) + + + + 8504550 + + Neuchâtel (bateau) + + + + PT1H55M + + + + + 0.1618 + + + + + + + + ID-4E3B92E2-B1AE-4253-A3AC-C1F6480EE75F + + ID-4E3B92E2-B1AE-4253-A3AC-C1F6480EE75F + PT47M30S + 2025-05-29T15:05:24Z + 2025-05-29T15:52:54Z + 1 + + 1 + PT13M + + walk + + 8504577 + + Murten/Morat (Schiff/bateau) + + + + 8504128 + + Murten/Morat + + + PT13M + + + + + + PT0S + 0 + + + unknown turn + + origin + + + + + pedestrian zone + PT2M49S + 193 + + + straight + + keep + + pedestrian zone + + + + + + shared-use path + PT1M28S + 68 + + + left + + turn + + shared-use path + + + + + + sidewalk + PT2M25S + 173 + + + right + + turn + + sidewalk + + + + + + service road + PT2S + 3 + + + left + + turn + + service road + + + + + + Ryf + PT3M4S + 173 + + + right + + turn + + Ryf + + + + + + shared-use path + PT12S + 14 + + + left + + turn + + shared-use path + + + + + + sidewalk + PT2M13S + 160 + + + half right + + turn + + sidewalk + + + + + + Hallwylstrasse + PT1M57S + 131 + + + left + + turn + + Hallwylstrasse + + + + + + Erlachstrasse + PT31S + 34 + + + right + + turn + + Erlachstrasse + + + + + + service road + PT3S + 3 + + + left + + turn + + service road + + + + + + sidewalk + PT16S + 18 + + + right + + turn + + sidewalk + + + + + + sidewalk + PT20S + 26 + + + left + + turn + + sidewalk + + + + + + shared-use path + PT7S + 8 + + + right + + turn + + shared-use path + + + + + + sidewalk + PT4S + 5 + + + right + + turn + + sidewalk + + + + + + shared-use path + PT1S + 1 + + + left + + turn + + shared-use path + + + + + + stairs + PT23S + 4 + + + straight + + continue + + stairs + + + + + + building way + PT1M18S + 87 + + + half right + + turn + + building way + + + + + + shared-use path + PT0S + 0 + + + half right + + turn + + shared-use path + + + + + + platform + PT13S + 14 + + + half right + + turn + + platform + + + + + + 0 + + + + 2 + PT23M6S + + + ch:1:sloid:4128:3:4 + + Murten/Morat + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 4 + + + 4 + + + 2025-05-29T15:18:00Z + 2025-05-29T15:18:24Z + + 1 + + + ch:1:sloid:4188:0:870696 + + Sugiez + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 1 + + + 1 + + + 2025-05-29T15:23:00Z + 2025-05-29T15:23:12Z + + + 2025-05-29T15:23:00Z + 2025-05-29T15:24:00Z + + 2 + + + ch:1:sloid:4483::161772 + + Ins + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 4 + + + 4 + + + 2025-05-29T15:27:00Z + 2025-05-29T15:27:30Z + + + 2025-05-29T15:27:00Z + 2025-05-29T15:28:06Z + + 3 + + + ch:1:sloid:4481:0:203140 + + Marin-Epagnier + + + ALTERNATIVE_TRANSPORT + + + 3 + + + 3 + + + 2025-05-29T15:31:00Z + 2025-05-29T15:31:54Z + + + 2025-05-29T15:32:00Z + 2025-05-29T15:32:36Z + + 4 + + + 8504480 + + St-Blaise-Lac + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 2025-05-29T15:35:00Z + 2025-05-29T15:34:48Z + + + 2025-05-29T15:36:00Z + 2025-05-29T15:37:00Z + + 5 + + + ch:1:sloid:4221:2:2 + + Neuchâtel + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 2 + + + 2 + + + 2025-05-29T15:42:00Z + 2025-05-29T15:41:30Z + + 6 + + + 2025-05-29 + ch:1:sjyid:100034:14257-001 + Suburban train + ojp:91020:B + R + + rail + regionalRail + + Train + + + S + + + + + Train + + + S + + 27 + + + S20 + + 14257 + + + Access with step + + A__PH + + + + Aussteigeseite: Rechts + + ojp91020BR_InfoCall158_109041_1 + + + n/a + + 53 + 8504221 + + Neuchâtel + + + + + + 8504128 + + Murten/Morat + + + + 8504221 + + Neuchâtel + + + + PT24M + 23146 + + + + + 0.007 + + + + 3 + PT4M + + walk + + 8504221 + + Neuchâtel + + + + 8579625 + + Neuchâtel, gare nord + + + PT4M + + + + + 8504221 + + Neuchâtel + + + + 8579625 + + Neuchâtel, gare nord + + + + PT4M + + + + + + 0 + + + + 4 + PT30S + + + ch:1:sloid:79625::2 + + Neuchâtel, gare nord + + + PLATFORM_ACCESS_WITHOUT_ASSISTANCE + + + B + + + B + + + 2025-05-29T15:46:30Z + 2025-05-29T15:46:30Z + + 1 + + + 8593591 + + Neuchâtel, Rochettes + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + 2025-05-29T15:47:54Z + 2025-05-29T15:47:54Z + + + 2025-05-29T15:47:00Z + 2025-05-29T15:47:00Z + + 2 + + + 8579624 + + Neuchâtel, Terreaux Muséum + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + 2025-05-29T15:47:24Z + 2025-05-29T15:47:24Z + + + 2025-05-29T15:47:30Z + 2025-05-29T15:47:30Z + + 3 + + + 8579623 + + Neuchâtel, St-Honoré + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + 2025-05-29T15:47:00Z + 2025-05-29T15:47:00Z + + 4 + + + 2025-05-29 + ojp:92109:_x0020_:R:j25:522 + Bus + ojp:92109:_x0020_ + R + + bus + localBus + + Bus + + + B + + + + + Bus + + + B + + 29 + + + 109 + + 94572 + + + Low-floor access + + A__NF + + + n/a + + 153 + 8504261 + + Place Pury + + + + ch:1:sboid:100025 + ems-12261 + + + ch:1:sboid:100025 + ems-13031 + + + + + + + 8579625 + + Neuchâtel, gare nord + + + + 8579623 + + Neuchâtel, St-Honoré + + + + PT30S + 1706 + + + + + 0.0918 + + + + 5 + PT5M + + walk + + 8579623 + + Neuchâtel, St-Honoré + + + + 8504550 + + Neuchâtel (bateau) + + + PT5M + + + + + + PT0S + 0 + + + unknown turn + + origin + + + + + shared-use path + PT2M31S + 32 + + + straight + + keep + + shared-use path + + + + + + sidewalk + PT22S + 27 + + + left + + turn + + sidewalk + + + + + + shared-use path + PT37S + 42 + + + sharp right + + turn + + shared-use path + + + + + + tertiary road + PT7S + 8 + + + right + + turn + + tertiary road + + + + + + service road + PT8S + 9 + + + left + + turn + + service road + + + + + + Quai du Port + PT1M5S + 85 + + + left + + turn + + Quai du Port + + + + + + shared-use path + PT10S + 10 + + + right + + turn + + shared-use path + + + + + + 0 + + + + + + ID-66FA0311-0327-4AB3-B296-FECC365934B8 + + ID-66FA0311-0327-4AB3-B296-FECC365934B8 + PT54M48S + 2025-05-29T15:34:36Z + 2025-05-29T16:29:24Z + 1 + + 1 + PT13M + + walk + + 8504577 + + Murten/Morat (Schiff/bateau) + + + + 8504128 + + Murten/Morat + + + PT13M + + + + + + PT0S + 0 + + + unknown turn + + origin + + + + + pedestrian zone + PT2M49S + 193 + + + straight + + keep + + pedestrian zone + + + + + + shared-use path + PT1M28S + 68 + + + left + + turn + + shared-use path + + + + + + sidewalk + PT2M25S + 173 + + + right + + turn + + sidewalk + + + + + + service road + PT2S + 3 + + + left + + turn + + service road + + + + + + Ryf + PT3M4S + 173 + + + right + + turn + + Ryf + + + + + + shared-use path + PT12S + 14 + + + left + + turn + + shared-use path + + + + + + sidewalk + PT2M13S + 160 + + + half right + + turn + + sidewalk + + + + + + Hallwylstrasse + PT1M57S + 131 + + + left + + turn + + Hallwylstrasse + + + + + + Erlachstrasse + PT31S + 34 + + + right + + turn + + Erlachstrasse + + + + + + service road + PT3S + 3 + + + left + + turn + + service road + + + + + + sidewalk + PT16S + 18 + + + right + + turn + + sidewalk + + + + + + sidewalk + PT20S + 26 + + + left + + turn + + sidewalk + + + + + + shared-use path + PT7S + 8 + + + right + + turn + + shared-use path + + + + + + sidewalk + PT4S + 5 + + + right + + turn + + sidewalk + + + + + + shared-use path + PT1S + 1 + + + left + + turn + + shared-use path + + + + + + stairs + PT23S + 4 + + + straight + + continue + + stairs + + + + + + building way + PT1M18S + 87 + + + half right + + turn + + building way + + + + + + shared-use path + PT0S + 0 + + + half right + + turn + + shared-use path + + + + + + platform + PT13S + 14 + + + half right + + turn + + platform + + + + + + 0 + + + + 2 + PT25M18S + + + ch:1:sloid:4128:3:4 + + Murten/Morat + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 4 + + + 4 + + + 2025-05-29T15:47:00Z + 2025-05-29T15:47:36Z + + 1 + + + ch:1:sloid:4140:0:1 + + Muntelier-Löwenberg + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 1 + + + 1 + + + 2025-05-29T15:49:00Z + 2025-05-29T15:49:42Z + + + 2025-05-29T15:49:00Z + 2025-05-29T15:50:06Z + + 2 + true + + + ch:1:sloid:4188:0:870696 + + Sugiez + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 1 + + + 1 + + + 2025-05-29T15:54:00Z + 2025-05-29T15:53:06Z + + + 2025-05-29T15:54:00Z + 2025-05-29T15:53:54Z + + 3 + + + ch:1:sloid:4483::161772 + + Ins + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 4 + + + 4 + + + 2025-05-29T15:59:00Z + 2025-05-29T15:57:24Z + + + 2025-05-29T16:00:00Z + 2025-05-29T16:00:36Z + + 4 + + + ch:1:sloid:4481:0:203140 + + Marin-Epagnier + + + ALTERNATIVE_TRANSPORT + + + 3 + + + 3 + + + 2025-05-29T16:04:00Z + 2025-05-29T16:04:24Z + + + 2025-05-29T16:04:00Z + 2025-05-29T16:05:06Z + + 5 + + + ch:1:sloid:4221:1:1 + + Neuchâtel + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 1 + + + 1 + + + 2025-05-29T16:13:00Z + 2025-05-29T16:12:54Z + + 6 + + + 2025-05-29 + ch:1:sjyid:100034:14161-001 + Suburban train + ojp:91021:A + H + + rail + regionalRail + + Train + + + S + + + + + Train + + + S + + 27 + + + S21 + + 14161 + + + Access with step + + A__PH + + + + Aussteigeseite: Rechts + + ojp91021AH_InfoCall67_109041_1 + + + + Aussteigeseite: Links + + ojp91021AH_InfoCall67_109111_1 + + + n/a + + 53 + 8504221 + + Neuchâtel + + + + + + 8504128 + + Murten/Morat + + + + 8504221 + + Neuchâtel + + + + PT26M + 23196 + + + + + 0.007 + + + + 3 + PT4M + + walk + + 8504221 + + Neuchâtel + + + + 8579625 + + Neuchâtel, gare nord + + + PT4M + + + + + 8504221 + + Neuchâtel + + + + 8579625 + + Neuchâtel, gare nord + + + + PT4M + + + + + + 0 + + + + 4 + PT2M30S + + + ch:1:sloid:79625::2 + + Neuchâtel, gare nord + + + PLATFORM_ACCESS_WITHOUT_ASSISTANCE + + + B + + + B + + + 2025-05-29T16:21:30Z + 2025-05-29T16:21:30Z + + 1 + + + 8593591 + + Neuchâtel, Rochettes + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + 2025-05-29T16:22:24Z + 2025-05-29T16:22:24Z + + + 2025-05-29T16:22:30Z + 2025-05-29T16:22:30Z + + 2 + + + 8579624 + + Neuchâtel, Terreaux Muséum + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + 2025-05-29T16:23:24Z + 2025-05-29T16:23:24Z + + + 2025-05-29T16:23:30Z + 2025-05-29T16:23:30Z + + 3 + + + 8579623 + + Neuchâtel, St-Honoré + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + 2025-05-29T16:24:00Z + 2025-05-29T16:24:00Z + + 4 + + + 2025-05-29 + ojp:92107:_x0020_:R:j25:812 + Bus + ojp:92107:_x0020_ + R + + bus + localBus + + Bus + + + B + + + + + Bus + + + B + + 29 + + + 107 + + 96568 + + + Low-floor access + + A__NF + + + n/a + + 153 + 8504261 + + Neuchâtel + + + + ch:1:sboid:100025 + ems-12261 + + + ch:1:sboid:100025 + ems-13031 + + + ch:1:sboid:100025 + ems-12273 + + + + + + + 8579625 + + Neuchâtel, gare nord + + + + 8579623 + + Neuchâtel, St-Honoré + + + + PT2M30S + 1706 + + + + + 0.0918 + + + + 5 + PT5M + + walk + + 8579623 + + Neuchâtel, St-Honoré + + + + 8504550 + + Neuchâtel (bateau) + + + PT5M + + + + + + PT0S + 0 + + + unknown turn + + origin + + + + + shared-use path + PT2M31S + 32 + + + straight + + keep + + shared-use path + + + + + + sidewalk + PT22S + 27 + + + left + + turn + + sidewalk + + + + + + shared-use path + PT37S + 42 + + + sharp right + + turn + + shared-use path + + + + + + tertiary road + PT7S + 8 + + + right + + turn + + tertiary road + + + + + + service road + PT8S + 9 + + + left + + turn + + service road + + + + + + Quai du Port + PT1M5S + 85 + + + left + + turn + + Quai du Port + + + + + + shared-use path + PT10S + 10 + + + right + + turn + + shared-use path + + + + + + 0 + + + + + + ID-AECA0437-3B5A-4615-A61A-FCD07660C0F2 + + ID-AECA0437-3B5A-4615-A61A-FCD07660C0F2 + PT47M54S + 2025-05-29T16:05:00Z + 2025-05-29T16:52:54Z + 1 + + 1 + PT13M + + walk + + 8504577 + + Murten/Morat (Schiff/bateau) + + + + 8504128 + + Murten/Morat + + + PT13M + + + + + + PT0S + 0 + + + unknown turn + + origin + + + + + pedestrian zone + PT2M49S + 193 + + + straight + + keep + + pedestrian zone + + + + + + shared-use path + PT1M28S + 68 + + + left + + turn + + shared-use path + + + + + + sidewalk + PT2M25S + 173 + + + right + + turn + + sidewalk + + + + + + service road + PT2S + 3 + + + left + + turn + + service road + + + + + + Ryf + PT3M4S + 173 + + + right + + turn + + Ryf + + + + + + shared-use path + PT12S + 14 + + + left + + turn + + shared-use path + + + + + + sidewalk + PT2M13S + 160 + + + half right + + turn + + sidewalk + + + + + + Hallwylstrasse + PT1M57S + 131 + + + left + + turn + + Hallwylstrasse + + + + + + Erlachstrasse + PT31S + 34 + + + right + + turn + + Erlachstrasse + + + + + + service road + PT3S + 3 + + + left + + turn + + service road + + + + + + sidewalk + PT16S + 18 + + + right + + turn + + sidewalk + + + + + + sidewalk + PT20S + 26 + + + left + + turn + + sidewalk + + + + + + shared-use path + PT7S + 8 + + + right + + turn + + shared-use path + + + + + + sidewalk + PT4S + 5 + + + right + + turn + + sidewalk + + + + + + shared-use path + PT1S + 1 + + + left + + turn + + shared-use path + + + + + + stairs + PT23S + 4 + + + straight + + continue + + stairs + + + + + + building way + PT1M18S + 87 + + + half right + + turn + + building way + + + + + + shared-use path + PT0S + 0 + + + half right + + turn + + shared-use path + + + + + + platform + PT13S + 14 + + + half right + + turn + + platform + + + + + + 0 + + + + 2 + PT24M + + + ch:1:sloid:4128:3:4 + + Murten/Morat + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 4 + + + 2025-05-29T16:18:00Z + + 1 + + + ch:1:sloid:4188:0:870696 + + Sugiez + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 1 + + + 2025-05-29T16:23:00Z + + + 2025-05-29T16:23:00Z + + 2 + + + ch:1:sloid:4483::161772 + + Ins + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 4 + + + 2025-05-29T16:27:00Z + + + 2025-05-29T16:27:00Z + + 3 + + + ch:1:sloid:4481:0:203140 + + Marin-Epagnier + + + ALTERNATIVE_TRANSPORT + + + 3 + + + 2025-05-29T16:31:00Z + + + 2025-05-29T16:32:00Z + + 4 + + + 8504480 + + St-Blaise-Lac + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 2025-05-29T16:35:00Z + + + 2025-05-29T16:36:00Z + + 5 + + + ch:1:sloid:4221:2:2 + + Neuchâtel + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 2 + + + 2025-05-29T16:42:00Z + + 6 + + + 2025-05-29 + ch:1:sjyid:100034:14263-001 + Suburban train + ojp:91020:B + R + + rail + regionalRail + + Train + + + S + + + + + Train + + + S + + 27 + + + S20 + + 14263 + + + Access with step + + A__PH + + + + Aussteigeseite: Rechts + + ojp91020BR_InfoCall160_109041_1 + + + n/a + + 53 + 8504221 + + Neuchâtel + + + + + + 8504128 + + Murten/Morat + + + + 8504221 + + Neuchâtel + + + + PT24M + 23146 + + + + + 0.007 + + + + 3 + PT4M + + walk + + 8504221 + + Neuchâtel + + + + 8579625 + + Neuchâtel, gare nord + + + PT4M + + + + + 8504221 + + Neuchâtel + + + + 8579625 + + Neuchâtel, gare nord + + + + PT4M + + + + + + 0 + + + + 4 + PT30S + + + ch:1:sloid:79625::2 + + Neuchâtel, gare nord + + + PLATFORM_ACCESS_WITHOUT_ASSISTANCE + + + B + + + B + + + 2025-05-29T16:46:30Z + 2025-05-29T16:46:30Z + + 1 + + + 8593591 + + Neuchâtel, Rochettes + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + 2025-05-29T16:47:54Z + 2025-05-29T16:47:54Z + + + 2025-05-29T16:47:00Z + 2025-05-29T16:47:00Z + + 2 + + + 8579624 + + Neuchâtel, Terreaux Muséum + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + 2025-05-29T16:47:24Z + 2025-05-29T16:47:24Z + + + 2025-05-29T16:47:30Z + 2025-05-29T16:47:30Z + + 3 + + + 8579623 + + Neuchâtel, St-Honoré + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + 2025-05-29T16:47:00Z + 2025-05-29T16:47:00Z + + 4 + + + 2025-05-29 + ojp:92109:_x0020_:R:j25:525 + Bus + ojp:92109:_x0020_ + R + + bus + localBus + + Bus + + + B + + + + + Bus + + + B + + 29 + + + 109 + + 94578 + + + Low-floor access + + A__NF + + + n/a + + 153 + 8504261 + + Place Pury + + + + ch:1:sboid:100025 + ems-12261 + + + ch:1:sboid:100025 + ems-13031 + + + + + + + 8579625 + + Neuchâtel, gare nord + + + + 8579623 + + Neuchâtel, St-Honoré + + + + PT30S + 1706 + + + + + 0.0918 + + + + 5 + PT5M + + walk + + 8579623 + + Neuchâtel, St-Honoré + + + + 8504550 + + Neuchâtel (bateau) + + + PT5M + + + + + + PT0S + 0 + + + unknown turn + + origin + + + + + shared-use path + PT2M31S + 32 + + + straight + + keep + + shared-use path + + + + + + sidewalk + PT22S + 27 + + + left + + turn + + sidewalk + + + + + + shared-use path + PT37S + 42 + + + sharp right + + turn + + shared-use path + + + + + + tertiary road + PT7S + 8 + + + right + + turn + + tertiary road + + + + + + service road + PT8S + 9 + + + left + + turn + + service road + + + + + + Quai du Port + PT1M5S + 85 + + + left + + turn + + Quai du Port + + + + + + shared-use path + PT10S + 10 + + + right + + turn + + shared-use path + + + + + + 0 + + + + + + ID-98313A9A-EDED-404A-A71A-B9211CAA43D9 + + ID-98313A9A-EDED-404A-A71A-B9211CAA43D9 + PT54M24S + 2025-05-29T16:34:00Z + 2025-05-29T17:28:24Z + 1 + + 1 + PT13M + + walk + + 8504577 + + Murten/Morat (Schiff/bateau) + + + + 8504128 + + Murten/Morat + + + PT13M + + + + + + PT0S + 0 + + + unknown turn + + origin + + + + + pedestrian zone + PT2M49S + 193 + + + straight + + keep + + pedestrian zone + + + + + + shared-use path + PT1M28S + 68 + + + left + + turn + + shared-use path + + + + + + sidewalk + PT2M25S + 173 + + + right + + turn + + sidewalk + + + + + + service road + PT2S + 3 + + + left + + turn + + service road + + + + + + Ryf + PT3M4S + 173 + + + right + + turn + + Ryf + + + + + + shared-use path + PT12S + 14 + + + left + + turn + + shared-use path + + + + + + sidewalk + PT2M13S + 160 + + + half right + + turn + + sidewalk + + + + + + Hallwylstrasse + PT1M57S + 131 + + + left + + turn + + Hallwylstrasse + + + + + + Erlachstrasse + PT31S + 34 + + + right + + turn + + Erlachstrasse + + + + + + service road + PT3S + 3 + + + left + + turn + + service road + + + + + + sidewalk + PT16S + 18 + + + right + + turn + + sidewalk + + + + + + sidewalk + PT20S + 26 + + + left + + turn + + sidewalk + + + + + + shared-use path + PT7S + 8 + + + right + + turn + + shared-use path + + + + + + sidewalk + PT4S + 5 + + + right + + turn + + sidewalk + + + + + + shared-use path + PT1S + 1 + + + left + + turn + + shared-use path + + + + + + stairs + PT23S + 4 + + + straight + + continue + + stairs + + + + + + building way + PT1M18S + 87 + + + half right + + turn + + building way + + + + + + shared-use path + PT0S + 0 + + + half right + + turn + + shared-use path + + + + + + platform + PT13S + 14 + + + half right + + turn + + platform + + + + + + 0 + + + + 2 + PT26M + + + ch:1:sloid:4128:3:4 + + Murten/Morat + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 4 + + + 2025-05-29T16:47:00Z + + 1 + + + ch:1:sloid:4140:0:1 + + Muntelier-Löwenberg + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 1 + + + 2025-05-29T16:49:00Z + + + 2025-05-29T16:49:00Z + + 2 + true + + + ch:1:sloid:4188:0:870696 + + Sugiez + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 1 + + + 2025-05-29T16:54:00Z + + + 2025-05-29T16:54:00Z + + 3 + + + ch:1:sloid:4483::161772 + + Ins + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 4 + + + 2025-05-29T16:59:00Z + + + 2025-05-29T17:00:00Z + + 4 + + + ch:1:sloid:4481:0:203140 + + Marin-Epagnier + + + ALTERNATIVE_TRANSPORT + + + 3 + + + 2025-05-29T17:04:00Z + + + 2025-05-29T17:04:00Z + + 5 + + + ch:1:sloid:4221:2:2 + + Neuchâtel + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 2 + + + 2025-05-29T17:13:00Z + + 6 + + + 2025-05-29 + ch:1:sjyid:100034:14165-001 + Suburban train + ojp:91021:A + H + + rail + regionalRail + + Train + + + S + + + + + Train + + + S + + 27 + + + S21 + + 14165 + + + Access with step + + A__PH + + + + Aussteigeseite: Rechts + + ojp91021AH_InfoCall68_109041_1 + + + n/a + + 53 + 8504221 + + Neuchâtel + + + + + + 8504128 + + Murten/Morat + + + + 8504221 + + Neuchâtel + + + + PT26M + 23145 + + + + + 0.007 + + + + 3 + PT4M + + walk + + 8504221 + + Neuchâtel + + + + 8579625 + + Neuchâtel, gare nord + + + PT4M + + + + + 8504221 + + Neuchâtel + + + + 8579625 + + Neuchâtel, gare nord + + + + PT4M + + + + + + 0 + + + + 4 + PT2M30S + + + ch:1:sloid:79625::2 + + Neuchâtel, gare nord + + + PLATFORM_ACCESS_WITHOUT_ASSISTANCE + + + B + + + B + + + 2025-05-29T17:20:30Z + 2025-05-29T17:20:30Z + + 1 + + + 8593591 + + Neuchâtel, Rochettes + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + 2025-05-29T17:21:24Z + 2025-05-29T17:21:24Z + + + 2025-05-29T17:21:30Z + 2025-05-29T17:21:30Z + + 2 + + + 8579624 + + Neuchâtel, Terreaux Muséum + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + 2025-05-29T17:22:24Z + 2025-05-29T17:22:24Z + + + 2025-05-29T17:22:30Z + 2025-05-29T17:22:30Z + + 3 + + + 8579623 + + Neuchâtel, St-Honoré + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + 2025-05-29T17:23:00Z + 2025-05-29T17:23:00Z + + 4 + + + 2025-05-29 + ojp:92421:_x0020_:R:j25:72 + Bus + ojp:92421:_x0020_ + R + + bus + localBus + + Bus + + + B + + + + + Bus + + + B + + 29 + + + 421 + + 88512 + + + Low-floor access + + A__NF + + + n/a + + 153 + 8504261 + + Neuchâtel + + + + ch:1:sboid:100025 + ems-12261 + + + ch:1:sboid:100025 + ems-13031 + + + + + + + 8579625 + + Neuchâtel, gare nord + + + + 8579623 + + Neuchâtel, St-Honoré + + + + PT2M30S + 1706 + + + + + 0.0918 + + + + 5 + PT5M + + walk + + 8579623 + + Neuchâtel, St-Honoré + + + + 8504550 + + Neuchâtel (bateau) + + + PT5M + + + + + + PT0S + 0 + + + unknown turn + + origin + + + + + shared-use path + PT2M31S + 32 + + + straight + + keep + + shared-use path + + + + + + sidewalk + PT22S + 27 + + + left + + turn + + sidewalk + + + + + + shared-use path + PT37S + 42 + + + sharp right + + turn + + shared-use path + + + + + + tertiary road + PT7S + 8 + + + right + + turn + + tertiary road + + + + + + service road + PT8S + 9 + + + left + + turn + + service road + + + + + + Quai du Port + PT1M5S + 85 + + + left + + turn + + Quai du Port + + + + + + shared-use path + PT10S + 10 + + + right + + turn + + shared-use path + + + + + + 0 + + + + + + ID-68D82268-53F7-4847-8708-AB1003DC16AB + + ID-68D82268-53F7-4847-8708-AB1003DC16AB + PT47M54S + 2025-05-29T17:05:00Z + 2025-05-29T17:52:54Z + 1 + + 1 + PT13M + + walk + + 8504577 + + Murten/Morat (Schiff/bateau) + + + + 8504128 + + Murten/Morat + + + PT13M + + + + + + PT0S + 0 + + + unknown turn + + origin + + + + + pedestrian zone + PT2M49S + 193 + + + straight + + keep + + pedestrian zone + + + + + + shared-use path + PT1M28S + 68 + + + left + + turn + + shared-use path + + + + + + sidewalk + PT2M25S + 173 + + + right + + turn + + sidewalk + + + + + + service road + PT2S + 3 + + + left + + turn + + service road + + + + + + Ryf + PT3M4S + 173 + + + right + + turn + + Ryf + + + + + + shared-use path + PT12S + 14 + + + left + + turn + + shared-use path + + + + + + sidewalk + PT2M13S + 160 + + + half right + + turn + + sidewalk + + + + + + Hallwylstrasse + PT1M57S + 131 + + + left + + turn + + Hallwylstrasse + + + + + + Erlachstrasse + PT31S + 34 + + + right + + turn + + Erlachstrasse + + + + + + service road + PT3S + 3 + + + left + + turn + + service road + + + + + + sidewalk + PT16S + 18 + + + right + + turn + + sidewalk + + + + + + sidewalk + PT20S + 26 + + + left + + turn + + sidewalk + + + + + + shared-use path + PT7S + 8 + + + right + + turn + + shared-use path + + + + + + sidewalk + PT4S + 5 + + + right + + turn + + sidewalk + + + + + + shared-use path + PT1S + 1 + + + left + + turn + + shared-use path + + + + + + stairs + PT23S + 4 + + + straight + + continue + + stairs + + + + + + building way + PT1M18S + 87 + + + half right + + turn + + building way + + + + + + shared-use path + PT0S + 0 + + + half right + + turn + + shared-use path + + + + + + platform + PT13S + 14 + + + half right + + turn + + platform + + + + + + 0 + + + + 2 + PT24M + + + ch:1:sloid:4128:3:4 + + Murten/Morat + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 4 + + + 2025-05-29T17:18:00Z + + 1 + + + ch:1:sloid:4188:0:870696 + + Sugiez + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 1 + + + 2025-05-29T17:23:00Z + + + 2025-05-29T17:23:00Z + + 2 + + + ch:1:sloid:4483::161772 + + Ins + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 4 + + + 2025-05-29T17:27:00Z + + + 2025-05-29T17:27:00Z + + 3 + + + ch:1:sloid:4481:0:203140 + + Marin-Epagnier + + + ALTERNATIVE_TRANSPORT + + + 3 + + + 2025-05-29T17:31:00Z + + + 2025-05-29T17:32:00Z + + 4 + + + 8504480 + + St-Blaise-Lac + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 2025-05-29T17:35:00Z + + + 2025-05-29T17:36:00Z + + 5 + + + ch:1:sloid:4221:2:2 + + Neuchâtel + + + PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE + + + 2 + + + 2025-05-29T17:42:00Z + + 6 + + + 2025-05-29 + ch:1:sjyid:100034:14267-001 + Suburban train + ojp:91020:B + R + + rail + regionalRail + + Train + + + S + + + + + Train + + + S + + 27 + + + S20 + + 14267 + + + Access with step + + A__PH + + + + Aussteigeseite: Rechts + + ojp91020BR_InfoCall161_109041_1 + + + n/a + + 53 + 8504221 + + Neuchâtel + + + + + + 8504128 + + Murten/Morat + + + + 8504221 + + Neuchâtel + + + + PT24M + 23146 + + + + + 0.007 + + + + 3 + PT4M + + walk + + 8504221 + + Neuchâtel + + + + 8579625 + + Neuchâtel, gare nord + + + PT4M + + + + + 8504221 + + Neuchâtel + + + + 8579625 + + Neuchâtel, gare nord + + + + PT4M + + + + + + 0 + + + + 4 + PT30S + + + ch:1:sloid:79625::2 + + Neuchâtel, gare nord + + + PLATFORM_ACCESS_WITHOUT_ASSISTANCE + + + B + + + 2025-05-29T17:46:30Z + + 1 + + + 8593591 + + Neuchâtel, Rochettes + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + 2025-05-29T17:47:54Z + + + 2025-05-29T17:47:00Z + + 2 + + + 8579624 + + Neuchâtel, Terreaux Muséum + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + 2025-05-29T17:47:24Z + + + 2025-05-29T17:47:30Z + + 3 + + + 8579623 + + Neuchâtel, St-Honoré + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + 2025-05-29T17:47:00Z + + 4 + + + 2025-05-29 + ojp:92109:_x0020_:R:j25:528 + Bus + ojp:92109:_x0020_ + R + + bus + localBus + + Bus + + + B + + + + + Bus + + + B + + 29 + + + 109 + + 94584 + + + Low-floor access + + A__NF + + + n/a + + 153 + 8504261 + + Place Pury + + + + ch:1:sboid:100025 + ems-12261 + + + ch:1:sboid:100025 + ems-13031 + + + + + + + 8579625 + + Neuchâtel, gare nord + + + + 8579623 + + Neuchâtel, St-Honoré + + + + PT30S + 1706 + + + + + 0.0918 + + + + 5 + PT5M + + walk + + 8579623 + + Neuchâtel, St-Honoré + + + + 8504550 + + Neuchâtel (bateau) + + + PT5M + + + + + + PT0S + 0 + + + unknown turn + + origin + + + + + shared-use path + PT2M31S + 32 + + + straight + + keep + + shared-use path + + + + + + sidewalk + PT22S + 27 + + + left + + turn + + sidewalk + + + + + + shared-use path + PT37S + 42 + + + sharp right + + turn + + shared-use path + + + + + + tertiary road + PT7S + 8 + + + right + + turn + + tertiary road + + + + + + service road + PT8S + 9 + + + left + + turn + + service road + + + + + + Quai du Port + PT1M5S + 85 + + + left + + turn + + Quai du Port + + + + + + shared-use path + PT10S + 10 + + + right + + turn + + shared-use path + + + + + + 0 + + + + + + + + diff --git a/tests/ojp-fixtures/tr-response-zh-be.xml b/tests/ojp-fixtures/tr-response-zh-be.xml new file mode 100644 index 00000000..c8a23d0a --- /dev/null +++ b/tests/ojp-fixtures/tr-response-zh-be.xml @@ -0,0 +1,1800 @@ + + + + + 2025-03-26T09:26:58.9645445+01:00 + MENTZ + + 2025-03-26T09:26:58.964545+01:00 + 4179a783-4fba-4a66-bfaf-cd2f55ab85ad + en + 583 + + + + + 8507000 + + Bern + + + EFA + 111055:0:8 + + 23006351:1 + + + Bern + + + 7.43677 + 46.94864 + + + + + ch:1:sloid:7000:4:8 + + Bern + + + EFA + 111055:0:8 + + 8507000 + 23006351:1 + + + Bern + + + 7.43677 + 46.94864 + + + + + 23006351:1 + + Bern + + + + Bern + + + 7.43677 + 46.94864 + + + + + 8503000 + + Zürich HB + + + EFA + 108276:0:33 + + 23026261:27 + + + Zürich HB + + + 8.53675 + 47.37852 + + + + + ch:1:sloid:3000:501:33 + + Zürich HB + + + EFA + 108276:0:33 + + 8503000 + 23026261:27 + + + Zürich HB + + + 8.53675 + 47.37852 + + + + + 23026261:27 + + Zürich + + + + Zürich HB + + + 8.53675 + 47.37852 + + + + + ch:1:sloid:7000:6:12 + + Bern + + + EFA + 111055:0:12 + + 8507000 + 23006351:1 + + + Bern + + + 7.43778 + 46.94921 + + + + + 8500218 + + Olten + + + EFA + 106652:0:4 + + 23019581:1 + + + Olten + + + 7.90744 + 47.35206 + + + + + ch:1:sloid:218:3:4 + + Olten + + + EFA + 106652:0:4 + + 8500218 + 23019581:1 + + + Olten + + + 7.90744 + 47.35206 + + + + + 23019581:1 + + Olten + + + + Olten + + + 7.90744 + 47.35206 + + + + + 8502113 + + Aarau + + + EFA + 107772:0:3 + + 23001001:1 + + + Aarau + + + 8.05147 + 47.39117 + + + + + ch:1:sloid:2113:2:3 + + Aarau + + + EFA + 107772:0:3 + + 8502113 + 23001001:1 + + + Aarau + + + 8.05147 + 47.39117 + + + + + 23001001:1 + + Aarau + + + + Aarau + + + 8.05147 + 47.39117 + + + + + 8502119 + + Lenzburg + + + EFA + 107776:0:2 + + 23001201:1 + + + Lenzburg + + + 8.16958 + 47.39178 + + + + + ch:1:sloid:2119:3:2 + + Lenzburg + + + EFA + 107776:0:2 + + 8502119 + 23001201:1 + + + Lenzburg + + + 8.16958 + 47.39178 + + + + + 23001201:1 + + Lenzburg + + + + Lenzburg + + + 8.16958 + 47.39178 + + + + + ch:1:sloid:3000:8:14 + + Zürich HB + + + EFA + 108276:0:14 + + 8503000 + 23026261:27 + + + Zürich HB + + + 8.53667 + 47.37913 + + + + + 8500309 + + Brugg AG + + + EFA + 106699:0:3 + + 23001095:1 + + + Brugg AG + + + 8.20957 + 47.48137 + + + + + ch:1:sloid:309:2:3 + + Brugg AG + + + EFA + 106699:0:3 + + 8500309 + 23001095:1 + + + Brugg AG + + + 8.20957 + 47.48137 + + + + + 23001095:1 + + Brugg AG + + + + Brugg AG + + + 8.20957 + 47.48137 + + + + + 8503504 + + Baden + + + EFA + 108633:0:1 + + 23001021:1 + + + Baden + + + 8.30743 + 47.47586 + + + + + ch:1:sloid:3504:1:1 + + Baden + + + EFA + 108633:0:1 + + 8503504 + 23001021:1 + + + Baden + + + 8.30743 + 47.47586 + + + + + 23001021:1 + + Baden (AG) + + + + Baden + + + 8.30743 + 47.47586 + + + + + ch:1:sloid:3000:7:13 + + Zürich HB + + + EFA + 108276:0:13 + + 8503000 + 23026261:27 + + + Zürich HB + + + 8.5366 + 47.37907 + + + + + ch:1:sloid:7000:55:50 + + Bern + + + EFA + 111055:0:50 + + 8507000 + 23006351:1 + + + Bern + + + 7.43356 + 46.94831 + + + + + 8508005 + + Burgdorf + + + EFA + 111685:0:3 + + 23006404:2 + + + Burgdorf + + + 7.62177 + 47.06087 + + + + + ch:1:sloid:8005:2:3 + + Burgdorf + + + EFA + 111685:0:3 + + 8508005 + 23006404:2 + + + Burgdorf + + + 7.62177 + 47.06087 + + + + + 23006404:2 + + Burgdorf (BE) + + + + Burgdorf + + + 7.62177 + 47.06087 + + + + + 8508008 + + Herzogenbuchsee + + + EFA + 111687:0:2 + + 23006979:1 + + + Herzogenbuchsee + + + 7.7007 + 47.18774 + + + + + ch:1:sloid:8008:2:2 + + Herzogenbuchsee + + + EFA + 111687:0:2 + + 8508008 + 23006979:1 + + + Herzogenbuchsee + + + 7.7007 + 47.18774 + + + + + 23006979:1 + + Herzogenbuchsee + + + + Herzogenbuchsee + + + 7.7007 + 47.18774 + + + + + 8508100 + + Langenthal + + + EFA + 111751:0:2 + + 23006329:1 + + + Langenthal + + + 7.78391 + 47.21698 + + + + + ch:1:sloid:8100:2:2 + + Langenthal + + + EFA + 111751:0:2 + + 8508100 + 23006329:1 + + + Langenthal + + + 7.78391 + 47.21698 + + + + + 23006329:1 + + Langenthal (CH) + + + + Langenthal + + + 7.78391 + 47.21698 + + + + + 8503001 + + Zürich Altstetten + + + EFA + 108277:0:6 + + 23026261:27 + + + Zürich Altstetten + + + 8.48942 + 47.39173 + + + + + ch:1:sloid:3001:4:6 + + Zürich Altstetten + + + EFA + 108277:0:6 + + 8503001 + 23026261:27 + + + Zürich Altstetten + + + 8.48942 + 47.39173 + + + + + ch:1:sloid:3000:5:8 + + Zürich HB + + + EFA + 108276:0:8 + + 8503000 + 23026261:27 + + + Zürich HB + + + 8.53643 + 47.37869 + + + + + ch:1:sloid:7000:2:4 + + Bern + + + EFA + 111055:0:4 + + 8507000 + 23006351:1 + + + Bern + + + 7.43725 + 46.94844 + + + + + ch:1:sloid:218:4:7 + + Olten + + + EFA + 106652:0:7 + + 8500218 + 23019581:1 + + + Olten + + + 7.90781 + 47.35204 + + + + + ch:1:sloid:7000:1:2 + + Bern + + + EFA + 111055:0:2 + + 8507000 + 23006351:1 + + + Bern + + + 7.43783 + 46.94846 + + + + + ch:1:sloid:3000:501:34 + + Zürich HB + + + EFA + 108276:0:34 + + 8503000 + 23026261:27 + + + Zürich HB + + + 8.53682 + 47.37864 + + + + + + + ID-B696AD2E-AC84-41EC-9AC5-1532895F0A17 + + ID-B696AD2E-AC84-41EC-9AC5-1532895F0A17 + PT55M54S + 2025-03-26T08:31:30Z + 2025-03-26T09:27:24Z + 0 + + 1 + PT55M54S + + + ch:1:sloid:7000:4:8 + + Bern + + + PLATFORM_ACCESS_WITHOUT_ASSISTANCE + + + 8 + + + 8 + + + 2025-03-26T08:31:00Z + 2025-03-26T08:31:30Z + + 1 + + firstClass + manySeatsAvailable + + + secondClass + fewSeatsAvailable + + + + ch:1:sloid:3000:501:33 + + Zürich HB + + + PLATFORM_ACCESS_WITHOUT_ASSISTANCE + + + 33 + + + 33 + + + 2025-03-26T09:28:00Z + 2025-03-26T09:27:24Z + + 3 + + firstClass + manySeatsAvailable + + + + 2025-03-26 + ch:1:sjyid:100001:711-001 + InterCity + ojp:91001:D + R + + rail + interregionalRail + + Train + + + IC + + + + + Train + + + IC + + 23 + + + IC1 + + 711 + + + Restaurant + + A__WR + + + + Business zone in 1st class + + A__BZ + + + + Family Coach with play area + + A__FA + + + + Quiet zone in 1st class + + A__RZ + + + + Free Internet with the SBB FreeSurf app + + A__FS + + + + Low-floor access + + A__NF + + + + Place reservation possible + + A___R + + + + Aussteigeseite: Rechts + + ojp91001DR_InfoCall1312_111055_1 + + + + Aussteigeseite: Links + + ojp91001DR_InfoCall1312_108276_1 + + + n/a + + 11 + 8506302 + + St. Gallen + + + + + + 8507000 + + Bern + + + + 8503000 + + Zürich HB + + + + + 7.43676 + 46.94865 + + + 7.43714 + 46.94875 + + + + 8.53434 + 47.37917 + + + 8.53674 + 47.37852 + + + PT57M + 0 + + + + + + + + ID-CC56CACF-3E06-4137-B63F-5175B2C03316 + + ID-CC56CACF-3E06-4137-B63F-5175B2C03316 + PT1H17M42S + 2025-03-26T08:34:00Z + 2025-03-26T09:51:42Z + 1 + + 1 + PT37M24S + + + ch:1:sloid:7000:6:12 + + Bern + + + PLATFORM_ACCESS_WITHOUT_ASSISTANCE + + + 12 + + + 12 + + + 2025-03-26T08:33:00Z + 2025-03-26T08:34:00Z + + 1 + + + ch:1:sloid:218:3:4 + + Olten + + + PLATFORM_ACCESS_WITH_ASSISTANCE_WHEN_NOTIFIED + + + 4 + + + 4 + + + 2025-03-26T09:00:00Z + 2025-03-26T09:00:30Z + + + 2025-03-26T09:02:00Z + 2025-03-26T09:02:30Z + + 2 + + + ch:1:sloid:2113:2:3 + + Aarau + + + PLATFORM_ACCESS_WITHOUT_ASSISTANCE + + + 3 + + + 3 + + + 2025-03-26T09:11:00Z + 2025-03-26T09:11:24Z + + 4 + + + 2025-03-26 + ch:1:sjyid:100001:2167-001 + InterRegio + ojp:91016:B + R + + rail + regionalRail + + Train + + + IR + + + + + Train + + + IR + + 1 + + + IR16 + + 2167 + + + Free Internet with the SBB FreeSurf app + + A__FS + + + + Low-floor access + + A__NF + + + + Business zone in 1st class + + A__BZ + + + + Family zone without play area + + A__FZ + + + + Aussteigeseite: Links + + ojp91016BR_InfoCall532_107772_1 + + + n/a + + 11 + 8503000 + + Zürich HB + + + + + + 8507000 + + Bern + + + + 8502113 + + Aarau + + + + + 7.43779 + 46.9492 + + + 7.43808 + 46.94933 + + + 7.43815 + 46.94937 + + + 7.43871 + 46.94967 + + + + 8.04943 + 47.39064 + + + 8.05039 + 47.39089 + + + 8.05148 + 47.39117 + + + PT38M + 0 + + + + + + 2 + PT4M + + walk + + 8502113 + + Aarau + + + + 8502113 + + Aarau + + + PT4M + + + + 3 + PT28M12S + + + ch:1:sloid:2113:2:3 + + Aarau + + + PLATFORM_ACCESS_WITHOUT_ASSISTANCE + + + 3 + + + 3 + + + 2025-03-26T09:23:00Z + 2025-03-26T09:23:30Z + + 1 + + + ch:1:sloid:2119:3:2 + + Lenzburg + + + PLATFORM_ACCESS_WITH_ASSISTANCE_WHEN_NOTIFIED + + + 2 + + + 2 + + + 2025-03-26T09:29:00Z + 2025-03-26T09:29:12Z + + + 2025-03-26T09:31:00Z + 2025-03-26T09:32:24Z + + 2 + + + ch:1:sloid:3000:8:14 + + Zürich HB + + + PLATFORM_ACCESS_WITHOUT_ASSISTANCE + + + 14 + + + 14 + + + 2025-03-26T09:52:00Z + 2025-03-26T09:51:42Z + + 3 + + + 2025-03-26 + ch:1:sjyid:100001:2265-001 + InterRegio + ojp:91037:_x0020_ + R + + rail + regionalRail + + Train + + + IR + + + + + Train + + + IR + + 1 + + + IR37 + + 2265 + + + Free Internet with the SBB FreeSurf app + + A__FS + + + + Low-floor access + + A__NF + + + + Aussteigeseite: Links + + ojp91037_R_InfoCall929_107772_1 + + + n/a + + 11 + 8503000 + + Zürich HB + + + + + + 8502113 + + Aarau + + + + 8503000 + + Zürich HB + + + + + 8.05148 + 47.39117 + + + 8.05165 + 47.39121 + + + 8.05275 + 47.3915 + + + + 8.53208 + 47.38035 + + + 8.53299 + 47.38011 + + + 8.53666 + 47.37912 + + + PT29M + 0 + + + + + + + + + + ID-2CA79DAE-08A9-4DCB-AC2B-F92253AF5B95 + + ID-2CA79DAE-08A9-4DCB-AC2B-F92253AF5B95 + PT16M + 2025-03-31T13:58:00Z + 2025-03-31T14:14:00Z + 1 + true + + 1 + PT3M + + + ch:1:sloid:90027:0:2 + + Bern, Henkerbrünnli + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + 2025-03-31T13:58:00Z + + 1 + + + ch:1:sloid:88990:0:2 + + Bern, Bollwerk + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + A + + + 2025-03-31T14:00:00Z + + + 2025-03-31T14:00:00Z + + 2 + + + ch:1:sloid:76646:0:28 + + Bern, Bahnhof + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + G + + + 2025-03-31T14:01:00Z + + 3 + + + 2025-03-31 + ojp-92-11-_-j25-1-425-TA + Bus + ojp:92011:_x0020_ + R + + bus + localBus + + Bus + + + B + + + + + Bus + + + B + + 29 + + + 11 + + 10658 + + + BICYCLES: Limited number of places + + A__VB + + + + Low-floor access + + A__NF + + + n/a + + 827 + 8576646 + + Bern, Bahnhof + + + + + + 8590027 + + Bern, Henkerbrünnli + + + + 8576646 + + Bern, Bahnhof + + + + + 7.43907 + 46.95383 + + + 7.43907 + 46.95372 + + + + 7.44037 + 46.94903 + + + 7.44052 + 46.94862 + + + PT3M + 0 + + + + + + 2 + PT2M + + walk + + 8576646 + + Bern, Bahnhof + + + + 8576646 + + Bern, Bahnhof + + + PT2M + + + + 3 + PT10M + + + ch:1:sloid:76646:0:1 + + Bern, Bahnhof + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + B + + + 2025-03-31T14:04:00Z + + 1 + + + ch:1:sloid:88989:0:1 + + Bern, Bärenplatz + + + PLATFORM_ACCESS_WITHOUT_ASSISTANCE + + + 2025-03-31T14:05:00Z + + + 2025-03-31T14:05:00Z + + 2 + + + ch:1:sloid:7110:0:1 + + Bern, Zytglogge + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + F + + + 2025-03-31T14:07:00Z + + + 2025-03-31T14:07:00Z + + 3 + + + ch:1:sloid:7060:0:1 + + Bern, Helvetiaplatz + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + B + + + 2025-03-31T14:09:00Z + + + 2025-03-31T14:09:00Z + + 4 + + + ch:1:sloid:90006:0:1 + + Bern, Luisenstrasse + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + 2025-03-31T14:10:00Z + + + 2025-03-31T14:10:00Z + + 5 + + + ch:1:sloid:89003:0:1 + + Bern, Thunplatz + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + B + + + 2025-03-31T14:11:00Z + + + 2025-03-31T14:11:00Z + + 6 + + + ch:1:sloid:7061:0:1 + + Bern, Brunnadernstrasse + + + PLATFORM_ACCESS_WITH_ASSISTANCE + + + B + + + 2025-03-31T14:12:00Z + + + 2025-03-31T14:12:00Z + + 7 + + + ch:1:sloid:88174:0:1 + + Bern, Weltpostverein + + + ALTERNATIVE_TRANSPORT + + + 2025-03-31T14:14:00Z + + 8 + + + 2025-03-31 + ojp-91-8-_-j25-1-311-TA + Tramway + ojp:91008:_x0020_ + H + + tram + cityTram + + Tramway + + + T + + + + + Tramway + + + T + + 2 + + + 8 + + 3639 + + + BICYCLES: Limited number of places + + A__VB + + + + Low-floor access + + A__NF + + + n/a + + 827 + 8589002 + + Bern, Saali + + + + + + 8576646 + + Bern, Bahnhof + + + + 8588174 + + Bern, Weltpostverein + + + + + 7.44064 + 46.94766 + + + 7.44084 + 46.9477 + + + + 7.46918 + 46.94001 + + + 7.47149 + 46.93902 + + + PT10M + 0 + + + + + + + + + + diff --git a/tests/ojp-fixtures/tr-uetliberg-gurten.xml b/tests/ojp-fixtures/tr-uetliberg-gurten.xml deleted file mode 100644 index 48cb6de7..00000000 --- a/tests/ojp-fixtures/tr-uetliberg-gurten.xml +++ /dev/null @@ -1,50853 +0,0 @@ - - - - - 2024-03-08T12:49:57Z - optmentzEFAControllerEFAController10.6.16.8-build-1414-65a3ba6d9705 - e8576d10021a380a - true - - 2024-03-08T12:49:55Z - true - 2356 - - - - - 8503057 - - Uetliberg - - - EFA - 108300 - - 23026013:8 - - - Uetliberg - - - 8.48751 - 47.35198 - - - - - ch:1:sloid:3057:0:503972 - - Uetliberg - - - EFA - 108300:0:1 - - 8503057 - 23026013:8 - - - Uetliberg - - - 8.48751 - 47.35198 - - - - - 23026013:8 - - Uetliberg - - - - Uetliberg - - - 8.48751 - 47.35198 - - - - - 8503056 - - Ringlikon - - - EFA - 108299 - - 23026248:3 - - - Ringlikon - - - 8.47729 - 47.36025 - - - - - ch:1:sloid:3056:0:662664 - - Ringlikon - - - EFA - 108299:0:1 - - 8503056 - 23026248:3 - - - Ringlikon - - - 8.47729 - 47.36025 - - - - - 23026248:3 - - Uitikon Waldegg - - - - Uitikon Waldegg - - - 8.47729 - 47.36025 - - - - - 8503055 - - Uitikon Waldegg - - - EFA - 108298 - - 23026248:3 - - - Uitikon Waldegg - - - 8.46592 - 47.36592 - - - - - ch:1:sloid:3055:0:646691 - - Uitikon Waldegg - - - EFA - 108298:0:1 - - 8503055 - 23026248:3 - - - Uitikon Waldegg - - - 8.46592 - 47.36592 - - - - - 8503054 - - Zürich Triemli - - - EFA - 108297 - - 23026261:27 - - - Zürich Triemli - - - 8.49506 - 47.36497 - - - - - ch:1:sloid:3054:0:137935 - - Zürich Triemli - - - EFA - 108297:0:1 - - 8503054 - 23026261:27 - - - Zürich Triemli - - - 8.49506 - 47.36497 - - - - - 23026261:27 - - Zürich - - - - Zürich - - - 8.49506 - 47.36497 - - - - - 8503053 - - Zürich Schweighof - - - EFA - 108296 - - 23026261:27 - - - Zürich Schweighof - - - 8.50353 - 47.36494 - - - - - ch:1:sloid:3053:0:255834 - - Zürich Schweighof - - - EFA - 108296:0:1 - - 8503053 - 23026261:27 - - - Zürich Schweighof - - - 8.50353 - 47.36494 - - - - - 8503052 - - Zürich Friesenberg - - - EFA - 108295 - - 23026261:27 - - - Zürich Friesenberg - - - 8.50750 - 47.36480 - - - - - ch:1:sloid:3052:0:785310 - - Zürich Friesenberg - - - EFA - 108295:0:1 - - 8503052 - 23026261:27 - - - Zürich Friesenberg - - - 8.50750 - 47.36480 - - - - - 8503051 - - Zürich Binz - - - EFA - 108294 - - 23026261:27 - - - Zürich Binz - - - 8.51830 - 47.36276 - - - - - ch:1:sloid:3051:0:919934 - - Zürich Binz - - - EFA - 108294:0:1 - - 8503051 - 23026261:27 - - - Zürich Binz - - - 8.51830 - 47.36276 - - - - - 8503090 - - Zürich Selnau - - - EFA - 108328:0:1 - - 23026261:27 - - - Zürich Selnau - - - 8.53172 - 47.37224 - - - - - 8503088 - - Zürich HB SZU - - - EFA - 108326 - - 23026261:27 - - - Zürich HB SZU - - - 8.53942 - 47.37755 - - - - - ch:1:sloid:3088:0:82204 - - Zürich HB SZU - - - EFA - 108326:0:22 - - 8503088 - 23026261:27 - - - Zürich HB SZU - - - 8.53942 - 47.37755 - - - - - 8503000 - - Zürich HB - - - EFA - 108276 - - 23026261:27 - - - Zürich HB - - - 8.53710 - 47.37819 - - - - - ch:1:sloid:3000:500:31 - - Zürich HB - - - EFA - 108276:0:31 - - 8503000 - 23026261:27 - - - Zürich HB - - - 8.53710 - 47.37819 - - - - - 132 - - Bahn-2000-Strecke - - - EFA - 100078 - - 23006977:3 - - - Bahn-2000-Strecke - - - 7.68936 - 47.19637 - - - - - 23006977:3 - - Wanzwil - - - - Wanzwil - - - 7.68936 - 47.19637 - - - - - 8507000 - - Bern - - - EFA - 111055 - - 23006351:1 - - - Bern - - - 7.43880 - 46.94928 - - - - - ch:1:sloid:7000:4:7 - - Bern - - - EFA - 111055:0:7 - - 8507000 - 23006351:1 - - - Bern - - - 7.43880 - 46.94928 - - - - - 23006351:1 - - Bern - - - - Bern - - - 7.43880 - 46.94928 - - - - - 8507492 - - Interlaken Ost - - - EFA - 111343 - - 23006581:1 - - - Interlaken Ost - - - 7.86900 - 46.69050 - - - - - 23006581:1 - - Interlaken - - - - Interlaken - - - 7.86900 - 46.69050 - - - - - 8576646 - - Bern, Bahnhof - - - EFA - 119184 - - 23006351:1 - - - Bern, Bahnhof - - - 7.44007 - 46.94758 - - - - - ch:1:sloid:76646:0:3 - - Bern, Bahnhof - - - EFA - 119184:0:C - - 8576646 - 23006351:1 - - - Bern, Bahnhof - - - 7.44007 - 46.94758 - - - - - 8579896 - - Bern, Hirschengraben - - - EFA - 121778 - - 23006351:1 - - - Bern, Hirschengraben - - - 7.43752 - 46.94643 - - - - - ch:1:sloid:79896:0:1 - - Bern, Hirschengraben - - - EFA - 121778:0:A - - 8579896 - 23006351:1 - - - Bern, Hirschengraben - - - 7.43752 - 46.94643 - - - - - 8589991 - - Bern, Monbijou - - - EFA - 127229 - - 23006351:1 - - - Bern, Monbijou - - - 7.43592 - 46.94323 - - - - - ch:1:sloid:89991:0:1 - - Bern, Monbijou - - - EFA - 127229:0:B - - 8589991 - 23006351:1 - - - Bern, Monbijou - - - 7.43592 - 46.94323 - - - - - 8589992 - - Bern, Sulgenau - - - EFA - 127230 - - 23006351:1 - - - Bern, Sulgenau - - - 7.43590 - 46.93998 - - - - - 8589993 - - Bern, Wander - - - EFA - 127231 - - 23006351:1 - - - Bern, Wander - - - 7.43650 - 46.93663 - - - - - ch:1:sloid:89993:0:1 - - Bern, Wander - - - EFA - 127231:0:10001 - - 8589993 - 23006351:1 - - - Bern, Wander - - - 7.43650 - 46.93663 - - - - - 8590022 - - Bern, Schönegg - - - EFA - 127260 - - 23006351:1 - - - Bern, Schönegg - - - 7.43996 - 46.93392 - - - - - ch:1:sloid:90022:0:1 - - Bern, Schönegg - - - EFA - 127260:0:10001 - - 8590022 - 23006351:1 - - - Bern, Schönegg - - - 7.43996 - 46.93392 - - - - - 8590023 - - Bern, Sandrain - - - EFA - 127261 - - 23006351:1 - - - Bern, Sandrain - - - 7.44531 - 46.93158 - - - - - ch:1:sloid:90023:0:1 - - Bern, Sandrain - - - EFA - 127261:0:10001 - - 8590023 - 23006351:1 - - - Bern, Sandrain - - - 7.44531 - 46.93158 - - - - - 8588562 - - Wabern, Gurtenbahn - - - EFA - 125963 - - 23006355:21 - - - Wabern, Gurtenbahn - - - 7.44869 - 46.92987 - - - - - ch:1:sloid:88562:0:1 - - Wabern, Gurtenbahn - - - EFA - 125963:0:B - - 8588562 - 23006355:21 - - - Wabern, Gurtenbahn - - - 7.44869 - 46.92987 - - - - - 23006355:21 - - Wabern (CH) - - - - Wabern (CH) - - - 7.44869 - 46.92987 - - - - - 8571395 - - Wabern, Tram-Endstation - - - EFA - 114665 - - 23006355:21 - - - Wabern, Tram-Endstation - - - 7.45264 - 46.92803 - - - - - 8507097 - - Wabern (Gurtenbahn) - - - EFA - 111102 - - 23006355:21 - - - Wabern (Gurtenbahn) - - - 7.44603 - 46.92782 - - - - - 8507099 - - Gurten Kulm - - - EFA - 111103 - - 23006355:21 - - - Gurten Kulm - - - 7.43975 - 46.91961 - - - - - ch:1:sloid:7000:2:3 - - Bern - - - EFA - 111055:0:3 - - 8507000 - 23006351:1 - - - Bern - - - 7.43912 - 46.94908 - - - - - 8501026 - - Genève-Aéroport - - - EFA - 107029 - - 23009623:2 - - - Genève-Aéroport - - - 6.11198 - 46.23254 - - - - - 23009623:2 - - Le Grand-Saconnex - - - - Le Grand-Saconnex - - - 6.11198 - 46.23254 - - - - - 8501609 - - Brig - - - EFA - 107458 - - 23024002:1 - - - Brig - - - 7.98810 - 46.31943 - - - - - 23024002:1 - - Brig - - - - Brig - - - 7.98810 - 46.31943 - - - - - - ID-0F1A3116-ACFE-4C0C-945C-342EA202BA24 - - ID-0F1A3116-ACFE-4C0C-945C-342EA202BA24 - PT2H20M - 2024-03-09T06:25:00Z - 2024-03-09T08:45:00Z - 3 - - 1 - - - ch:1:sloid:3057:0:503972 - - Uetliberg - - - PLATFORM_ACCESS_WITHOUT_ASSISTANCE - - - 1 - - - 2024-03-09T06:25:00Z - - 1 - - - ch:1:sloid:3056:0:662664 - - Ringlikon - - - 1 - - - 2024-03-09T06:30:00Z - - - 2024-03-09T06:30:00Z - - 2 - - - ch:1:sloid:3055:0:646691 - - Uitikon Waldegg - - - 1 - - - 2024-03-09T06:32:00Z - - - 2024-03-09T06:33:00Z - - 3 - - - ch:1:sloid:3054:0:137935 - - Zürich Triemli - - - 1 - - - 2024-03-09T06:37:00Z - - - 2024-03-09T06:37:00Z - - 4 - - - ch:1:sloid:3053:0:255834 - - Zürich Schweighof - - - 1 - - - 2024-03-09T06:38:00Z - - - 2024-03-09T06:38:00Z - - 5 - - - ch:1:sloid:3052:0:785310 - - Zürich Friesenberg - - - 1 - - - 2024-03-09T06:39:00Z - - - 2024-03-09T06:39:00Z - - 6 - - - ch:1:sloid:3051:0:919934 - - Zürich Binz - - - 1 - - - 2024-03-09T06:41:00Z - - - 2024-03-09T06:42:00Z - - 7 - - - 8503090 - - Zürich Selnau - - - 1 - - - 2024-03-09T06:44:00Z - - - 2024-03-09T06:44:00Z - - 8 - - - ch:1:sloid:3088:0:82204 - - Zürich HB SZU - - - PLATFORM_ACCESS_WITHOUT_ASSISTANCE - - - 22 - - - 2024-03-09T06:47:00Z - - 9 - - - 2024-03-09 - ch:1:sjyid:100058:12776-001 - ojp:91010:A - H - - rail - regionalRail - - Zug - - - S - - - - S10 - - ojp:78 - - - VELOS: Keine Beförderung möglich - - A__VN - - - - Nur 2. Klasse - - A___2 - - - - Niederflureinstieg - - A__NF - palletAccess_lowFloor - - 8503088 - - Zürich HB SZU - - - - - - ch:1:sloid:3057:0:503972 - - Uetliberg - - - - ch:1:sloid:3088:0:82204 - - Zürich HB SZU - - - - - 8.48748 - 47.35198 - - - 8.48763 - 47.35254 - - - 8.48764 - 47.35259 - - - 8.48765 - 47.35267 - - - 8.48766 - 47.35272 - - - 8.48766 - 47.35277 - - - 8.48765 - 47.35286 - - - 8.48764 - 47.35295 - - - 8.48762 - 47.35301 - - - 8.48760 - 47.35309 - - - 8.48756 - 47.35319 - - - 8.48753 - 47.35324 - - - 8.48750 - 47.35329 - - - 8.48745 - 47.35337 - - - 8.48742 - 47.35341 - - - 8.48739 - 47.35345 - - - 8.48731 - 47.35354 - - - 8.48727 - 47.35358 - - - 8.48721 - 47.35362 - - - 8.48715 - 47.35367 - - - 8.48709 - 47.35371 - - - 8.48703 - 47.35375 - - - 8.48690 - 47.35382 - - - 8.48683 - 47.35386 - - - 8.48660 - 47.35396 - - - 8.48590 - 47.35427 - - - 8.48574 - 47.35435 - - - 8.48564 - 47.35441 - - - 8.48556 - 47.35445 - - - 8.48547 - 47.35451 - - - 8.48539 - 47.35456 - - - 8.48527 - 47.35465 - - - 8.48517 - 47.35475 - - - 8.48512 - 47.35480 - - - 8.48505 - 47.35488 - - - 8.48501 - 47.35493 - - - 8.48497 - 47.35498 - - - 8.48490 - 47.35507 - - - 8.48487 - 47.35512 - - - 8.48481 - 47.35523 - - - 8.48478 - 47.35530 - - - 8.48475 - 47.35539 - - - 8.48472 - 47.35549 - - - 8.48470 - 47.35555 - - - 8.48470 - 47.35560 - - - 8.48468 - 47.35572 - - - 8.48468 - 47.35582 - - - 8.48469 - 47.35596 - - - 8.48473 - 47.35638 - - - 8.48474 - 47.35645 - - - 8.48474 - 47.35654 - - - 8.48474 - 47.35660 - - - 8.48473 - 47.35665 - - - 8.48472 - 47.35672 - - - 8.48470 - 47.35681 - - - 8.48469 - 47.35687 - - - 8.48468 - 47.35692 - - - 8.48466 - 47.35697 - - - 8.48463 - 47.35703 - - - 8.48461 - 47.35709 - - - 8.48457 - 47.35715 - - - 8.48454 - 47.35720 - - - 8.48447 - 47.35732 - - - 8.48442 - 47.35738 - - - 8.48437 - 47.35744 - - - 8.48431 - 47.35750 - - - 8.48422 - 47.35760 - - - 8.48415 - 47.35765 - - - 8.48403 - 47.35775 - - - 8.48397 - 47.35780 - - - 8.48384 - 47.35789 - - - 8.48376 - 47.35793 - - - 8.48369 - 47.35798 - - - 8.48360 - 47.35802 - - - 8.48352 - 47.35806 - - - 8.48342 - 47.35811 - - - 8.48334 - 47.35813 - - - 8.48327 - 47.35816 - - - 8.48316 - 47.35819 - - - 8.48306 - 47.35822 - - - 8.48297 - 47.35824 - - - 8.48289 - 47.35826 - - - 8.48281 - 47.35827 - - - 8.48274 - 47.35828 - - - 8.48265 - 47.35829 - - - 8.48257 - 47.35829 - - - 8.48248 - 47.35830 - - - 8.48240 - 47.35830 - - - 8.48231 - 47.35830 - - - 8.48222 - 47.35830 - - - 8.48205 - 47.35829 - - - 8.48195 - 47.35827 - - - 8.48187 - 47.35826 - - - 8.48179 - 47.35825 - - - 8.48173 - 47.35823 - - - 8.48165 - 47.35821 - - - 8.48152 - 47.35817 - - - 8.48144 - 47.35815 - - - 8.48129 - 47.35809 - - - 8.48118 - 47.35803 - - - 8.48110 - 47.35799 - - - 8.48103 - 47.35795 - - - 8.48097 - 47.35791 - - - 8.48091 - 47.35787 - - - 8.48086 - 47.35783 - - - 8.48081 - 47.35778 - - - 8.48076 - 47.35774 - - - 8.48068 - 47.35766 - - - 8.48063 - 47.35760 - - - 8.48058 - 47.35753 - - - 8.48053 - 47.35746 - - - 8.48008 - 47.35682 - - - 8.47987 - 47.35652 - - - 8.47980 - 47.35642 - - - 8.47975 - 47.35637 - - - 8.47972 - 47.35633 - - - 8.47965 - 47.35626 - - - 8.47961 - 47.35623 - - - 8.47957 - 47.35619 - - - 8.47953 - 47.35616 - - - 8.47947 - 47.35612 - - - 8.47942 - 47.35609 - - - 8.47931 - 47.35603 - - - 8.47926 - 47.35600 - - - 8.47921 - 47.35598 - - - 8.47910 - 47.35593 - - - 8.47900 - 47.35589 - - - 8.47891 - 47.35586 - - - 8.47877 - 47.35583 - - - 8.47871 - 47.35582 - - - 8.47861 - 47.35580 - - - 8.47846 - 47.35578 - - - 8.47834 - 47.35577 - - - 8.47818 - 47.35577 - - - 8.47813 - 47.35577 - - - 8.47806 - 47.35578 - - - 8.47794 - 47.35579 - - - 8.47781 - 47.35581 - - - 8.47768 - 47.35583 - - - 8.47756 - 47.35586 - - - 8.47750 - 47.35588 - - - 8.47744 - 47.35590 - - - 8.47737 - 47.35592 - - - 8.47730 - 47.35595 - - - 8.47718 - 47.35600 - - - 8.47711 - 47.35604 - - - 8.47705 - 47.35607 - - - 8.47700 - 47.35610 - - - 8.47695 - 47.35614 - - - 8.47690 - 47.35617 - - - 8.47684 - 47.35621 - - - 8.47680 - 47.35625 - - - 8.47671 - 47.35634 - - - 8.47667 - 47.35639 - - - 8.47663 - 47.35643 - - - 8.47659 - 47.35648 - - - 8.47654 - 47.35657 - - - 8.47652 - 47.35662 - - - 8.47648 - 47.35670 - - - 8.47647 - 47.35675 - - - 8.47645 - 47.35684 - - - 8.47644 - 47.35693 - - - 8.47644 - 47.35698 - - - 8.47644 - 47.35707 - - - 8.47645 - 47.35714 - - - 8.47646 - 47.35719 - - - 8.47648 - 47.35725 - - - 8.47649 - 47.35730 - - - 8.47653 - 47.35737 - - - 8.47656 - 47.35743 - - - 8.47660 - 47.35749 - - - 8.47666 - 47.35757 - - - 8.47670 - 47.35762 - - - 8.47674 - 47.35766 - - - 8.47678 - 47.35770 - - - 8.47683 - 47.35774 - - - 8.47689 - 47.35779 - - - 8.47694 - 47.35783 - - - 8.47702 - 47.35788 - - - 8.47712 - 47.35794 - - - 8.47747 - 47.35815 - - - 8.47757 - 47.35822 - - - 8.47764 - 47.35827 - - - 8.47773 - 47.35834 - - - 8.47777 - 47.35838 - - - 8.47782 - 47.35843 - - - 8.47787 - 47.35848 - - - 8.47791 - 47.35853 - - - 8.47795 - 47.35859 - - - 8.47802 - 47.35869 - - - 8.47805 - 47.35875 - - - 8.47810 - 47.35886 - - - 8.47813 - 47.35897 - - - 8.47814 - 47.35905 - - - 8.47815 - 47.35912 - - - 8.47815 - 47.35920 - - - 8.47814 - 47.35929 - - - 8.47813 - 47.35934 - - - 8.47812 - 47.35941 - - - 8.47810 - 47.35947 - - - 8.47808 - 47.35952 - - - 8.47803 - 47.35964 - - - 8.47796 - 47.35975 - - - 8.47791 - 47.35981 - - - 8.47786 - 47.35987 - - - 8.47775 - 47.35998 - - - 8.47768 - 47.36004 - - - 8.47760 - 47.36010 - - - 8.47741 - 47.36021 - - - 8.47732 - 47.36026 - - - 8.47732 - 47.36026 - - - 8.47717 - 47.36033 - - - 8.47679 - 47.36052 - - - 8.47673 - 47.36055 - - - 8.47667 - 47.36058 - - - 8.47661 - 47.36061 - - - 8.47651 - 47.36068 - - - 8.47647 - 47.36070 - - - 8.47638 - 47.36076 - - - 8.47631 - 47.36083 - - - 8.47622 - 47.36092 - - - 8.47619 - 47.36095 - - - 8.47614 - 47.36101 - - - 8.47609 - 47.36109 - - - 8.47606 - 47.36113 - - - 8.47603 - 47.36120 - - - 8.47601 - 47.36123 - - - 8.47599 - 47.36128 - - - 8.47597 - 47.36136 - - - 8.47595 - 47.36140 - - - 8.47594 - 47.36148 - - - 8.47593 - 47.36154 - - - 8.47593 - 47.36159 - - - 8.47593 - 47.36167 - - - 8.47594 - 47.36183 - - - 8.47597 - 47.36204 - - - 8.47597 - 47.36216 - - - 8.47597 - 47.36222 - - - 8.47596 - 47.36231 - - - 8.47595 - 47.36238 - - - 8.47592 - 47.36250 - - - 8.47590 - 47.36256 - - - 8.47587 - 47.36263 - - - 8.47584 - 47.36269 - - - 8.47581 - 47.36275 - - - 8.47575 - 47.36284 - - - 8.47567 - 47.36295 - - - 8.47559 - 47.36304 - - - 8.47555 - 47.36308 - - - 8.47549 - 47.36313 - - - 8.47543 - 47.36318 - - - 8.47538 - 47.36322 - - - 8.47531 - 47.36328 - - - 8.47524 - 47.36333 - - - 8.47511 - 47.36341 - - - 8.47505 - 47.36344 - - - 8.47497 - 47.36348 - - - 8.47484 - 47.36353 - - - 8.47477 - 47.36356 - - - 8.47470 - 47.36359 - - - 8.47453 - 47.36364 - - - 8.47445 - 47.36367 - - - 8.47433 - 47.36370 - - - 8.47425 - 47.36371 - - - 8.47416 - 47.36373 - - - 8.47408 - 47.36374 - - - 8.47392 - 47.36376 - - - 8.47383 - 47.36377 - - - 8.47374 - 47.36377 - - - 8.47354 - 47.36377 - - - 8.47275 - 47.36377 - - - 8.47257 - 47.36378 - - - 8.47243 - 47.36378 - - - 8.47216 - 47.36379 - - - 8.47194 - 47.36380 - - - 8.47181 - 47.36381 - - - 8.47168 - 47.36383 - - - 8.47151 - 47.36385 - - - 8.47137 - 47.36386 - - - 8.47124 - 47.36388 - - - 8.47108 - 47.36391 - - - 8.47085 - 47.36395 - - - 8.47074 - 47.36397 - - - 8.47045 - 47.36404 - - - 8.47029 - 47.36408 - - - 8.47012 - 47.36413 - - - 8.46994 - 47.36418 - - - 8.46978 - 47.36423 - - - 8.46959 - 47.36429 - - - 8.46945 - 47.36435 - - - 8.46933 - 47.36439 - - - 8.46911 - 47.36449 - - - 8.46898 - 47.36454 - - - 8.46864 - 47.36469 - - - 8.46661 - 47.36561 - - - 8.46637 - 47.36572 - - - 8.46624 - 47.36578 - - - 8.46617 - 47.36582 - - - 8.46610 - 47.36586 - - - 8.46604 - 47.36589 - - - 8.46596 - 47.36595 - - - 8.46596 - 47.36595 - - - 8.46591 - 47.36598 - - - 8.46586 - 47.36602 - - - 8.46577 - 47.36610 - - - 8.46571 - 47.36615 - - - 8.46564 - 47.36623 - - - 8.46556 - 47.36632 - - - 8.46553 - 47.36637 - - - 8.46547 - 47.36646 - - - 8.46544 - 47.36650 - - - 8.46542 - 47.36654 - - - 8.46537 - 47.36666 - - - 8.46535 - 47.36672 - - - 8.46532 - 47.36682 - - - 8.46531 - 47.36689 - - - 8.46530 - 47.36699 - - - 8.46530 - 47.36709 - - - 8.46530 - 47.36714 - - - 8.46531 - 47.36724 - - - 8.46532 - 47.36730 - - - 8.46534 - 47.36738 - - - 8.46538 - 47.36748 - - - 8.46539 - 47.36753 - - - 8.46545 - 47.36763 - - - 8.46549 - 47.36771 - - - 8.46554 - 47.36778 - - - 8.46562 - 47.36788 - - - 8.46566 - 47.36793 - - - 8.46575 - 47.36801 - - - 8.46579 - 47.36805 - - - 8.46585 - 47.36810 - - - 8.46590 - 47.36815 - - - 8.46595 - 47.36818 - - - 8.46600 - 47.36821 - - - 8.46606 - 47.36825 - - - 8.46615 - 47.36831 - - - 8.46628 - 47.36837 - - - 8.46648 - 47.36847 - - - 8.46658 - 47.36851 - - - 8.46763 - 47.36895 - - - 8.46915 - 47.36959 - - - 8.46935 - 47.36967 - - - 8.46946 - 47.36971 - - - 8.46958 - 47.36975 - - - 8.46980 - 47.36983 - - - 8.46997 - 47.36988 - - - 8.47017 - 47.36994 - - - 8.47026 - 47.36996 - - - 8.47045 - 47.37000 - - - 8.47053 - 47.37002 - - - 8.47072 - 47.37006 - - - 8.47093 - 47.37009 - - - 8.47109 - 47.37011 - - - 8.47130 - 47.37013 - - - 8.47140 - 47.37014 - - - 8.47170 - 47.37016 - - - 8.47306 - 47.37024 - - - 8.47324 - 47.37025 - - - 8.47339 - 47.37025 - - - 8.47358 - 47.37025 - - - 8.47370 - 47.37025 - - - 8.47382 - 47.37025 - - - 8.47401 - 47.37024 - - - 8.47426 - 47.37022 - - - 8.47444 - 47.37020 - - - 8.47454 - 47.37019 - - - 8.47468 - 47.37017 - - - 8.47479 - 47.37015 - - - 8.47492 - 47.37013 - - - 8.47510 - 47.37009 - - - 8.47536 - 47.37003 - - - 8.47597 - 47.36988 - - - 8.47607 - 47.36986 - - - 8.47614 - 47.36985 - - - 8.47630 - 47.36983 - - - 8.47639 - 47.36982 - - - 8.47656 - 47.36980 - - - 8.47686 - 47.36978 - - - 8.47699 - 47.36977 - - - 8.47714 - 47.36975 - - - 8.47833 - 47.36955 - - - 8.47847 - 47.36953 - - - 8.47867 - 47.36949 - - - 8.47887 - 47.36945 - - - 8.47895 - 47.36942 - - - 8.47914 - 47.36937 - - - 8.47929 - 47.36932 - - - 8.47938 - 47.36929 - - - 8.47947 - 47.36925 - - - 8.47962 - 47.36919 - - - 8.47978 - 47.36912 - - - 8.48250 - 47.36782 - - - 8.48262 - 47.36777 - - - 8.48273 - 47.36773 - - - 8.48280 - 47.36770 - - - 8.48286 - 47.36768 - - - 8.48301 - 47.36764 - - - 8.48316 - 47.36760 - - - 8.48329 - 47.36757 - - - 8.48342 - 47.36755 - - - 8.48358 - 47.36753 - - - 8.48383 - 47.36751 - - - 8.48592 - 47.36735 - - - 8.48622 - 47.36731 - - - 8.48641 - 47.36729 - - - 8.48652 - 47.36727 - - - 8.48667 - 47.36725 - - - 8.48682 - 47.36722 - - - 8.48702 - 47.36717 - - - 8.48716 - 47.36714 - - - 8.48734 - 47.36709 - - - 8.48754 - 47.36703 - - - 8.48769 - 47.36698 - - - 8.48793 - 47.36689 - - - 8.48909 - 47.36646 - - - 8.48930 - 47.36638 - - - 8.48945 - 47.36634 - - - 8.48953 - 47.36632 - - - 8.48960 - 47.36630 - - - 8.48976 - 47.36626 - - - 8.48992 - 47.36623 - - - 8.49002 - 47.36621 - - - 8.49096 - 47.36605 - - - 8.49117 - 47.36601 - - - 8.49131 - 47.36598 - - - 8.49138 - 47.36597 - - - 8.49152 - 47.36593 - - - 8.49169 - 47.36587 - - - 8.49182 - 47.36582 - - - 8.49189 - 47.36579 - - - 8.49270 - 47.36545 - - - 8.49297 - 47.36534 - - - 8.49309 - 47.36529 - - - 8.49324 - 47.36524 - - - 8.49335 - 47.36520 - - - 8.49354 - 47.36515 - - - 8.49368 - 47.36511 - - - 8.49376 - 47.36509 - - - 8.49392 - 47.36506 - - - 8.49405 - 47.36503 - - - 8.49425 - 47.36500 - - - 8.49445 - 47.36498 - - - 8.49469 - 47.36495 - - - 8.49492 - 47.36494 - - - 8.49506 - 47.36493 - - - 8.49506 - 47.36493 - - - 8.49525 - 47.36493 - - - 8.49537 - 47.36493 - - - 8.49613 - 47.36495 - - - 8.49655 - 47.36496 - - - 8.50353 - 47.36498 - - - 8.50353 - 47.36498 - - - 8.50522 - 47.36498 - - - 8.50549 - 47.36498 - - - 8.50581 - 47.36497 - - - 8.50598 - 47.36496 - - - 8.50623 - 47.36495 - - - 8.50656 - 47.36493 - - - 8.50684 - 47.36491 - - - 8.50705 - 47.36489 - - - 8.50737 - 47.36485 - - - 8.50752 - 47.36483 - - - 8.50752 - 47.36483 - - - 8.50771 - 47.36481 - - - 8.50794 - 47.36478 - - - 8.51541 - 47.36364 - - - 8.51559 - 47.36361 - - - 8.51581 - 47.36357 - - - 8.51600 - 47.36354 - - - 8.51614 - 47.36350 - - - 8.51622 - 47.36348 - - - 8.51641 - 47.36343 - - - 8.51650 - 47.36340 - - - 8.51661 - 47.36337 - - - 8.51671 - 47.36333 - - - 8.51692 - 47.36325 - - - 8.51828 - 47.36273 - - - 8.51828 - 47.36273 - - - 8.51933 - 47.36232 - - - 8.51947 - 47.36228 - - - 8.51952 - 47.36226 - - - 8.51964 - 47.36223 - - - 8.51970 - 47.36221 - - - 8.51985 - 47.36219 - - - 8.51996 - 47.36217 - - - 8.52002 - 47.36216 - - - 8.52013 - 47.36215 - - - 8.52019 - 47.36215 - - - 8.52031 - 47.36214 - - - 8.52042 - 47.36214 - - - 8.52053 - 47.36215 - - - 8.52059 - 47.36215 - - - 8.52068 - 47.36216 - - - 8.52080 - 47.36218 - - - 8.52090 - 47.36219 - - - 8.52101 - 47.36221 - - - 8.52111 - 47.36224 - - - 8.52119 - 47.36226 - - - 8.52127 - 47.36229 - - - 8.52137 - 47.36233 - - - 8.52146 - 47.36237 - - - 8.52152 - 47.36240 - - - 8.52162 - 47.36246 - - - 8.52177 - 47.36255 - - - 8.52193 - 47.36268 - - - 8.52214 - 47.36286 - - - 8.52226 - 47.36297 - - - 8.52249 - 47.36320 - - - 8.52312 - 47.36387 - - - 8.52325 - 47.36402 - - - 8.52342 - 47.36426 - - - 8.52356 - 47.36452 - - - 8.52378 - 47.36493 - - - 8.52388 - 47.36509 - - - 8.52400 - 47.36525 - - - 8.52421 - 47.36550 - - - 8.52450 - 47.36578 - - - 8.52480 - 47.36605 - - - 8.52503 - 47.36625 - - - 8.52524 - 47.36643 - - - 8.52546 - 47.36659 - - - 8.52572 - 47.36675 - - - 8.52597 - 47.36689 - - - 8.52625 - 47.36703 - - - 8.52653 - 47.36715 - - - 8.52679 - 47.36724 - - - 8.52702 - 47.36732 - - - 8.52764 - 47.36751 - - - 8.52796 - 47.36762 - - - 8.52817 - 47.36771 - - - 8.52836 - 47.36781 - - - 8.52855 - 47.36794 - - - 8.52873 - 47.36807 - - - 8.52889 - 47.36822 - - - 8.52898 - 47.36832 - - - 8.52924 - 47.36865 - - - 8.52953 - 47.36901 - - - 8.52973 - 47.36924 - - - 8.52981 - 47.36933 - - - 8.52991 - 47.36943 - - - 8.53001 - 47.36953 - - - 8.53026 - 47.36974 - - - 8.53058 - 47.37000 - - - 8.53071 - 47.37011 - - - 8.53087 - 47.37026 - - - 8.53097 - 47.37036 - - - 8.53106 - 47.37045 - - - 8.53113 - 47.37055 - - - 8.53125 - 47.37073 - - - 8.53133 - 47.37088 - - - 8.53137 - 47.37098 - - - 8.53141 - 47.37108 - - - 8.53145 - 47.37121 - - - 8.53163 - 47.37181 - - - 8.53168 - 47.37198 - - - 8.53176 - 47.37216 - - - 8.53179 - 47.37222 - - - 8.53179 - 47.37222 - - - 8.53176 - 47.37216 - - - 8.53168 - 47.37198 - - - 8.53163 - 47.37181 - - - 8.53145 - 47.37121 - - - 8.53141 - 47.37108 - - - 8.53137 - 47.37098 - - - 8.53133 - 47.37088 - - - 8.53125 - 47.37073 - - - 8.53113 - 47.37055 - - - 8.53106 - 47.37045 - - - 8.53097 - 47.37036 - - - 8.53087 - 47.37026 - - - 8.53071 - 47.37011 - - - 8.53058 - 47.37000 - - - 8.53026 - 47.36974 - - - 8.53001 - 47.36953 - - - 8.52991 - 47.36943 - - - 8.52981 - 47.36933 - - - 8.52973 - 47.36924 - - - 8.52953 - 47.36901 - - - 8.52924 - 47.36865 - - - 8.52898 - 47.36832 - - - 8.52889 - 47.36822 - - - 8.52873 - 47.36807 - - - 8.52855 - 47.36794 - - - 8.52836 - 47.36781 - - - 8.52817 - 47.36771 - - - 8.52796 - 47.36762 - - - 8.52764 - 47.36751 - - - 8.52702 - 47.36732 - - - 8.52679 - 47.36724 - - - 8.52653 - 47.36715 - - - 8.52625 - 47.36703 - - - 8.52597 - 47.36689 - - - 8.52572 - 47.36675 - - - 8.52546 - 47.36659 - - - 8.52524 - 47.36643 - - - 8.52503 - 47.36625 - - - 8.52480 - 47.36605 - - - 8.52450 - 47.36578 - - - 8.52421 - 47.36550 - - - 8.52400 - 47.36525 - - - 8.52388 - 47.36509 - - - 8.52378 - 47.36493 - - - 8.52356 - 47.36452 - - - 8.52342 - 47.36426 - - - 8.52325 - 47.36402 - - - 8.52312 - 47.36387 - - - 8.52249 - 47.36320 - - - 8.52238 - 47.36309 - - - 8.52226 - 47.36297 - - - 8.52214 - 47.36286 - - - 8.52193 - 47.36268 - - - 8.52214 - 47.36287 - - - 8.52218 - 47.36292 - - - 8.52222 - 47.36298 - - - 8.52226 - 47.36304 - - - 8.52229 - 47.36310 - - - 8.52232 - 47.36315 - - - 8.52236 - 47.36326 - - - 8.52238 - 47.36332 - - - 8.52239 - 47.36338 - - - 8.52240 - 47.36343 - - - 8.52241 - 47.36349 - - - 8.52242 - 47.36356 - - - 8.52244 - 47.36416 - - - 8.52244 - 47.36427 - - - 8.52242 - 47.36513 - - - 8.52242 - 47.36537 - - - 8.52242 - 47.36553 - - - 8.52244 - 47.36571 - - - 8.52248 - 47.36587 - - - 8.52254 - 47.36603 - - - 8.52260 - 47.36621 - - - 8.52268 - 47.36635 - - - 8.52276 - 47.36648 - - - 8.52285 - 47.36662 - - - 8.52355 - 47.36748 - - - 8.52375 - 47.36770 - - - 8.52397 - 47.36794 - - - 8.52417 - 47.36812 - - - 8.52444 - 47.36842 - - - 8.52456 - 47.36859 - - - 8.52466 - 47.36875 - - - 8.52475 - 47.36896 - - - 8.52479 - 47.36909 - - - 8.52484 - 47.36931 - - - 8.52485 - 47.36949 - - - 8.52485 - 47.36964 - - - 8.52483 - 47.36979 - - - 8.52478 - 47.36996 - - - 8.52473 - 47.37011 - - - 8.52467 - 47.37022 - - - 8.52461 - 47.37032 - - - 8.52454 - 47.37043 - - - 8.52446 - 47.37054 - - - 8.52433 - 47.37068 - - - 8.52425 - 47.37077 - - - 8.52415 - 47.37086 - - - 8.52408 - 47.37092 - - - 8.52395 - 47.37102 - - - 8.52382 - 47.37111 - - - 8.52356 - 47.37127 - - - 8.52334 - 47.37140 - - - 8.52322 - 47.37149 - - - 8.52312 - 47.37155 - - - 8.52080 - 47.37319 - - - 8.52032 - 47.37353 - - - 8.52018 - 47.37364 - - - 8.52009 - 47.37371 - - - 8.51996 - 47.37383 - - - 8.51988 - 47.37391 - - - 8.51980 - 47.37400 - - - 8.51969 - 47.37413 - - - 8.51960 - 47.37425 - - - 8.51942 - 47.37449 - - - 8.51928 - 47.37468 - - - 8.51919 - 47.37481 - - - 8.51908 - 47.37498 - - - 8.51900 - 47.37513 - - - 8.51886 - 47.37544 - - - 8.51882 - 47.37556 - - - 8.51879 - 47.37570 - - - 8.51876 - 47.37591 - - - 8.51874 - 47.37608 - - - 8.51873 - 47.37623 - - - 8.51872 - 47.37633 - - - 8.51872 - 47.37643 - - - 8.51873 - 47.37657 - - - 8.51876 - 47.37677 - - - 8.51881 - 47.37698 - - - 8.51884 - 47.37711 - - - 8.51892 - 47.37731 - - - 8.51898 - 47.37742 - - - 8.51904 - 47.37753 - - - 8.51910 - 47.37763 - - - 8.51919 - 47.37777 - - - 8.51932 - 47.37794 - - - 8.51947 - 47.37810 - - - 8.51961 - 47.37826 - - - 8.52024 - 47.37891 - - - 8.52089 - 47.37956 - - - 8.52110 - 47.37978 - - - 8.52132 - 47.37998 - - - 8.52156 - 47.38018 - - - 8.52172 - 47.38028 - - - 8.52189 - 47.38038 - - - 8.52195 - 47.38041 - - - 8.52203 - 47.38046 - - - 8.52220 - 47.38054 - - - 8.52231 - 47.38059 - - - 8.52240 - 47.38063 - - - 8.52251 - 47.38066 - - - 8.52262 - 47.38071 - - - 8.52280 - 47.38076 - - - 8.52293 - 47.38080 - - - 8.52307 - 47.38083 - - - 8.52320 - 47.38086 - - - 8.52335 - 47.38089 - - - 8.52350 - 47.38092 - - - 8.52367 - 47.38094 - - - 8.52385 - 47.38096 - - - 8.52404 - 47.38097 - - - 8.52433 - 47.38099 - - - 8.52485 - 47.38102 - - - 8.52587 - 47.38109 - - - 8.52609 - 47.38110 - - - 8.52629 - 47.38110 - - - 8.52643 - 47.38111 - - - 8.52657 - 47.38110 - - - 8.52670 - 47.38110 - - - 8.52682 - 47.38109 - - - 8.52697 - 47.38108 - - - 8.52721 - 47.38106 - - - 8.52748 - 47.38102 - - - 8.52760 - 47.38100 - - - 8.52773 - 47.38097 - - - 8.52786 - 47.38094 - - - 8.52806 - 47.38090 - - - 8.52820 - 47.38086 - - - 8.52843 - 47.38080 - - - 8.52892 - 47.38067 - - - 8.52938 - 47.38055 - - - 8.52971 - 47.38045 - - - 8.53064 - 47.38016 - - - 8.53112 - 47.38001 - - - 8.53245 - 47.37965 - - - 8.53289 - 47.37951 - - - 8.53350 - 47.37931 - - - 8.53431 - 47.37903 - - - 8.53526 - 47.37872 - - - 8.53624 - 47.37844 - - - 8.53802 - 47.37795 - - - 8.53864 - 47.37778 - - - 8.53921 - 47.37764 - - - 8.53944 - 47.37759 - - - PT22M - 14251 - - - - - Uetlibergbahn - - - 12776 - - - Sihltal-Zürich-Uetliberg-Bahn - - - ch:1:sjyid:100058:12776-001 - - - - - - 2 - - walk - - ch:1:sloid:3088:0:82204 - - Zürich HB SZU - - - - ch:1:sloid:3000:500:31 - - Zürich HB - - - 2024-03-09T06:47:00Z - 2024-03-09T07:02:00Z - PT15M - PT7M - PT8M - 189 - - - - - - 8.53946 - 47.37760 - - - 8.53943 - 47.37760 - - - - PT0M0S - 0 - - origin - left - - - - - - 8.53943 - 47.37760 - - - 8.53861 - 47.37781 - - - 8.53710 - 47.37821 - - - 8.53712 - 47.37821 - - - Bahnsteig - PT0H2M50S - 189 - - keep - straight on - - - - - - 8.53712 - 47.37821 - - - 8.53712 - 47.37821 - - - Einstieg Zug - PT0M0S - 0 - - enter - left - - - - - - 3 - - - ch:1:sloid:3000:500:31 - - Zürich HB - - - NO_DATA - - - 31 - - - 2024-03-09T07:02:00Z - - 1 - - - ch:1:sloid:7000:4:7 - - Bern - - - NO_DATA - - - 7 - - - 2024-03-09T07:58:00Z - - 2 - - - 2024-03-09 - ch:1:sjyid:100001:808-002 - ojp:91081:A - R - - rail - interRegionalRailService - - Zug - - - IC - - - - IC81 - - ojp:11 - - - Businesszone in 1. Klasse - - A__BZ - firstClass - businessServices - - - - Ruhezone in 1. Klasse - - A__RZ - mobilePhoneFreeZone - - - - Familienwagen mit Spielplatz - - A__FA - - - - Gratis-Internet mit der App SBB FreeSurf - - A__FS - - - - Platzreservierung möglich - - A___R - - - - Restaurant - - A__WR - restaurantService - - 8507492 - - Interlaken Ost - - - - - - ch:1:sloid:3000:500:31 - - Zürich HB - - - - ch:1:sloid:7000:4:7 - - Bern - - - - - 8.53711 - 47.37820 - - - 8.53624 - 47.37844 - - - 8.53526 - 47.37872 - - - 8.53431 - 47.37903 - - - 8.53350 - 47.37931 - - - 8.53289 - 47.37951 - - - 8.53245 - 47.37965 - - - 8.53112 - 47.38001 - - - 8.53064 - 47.38016 - - - 8.53050 - 47.38020 - - - 8.53039 - 47.38024 - - - 8.52995 - 47.38041 - - - 8.52974 - 47.38048 - - - 8.52940 - 47.38058 - - - 8.52921 - 47.38064 - - - 8.52842 - 47.38085 - - - 8.52795 - 47.38098 - - - 8.52775 - 47.38103 - - - 8.52760 - 47.38106 - - - 8.52745 - 47.38109 - - - 8.52735 - 47.38111 - - - 8.52724 - 47.38113 - - - 8.52712 - 47.38114 - - - 8.52691 - 47.38117 - - - 8.52677 - 47.38118 - - - 8.52664 - 47.38118 - - - 8.52651 - 47.38119 - - - 8.52635 - 47.38119 - - - 8.52617 - 47.38118 - - - 8.52587 - 47.38117 - - - 8.52554 - 47.38115 - - - 8.52508 - 47.38114 - - - 8.52484 - 47.38113 - - - 8.52468 - 47.38113 - - - 8.52456 - 47.38114 - - - 8.52436 - 47.38115 - - - 8.52411 - 47.38117 - - - 8.52398 - 47.38119 - - - 8.52371 - 47.38122 - - - 8.52355 - 47.38125 - - - 8.52341 - 47.38128 - - - 8.52327 - 47.38131 - - - 8.52313 - 47.38135 - - - 8.52302 - 47.38138 - - - 8.52290 - 47.38142 - - - 8.52276 - 47.38146 - - - 8.52259 - 47.38152 - - - 8.52243 - 47.38158 - - - 8.52221 - 47.38168 - - - 8.52201 - 47.38178 - - - 8.52177 - 47.38191 - - - 8.52154 - 47.38206 - - - 8.52139 - 47.38216 - - - 8.52124 - 47.38228 - - - 8.52101 - 47.38248 - - - 8.52082 - 47.38264 - - - 8.52062 - 47.38281 - - - 8.52051 - 47.38289 - - - 8.52041 - 47.38297 - - - 8.52030 - 47.38305 - - - 8.52019 - 47.38312 - - - 8.52005 - 47.38321 - - - 8.51992 - 47.38328 - - - 8.51980 - 47.38335 - - - 8.51968 - 47.38342 - - - 8.51951 - 47.38350 - - - 8.51937 - 47.38356 - - - 8.51923 - 47.38362 - - - 8.51910 - 47.38368 - - - 8.51899 - 47.38372 - - - 8.51887 - 47.38376 - - - 8.51875 - 47.38380 - - - 8.51859 - 47.38386 - - - 8.51840 - 47.38391 - - - 8.51776 - 47.38409 - - - 8.51693 - 47.38431 - - - 8.51553 - 47.38470 - - - 8.51485 - 47.38488 - - - 8.50948 - 47.38634 - - - 8.50886 - 47.38645 - - - 8.50866 - 47.38650 - - - 8.50850 - 47.38654 - - - 8.50783 - 47.38672 - - - 8.50697 - 47.38704 - - - 8.50678 - 47.38712 - - - 8.50642 - 47.38727 - - - 8.50606 - 47.38743 - - - 8.50578 - 47.38753 - - - 8.50552 - 47.38762 - - - 8.50526 - 47.38770 - - - 8.50151 - 47.38881 - - - 8.50122 - 47.38889 - - - 8.50105 - 47.38893 - - - 8.50086 - 47.38898 - - - 8.50066 - 47.38902 - - - 8.50044 - 47.38906 - - - 8.50018 - 47.38911 - - - 8.49974 - 47.38918 - - - 8.49932 - 47.38924 - - - 8.49894 - 47.38928 - - - 8.49860 - 47.38930 - - - 8.49834 - 47.38933 - - - 8.49819 - 47.38935 - - - 8.49805 - 47.38937 - - - 8.49789 - 47.38940 - - - 8.49771 - 47.38943 - - - 8.49682 - 47.38960 - - - 8.49665 - 47.38964 - - - 8.49650 - 47.38967 - - - 8.49633 - 47.38971 - - - 8.49619 - 47.38975 - - - 8.49602 - 47.38980 - - - 8.49558 - 47.38993 - - - 8.49516 - 47.39005 - - - 8.49487 - 47.39012 - - - 8.49469 - 47.39016 - - - 8.49401 - 47.39031 - - - 8.49368 - 47.39038 - - - 8.49318 - 47.39050 - - - 8.49273 - 47.39061 - - - 8.49234 - 47.39072 - - - 8.48911 - 47.39159 - - - 8.48726 - 47.39209 - - - 8.48713 - 47.39212 - - - 8.48703 - 47.39214 - - - 8.48659 - 47.39224 - - - 8.48574 - 47.39248 - - - 8.48565 - 47.39251 - - - 8.48499 - 47.39267 - - - 8.48231 - 47.39336 - - - 8.48153 - 47.39356 - - - 8.48096 - 47.39370 - - - 8.47399 - 47.39564 - - - 8.46941 - 47.39687 - - - 8.46904 - 47.39698 - - - 8.46827 - 47.39720 - - - 8.46451 - 47.39821 - - - 8.46367 - 47.39846 - - - 8.46341 - 47.39854 - - - 8.46322 - 47.39859 - - - 8.46296 - 47.39866 - - - 8.46264 - 47.39873 - - - 8.46253 - 47.39876 - - - 8.46232 - 47.39882 - - - 8.46172 - 47.39900 - - - 8.46147 - 47.39908 - - - 8.46122 - 47.39916 - - - 8.46110 - 47.39920 - - - 8.46072 - 47.39931 - - - 8.46037 - 47.39940 - - - 8.46014 - 47.39946 - - - 8.45970 - 47.39956 - - - 8.45948 - 47.39961 - - - 8.45929 - 47.39965 - - - 8.45906 - 47.39969 - - - 8.45887 - 47.39972 - - - 8.45866 - 47.39975 - - - 8.45849 - 47.39978 - - - 8.45831 - 47.39980 - - - 8.45809 - 47.39982 - - - 8.45787 - 47.39984 - - - 8.45770 - 47.39985 - - - 8.45751 - 47.39985 - - - 8.45709 - 47.39987 - - - 8.45694 - 47.39987 - - - 8.45680 - 47.39987 - - - 8.45666 - 47.39986 - - - 8.45652 - 47.39986 - - - 8.45634 - 47.39985 - - - 8.45441 - 47.39970 - - - 8.44965 - 47.39936 - - - 8.44954 - 47.39935 - - - 8.44945 - 47.39935 - - - 8.44934 - 47.39935 - - - 8.44909 - 47.39935 - - - 8.44899 - 47.39935 - - - 8.44886 - 47.39934 - - - 8.44653 - 47.39918 - - - 8.44536 - 47.39909 - - - 8.44225 - 47.39887 - - - 8.44211 - 47.39886 - - - 8.44194 - 47.39885 - - - 8.44169 - 47.39886 - - - 8.44151 - 47.39885 - - - 8.44117 - 47.39882 - - - 8.44084 - 47.39881 - - - 8.44052 - 47.39880 - - - 8.44002 - 47.39877 - - - 8.43950 - 47.39872 - - - 8.43910 - 47.39870 - - - 8.43865 - 47.39868 - - - 8.43823 - 47.39866 - - - 8.43813 - 47.39865 - - - 8.43747 - 47.39860 - - - 8.43672 - 47.39857 - - - 8.43607 - 47.39851 - - - 8.43538 - 47.39847 - - - 8.43505 - 47.39845 - - - 8.43437 - 47.39841 - - - 8.43312 - 47.39832 - - - 8.43222 - 47.39825 - - - 8.43133 - 47.39816 - - - 8.43048 - 47.39807 - - - 8.42964 - 47.39798 - - - 8.42908 - 47.39794 - - - 8.42848 - 47.39792 - - - 8.42806 - 47.39792 - - - 8.42746 - 47.39794 - - - 8.42687 - 47.39799 - - - 8.42621 - 47.39806 - - - 8.42555 - 47.39816 - - - 8.42350 - 47.39850 - - - 8.42209 - 47.39873 - - - 8.42028 - 47.39901 - - - 8.41950 - 47.39912 - - - 8.41803 - 47.39932 - - - 8.41734 - 47.39942 - - - 8.41264 - 47.40015 - - - 8.41183 - 47.40029 - - - 8.41136 - 47.40038 - - - 8.41107 - 47.40045 - - - 8.41077 - 47.40053 - - - 8.41049 - 47.40062 - - - 8.41021 - 47.40072 - - - 8.40984 - 47.40086 - - - 8.40955 - 47.40098 - - - 8.40928 - 47.40110 - - - 8.40902 - 47.40122 - - - 8.40881 - 47.40133 - - - 8.40859 - 47.40146 - - - 8.40833 - 47.40164 - - - 8.40805 - 47.40183 - - - 8.40780 - 47.40202 - - - 8.40761 - 47.40217 - - - 8.40745 - 47.40232 - - - 8.40727 - 47.40250 - - - 8.40713 - 47.40266 - - - 8.40700 - 47.40282 - - - 8.40686 - 47.40302 - - - 8.40672 - 47.40324 - - - 8.40656 - 47.40351 - - - 8.40525 - 47.40589 - - - 8.40484 - 47.40661 - - - 8.40422 - 47.40767 - - - 8.40416 - 47.40776 - - - 8.40387 - 47.40822 - - - 8.40371 - 47.40844 - - - 8.40317 - 47.40913 - - - 8.40294 - 47.40936 - - - 8.40285 - 47.40944 - - - 8.40274 - 47.40953 - - - 8.40262 - 47.40962 - - - 8.40242 - 47.40975 - - - 8.40181 - 47.41013 - - - 8.40173 - 47.41018 - - - 8.40148 - 47.41035 - - - 8.40077 - 47.41075 - - - 8.40048 - 47.41091 - - - 8.40033 - 47.41099 - - - 8.40015 - 47.41107 - - - 8.39976 - 47.41122 - - - 8.39963 - 47.41127 - - - 8.39940 - 47.41138 - - - 8.39909 - 47.41157 - - - 8.39261 - 47.41608 - - - 8.39243 - 47.41620 - - - 8.39213 - 47.41640 - - - 8.39184 - 47.41658 - - - 8.39169 - 47.41665 - - - 8.39127 - 47.41685 - - - 8.39099 - 47.41698 - - - 8.38955 - 47.41770 - - - 8.38200 - 47.42145 - - - 8.38139 - 47.42174 - - - 8.38121 - 47.42182 - - - 8.38109 - 47.42188 - - - 8.38100 - 47.42193 - - - 8.38089 - 47.42199 - - - 8.38070 - 47.42211 - - - 8.38017 - 47.42236 - - - 8.37984 - 47.42255 - - - 8.37966 - 47.42264 - - - 8.37956 - 47.42269 - - - 8.37949 - 47.42272 - - - 8.37943 - 47.42274 - - - 8.37933 - 47.42278 - - - 8.37924 - 47.42281 - - - 8.37896 - 47.42289 - - - 8.37887 - 47.42292 - - - 8.37852 - 47.42301 - - - 8.37830 - 47.42308 - - - 8.37796 - 47.42319 - - - 8.37763 - 47.42332 - - - 8.37737 - 47.42345 - - - 8.37639 - 47.42390 - - - 8.37591 - 47.42407 - - - 8.37565 - 47.42419 - - - 8.37512 - 47.42444 - - - 8.37476 - 47.42457 - - - 8.37448 - 47.42468 - - - 8.36759 - 47.42789 - - - 8.36630 - 47.42848 - - - 8.36616 - 47.42854 - - - 8.36599 - 47.42861 - - - 8.36581 - 47.42869 - - - 8.36525 - 47.42895 - - - 8.36511 - 47.42901 - - - 8.36495 - 47.42907 - - - 8.36464 - 47.42917 - - - 8.36338 - 47.42959 - - - 8.36300 - 47.42974 - - - 8.36269 - 47.42987 - - - 8.36229 - 47.43007 - - - 8.36018 - 47.43122 - - - 8.35973 - 47.43142 - - - 8.35769 - 47.43217 - - - 8.35683 - 47.43246 - - - 8.35586 - 47.43279 - - - 8.35518 - 47.43302 - - - 8.35501 - 47.43308 - - - 8.35478 - 47.43316 - - - 8.35453 - 47.43328 - - - 8.35431 - 47.43337 - - - 8.35192 - 47.43423 - - - 8.35143 - 47.43441 - - - 8.35037 - 47.43483 - - - 8.35020 - 47.43489 - - - 8.34689 - 47.43609 - - - 8.34592 - 47.43644 - - - 8.34480 - 47.43684 - - - 8.34415 - 47.43707 - - - 8.34381 - 47.43717 - - - 8.34362 - 47.43723 - - - 8.34342 - 47.43729 - - - 8.34322 - 47.43735 - - - 8.34302 - 47.43741 - - - 8.34165 - 47.43769 - - - 8.34024 - 47.43790 - - - 8.33923 - 47.43799 - - - 8.33820 - 47.43803 - - - 8.33726 - 47.43802 - - - 8.33661 - 47.43798 - - - 8.33600 - 47.43793 - - - 8.33529 - 47.43785 - - - 8.33462 - 47.43775 - - - 8.33314 - 47.43751 - - - 8.33153 - 47.43728 - - - 8.32196 - 47.43573 - - - 8.27938 - 47.42869 - - - 8.27852 - 47.42855 - - - 8.27691 - 47.42826 - - - 8.27581 - 47.42806 - - - 8.27348 - 47.42760 - - - 8.27078 - 47.42708 - - - 8.27022 - 47.42699 - - - 8.26993 - 47.42695 - - - 8.26956 - 47.42690 - - - 8.26918 - 47.42685 - - - 8.26868 - 47.42681 - - - 8.26806 - 47.42677 - - - 8.26775 - 47.42675 - - - 8.26706 - 47.42673 - - - 8.26629 - 47.42672 - - - 8.26581 - 47.42674 - - - 8.26357 - 47.42682 - - - 8.26033 - 47.42694 - - - 8.25896 - 47.42697 - - - 8.25821 - 47.42696 - - - 8.25744 - 47.42693 - - - 8.25667 - 47.42687 - - - 8.25592 - 47.42678 - - - 8.25532 - 47.42668 - - - 8.25477 - 47.42659 - - - 8.25424 - 47.42647 - - - 8.25374 - 47.42635 - - - 8.25334 - 47.42623 - - - 8.25279 - 47.42606 - - - 8.25148 - 47.42560 - - - 8.25077 - 47.42528 - - - 8.25010 - 47.42494 - - - 8.24954 - 47.42461 - - - 8.24891 - 47.42422 - - - 8.24843 - 47.42388 - - - 8.24821 - 47.42370 - - - 8.24765 - 47.42324 - - - 8.24719 - 47.42280 - - - 8.24643 - 47.42197 - - - 8.24564 - 47.42107 - - - 8.24543 - 47.42084 - - - 8.24518 - 47.42060 - - - 8.24492 - 47.42036 - - - 8.24462 - 47.42005 - - - 8.24425 - 47.41969 - - - 8.24386 - 47.41933 - - - 8.24349 - 47.41899 - - - 8.24300 - 47.41858 - - - 8.24277 - 47.41838 - - - 8.24239 - 47.41810 - - - 8.24217 - 47.41795 - - - 8.24189 - 47.41779 - - - 8.24138 - 47.41752 - - - 8.24088 - 47.41720 - - - 8.24045 - 47.41695 - - - 8.23988 - 47.41664 - - - 8.23929 - 47.41636 - - - 8.23872 - 47.41609 - - - 8.23812 - 47.41584 - - - 8.23743 - 47.41558 - - - 8.23701 - 47.41543 - - - 8.23585 - 47.41505 - - - 8.23495 - 47.41478 - - - 8.23475 - 47.41470 - - - 8.23440 - 47.41455 - - - 8.23416 - 47.41446 - - - 8.23356 - 47.41426 - - - 8.23342 - 47.41421 - - - 8.23270 - 47.41395 - - - 8.23137 - 47.41356 - - - 8.23041 - 47.41327 - - - 8.22988 - 47.41312 - - - 8.22864 - 47.41272 - - - 8.22765 - 47.41244 - - - 8.22235 - 47.41093 - - - 8.22072 - 47.41046 - - - 8.22002 - 47.41026 - - - 8.21929 - 47.41003 - - - 8.21855 - 47.40974 - - - 8.21827 - 47.40961 - - - 8.21743 - 47.40919 - - - 8.21708 - 47.40899 - - - 8.21639 - 47.40856 - - - 8.21583 - 47.40819 - - - 8.21564 - 47.40807 - - - 8.21430 - 47.40723 - - - 8.21334 - 47.40664 - - - 8.21206 - 47.40587 - - - 8.21116 - 47.40537 - - - 8.21071 - 47.40509 - - - 8.21055 - 47.40499 - - - 8.21021 - 47.40474 - - - 8.20989 - 47.40449 - - - 8.20958 - 47.40421 - - - 8.20935 - 47.40399 - - - 8.20906 - 47.40367 - - - 8.20887 - 47.40345 - - - 8.20868 - 47.40319 - - - 8.20847 - 47.40288 - - - 8.20790 - 47.40191 - - - 8.20745 - 47.40108 - - - 8.20714 - 47.40050 - - - 8.20672 - 47.39965 - - - 8.20652 - 47.39923 - - - 8.20631 - 47.39877 - - - 8.20602 - 47.39811 - - - 8.20577 - 47.39763 - - - 8.20566 - 47.39742 - - - 8.20552 - 47.39721 - - - 8.20512 - 47.39668 - - - 8.20468 - 47.39619 - - - 8.20431 - 47.39585 - - - 8.20397 - 47.39557 - - - 8.20357 - 47.39528 - - - 8.20330 - 47.39510 - - - 8.20278 - 47.39479 - - - 8.20225 - 47.39453 - - - 8.20168 - 47.39427 - - - 8.20104 - 47.39403 - - - 8.20045 - 47.39385 - - - 8.19989 - 47.39370 - - - 8.19955 - 47.39363 - - - 8.19906 - 47.39354 - - - 8.19840 - 47.39342 - - - 8.19575 - 47.39301 - - - 8.19263 - 47.39253 - - - 8.18425 - 47.39123 - - - 8.18265 - 47.39098 - - - 8.18089 - 47.39071 - - - 8.18020 - 47.39061 - - - 8.17906 - 47.39042 - - - 8.17795 - 47.39027 - - - 8.17738 - 47.39020 - - - 8.17678 - 47.39017 - - - 8.17612 - 47.39016 - - - 8.17560 - 47.39018 - - - 8.17516 - 47.39022 - - - 8.17448 - 47.39030 - - - 8.17398 - 47.39038 - - - 8.17349 - 47.39048 - - - 8.17319 - 47.39056 - - - 8.17291 - 47.39064 - - - 8.17259 - 47.39073 - - - 8.17199 - 47.39094 - - - 8.17096 - 47.39133 - - - 8.17023 - 47.39158 - - - 8.16950 - 47.39181 - - - 8.16870 - 47.39204 - - - 8.16714 - 47.39248 - - - 8.16552 - 47.39292 - - - 8.16398 - 47.39337 - - - 8.16324 - 47.39360 - - - 8.16252 - 47.39383 - - - 8.16225 - 47.39392 - - - 8.16148 - 47.39416 - - - 8.16099 - 47.39431 - - - 8.16064 - 47.39441 - - - 8.16013 - 47.39455 - - - 8.15977 - 47.39465 - - - 8.15525 - 47.39608 - - - 8.15098 - 47.39744 - - - 8.15020 - 47.39769 - - - 8.14945 - 47.39795 - - - 8.14885 - 47.39818 - - - 8.14827 - 47.39843 - - - 8.14753 - 47.39879 - - - 8.14682 - 47.39919 - - - 8.14628 - 47.39954 - - - 8.14577 - 47.39989 - - - 8.14454 - 47.40085 - - - 8.14365 - 47.40149 - - - 8.14311 - 47.40185 - - - 8.14282 - 47.40201 - - - 8.14217 - 47.40236 - - - 8.14162 - 47.40263 - - - 8.14103 - 47.40289 - - - 8.14040 - 47.40313 - - - 8.13976 - 47.40335 - - - 8.13923 - 47.40351 - - - 8.13873 - 47.40365 - - - 8.13800 - 47.40382 - - - 8.13743 - 47.40393 - - - 8.13682 - 47.40403 - - - 8.13629 - 47.40410 - - - 8.13577 - 47.40415 - - - 8.13542 - 47.40418 - - - 8.13477 - 47.40422 - - - 8.13438 - 47.40423 - - - 8.13361 - 47.40424 - - - 8.13285 - 47.40421 - - - 8.13240 - 47.40418 - - - 8.13198 - 47.40415 - - - 8.13085 - 47.40403 - - - 8.13021 - 47.40395 - - - 8.12921 - 47.40380 - - - 8.12777 - 47.40355 - - - 8.12674 - 47.40335 - - - 8.12567 - 47.40311 - - - 8.12356 - 47.40264 - - - 8.12159 - 47.40227 - - - 8.12135 - 47.40222 - - - 8.11980 - 47.40192 - - - 8.11906 - 47.40179 - - - 8.11877 - 47.40174 - - - 8.11663 - 47.40144 - - - 8.11621 - 47.40138 - - - 8.08318 - 47.39657 - - - 8.08125 - 47.39628 - - - 8.07947 - 47.39602 - - - 8.07750 - 47.39576 - - - 8.07485 - 47.39544 - - - 8.07384 - 47.39531 - - - 8.07175 - 47.39500 - - - 8.07072 - 47.39485 - - - 8.06950 - 47.39464 - - - 8.06845 - 47.39447 - - - 8.06703 - 47.39426 - - - 8.06496 - 47.39396 - - - 8.06360 - 47.39376 - - - 8.06162 - 47.39347 - - - 8.06070 - 47.39332 - - - 8.06047 - 47.39328 - - - 8.05984 - 47.39313 - - - 8.05956 - 47.39307 - - - 8.05905 - 47.39297 - - - 8.05855 - 47.39286 - - - 8.05806 - 47.39275 - - - 8.05765 - 47.39265 - - - 8.05747 - 47.39261 - - - 8.05716 - 47.39254 - - - 8.05692 - 47.39250 - - - 8.05668 - 47.39245 - - - 8.05560 - 47.39218 - - - 8.05511 - 47.39205 - - - 8.05408 - 47.39172 - - - 8.05315 - 47.39143 - - - 8.05251 - 47.39125 - - - 8.05176 - 47.39104 - - - 8.04924 - 47.39040 - - - 8.04831 - 47.39014 - - - 8.04732 - 47.38988 - - - 8.04719 - 47.38984 - - - 8.04691 - 47.38976 - - - 8.04635 - 47.38962 - - - 8.04526 - 47.38932 - - - 8.04445 - 47.38912 - - - 8.04345 - 47.38890 - - - 8.04078 - 47.38839 - - - 8.03952 - 47.38813 - - - 8.03904 - 47.38802 - - - 8.03832 - 47.38787 - - - 8.03747 - 47.38768 - - - 8.03645 - 47.38743 - - - 8.03579 - 47.38727 - - - 8.03513 - 47.38710 - - - 8.03404 - 47.38679 - - - 8.03257 - 47.38641 - - - 8.03042 - 47.38586 - - - 8.02929 - 47.38557 - - - 8.02848 - 47.38535 - - - 8.02771 - 47.38512 - - - 8.02688 - 47.38485 - - - 8.02593 - 47.38450 - - - 8.02485 - 47.38412 - - - 8.02107 - 47.38267 - - - 8.02009 - 47.38227 - - - 8.01598 - 47.38061 - - - 8.01538 - 47.38038 - - - 8.01457 - 47.38007 - - - 8.01367 - 47.37971 - - - 8.01150 - 47.37884 - - - 8.01109 - 47.37866 - - - 8.00704 - 47.37702 - - - 8.00437 - 47.37595 - - - 8.00370 - 47.37564 - - - 8.00303 - 47.37527 - - - 8.00240 - 47.37486 - - - 8.00185 - 47.37437 - - - 8.00152 - 47.37403 - - - 8.00111 - 47.37351 - - - 8.00085 - 47.37306 - - - 8.00072 - 47.37278 - - - 7.99843 - 47.36778 - - - 7.99835 - 47.36761 - - - 7.99806 - 47.36708 - - - 7.99789 - 47.36674 - - - 7.99750 - 47.36588 - - - 7.99727 - 47.36543 - - - 7.99701 - 47.36498 - - - 7.99660 - 47.36446 - - - 7.99578 - 47.36367 - - - 7.99508 - 47.36312 - - - 7.99482 - 47.36292 - - - 7.99453 - 47.36273 - - - 7.99418 - 47.36252 - - - 7.99355 - 47.36219 - - - 7.99297 - 47.36193 - - - 7.99240 - 47.36172 - - - 7.98996 - 47.36083 - - - 7.98619 - 47.35945 - - - 7.98366 - 47.35850 - - - 7.98055 - 47.35734 - - - 7.97964 - 47.35700 - - - 7.97680 - 47.35587 - - - 7.97612 - 47.35562 - - - 7.97441 - 47.35498 - - - 7.97096 - 47.35369 - - - 7.96667 - 47.35210 - - - 7.96391 - 47.35106 - - - 7.96328 - 47.35084 - - - 7.96265 - 47.35066 - - - 7.96208 - 47.35052 - - - 7.96151 - 47.35041 - - - 7.96090 - 47.35033 - - - 7.96028 - 47.35028 - - - 7.95959 - 47.35025 - - - 7.95892 - 47.35026 - - - 7.95828 - 47.35031 - - - 7.95767 - 47.35038 - - - 7.95723 - 47.35044 - - - 7.95680 - 47.35053 - - - 7.95621 - 47.35068 - - - 7.95561 - 47.35084 - - - 7.95501 - 47.35107 - - - 7.95469 - 47.35119 - - - 7.95428 - 47.35138 - - - 7.95317 - 47.35194 - - - 7.95161 - 47.35274 - - - 7.95100 - 47.35303 - - - 7.95043 - 47.35327 - - - 7.95000 - 47.35342 - - - 7.94953 - 47.35357 - - - 7.94898 - 47.35372 - - - 7.94840 - 47.35386 - - - 7.94755 - 47.35403 - - - 7.94708 - 47.35410 - - - 7.94661 - 47.35415 - - - 7.94448 - 47.35437 - - - 7.94275 - 47.35456 - - - 7.93805 - 47.35513 - - - 7.93542 - 47.35545 - - - 7.93467 - 47.35553 - - - 7.93369 - 47.35567 - - - 7.93242 - 47.35590 - - - 7.93159 - 47.35609 - - - 7.93079 - 47.35630 - - - 7.93015 - 47.35649 - - - 7.92960 - 47.35667 - - - 7.92941 - 47.35674 - - - 7.92853 - 47.35707 - - - 7.92764 - 47.35746 - - - 7.92701 - 47.35777 - - - 7.92654 - 47.35803 - - - 7.92584 - 47.35845 - - - 7.92561 - 47.35859 - - - 7.92473 - 47.35909 - - - 7.92386 - 47.35956 - - - 7.92345 - 47.35977 - - - 7.92307 - 47.35994 - - - 7.92269 - 47.36008 - - - 7.92217 - 47.36025 - - - 7.92190 - 47.36033 - - - 7.92159 - 47.36040 - - - 7.92118 - 47.36048 - - - 7.92099 - 47.36052 - - - 7.92079 - 47.36054 - - - 7.92049 - 47.36058 - - - 7.92001 - 47.36062 - - - 7.91960 - 47.36063 - - - 7.91912 - 47.36062 - - - 7.91862 - 47.36058 - - - 7.91807 - 47.36051 - - - 7.91762 - 47.36042 - - - 7.91706 - 47.36028 - - - 7.91649 - 47.36009 - - - 7.91586 - 47.35982 - - - 7.91552 - 47.35965 - - - 7.91399 - 47.35887 - - - 7.91386 - 47.35881 - - - 7.91283 - 47.35823 - - - 7.91204 - 47.35783 - - - 7.91176 - 47.35768 - - - 7.91154 - 47.35755 - - - 7.91125 - 47.35736 - - - 7.91093 - 47.35712 - - - 7.91027 - 47.35650 - - - 7.90955 - 47.35579 - - - 7.90924 - 47.35542 - - - 7.90913 - 47.35528 - - - 7.90901 - 47.35512 - - - 7.90893 - 47.35499 - - - 7.90886 - 47.35487 - - - 7.90877 - 47.35473 - - - 7.90857 - 47.35435 - - - 7.90845 - 47.35407 - - - 7.90842 - 47.35401 - - - 7.90837 - 47.35385 - - - 7.90831 - 47.35358 - - - 7.90825 - 47.35326 - - - 7.90798 - 47.35162 - - - 7.90795 - 47.35142 - - - 7.90790 - 47.35116 - - - 7.90777 - 47.35066 - - - 7.90753 - 47.34977 - - - 7.90748 - 47.34956 - - - 7.90744 - 47.34941 - - - 7.90742 - 47.34926 - - - 7.90739 - 47.34914 - - - 7.90736 - 47.34905 - - - 7.90732 - 47.34894 - - - 7.90729 - 47.34886 - - - 7.90726 - 47.34874 - - - 7.90720 - 47.34839 - - - 7.90712 - 47.34795 - - - 7.90708 - 47.34766 - - - 7.90706 - 47.34752 - - - 7.90706 - 47.34739 - - - 7.90706 - 47.34725 - - - 7.90707 - 47.34711 - - - 7.90708 - 47.34695 - - - 7.90710 - 47.34681 - - - 7.90714 - 47.34666 - - - 7.90722 - 47.34640 - - - 7.90728 - 47.34625 - - - 7.90746 - 47.34581 - - - 7.90774 - 47.34513 - - - 7.90787 - 47.34482 - - - 7.90791 - 47.34469 - - - 7.90797 - 47.34450 - - - 7.90801 - 47.34436 - - - 7.90805 - 47.34418 - - - 7.90808 - 47.34400 - - - 7.90809 - 47.34392 - - - 7.90810 - 47.34384 - - - 7.90812 - 47.34368 - - - 7.90812 - 47.34352 - - - 7.90811 - 47.34319 - - - 7.90810 - 47.34308 - - - 7.90808 - 47.34284 - - - 7.90806 - 47.34275 - - - 7.90803 - 47.34263 - - - 7.90800 - 47.34248 - - - 7.90783 - 47.34197 - - - 7.90762 - 47.34147 - - - 7.90739 - 47.34103 - - - 7.90705 - 47.34048 - - - 7.90662 - 47.33988 - - - 7.90643 - 47.33963 - - - 7.90623 - 47.33939 - - - 7.90585 - 47.33898 - - - 7.90541 - 47.33854 - - - 7.90504 - 47.33824 - - - 7.90461 - 47.33786 - - - 7.90370 - 47.33709 - - - 7.90323 - 47.33664 - - - 7.90266 - 47.33604 - - - 7.89784 - 47.33038 - - - 7.89710 - 47.32947 - - - 7.89634 - 47.32837 - - - 7.89596 - 47.32771 - - - 7.89557 - 47.32701 - - - 7.89477 - 47.32522 - - - 7.89447 - 47.32449 - - - 7.89417 - 47.32375 - - - 7.89398 - 47.32320 - - - 7.89385 - 47.32279 - - - 7.89375 - 47.32240 - - - 7.89366 - 47.32200 - - - 7.89359 - 47.32159 - - - 7.89354 - 47.32116 - - - 7.89350 - 47.32065 - - - 7.89348 - 47.32019 - - - 7.89348 - 47.31972 - - - 7.89349 - 47.31808 - - - 7.89348 - 47.31777 - - - 7.89342 - 47.31726 - - - 7.89335 - 47.31670 - - - 7.89328 - 47.31635 - - - 7.89320 - 47.31601 - - - 7.89313 - 47.31574 - - - 7.89306 - 47.31547 - - - 7.89287 - 47.31489 - - - 7.89263 - 47.31434 - - - 7.89240 - 47.31382 - - - 7.89228 - 47.31357 - - - 7.89214 - 47.31332 - - - 7.89192 - 47.31293 - - - 7.89168 - 47.31257 - - - 7.89137 - 47.31217 - - - 7.89109 - 47.31182 - - - 7.89087 - 47.31158 - - - 7.89070 - 47.31140 - - - 7.89053 - 47.31122 - - - 7.89016 - 47.31088 - - - 7.88992 - 47.31068 - - - 7.88966 - 47.31049 - - - 7.88872 - 47.30983 - - - 7.88781 - 47.30929 - - - 7.88711 - 47.30893 - - - 7.88646 - 47.30864 - - - 7.88552 - 47.30829 - - - 7.88507 - 47.30814 - - - 7.88454 - 47.30798 - - - 7.88311 - 47.30760 - - - 7.88175 - 47.30724 - - - 7.87943 - 47.30664 - - - 7.87825 - 47.30630 - - - 7.87705 - 47.30591 - - - 7.87598 - 47.30554 - - - 7.87262 - 47.30423 - - - 7.87061 - 47.30344 - - - 7.86970 - 47.30308 - - - 7.86903 - 47.30284 - - - 7.86750 - 47.30222 - - - 7.86714 - 47.30207 - - - 7.86660 - 47.30183 - - - 7.86618 - 47.30165 - - - 7.86374 - 47.30067 - - - 7.86239 - 47.30004 - - - 7.86121 - 47.29940 - - - 7.86008 - 47.29868 - - - 7.85887 - 47.29777 - - - 7.85794 - 47.29696 - - - 7.85705 - 47.29606 - - - 7.85658 - 47.29550 - - - 7.85615 - 47.29494 - - - 7.85563 - 47.29420 - - - 7.85521 - 47.29345 - - - 7.85504 - 47.29313 - - - 7.85488 - 47.29279 - - - 7.85467 - 47.29231 - - - 7.85450 - 47.29184 - - - 7.85427 - 47.29109 - - - 7.85416 - 47.29066 - - - 7.85407 - 47.29020 - - - 7.85400 - 47.28967 - - - 7.85396 - 47.28928 - - - 7.85394 - 47.28887 - - - 7.85394 - 47.28799 - - - 7.85398 - 47.28710 - - - 7.85400 - 47.28619 - - - 7.85400 - 47.28523 - - - 7.85396 - 47.28427 - - - 7.85390 - 47.28333 - - - 7.85379 - 47.28222 - - - 7.85372 - 47.28167 - - - 7.85364 - 47.28110 - - - 7.85344 - 47.27996 - - - 7.85332 - 47.27937 - - - 7.85318 - 47.27875 - - - 7.85294 - 47.27777 - - - 7.85266 - 47.27678 - - - 7.85230 - 47.27569 - - - 7.85209 - 47.27511 - - - 7.85185 - 47.27447 - - - 7.85146 - 47.27358 - - - 7.85105 - 47.27273 - - - 7.85062 - 47.27194 - - - 7.85037 - 47.27150 - - - 7.85009 - 47.27105 - - - 7.84978 - 47.27055 - - - 7.84943 - 47.27003 - - - 7.84901 - 47.26943 - - - 7.84858 - 47.26887 - - - 7.84797 - 47.26809 - - - 7.84756 - 47.26761 - - - 7.84711 - 47.26710 - - - 7.84645 - 47.26640 - - - 7.84573 - 47.26568 - - - 7.84511 - 47.26509 - - - 7.84464 - 47.26466 - - - 7.84413 - 47.26422 - - - 7.84362 - 47.26379 - - - 7.84308 - 47.26336 - - - 7.84240 - 47.26284 - - - 7.84186 - 47.26245 - - - 7.84117 - 47.26196 - - - 7.84043 - 47.26146 - - - 7.83974 - 47.26102 - - - 7.83903 - 47.26059 - - - 7.83832 - 47.26017 - - - 7.83760 - 47.25976 - - - 7.83686 - 47.25937 - - - 7.83605 - 47.25896 - - - 7.83521 - 47.25855 - - - 7.83440 - 47.25818 - - - 7.83342 - 47.25775 - - - 7.83238 - 47.25732 - - - 7.83149 - 47.25698 - - - 7.83061 - 47.25666 - - - 7.82928 - 47.25621 - - - 7.82814 - 47.25586 - - - 7.82705 - 47.25554 - - - 7.82572 - 47.25519 - - - 7.82103 - 47.25409 - - - 7.82023 - 47.25389 - - - 7.81942 - 47.25368 - - - 7.81865 - 47.25347 - - - 7.81783 - 47.25322 - - - 7.81591 - 47.25261 - - - 7.81451 - 47.25210 - - - 7.81316 - 47.25156 - - - 7.81181 - 47.25099 - - - 7.81057 - 47.25041 - - - 7.80928 - 47.24976 - - - 7.80767 - 47.24889 - - - 7.80624 - 47.24801 - - - 7.80483 - 47.24708 - - - 7.80412 - 47.24656 - - - 7.80321 - 47.24589 - - - 7.80210 - 47.24500 - - - 7.79993 - 47.24298 - - - 7.79903 - 47.24207 - - - 7.79725 - 47.24022 - - - 7.79370 - 47.23654 - - - 7.79222 - 47.23502 - - - 7.79100 - 47.23379 - - - 7.79003 - 47.23286 - - - 7.78907 - 47.23202 - - - 7.78758 - 47.23081 - - - 7.78551 - 47.22931 - - - 7.78378 - 47.22819 - - - 7.78041 - 47.22625 - - - 7.77304 - 47.22215 - - - 7.77104 - 47.22102 - - - 7.77010 - 47.22046 - - - 7.76917 - 47.21988 - - - 7.76828 - 47.21930 - - - 7.76740 - 47.21870 - - - 7.76540 - 47.21731 - - - 7.76438 - 47.21663 - - - 7.76333 - 47.21595 - - - 7.76243 - 47.21541 - - - 7.76149 - 47.21486 - - - 7.76024 - 47.21419 - - - 7.75895 - 47.21352 - - - 7.75803 - 47.21307 - - - 7.75714 - 47.21266 - - - 7.75673 - 47.21247 - - - 7.75610 - 47.21219 - - - 7.75580 - 47.21207 - - - 7.75505 - 47.21175 - - - 7.75428 - 47.21144 - - - 7.75340 - 47.21110 - - - 7.75283 - 47.21089 - - - 7.75231 - 47.21070 - - - 7.75195 - 47.21057 - - - 7.75143 - 47.21039 - - - 7.74992 - 47.20990 - - - 7.74880 - 47.20956 - - - 7.74759 - 47.20922 - - - 7.74655 - 47.20894 - - - 7.74559 - 47.20870 - - - 7.74461 - 47.20846 - - - 7.74045 - 47.20751 - - - 7.72816 - 47.20470 - - - 7.72711 - 47.20446 - - - 7.72159 - 47.20319 - - - 7.70494 - 47.19937 - - - 7.70339 - 47.19902 - - - 7.70183 - 47.19871 - - - 7.70033 - 47.19844 - - - 7.69882 - 47.19818 - - - 7.69767 - 47.19798 - - - 7.69653 - 47.19776 - - - 7.69546 - 47.19755 - - - 7.69436 - 47.19732 - - - 7.69247 - 47.19693 - - - 7.69160 - 47.19676 - - - 7.69095 - 47.19665 - - - 7.69037 - 47.19656 - - - 7.68973 - 47.19647 - - - 7.68935 - 47.19642 - - - 7.68935 - 47.19642 - - - 7.68973 - 47.19647 - - - 7.69037 - 47.19656 - - - 7.69095 - 47.19665 - - - 7.69160 - 47.19676 - - - 7.69247 - 47.19693 - - - 7.69436 - 47.19732 - - - 7.69546 - 47.19755 - - - 7.69653 - 47.19776 - - - 7.69767 - 47.19798 - - - 7.69882 - 47.19818 - - - 7.68998 - 47.19668 - - - 7.68818 - 47.19638 - - - 7.68636 - 47.19606 - - - 7.68522 - 47.19584 - - - 7.68406 - 47.19559 - - - 7.68281 - 47.19531 - - - 7.68164 - 47.19502 - - - 7.68038 - 47.19469 - - - 7.67912 - 47.19433 - - - 7.67799 - 47.19398 - - - 7.67683 - 47.19360 - - - 7.67592 - 47.19329 - - - 7.67507 - 47.19298 - - - 7.67422 - 47.19266 - - - 7.67337 - 47.19232 - - - 7.67231 - 47.19189 - - - 7.67129 - 47.19144 - - - 7.67035 - 47.19101 - - - 7.66950 - 47.19061 - - - 7.66842 - 47.19007 - - - 7.66736 - 47.18951 - - - 7.66652 - 47.18904 - - - 7.66578 - 47.18862 - - - 7.66503 - 47.18817 - - - 7.66427 - 47.18770 - - - 7.66312 - 47.18695 - - - 7.66202 - 47.18618 - - - 7.65984 - 47.18465 - - - 7.65562 - 47.18167 - - - 7.64646 - 47.17523 - - - 7.64444 - 47.17387 - - - 7.63676 - 47.16913 - - - 7.63072 - 47.16542 - - - 7.62881 - 47.16427 - - - 7.62681 - 47.16316 - - - 7.62473 - 47.16211 - - - 7.62308 - 47.16135 - - - 7.62152 - 47.16069 - - - 7.61968 - 47.15997 - - - 7.61880 - 47.15965 - - - 7.61579 - 47.15865 - - - 7.61380 - 47.15800 - - - 7.61354 - 47.15791 - - - 7.61174 - 47.15725 - - - 7.61012 - 47.15660 - - - 7.60833 - 47.15583 - - - 7.60659 - 47.15501 - - - 7.60508 - 47.15424 - - - 7.60404 - 47.15366 - - - 7.60297 - 47.15306 - - - 7.60047 - 47.15149 - - - 7.59899 - 47.15045 - - - 7.59748 - 47.14930 - - - 7.59573 - 47.14782 - - - 7.59457 - 47.14677 - - - 7.59349 - 47.14568 - - - 7.59309 - 47.14526 - - - 7.59272 - 47.14486 - - - 7.59197 - 47.14401 - - - 7.59056 - 47.14226 - - - 7.58995 - 47.14141 - - - 7.58936 - 47.14056 - - - 7.58836 - 47.13892 - - - 7.58758 - 47.13747 - - - 7.58691 - 47.13602 - - - 7.58567 - 47.13319 - - - 7.58369 - 47.12860 - - - 7.58217 - 47.12474 - - - 7.58195 - 47.12419 - - - 7.58181 - 47.12381 - - - 7.58140 - 47.12268 - - - 7.58086 - 47.12116 - - - 7.58047 - 47.12003 - - - 7.58009 - 47.11889 - - - 7.57973 - 47.11775 - - - 7.57938 - 47.11661 - - - 7.57921 - 47.11605 - - - 7.57889 - 47.11492 - - - 7.57872 - 47.11436 - - - 7.57857 - 47.11380 - - - 7.57826 - 47.11267 - - - 7.57811 - 47.11210 - - - 7.57776 - 47.11070 - - - 7.57742 - 47.10929 - - - 7.57619 - 47.10415 - - - 7.57541 - 47.10092 - - - 7.57499 - 47.09913 - - - 7.57457 - 47.09735 - - - 7.57437 - 47.09654 - - - 7.57430 - 47.09613 - - - 7.57422 - 47.09573 - - - 7.57412 - 47.09532 - - - 7.57404 - 47.09492 - - - 7.57388 - 47.09412 - - - 7.57378 - 47.09346 - - - 7.57369 - 47.09278 - - - 7.57361 - 47.09209 - - - 7.57355 - 47.09140 - - - 7.57324 - 47.08694 - - - 7.57310 - 47.08561 - - - 7.57299 - 47.08491 - - - 7.57286 - 47.08423 - - - 7.57267 - 47.08340 - - - 7.57244 - 47.08257 - - - 7.57211 - 47.08155 - - - 7.57173 - 47.08056 - - - 7.57128 - 47.07955 - - - 7.57112 - 47.07919 - - - 7.57096 - 47.07887 - - - 7.57072 - 47.07842 - - - 7.57049 - 47.07799 - - - 7.57034 - 47.07774 - - - 7.57020 - 47.07749 - - - 7.56989 - 47.07698 - - - 7.56955 - 47.07644 - - - 7.56922 - 47.07591 - - - 7.56811 - 47.07427 - - - 7.56697 - 47.07263 - - - 7.56646 - 47.07193 - - - 7.56593 - 47.07123 - - - 7.56562 - 47.07081 - - - 7.56531 - 47.07040 - - - 7.56493 - 47.06992 - - - 7.56455 - 47.06946 - - - 7.56394 - 47.06875 - - - 7.56362 - 47.06839 - - - 7.56329 - 47.06804 - - - 7.56279 - 47.06753 - - - 7.56257 - 47.06731 - - - 7.56233 - 47.06708 - - - 7.56196 - 47.06673 - - - 7.56165 - 47.06644 - - - 7.56129 - 47.06611 - - - 7.56090 - 47.06578 - - - 7.56025 - 47.06523 - - - 7.55992 - 47.06497 - - - 7.55957 - 47.06469 - - - 7.55897 - 47.06424 - - - 7.55839 - 47.06381 - - - 7.55786 - 47.06344 - - - 7.55754 - 47.06322 - - - 7.55715 - 47.06296 - - - 7.55615 - 47.06232 - - - 7.55577 - 47.06209 - - - 7.55472 - 47.06148 - - - 7.55401 - 47.06109 - - - 7.55353 - 47.06084 - - - 7.55305 - 47.06059 - - - 7.55243 - 47.06028 - - - 7.55195 - 47.06005 - - - 7.55149 - 47.05983 - - - 7.55062 - 47.05943 - - - 7.54562 - 47.05716 - - - 7.54348 - 47.05617 - - - 7.54249 - 47.05571 - - - 7.54202 - 47.05548 - - - 7.54155 - 47.05523 - - - 7.54107 - 47.05498 - - - 7.54060 - 47.05472 - - - 7.54013 - 47.05447 - - - 7.53967 - 47.05420 - - - 7.53903 - 47.05382 - - - 7.53881 - 47.05368 - - - 7.53843 - 47.05345 - - - 7.53806 - 47.05321 - - - 7.53769 - 47.05296 - - - 7.53733 - 47.05272 - - - 7.53692 - 47.05244 - - - 7.53654 - 47.05216 - - - 7.53615 - 47.05188 - - - 7.53578 - 47.05160 - - - 7.53542 - 47.05131 - - - 7.53493 - 47.05092 - - - 7.53432 - 47.05041 - - - 7.53403 - 47.05015 - - - 7.53373 - 47.04989 - - - 7.53344 - 47.04962 - - - 7.53305 - 47.04925 - - - 7.53268 - 47.04888 - - - 7.53231 - 47.04850 - - - 7.53172 - 47.04786 - - - 7.53126 - 47.04734 - - - 7.53104 - 47.04709 - - - 7.53082 - 47.04682 - - - 7.53039 - 47.04628 - - - 7.52999 - 47.04574 - - - 7.52980 - 47.04547 - - - 7.52942 - 47.04493 - - - 7.52925 - 47.04466 - - - 7.52890 - 47.04413 - - - 7.52857 - 47.04356 - - - 7.52840 - 47.04327 - - - 7.52824 - 47.04297 - - - 7.52808 - 47.04268 - - - 7.52794 - 47.04240 - - - 7.52774 - 47.04198 - - - 7.52754 - 47.04156 - - - 7.52736 - 47.04113 - - - 7.52727 - 47.04091 - - - 7.52718 - 47.04070 - - - 7.52710 - 47.04049 - - - 7.52695 - 47.04007 - - - 7.52687 - 47.03986 - - - 7.52677 - 47.03955 - - - 7.52667 - 47.03924 - - - 7.52658 - 47.03893 - - - 7.52642 - 47.03835 - - - 7.52629 - 47.03783 - - - 7.52623 - 47.03757 - - - 7.52613 - 47.03704 - - - 7.52608 - 47.03677 - - - 7.52586 - 47.03542 - - - 7.52574 - 47.03474 - - - 7.52565 - 47.03430 - - - 7.52556 - 47.03387 - - - 7.52546 - 47.03344 - - - 7.52541 - 47.03323 - - - 7.52525 - 47.03265 - - - 7.52514 - 47.03229 - - - 7.52502 - 47.03193 - - - 7.52490 - 47.03157 - - - 7.52477 - 47.03121 - - - 7.52463 - 47.03085 - - - 7.52434 - 47.03013 - - - 7.52403 - 47.02942 - - - 7.52370 - 47.02870 - - - 7.52345 - 47.02815 - - - 7.52328 - 47.02777 - - - 7.52299 - 47.02713 - - - 7.52282 - 47.02676 - - - 7.52266 - 47.02645 - - - 7.52239 - 47.02593 - - - 7.52211 - 47.02541 - - - 7.52196 - 47.02516 - - - 7.52181 - 47.02491 - - - 7.52165 - 47.02466 - - - 7.52146 - 47.02438 - - - 7.51470 - 47.01411 - - - 7.51392 - 47.01293 - - - 7.51323 - 47.01188 - - - 7.51275 - 47.01117 - - - 7.51222 - 47.01042 - - - 7.51163 - 47.00965 - - - 7.51100 - 47.00890 - - - 7.51058 - 47.00842 - - - 7.51014 - 47.00795 - - - 7.50970 - 47.00750 - - - 7.50922 - 47.00704 - - - 7.50876 - 47.00661 - - - 7.50827 - 47.00617 - - - 7.50778 - 47.00575 - - - 7.50725 - 47.00532 - - - 7.50647 - 47.00472 - - - 7.50577 - 47.00421 - - - 7.50504 - 47.00371 - - - 7.50441 - 47.00330 - - - 7.50374 - 47.00288 - - - 7.50308 - 47.00250 - - - 7.50244 - 47.00213 - - - 7.50175 - 47.00176 - - - 7.50096 - 47.00135 - - - 7.49991 - 47.00085 - - - 7.49898 - 47.00044 - - - 7.49808 - 47.00006 - - - 7.49720 - 46.99971 - - - 7.49630 - 46.99938 - - - 7.49533 - 46.99905 - - - 7.49426 - 46.99871 - - - 7.49321 - 46.99841 - - - 7.49245 - 46.99820 - - - 7.49166 - 46.99800 - - - 7.49071 - 46.99778 - - - 7.48973 - 46.99757 - - - 7.48848 - 46.99733 - - - 7.48649 - 46.99698 - - - 7.48524 - 46.99675 - - - 7.48412 - 46.99652 - - - 7.48353 - 46.99640 - - - 7.48292 - 46.99625 - - - 7.48185 - 46.99598 - - - 7.48079 - 46.99569 - - - 7.47974 - 46.99538 - - - 7.47903 - 46.99515 - - - 7.47831 - 46.99490 - - - 7.47735 - 46.99456 - - - 7.47623 - 46.99412 - - - 7.47514 - 46.99366 - - - 7.47424 - 46.99325 - - - 7.47334 - 46.99281 - - - 7.47250 - 46.99238 - - - 7.47167 - 46.99193 - - - 7.47107 - 46.99158 - - - 7.47052 - 46.99125 - - - 7.46997 - 46.99091 - - - 7.46951 - 46.99061 - - - 7.46902 - 46.99028 - - - 7.46860 - 46.98996 - - - 7.46818 - 46.98962 - - - 7.46783 - 46.98931 - - - 7.46750 - 46.98899 - - - 7.46722 - 46.98870 - - - 7.46695 - 46.98839 - - - 7.46674 - 46.98813 - - - 7.46653 - 46.98785 - - - 7.46626 - 46.98745 - - - 7.46601 - 46.98701 - - - 7.46587 - 46.98675 - - - 7.46575 - 46.98649 - - - 7.46569 - 46.98634 - - - 7.46563 - 46.98619 - - - 7.46548 - 46.98579 - - - 7.46542 - 46.98559 - - - 7.46536 - 46.98538 - - - 7.46531 - 46.98517 - - - 7.46527 - 46.98498 - - - 7.46524 - 46.98477 - - - 7.46521 - 46.98457 - - - 7.46519 - 46.98437 - - - 7.46517 - 46.98416 - - - 7.46516 - 46.98396 - - - 7.46516 - 46.98376 - - - 7.46516 - 46.98355 - - - 7.46517 - 46.98333 - - - 7.46519 - 46.98312 - - - 7.46521 - 46.98290 - - - 7.46524 - 46.98270 - - - 7.46528 - 46.98247 - - - 7.46533 - 46.98226 - - - 7.46538 - 46.98204 - - - 7.46545 - 46.98181 - - - 7.46552 - 46.98162 - - - 7.46559 - 46.98141 - - - 7.46567 - 46.98121 - - - 7.46576 - 46.98100 - - - 7.46585 - 46.98079 - - - 7.46591 - 46.98067 - - - 7.46598 - 46.98055 - - - 7.46639 - 46.97979 - - - 7.46677 - 46.97911 - - - 7.46688 - 46.97891 - - - 7.46765 - 46.97756 - - - 7.46810 - 46.97674 - - - 7.46841 - 46.97620 - - - 7.46854 - 46.97597 - - - 7.46881 - 46.97550 - - - 7.46927 - 46.97467 - - - 7.46944 - 46.97434 - - - 7.46962 - 46.97397 - - - 7.46977 - 46.97370 - - - 7.47001 - 46.97326 - - - 7.47006 - 46.97316 - - - 7.47012 - 46.97303 - - - 7.47017 - 46.97292 - - - 7.47026 - 46.97270 - - - 7.47031 - 46.97254 - - - 7.47035 - 46.97240 - - - 7.47038 - 46.97226 - - - 7.47040 - 46.97214 - - - 7.47041 - 46.97202 - - - 7.47042 - 46.97189 - - - 7.47042 - 46.97177 - - - 7.47041 - 46.97164 - - - 7.47041 - 46.97152 - - - 7.47038 - 46.97131 - - - 7.47031 - 46.97103 - - - 7.47027 - 46.97091 - - - 7.47019 - 46.97068 - - - 7.47010 - 46.97048 - - - 7.47005 - 46.97037 - - - 7.46997 - 46.97023 - - - 7.46991 - 46.97014 - - - 7.46982 - 46.97001 - - - 7.46972 - 46.96989 - - - 7.46962 - 46.96976 - - - 7.46952 - 46.96965 - - - 7.46941 - 46.96954 - - - 7.46929 - 46.96942 - - - 7.46917 - 46.96931 - - - 7.46904 - 46.96921 - - - 7.46890 - 46.96910 - - - 7.46878 - 46.96902 - - - 7.46854 - 46.96886 - - - 7.46832 - 46.96874 - - - 7.46823 - 46.96868 - - - 7.46813 - 46.96863 - - - 7.46802 - 46.96858 - - - 7.46790 - 46.96853 - - - 7.46778 - 46.96847 - - - 7.46764 - 46.96842 - - - 7.46752 - 46.96837 - - - 7.46744 - 46.96834 - - - 7.46734 - 46.96830 - - - 7.46715 - 46.96824 - - - 7.46693 - 46.96818 - - - 7.46665 - 46.96810 - - - 7.46636 - 46.96803 - - - 7.46607 - 46.96796 - - - 7.46522 - 46.96777 - - - 7.46352 - 46.96737 - - - 7.46330 - 46.96732 - - - 7.46303 - 46.96726 - - - 7.46251 - 46.96715 - - - 7.46224 - 46.96709 - - - 7.46168 - 46.96695 - - - 7.46111 - 46.96681 - - - 7.46066 - 46.96669 - - - 7.46021 - 46.96657 - - - 7.45974 - 46.96644 - - - 7.45924 - 46.96631 - - - 7.45874 - 46.96619 - - - 7.45790 - 46.96599 - - - 7.45756 - 46.96590 - - - 7.45722 - 46.96582 - - - 7.45573 - 46.96542 - - - 7.45310 - 46.96472 - - - 7.45256 - 46.96457 - - - 7.45202 - 46.96443 - - - 7.45126 - 46.96422 - - - 7.45038 - 46.96400 - - - 7.44952 - 46.96380 - - - 7.44900 - 46.96367 - - - 7.44848 - 46.96353 - - - 7.44832 - 46.96348 - - - 7.44807 - 46.96339 - - - 7.44785 - 46.96331 - - - 7.44759 - 46.96320 - - - 7.44729 - 46.96305 - - - 7.44713 - 46.96297 - - - 7.44698 - 46.96289 - - - 7.44683 - 46.96280 - - - 7.44669 - 46.96271 - - - 7.44655 - 46.96262 - - - 7.44642 - 46.96253 - - - 7.44628 - 46.96243 - - - 7.44603 - 46.96222 - - - 7.44579 - 46.96200 - - - 7.44558 - 46.96179 - - - 7.44531 - 46.96152 - - - 7.44517 - 46.96135 - - - 7.44486 - 46.96100 - - - 7.44467 - 46.96079 - - - 7.44427 - 46.96037 - - - 7.44402 - 46.96012 - - - 7.44384 - 46.95991 - - - 7.44367 - 46.95969 - - - 7.44353 - 46.95948 - - - 7.44341 - 46.95925 - - - 7.44329 - 46.95902 - - - 7.44320 - 46.95878 - - - 7.44315 - 46.95855 - - - 7.44310 - 46.95831 - - - 7.44307 - 46.95807 - - - 7.44306 - 46.95782 - - - 7.44302 - 46.95655 - - - 7.44301 - 46.95628 - - - 7.44298 - 46.95603 - - - 7.44293 - 46.95578 - - - 7.44286 - 46.95554 - - - 7.44277 - 46.95530 - - - 7.44266 - 46.95507 - - - 7.44253 - 46.95484 - - - 7.44174 - 46.95341 - - - 7.44127 - 46.95261 - - - 7.44104 - 46.95224 - - - 7.44058 - 46.95151 - - - 7.44054 - 46.95144 - - - 7.44031 - 46.95111 - - - 7.43990 - 46.95053 - - - 7.43979 - 46.95031 - - - 7.43969 - 46.95015 - - - 7.43964 - 46.95004 - - - 7.43950 - 46.94984 - - - 7.43941 - 46.94975 - - - 7.43923 - 46.94957 - - - 7.43896 - 46.94937 - - - 7.43879 - 46.94928 - - - PT56M - 118102 - - - - - InterCity - - - 808 - - - Schweizerische Bundesbahnen SBB - - - ch:1:sjyid:100001:808-002 - - - - - - 4 - - walk - - ch:1:sloid:7000:4:7 - - Bern - - - - ch:1:sloid:76646:0:3 - - Bern, Bahnhof - - - 2024-03-09T07:58:00Z - 2024-03-09T08:06:00Z - PT8M - PT6M - PT2M - 556 - - - - - - 7.43877 - 46.94933 - - - 7.43532 - 46.94771 - - - Ausstieg Zug rechts - PT0M0S - 0 - - leave - left - - - - - - 7.43532 - 46.94771 - - - 7.43600 - 46.94764 - - - Merkurgässli - PT0M47S - 52 - - keep - straight on - - - - - - 7.43600 - 46.94764 - - - 7.43598 - 46.94736 - - - Merkurgässli - PT0M23S - 31 - - turn - right - - - - - - 7.43598 - 46.94736 - - - 7.43604 - 46.94737 - - - 7.43717 - 46.94732 - - - 7.43719 - 46.94732 - - - 7.43720 - 46.94732 - - - 7.43722 - 46.94733 - - - 7.43722 - 46.94733 - - - 7.43723 - 46.94735 - - - 7.43723 - 46.94735 - - - 7.43726 - 46.94735 - - - Laupenstrasse - PT0H1M29S - 99 - - turn - left - - - - - - 7.43726 - 46.94735 - - - 7.43735 - 46.94735 - - - Fußgängerampel - PT0M45S - 6 - - continue - straight on - - - - - - 7.43735 - 46.94735 - - - 7.43736 - 46.94730 - - - 7.43736 - 46.94726 - - - Fußweg - PT0M9S - 11 - - turn - right - - - - - - 7.43736 - 46.94726 - - - 7.43736 - 46.94720 - - - Fußgängerampel - PT0M45S - 5 - - continue - straight on - - - - - - 7.43736 - 46.94720 - - - 7.43737 - 46.94714 - - - 7.43737 - 46.94712 - - - Fußweg - PT0M6S - 8 - - continue - straight on - - - - - - 7.43737 - 46.94712 - - - 7.43756 - 46.94711 - - - 7.43774 - 46.94711 - - - 7.43783 - 46.94706 - - - 7.43786 - 46.94704 - - - Laupenstrasse/Bubenbergplatz - PT0M34S - 40 - - turn - left - - - - - - 7.43786 - 46.94704 - - - 7.43787 - 46.94703 - - - Fußweg - PT0M0S - 0 - - continue - straight on - - - - - - 7.43787 - 46.94703 - - - 7.43792 - 46.94707 - - - 7.43794 - 46.94708 - - - 7.43795 - 46.94708 - - - Fußweg - PT0M5S - 7 - - turn - left - - - - - - 7.43795 - 46.94708 - - - 7.43807 - 46.94700 - - - 7.43812 - 46.94700 - - - 7.43819 - 46.94699 - - - Fußweg am Straßenrand - PT0M19S - 22 - - turn - right - - - - - - 7.43819 - 46.94699 - - - 7.43823 - 46.94707 - - - 7.43824 - 46.94707 - - - 7.43824 - 46.94708 - - - 7.43826 - 46.94709 - - - 7.43827 - 46.94709 - - - 7.43828 - 46.94710 - - - 7.43828 - 46.94710 - - - 7.43872 - 46.94717 - - - 7.43882 - 46.94718 - - - Hirschengraben - PT0M50S - 57 - - turn - left - - - - - - 7.43882 - 46.94718 - - - 7.43885 - 46.94719 - - - 7.43886 - 46.94719 - - - 7.43889 - 46.94719 - - - Fußweg - PT0M3S - 5 - - turn - half left - - - - - - 7.43889 - 46.94719 - - - 7.43885 - 46.94729 - - - Schwanengasse - PT0M9S - 10 - - turn - left - - - - - - 7.43885 - 46.94729 - - - 7.43905 - 46.94732 - - - 7.43967 - 46.94742 - - - 7.43977 - 46.94744 - - - 7.43980 - 46.94745 - - - 7.43984 - 46.94747 - - - 7.43994 - 46.94751 - - - 7.43999 - 46.94756 - - - 7.44013 - 46.94763 - - - 7.44025 - 46.94768 - - - 7.44032 - 46.94769 - - - 7.44065 - 46.94776 - - - Bubenbergplatz - PT0H2M6S - 148 - - turn - right - - - - - - 7.44065 - 46.94776 - - - 7.44065 - 46.94775 - - - Fußweg - PT0M0S - 1 - - turn - right - - - - - - 7.44065 - 46.94775 - - - 7.44031 - 46.94767 - - - 7.44026 - 46.94766 - - - 7.44019 - 46.94764 - - - 7.44007 - 46.94758 - - - Bahnsteig - PT0M41S - 48 - - turn - right - - - - - - 7.44007 - 46.94758 - - - 7.44007 - 46.94758 - - - Einstieg Straßenbahn - PT0M0S - 0 - - enter - left - - - - - - 5 - - - ch:1:sloid:76646:0:3 - - Bern, Bahnhof - - - PLATFORM_ACCESS_WITH_ASSISTANCE - - - C - - - 2024-03-09T08:06:00Z - - 1 - - - ch:1:sloid:79896:0:1 - - Bern, Hirschengraben - - - A - - - 2024-03-09T08:07:00Z - - - 2024-03-09T08:07:00Z - - 2 - - - ch:1:sloid:89991:0:1 - - Bern, Monbijou - - - B - - - 2024-03-09T08:08:00Z - - - 2024-03-09T08:08:00Z - - 3 - - - 8589992 - - Bern, Sulgenau - - - 2024-03-09T08:09:00Z - - - 2024-03-09T08:09:00Z - - 4 - - - ch:1:sloid:89993:0:1 - - Bern, Wander - - - 2024-03-09T08:11:00Z - - - 2024-03-09T08:11:00Z - - 5 - - - ch:1:sloid:90022:0:1 - - Bern, Schönegg - - - 2024-03-09T08:12:00Z - - - 2024-03-09T08:12:00Z - - 6 - - - ch:1:sloid:90023:0:1 - - Bern, Sandrain - - - 2024-03-09T08:13:00Z - - - 2024-03-09T08:13:00Z - - 7 - - - ch:1:sloid:88562:0:1 - - Wabern, Gurtenbahn - - - PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE - - - B - - - 2024-03-09T08:14:00Z - - 8 - - - 2024-03-09 - ojp-91-9-_-j24-1-1151-TA - ojp:91009: - R - - tram - cityTram - - Tram - - - T - - - - 9 - - ojp:827 - - - VELOS: Platzzahl eingeschränkt - - A__VB - - - - Niederflureinstieg - - A__NF - palletAccess_lowFloor - - 8571395 - - Wabern, Tram-Endstation - - - - - - ch:1:sloid:76646:0:3 - - Bern, Bahnhof - - - - ch:1:sloid:88562:0:1 - - Wabern, Gurtenbahn - - - - - 7.44007 - 46.94756 - - - 7.43992 - 46.94752 - - - 7.43985 - 46.94750 - - - 7.43973 - 46.94748 - - - 7.43855 - 46.94728 - - - 7.43835 - 46.94725 - - - 7.43823 - 46.94722 - - - 7.43812 - 46.94719 - - - 7.43804 - 46.94716 - - - 7.43793 - 46.94712 - - - 7.43787 - 46.94709 - - - 7.43783 - 46.94707 - - - 7.43782 - 46.94706 - - - 7.43777 - 46.94702 - - - 7.43775 - 46.94699 - - - 7.43774 - 46.94697 - - - 7.43770 - 46.94690 - - - 7.43751 - 46.94643 - - - 7.43751 - 46.94643 - - - 7.43740 - 46.94614 - - - 7.43738 - 46.94611 - - - 7.43726 - 46.94592 - - - 7.43718 - 46.94578 - - - 7.43671 - 46.94510 - - - 7.43601 - 46.94402 - - - 7.43598 - 46.94396 - - - 7.43597 - 46.94393 - - - 7.43596 - 46.94389 - - - 7.43590 - 46.94322 - - - 7.43590 - 46.94322 - - - 7.43587 - 46.94275 - - - 7.43583 - 46.94215 - - - 7.43575 - 46.94118 - - - 7.43572 - 46.94097 - - - 7.43570 - 46.94086 - - - 7.43569 - 46.94069 - - - 7.43569 - 46.94065 - - - 7.43576 - 46.94008 - - - 7.43578 - 46.94002 - - - 7.43584 - 46.93983 - - - 7.43594 - 46.93936 - - - 7.43596 - 46.93929 - - - 7.43602 - 46.93914 - - - 7.43604 - 46.93906 - - - 7.43630 - 46.93758 - - - 7.43640 - 46.93707 - - - 7.43652 - 46.93661 - - - 7.43656 - 46.93649 - - - 7.43688 - 46.93523 - - - 7.43690 - 46.93513 - - - 7.43693 - 46.93505 - - - 7.43694 - 46.93503 - - - 7.43698 - 46.93498 - - - 7.43703 - 46.93493 - - - 7.43705 - 46.93491 - - - 7.43709 - 46.93488 - - - 7.43723 - 46.93480 - - - 7.43743 - 46.93474 - - - 7.43777 - 46.93461 - - - 7.43824 - 46.93444 - - - 7.43830 - 46.93442 - - - 7.43849 - 46.93436 - - - 7.43858 - 46.93434 - - - 7.43887 - 46.93427 - - - 7.43898 - 46.93425 - - - 7.43925 - 46.93419 - - - 7.43933 - 46.93416 - - - 7.43940 - 46.93414 - - - 7.43949 - 46.93411 - - - 7.44002 - 46.93389 - - - 7.44011 - 46.93384 - - - 7.44020 - 46.93380 - - - 7.44034 - 46.93371 - - - 7.44043 - 46.93363 - - - 7.44058 - 46.93353 - - - 7.44065 - 46.93349 - - - 7.44073 - 46.93344 - - - 7.44083 - 46.93338 - - - 7.44100 - 46.93330 - - - 7.44111 - 46.93325 - - - 7.44126 - 46.93319 - - - 7.44140 - 46.93314 - - - 7.44314 - 46.93253 - - - 7.44339 - 46.93244 - - - 7.44369 - 46.93232 - - - 7.44400 - 46.93220 - - - 7.44425 - 46.93209 - - - 7.44441 - 46.93202 - - - 7.44533 - 46.93157 - - - 7.44544 - 46.93153 - - - 7.44552 - 46.93151 - - - 7.44566 - 46.93147 - - - 7.44599 - 46.93140 - - - 7.44616 - 46.93136 - - - 7.44629 - 46.93132 - - - 7.44642 - 46.93127 - - - 7.44650 - 46.93124 - - - 7.44671 - 46.93116 - - - 7.44691 - 46.93106 - - - 7.44701 - 46.93100 - - - 7.44709 - 46.93095 - - - 7.44717 - 46.93090 - - - 7.44727 - 46.93083 - - - 7.44733 - 46.93078 - - - 7.44745 - 46.93068 - - - 7.44797 - 46.93021 - - - 7.44804 - 46.93015 - - - 7.44811 - 46.93010 - - - 7.44864 - 46.92986 - - - 7.44903 - 46.92972 - - - 7.44938 - 46.92957 - - - 7.44949 - 46.92952 - - - 7.44973 - 46.92945 - - - 7.45019 - 46.92929 - - - 7.45038 - 46.92921 - - - 7.45049 - 46.92916 - - - 7.45102 - 46.92891 - - - 7.45115 - 46.92885 - - - 7.45148 - 46.92870 - - - 7.45205 - 46.92843 - - - 7.45232 - 46.92831 - - - 7.45237 - 46.92828 - - - 7.45239 - 46.92826 - - - 7.45241 - 46.92824 - - - 7.45244 - 46.92819 - - - 7.45246 - 46.92815 - - - 7.45247 - 46.92812 - - - 7.45249 - 46.92807 - - - 7.45249 - 46.92804 - - - 7.45248 - 46.92798 - - - 7.45248 - 46.92795 - - - 7.45250 - 46.92792 - - - 7.45251 - 46.92790 - - - 7.45254 - 46.92787 - - - 7.45258 - 46.92785 - - - 7.45262 - 46.92784 - - - 7.45266 - 46.92783 - - - 7.45275 - 46.92783 - - - 7.45279 - 46.92783 - - - 7.45283 - 46.92784 - - - 7.45287 - 46.92786 - - - 7.45290 - 46.92788 - - - 7.45293 - 46.92790 - - - 7.45294 - 46.92794 - - - 7.45295 - 46.92796 - - - 7.45295 - 46.92799 - - - 7.45294 - 46.92802 - - - 7.45292 - 46.92805 - - - 7.45288 - 46.92809 - - - 7.45283 - 46.92813 - - - 7.45106 - 46.92895 - - - 7.45043 - 46.92926 - - - 7.45023 - 46.92934 - - - 7.44956 - 46.92957 - - - 7.44942 - 46.92961 - - - 7.44907 - 46.92976 - - - 7.44890 - 46.92984 - - - 7.44882 - 46.92989 - - - 7.44874 - 46.92993 - - - 7.44864 - 46.92997 - - - 7.44856 - 46.93000 - - - 7.44846 - 46.93005 - - - 7.44819 - 46.93016 - - - 7.44810 - 46.93021 - - - 7.44804 - 46.93024 - - - 7.44797 - 46.93030 - - - 7.44794 - 46.93033 - - - 7.44776 - 46.93050 - - - 7.44747 - 46.93075 - - - 7.44735 - 46.93085 - - - 7.44724 - 46.93093 - - - 7.44717 - 46.93097 - - - 7.44708 - 46.93102 - - - 7.44695 - 46.93109 - - - 7.44685 - 46.93113 - - - 7.44666 - 46.93122 - - - 7.44652 - 46.93127 - - - 7.44638 - 46.93132 - - - 7.44630 - 46.93135 - - - 7.44606 - 46.93141 - - - 7.44557 - 46.93152 - - - 7.44547 - 46.93155 - - - 7.44539 - 46.93158 - - - 7.44524 - 46.93165 - - - 7.44488 - 46.93182 - - - 7.44428 - 46.93211 - - - 7.44403 - 46.93222 - - - 7.44372 - 46.93235 - - - 7.44341 - 46.93246 - - - 7.44316 - 46.93256 - - - 7.44252 - 46.93278 - - - 7.44212 - 46.93292 - - - 7.44156 - 46.93311 - - - 7.44129 - 46.93321 - - - 7.44103 - 46.93332 - - - 7.44085 - 46.93341 - - - 7.44076 - 46.93346 - - - 7.44068 - 46.93351 - - - 7.44056 - 46.93359 - - - 7.44037 - 46.93372 - - - 7.44023 - 46.93381 - - - 7.44014 - 46.93386 - - - 7.44004 - 46.93391 - - - 7.43951 - 46.93413 - - - 7.43942 - 46.93417 - - - 7.43926 - 46.93421 - - - 7.43899 - 46.93427 - - - 7.43888 - 46.93429 - - - 7.43874 - 46.93433 - - - 7.43859 - 46.93436 - - - 7.43840 - 46.93442 - - - 7.43832 - 46.93444 - - - 7.43806 - 46.93453 - - - 7.43747 - 46.93475 - - - 7.43738 - 46.93478 - - - 7.43726 - 46.93483 - - - 7.43715 - 46.93488 - - - 7.43708 - 46.93493 - - - 7.43703 - 46.93498 - - - 7.43699 - 46.93503 - - - 7.43697 - 46.93508 - - - 7.43695 - 46.93513 - - - 7.43670 - 46.93608 - - - 7.43648 - 46.93698 - - - 7.43642 - 46.93719 - - - 7.43639 - 46.93731 - - - 7.43631 - 46.93773 - - - 7.43605 - 46.93921 - - - 7.43597 - 46.93963 - - - 7.43592 - 46.93998 - - - 7.43592 - 46.93998 - - - 7.43577 - 46.94083 - - - 7.43577 - 46.94090 - - - 7.43577 - 46.94097 - - - 7.43585 - 46.94193 - - - 7.43587 - 46.94215 - - - 7.43589 - 46.94243 - - - 7.43591 - 46.94275 - - - 7.43594 - 46.94295 - - - 7.43596 - 46.94310 - - - 7.43600 - 46.94367 - - - 7.43603 - 46.94389 - - - 7.43603 - 46.94393 - - - 7.43604 - 46.94397 - - - 7.43606 - 46.94401 - - - 7.43724 - 46.94579 - - - 7.43718 - 46.94578 - - - 7.43671 - 46.94510 - - - 7.43601 - 46.94402 - - - 7.43598 - 46.94396 - - - 7.43597 - 46.94393 - - - 7.43596 - 46.94389 - - - 7.43590 - 46.94322 - - - 7.43587 - 46.94275 - - - 7.43583 - 46.94215 - - - 7.43575 - 46.94118 - - - 7.43572 - 46.94097 - - - 7.43570 - 46.94086 - - - 7.43569 - 46.94069 - - - 7.43569 - 46.94065 - - - 7.43576 - 46.94008 - - - 7.43578 - 46.94002 - - - 7.43584 - 46.93983 - - - 7.43594 - 46.93936 - - - 7.43596 - 46.93929 - - - 7.43602 - 46.93914 - - - 7.43604 - 46.93906 - - - 7.43630 - 46.93758 - - - 7.43639 - 46.93714 - - - 7.43640 - 46.93707 - - - 7.43651 - 46.93663 - - - 7.43651 - 46.93663 - - - 7.43653 - 46.93655 - - - 7.43656 - 46.93649 - - - 7.43688 - 46.93523 - - - 7.43690 - 46.93513 - - - 7.43693 - 46.93505 - - - 7.43694 - 46.93503 - - - 7.43698 - 46.93498 - - - 7.43703 - 46.93493 - - - 7.43705 - 46.93491 - - - 7.43709 - 46.93488 - - - 7.43723 - 46.93480 - - - 7.43743 - 46.93474 - - - 7.43777 - 46.93461 - - - 7.43821 - 46.93445 - - - 7.43830 - 46.93442 - - - 7.43849 - 46.93436 - - - 7.43858 - 46.93434 - - - 7.43887 - 46.93427 - - - 7.43898 - 46.93425 - - - 7.43925 - 46.93419 - - - 7.43933 - 46.93416 - - - 7.43940 - 46.93414 - - - 7.43949 - 46.93411 - - - 7.43996 - 46.93391 - - - 7.43996 - 46.93391 - - - 7.44002 - 46.93389 - - - 7.44011 - 46.93384 - - - 7.44020 - 46.93380 - - - 7.44034 - 46.93371 - - - 7.44043 - 46.93363 - - - 7.44058 - 46.93353 - - - 7.44065 - 46.93349 - - - 7.44073 - 46.93344 - - - 7.44083 - 46.93338 - - - 7.44100 - 46.93330 - - - 7.44111 - 46.93325 - - - 7.44126 - 46.93319 - - - 7.44140 - 46.93314 - - - 7.44314 - 46.93253 - - - 7.44339 - 46.93244 - - - 7.44369 - 46.93232 - - - 7.44400 - 46.93220 - - - 7.44425 - 46.93209 - - - 7.44441 - 46.93202 - - - 7.44532 - 46.93158 - - - 7.44532 - 46.93158 - - - 7.44544 - 46.93153 - - - 7.44552 - 46.93151 - - - 7.44566 - 46.93147 - - - 7.44599 - 46.93140 - - - 7.44616 - 46.93136 - - - 7.44629 - 46.93132 - - - 7.44650 - 46.93124 - - - 7.44660 - 46.93120 - - - 7.44671 - 46.93116 - - - 7.44691 - 46.93106 - - - 7.44701 - 46.93100 - - - 7.44709 - 46.93095 - - - 7.44717 - 46.93090 - - - 7.44727 - 46.93083 - - - 7.44733 - 46.93078 - - - 7.44745 - 46.93068 - - - 7.44801 - 46.93017 - - - 7.44804 - 46.93015 - - - 7.44811 - 46.93010 - - - 7.44864 - 46.92986 - - - 7.44867 - 46.92985 - - - PT8M - 8041 - - - - - Tram - - - 4088 - - - Städtische Verkehrsbetriebe Bern - - - ojp-91-9-_-j24-1-1151-TA - - - - - - 6 - - walk - - ch:1:sloid:88562:0:1 - - Wabern, Gurtenbahn - - - - 8507097 - - Wabern (Gurtenbahn) - - - 2024-03-09T08:14:00Z - 2024-03-09T08:30:00Z - PT16M - PT6M - PT10M - - - - - 8588562 - - Gurtenbahn - - - - 8507097 - - Wabern (Gurtenbahn) - - - - 1015258360:2:MRCV:100 - 501365981:10:MRCV:100 - 0 - 0 - - - - level - footpath - - - - - - - 7 - - - 8507097 - - Wabern (Gurtenbahn) - - - NO_DATA - - - 2024-03-09T08:30:00Z - - 1 - - - 8507099 - - Gurten Kulm - - - NO_DATA - - - 2024-03-09T08:45:00Z - - 2 - - - 2024-03-09 - ojp-92-H2-Y-j24-1-51-TA - ojp:920H2:Y - R - - bus - localBusService - - Bus - - - B - - - - B - - ojp:122 - - - Niederflureinstieg - - A__NF - palletAccess_lowFloor - - 8507099 - - Gurten Kulm - - - - - - 8507097 - - Wabern (Gurtenbahn) - - - - 8507099 - - Gurten Kulm - - - - - 7.44608 - 46.92801 - - - 7.44623 - 46.92799 - - - 7.44640 - 46.92813 - - - 7.44662 - 46.92807 - - - 7.44699 - 46.92803 - - - 7.44727 - 46.92792 - - - 7.44743 - 46.92786 - - - 7.44794 - 46.92763 - - - 7.44803 - 46.92758 - - - 7.44811 - 46.92753 - - - 7.44817 - 46.92747 - - - 7.44833 - 46.92724 - - - 7.44853 - 46.92701 - - - 7.44884 - 46.92674 - - - 7.44934 - 46.92627 - - - 7.44971 - 46.92577 - - - 7.45004 - 46.92546 - - - 7.45032 - 46.92500 - - - 7.45058 - 46.92467 - - - 7.45064 - 46.92451 - - - 7.45063 - 46.92444 - - - 7.45061 - 46.92439 - - - 7.45032 - 46.92401 - - - 7.45026 - 46.92387 - - - 7.45023 - 46.92364 - - - 7.45026 - 46.92332 - - - 7.45035 - 46.92308 - - - 7.45048 - 46.92287 - - - 7.45060 - 46.92276 - - - 7.45080 - 46.92258 - - - 7.45088 - 46.92251 - - - 7.45116 - 46.92215 - - - 7.45194 - 46.92145 - - - 7.45212 - 46.92125 - - - 7.45233 - 46.92094 - - - 7.45276 - 46.92045 - - - 7.45288 - 46.92021 - - - 7.45296 - 46.92014 - - - 7.45326 - 46.91994 - - - 7.45353 - 46.91973 - - - 7.45392 - 46.91934 - - - 7.45408 - 46.91920 - - - 7.45445 - 46.91892 - - - 7.45494 - 46.91848 - - - 7.45532 - 46.91813 - - - 7.45541 - 46.91802 - - - 7.45561 - 46.91766 - - - 7.45582 - 46.91738 - - - 7.45596 - 46.91708 - - - 7.45616 - 46.91678 - - - 7.45630 - 46.91649 - - - 7.45642 - 46.91628 - - - 7.45646 - 46.91619 - - - 7.45651 - 46.91605 - - - 7.45656 - 46.91591 - - - 7.45658 - 46.91581 - - - 7.45660 - 46.91569 - - - 7.45661 - 46.91560 - - - 7.45657 - 46.91520 - - - 7.45668 - 46.91472 - - - 7.45669 - 46.91462 - - - 7.45658 - 46.91430 - - - 7.45656 - 46.91425 - - - 7.45650 - 46.91416 - - - 7.45639 - 46.91409 - - - 7.45626 - 46.91403 - - - 7.45610 - 46.91401 - - - 7.45605 - 46.91417 - - - 7.45602 - 46.91435 - - - 7.45603 - 46.91443 - - - 7.45606 - 46.91451 - - - 7.45607 - 46.91455 - - - 7.45607 - 46.91459 - - - 7.45604 - 46.91464 - - - 7.45598 - 46.91468 - - - 7.45558 - 46.91503 - - - 7.45546 - 46.91510 - - - 7.45536 - 46.91514 - - - 7.45525 - 46.91518 - - - 7.45512 - 46.91521 - - - 7.45500 - 46.91525 - - - 7.45491 - 46.91529 - - - 7.45482 - 46.91534 - - - 7.45460 - 46.91549 - - - 7.45419 - 46.91584 - - - 7.45409 - 46.91591 - - - 7.45402 - 46.91595 - - - 7.45393 - 46.91599 - - - 7.45382 - 46.91603 - - - 7.45368 - 46.91607 - - - 7.45350 - 46.91610 - - - 7.45324 - 46.91614 - - - 7.45296 - 46.91617 - - - 7.45279 - 46.91620 - - - 7.45249 - 46.91626 - - - 7.45236 - 46.91628 - - - 7.45220 - 46.91630 - - - 7.45192 - 46.91631 - - - 7.45172 - 46.91632 - - - 7.45155 - 46.91631 - - - 7.45147 - 46.91629 - - - 7.45139 - 46.91626 - - - 7.45131 - 46.91621 - - - 7.45113 - 46.91607 - - - 7.45104 - 46.91600 - - - 7.45096 - 46.91590 - - - 7.45089 - 46.91581 - - - 7.45100 - 46.91577 - - - 7.45107 - 46.91573 - - - 7.45136 - 46.91552 - - - 7.45140 - 46.91548 - - - 7.45145 - 46.91544 - - - 7.45148 - 46.91539 - - - 7.45151 - 46.91534 - - - 7.45152 - 46.91531 - - - 7.45152 - 46.91526 - - - 7.45151 - 46.91522 - - - 7.45149 - 46.91517 - - - 7.45146 - 46.91514 - - - 7.45141 - 46.91511 - - - 7.45134 - 46.91509 - - - 7.45127 - 46.91507 - - - 7.45119 - 46.91507 - - - 7.45109 - 46.91508 - - - 7.45097 - 46.91510 - - - 7.45089 - 46.91512 - - - 7.45009 - 46.91524 - - - 7.44956 - 46.91533 - - - 7.44876 - 46.91545 - - - 7.44850 - 46.91548 - - - 7.44708 - 46.91559 - - - 7.44693 - 46.91561 - - - 7.44684 - 46.91563 - - - 7.44679 - 46.91564 - - - 7.44674 - 46.91567 - - - 7.44670 - 46.91569 - - - 7.44667 - 46.91572 - - - 7.44665 - 46.91575 - - - 7.44659 - 46.91590 - - - 7.44657 - 46.91595 - - - 7.44653 - 46.91599 - - - 7.44650 - 46.91603 - - - 7.44646 - 46.91606 - - - 7.44641 - 46.91609 - - - 7.44635 - 46.91612 - - - 7.44626 - 46.91615 - - - 7.44611 - 46.91619 - - - 7.44598 - 46.91622 - - - 7.44590 - 46.91624 - - - 7.44583 - 46.91626 - - - 7.44578 - 46.91629 - - - 7.44569 - 46.91635 - - - 7.44519 - 46.91671 - - - 7.44485 - 46.91691 - - - 7.44435 - 46.91714 - - - 7.44402 - 46.91727 - - - 7.44388 - 46.91734 - - - 7.44380 - 46.91740 - - - 7.44364 - 46.91758 - - - 7.44351 - 46.91769 - - - 7.44337 - 46.91777 - - - 7.44321 - 46.91784 - - - 7.44268 - 46.91804 - - - 7.44255 - 46.91815 - - - 7.44242 - 46.91831 - - - 7.44229 - 46.91840 - - - 7.44181 - 46.91869 - - - 7.44151 - 46.91882 - - - 7.44114 - 46.91897 - - - 7.44067 - 46.91913 - - - 7.43979 - 46.91932 - - - 7.43965 - 46.91935 - - - PT15M - 3622 - - - - - Bus - - - 710 - - - Gurtenbahn - - - ojp-92-H2-Y-j24-1-51-TA - - - - - - - - ID-F66E86AA-BE15-4F81-83AB-CA595514DA93 - - ID-F66E86AA-BE15-4F81-83AB-CA595514DA93 - PT2H30M - 2024-03-09T06:45:00Z - 2024-03-09T09:15:00Z - 3 - - 1 - - - ch:1:sloid:3057:0:503972 - - Uetliberg - - - PLATFORM_ACCESS_WITHOUT_ASSISTANCE - - - 1 - - - 2024-03-09T06:45:00Z - - 1 - - - ch:1:sloid:3056:0:662664 - - Ringlikon - - - 1 - - - 2024-03-09T06:50:00Z - - - 2024-03-09T06:50:00Z - - 2 - - - ch:1:sloid:3055:0:646691 - - Uitikon Waldegg - - - 1 - - - 2024-03-09T06:52:00Z - - - 2024-03-09T06:53:00Z - - 3 - - - ch:1:sloid:3054:0:137935 - - Zürich Triemli - - - 1 - - - 2024-03-09T06:57:00Z - - - 2024-03-09T06:57:00Z - - 4 - - - ch:1:sloid:3053:0:255834 - - Zürich Schweighof - - - 1 - - - 2024-03-09T06:58:00Z - - - 2024-03-09T06:58:00Z - - 5 - - - ch:1:sloid:3052:0:785310 - - Zürich Friesenberg - - - 1 - - - 2024-03-09T06:59:00Z - - - 2024-03-09T06:59:00Z - - 6 - - - ch:1:sloid:3051:0:919934 - - Zürich Binz - - - 1 - - - 2024-03-09T07:01:00Z - - - 2024-03-09T07:02:00Z - - 7 - - - 8503090 - - Zürich Selnau - - - 1 - - - 2024-03-09T07:04:00Z - - - 2024-03-09T07:04:00Z - - 8 - - - ch:1:sloid:3088:0:82204 - - Zürich HB SZU - - - PLATFORM_ACCESS_WITHOUT_ASSISTANCE - - - 22 - - - 2024-03-09T07:07:00Z - - 9 - - - 2024-03-09 - ch:1:sjyid:100058:12780-002 - ojp:91010:A - H - - rail - regionalRail - - Zug - - - S - - - - S10 - - ojp:78 - - - VELOS: Keine Beförderung möglich - - A__VN - - - - Nur 2. Klasse - - A___2 - - - - Niederflureinstieg - - A__NF - palletAccess_lowFloor - - 8503088 - - Zürich HB SZU - - - - - - ch:1:sloid:3057:0:503972 - - Uetliberg - - - - ch:1:sloid:3088:0:82204 - - Zürich HB SZU - - - - - 8.48748 - 47.35198 - - - 8.48763 - 47.35254 - - - 8.48764 - 47.35259 - - - 8.48765 - 47.35267 - - - 8.48766 - 47.35272 - - - 8.48766 - 47.35277 - - - 8.48765 - 47.35286 - - - 8.48764 - 47.35295 - - - 8.48762 - 47.35301 - - - 8.48760 - 47.35309 - - - 8.48756 - 47.35319 - - - 8.48753 - 47.35324 - - - 8.48750 - 47.35329 - - - 8.48745 - 47.35337 - - - 8.48742 - 47.35341 - - - 8.48739 - 47.35345 - - - 8.48731 - 47.35354 - - - 8.48727 - 47.35358 - - - 8.48721 - 47.35362 - - - 8.48715 - 47.35367 - - - 8.48709 - 47.35371 - - - 8.48703 - 47.35375 - - - 8.48690 - 47.35382 - - - 8.48683 - 47.35386 - - - 8.48660 - 47.35396 - - - 8.48590 - 47.35427 - - - 8.48574 - 47.35435 - - - 8.48564 - 47.35441 - - - 8.48556 - 47.35445 - - - 8.48547 - 47.35451 - - - 8.48539 - 47.35456 - - - 8.48527 - 47.35465 - - - 8.48517 - 47.35475 - - - 8.48512 - 47.35480 - - - 8.48505 - 47.35488 - - - 8.48501 - 47.35493 - - - 8.48497 - 47.35498 - - - 8.48490 - 47.35507 - - - 8.48487 - 47.35512 - - - 8.48481 - 47.35523 - - - 8.48478 - 47.35530 - - - 8.48475 - 47.35539 - - - 8.48472 - 47.35549 - - - 8.48470 - 47.35555 - - - 8.48470 - 47.35560 - - - 8.48468 - 47.35572 - - - 8.48468 - 47.35582 - - - 8.48469 - 47.35596 - - - 8.48473 - 47.35638 - - - 8.48474 - 47.35645 - - - 8.48474 - 47.35654 - - - 8.48474 - 47.35660 - - - 8.48473 - 47.35665 - - - 8.48472 - 47.35672 - - - 8.48470 - 47.35681 - - - 8.48469 - 47.35687 - - - 8.48468 - 47.35692 - - - 8.48466 - 47.35697 - - - 8.48463 - 47.35703 - - - 8.48461 - 47.35709 - - - 8.48457 - 47.35715 - - - 8.48454 - 47.35720 - - - 8.48447 - 47.35732 - - - 8.48442 - 47.35738 - - - 8.48437 - 47.35744 - - - 8.48431 - 47.35750 - - - 8.48422 - 47.35760 - - - 8.48415 - 47.35765 - - - 8.48403 - 47.35775 - - - 8.48397 - 47.35780 - - - 8.48384 - 47.35789 - - - 8.48376 - 47.35793 - - - 8.48369 - 47.35798 - - - 8.48360 - 47.35802 - - - 8.48352 - 47.35806 - - - 8.48342 - 47.35811 - - - 8.48334 - 47.35813 - - - 8.48327 - 47.35816 - - - 8.48316 - 47.35819 - - - 8.48306 - 47.35822 - - - 8.48297 - 47.35824 - - - 8.48289 - 47.35826 - - - 8.48281 - 47.35827 - - - 8.48274 - 47.35828 - - - 8.48265 - 47.35829 - - - 8.48257 - 47.35829 - - - 8.48248 - 47.35830 - - - 8.48240 - 47.35830 - - - 8.48231 - 47.35830 - - - 8.48222 - 47.35830 - - - 8.48205 - 47.35829 - - - 8.48195 - 47.35827 - - - 8.48187 - 47.35826 - - - 8.48179 - 47.35825 - - - 8.48173 - 47.35823 - - - 8.48165 - 47.35821 - - - 8.48152 - 47.35817 - - - 8.48144 - 47.35815 - - - 8.48129 - 47.35809 - - - 8.48118 - 47.35803 - - - 8.48110 - 47.35799 - - - 8.48103 - 47.35795 - - - 8.48097 - 47.35791 - - - 8.48091 - 47.35787 - - - 8.48086 - 47.35783 - - - 8.48081 - 47.35778 - - - 8.48076 - 47.35774 - - - 8.48068 - 47.35766 - - - 8.48063 - 47.35760 - - - 8.48058 - 47.35753 - - - 8.48053 - 47.35746 - - - 8.48008 - 47.35682 - - - 8.47987 - 47.35652 - - - 8.47980 - 47.35642 - - - 8.47975 - 47.35637 - - - 8.47972 - 47.35633 - - - 8.47965 - 47.35626 - - - 8.47961 - 47.35623 - - - 8.47957 - 47.35619 - - - 8.47953 - 47.35616 - - - 8.47947 - 47.35612 - - - 8.47942 - 47.35609 - - - 8.47931 - 47.35603 - - - 8.47926 - 47.35600 - - - 8.47921 - 47.35598 - - - 8.47910 - 47.35593 - - - 8.47900 - 47.35589 - - - 8.47891 - 47.35586 - - - 8.47877 - 47.35583 - - - 8.47871 - 47.35582 - - - 8.47861 - 47.35580 - - - 8.47846 - 47.35578 - - - 8.47834 - 47.35577 - - - 8.47818 - 47.35577 - - - 8.47813 - 47.35577 - - - 8.47806 - 47.35578 - - - 8.47794 - 47.35579 - - - 8.47781 - 47.35581 - - - 8.47768 - 47.35583 - - - 8.47756 - 47.35586 - - - 8.47750 - 47.35588 - - - 8.47744 - 47.35590 - - - 8.47737 - 47.35592 - - - 8.47730 - 47.35595 - - - 8.47718 - 47.35600 - - - 8.47711 - 47.35604 - - - 8.47705 - 47.35607 - - - 8.47700 - 47.35610 - - - 8.47695 - 47.35614 - - - 8.47690 - 47.35617 - - - 8.47684 - 47.35621 - - - 8.47680 - 47.35625 - - - 8.47671 - 47.35634 - - - 8.47667 - 47.35639 - - - 8.47663 - 47.35643 - - - 8.47659 - 47.35648 - - - 8.47654 - 47.35657 - - - 8.47652 - 47.35662 - - - 8.47648 - 47.35670 - - - 8.47647 - 47.35675 - - - 8.47645 - 47.35684 - - - 8.47644 - 47.35693 - - - 8.47644 - 47.35698 - - - 8.47644 - 47.35707 - - - 8.47645 - 47.35714 - - - 8.47646 - 47.35719 - - - 8.47648 - 47.35725 - - - 8.47649 - 47.35730 - - - 8.47653 - 47.35737 - - - 8.47656 - 47.35743 - - - 8.47660 - 47.35749 - - - 8.47666 - 47.35757 - - - 8.47670 - 47.35762 - - - 8.47674 - 47.35766 - - - 8.47678 - 47.35770 - - - 8.47683 - 47.35774 - - - 8.47689 - 47.35779 - - - 8.47694 - 47.35783 - - - 8.47702 - 47.35788 - - - 8.47712 - 47.35794 - - - 8.47747 - 47.35815 - - - 8.47757 - 47.35822 - - - 8.47764 - 47.35827 - - - 8.47773 - 47.35834 - - - 8.47777 - 47.35838 - - - 8.47782 - 47.35843 - - - 8.47787 - 47.35848 - - - 8.47791 - 47.35853 - - - 8.47795 - 47.35859 - - - 8.47802 - 47.35869 - - - 8.47805 - 47.35875 - - - 8.47810 - 47.35886 - - - 8.47813 - 47.35897 - - - 8.47814 - 47.35905 - - - 8.47815 - 47.35912 - - - 8.47815 - 47.35920 - - - 8.47814 - 47.35929 - - - 8.47813 - 47.35934 - - - 8.47812 - 47.35941 - - - 8.47810 - 47.35947 - - - 8.47808 - 47.35952 - - - 8.47803 - 47.35964 - - - 8.47796 - 47.35975 - - - 8.47791 - 47.35981 - - - 8.47786 - 47.35987 - - - 8.47775 - 47.35998 - - - 8.47768 - 47.36004 - - - 8.47760 - 47.36010 - - - 8.47741 - 47.36021 - - - 8.47732 - 47.36026 - - - 8.47732 - 47.36026 - - - 8.47717 - 47.36033 - - - 8.47679 - 47.36052 - - - 8.47673 - 47.36055 - - - 8.47667 - 47.36058 - - - 8.47661 - 47.36061 - - - 8.47651 - 47.36068 - - - 8.47647 - 47.36070 - - - 8.47638 - 47.36076 - - - 8.47631 - 47.36083 - - - 8.47622 - 47.36092 - - - 8.47619 - 47.36095 - - - 8.47614 - 47.36101 - - - 8.47609 - 47.36109 - - - 8.47606 - 47.36113 - - - 8.47603 - 47.36120 - - - 8.47601 - 47.36123 - - - 8.47599 - 47.36128 - - - 8.47597 - 47.36136 - - - 8.47595 - 47.36140 - - - 8.47594 - 47.36148 - - - 8.47593 - 47.36154 - - - 8.47593 - 47.36159 - - - 8.47593 - 47.36167 - - - 8.47594 - 47.36183 - - - 8.47597 - 47.36204 - - - 8.47597 - 47.36216 - - - 8.47597 - 47.36222 - - - 8.47596 - 47.36231 - - - 8.47595 - 47.36238 - - - 8.47592 - 47.36250 - - - 8.47590 - 47.36256 - - - 8.47587 - 47.36263 - - - 8.47584 - 47.36269 - - - 8.47581 - 47.36275 - - - 8.47575 - 47.36284 - - - 8.47567 - 47.36295 - - - 8.47559 - 47.36304 - - - 8.47555 - 47.36308 - - - 8.47549 - 47.36313 - - - 8.47543 - 47.36318 - - - 8.47538 - 47.36322 - - - 8.47531 - 47.36328 - - - 8.47524 - 47.36333 - - - 8.47511 - 47.36341 - - - 8.47505 - 47.36344 - - - 8.47497 - 47.36348 - - - 8.47484 - 47.36353 - - - 8.47477 - 47.36356 - - - 8.47470 - 47.36359 - - - 8.47453 - 47.36364 - - - 8.47445 - 47.36367 - - - 8.47433 - 47.36370 - - - 8.47425 - 47.36371 - - - 8.47416 - 47.36373 - - - 8.47408 - 47.36374 - - - 8.47392 - 47.36376 - - - 8.47383 - 47.36377 - - - 8.47374 - 47.36377 - - - 8.47354 - 47.36377 - - - 8.47275 - 47.36377 - - - 8.47257 - 47.36378 - - - 8.47243 - 47.36378 - - - 8.47216 - 47.36379 - - - 8.47194 - 47.36380 - - - 8.47181 - 47.36381 - - - 8.47168 - 47.36383 - - - 8.47151 - 47.36385 - - - 8.47137 - 47.36386 - - - 8.47124 - 47.36388 - - - 8.47108 - 47.36391 - - - 8.47085 - 47.36395 - - - 8.47074 - 47.36397 - - - 8.47045 - 47.36404 - - - 8.47029 - 47.36408 - - - 8.47012 - 47.36413 - - - 8.46994 - 47.36418 - - - 8.46978 - 47.36423 - - - 8.46959 - 47.36429 - - - 8.46945 - 47.36435 - - - 8.46933 - 47.36439 - - - 8.46911 - 47.36449 - - - 8.46898 - 47.36454 - - - 8.46864 - 47.36469 - - - 8.46661 - 47.36561 - - - 8.46637 - 47.36572 - - - 8.46624 - 47.36578 - - - 8.46617 - 47.36582 - - - 8.46610 - 47.36586 - - - 8.46604 - 47.36589 - - - 8.46596 - 47.36595 - - - 8.46596 - 47.36595 - - - 8.46591 - 47.36598 - - - 8.46586 - 47.36602 - - - 8.46577 - 47.36610 - - - 8.46571 - 47.36615 - - - 8.46564 - 47.36623 - - - 8.46556 - 47.36632 - - - 8.46553 - 47.36637 - - - 8.46547 - 47.36646 - - - 8.46544 - 47.36650 - - - 8.46542 - 47.36654 - - - 8.46537 - 47.36666 - - - 8.46535 - 47.36672 - - - 8.46532 - 47.36682 - - - 8.46531 - 47.36689 - - - 8.46530 - 47.36699 - - - 8.46530 - 47.36709 - - - 8.46530 - 47.36714 - - - 8.46531 - 47.36724 - - - 8.46532 - 47.36730 - - - 8.46534 - 47.36738 - - - 8.46538 - 47.36748 - - - 8.46539 - 47.36753 - - - 8.46545 - 47.36763 - - - 8.46549 - 47.36771 - - - 8.46554 - 47.36778 - - - 8.46562 - 47.36788 - - - 8.46566 - 47.36793 - - - 8.46575 - 47.36801 - - - 8.46579 - 47.36805 - - - 8.46585 - 47.36810 - - - 8.46590 - 47.36815 - - - 8.46595 - 47.36818 - - - 8.46600 - 47.36821 - - - 8.46606 - 47.36825 - - - 8.46615 - 47.36831 - - - 8.46628 - 47.36837 - - - 8.46648 - 47.36847 - - - 8.46658 - 47.36851 - - - 8.46763 - 47.36895 - - - 8.46915 - 47.36959 - - - 8.46935 - 47.36967 - - - 8.46946 - 47.36971 - - - 8.46958 - 47.36975 - - - 8.46980 - 47.36983 - - - 8.46997 - 47.36988 - - - 8.47017 - 47.36994 - - - 8.47026 - 47.36996 - - - 8.47045 - 47.37000 - - - 8.47053 - 47.37002 - - - 8.47072 - 47.37006 - - - 8.47093 - 47.37009 - - - 8.47109 - 47.37011 - - - 8.47130 - 47.37013 - - - 8.47140 - 47.37014 - - - 8.47170 - 47.37016 - - - 8.47306 - 47.37024 - - - 8.47324 - 47.37025 - - - 8.47339 - 47.37025 - - - 8.47358 - 47.37025 - - - 8.47370 - 47.37025 - - - 8.47382 - 47.37025 - - - 8.47401 - 47.37024 - - - 8.47426 - 47.37022 - - - 8.47444 - 47.37020 - - - 8.47454 - 47.37019 - - - 8.47468 - 47.37017 - - - 8.47479 - 47.37015 - - - 8.47492 - 47.37013 - - - 8.47510 - 47.37009 - - - 8.47536 - 47.37003 - - - 8.47597 - 47.36988 - - - 8.47607 - 47.36986 - - - 8.47614 - 47.36985 - - - 8.47630 - 47.36983 - - - 8.47639 - 47.36982 - - - 8.47656 - 47.36980 - - - 8.47686 - 47.36978 - - - 8.47699 - 47.36977 - - - 8.47714 - 47.36975 - - - 8.47833 - 47.36955 - - - 8.47847 - 47.36953 - - - 8.47867 - 47.36949 - - - 8.47887 - 47.36945 - - - 8.47895 - 47.36942 - - - 8.47914 - 47.36937 - - - 8.47929 - 47.36932 - - - 8.47938 - 47.36929 - - - 8.47947 - 47.36925 - - - 8.47962 - 47.36919 - - - 8.47978 - 47.36912 - - - 8.48250 - 47.36782 - - - 8.48262 - 47.36777 - - - 8.48273 - 47.36773 - - - 8.48280 - 47.36770 - - - 8.48286 - 47.36768 - - - 8.48301 - 47.36764 - - - 8.48316 - 47.36760 - - - 8.48329 - 47.36757 - - - 8.48342 - 47.36755 - - - 8.48358 - 47.36753 - - - 8.48383 - 47.36751 - - - 8.48592 - 47.36735 - - - 8.48622 - 47.36731 - - - 8.48641 - 47.36729 - - - 8.48652 - 47.36727 - - - 8.48667 - 47.36725 - - - 8.48682 - 47.36722 - - - 8.48702 - 47.36717 - - - 8.48716 - 47.36714 - - - 8.48734 - 47.36709 - - - 8.48754 - 47.36703 - - - 8.48769 - 47.36698 - - - 8.48793 - 47.36689 - - - 8.48909 - 47.36646 - - - 8.48930 - 47.36638 - - - 8.48945 - 47.36634 - - - 8.48953 - 47.36632 - - - 8.48960 - 47.36630 - - - 8.48976 - 47.36626 - - - 8.48992 - 47.36623 - - - 8.49002 - 47.36621 - - - 8.49096 - 47.36605 - - - 8.49117 - 47.36601 - - - 8.49131 - 47.36598 - - - 8.49138 - 47.36597 - - - 8.49152 - 47.36593 - - - 8.49169 - 47.36587 - - - 8.49182 - 47.36582 - - - 8.49189 - 47.36579 - - - 8.49270 - 47.36545 - - - 8.49297 - 47.36534 - - - 8.49309 - 47.36529 - - - 8.49324 - 47.36524 - - - 8.49335 - 47.36520 - - - 8.49354 - 47.36515 - - - 8.49368 - 47.36511 - - - 8.49376 - 47.36509 - - - 8.49392 - 47.36506 - - - 8.49405 - 47.36503 - - - 8.49425 - 47.36500 - - - 8.49445 - 47.36498 - - - 8.49469 - 47.36495 - - - 8.49492 - 47.36494 - - - 8.49506 - 47.36493 - - - 8.49506 - 47.36493 - - - 8.49525 - 47.36493 - - - 8.49537 - 47.36493 - - - 8.49613 - 47.36495 - - - 8.49655 - 47.36496 - - - 8.50353 - 47.36498 - - - 8.50353 - 47.36498 - - - 8.50522 - 47.36498 - - - 8.50549 - 47.36498 - - - 8.50581 - 47.36497 - - - 8.50598 - 47.36496 - - - 8.50623 - 47.36495 - - - 8.50656 - 47.36493 - - - 8.50684 - 47.36491 - - - 8.50705 - 47.36489 - - - 8.50737 - 47.36485 - - - 8.50752 - 47.36483 - - - 8.50752 - 47.36483 - - - 8.50771 - 47.36481 - - - 8.50794 - 47.36478 - - - 8.51541 - 47.36364 - - - 8.51559 - 47.36361 - - - 8.51581 - 47.36357 - - - 8.51600 - 47.36354 - - - 8.51614 - 47.36350 - - - 8.51622 - 47.36348 - - - 8.51641 - 47.36343 - - - 8.51650 - 47.36340 - - - 8.51661 - 47.36337 - - - 8.51671 - 47.36333 - - - 8.51692 - 47.36325 - - - 8.51828 - 47.36273 - - - 8.51828 - 47.36273 - - - 8.51933 - 47.36232 - - - 8.51947 - 47.36228 - - - 8.51952 - 47.36226 - - - 8.51964 - 47.36223 - - - 8.51970 - 47.36221 - - - 8.51985 - 47.36219 - - - 8.51996 - 47.36217 - - - 8.52002 - 47.36216 - - - 8.52013 - 47.36215 - - - 8.52019 - 47.36215 - - - 8.52031 - 47.36214 - - - 8.52042 - 47.36214 - - - 8.52053 - 47.36215 - - - 8.52059 - 47.36215 - - - 8.52068 - 47.36216 - - - 8.52080 - 47.36218 - - - 8.52090 - 47.36219 - - - 8.52101 - 47.36221 - - - 8.52111 - 47.36224 - - - 8.52119 - 47.36226 - - - 8.52127 - 47.36229 - - - 8.52137 - 47.36233 - - - 8.52146 - 47.36237 - - - 8.52152 - 47.36240 - - - 8.52162 - 47.36246 - - - 8.52177 - 47.36255 - - - 8.52193 - 47.36268 - - - 8.52214 - 47.36286 - - - 8.52226 - 47.36297 - - - 8.52249 - 47.36320 - - - 8.52312 - 47.36387 - - - 8.52325 - 47.36402 - - - 8.52342 - 47.36426 - - - 8.52356 - 47.36452 - - - 8.52378 - 47.36493 - - - 8.52388 - 47.36509 - - - 8.52400 - 47.36525 - - - 8.52421 - 47.36550 - - - 8.52450 - 47.36578 - - - 8.52480 - 47.36605 - - - 8.52503 - 47.36625 - - - 8.52524 - 47.36643 - - - 8.52546 - 47.36659 - - - 8.52572 - 47.36675 - - - 8.52597 - 47.36689 - - - 8.52625 - 47.36703 - - - 8.52653 - 47.36715 - - - 8.52679 - 47.36724 - - - 8.52702 - 47.36732 - - - 8.52764 - 47.36751 - - - 8.52796 - 47.36762 - - - 8.52817 - 47.36771 - - - 8.52836 - 47.36781 - - - 8.52855 - 47.36794 - - - 8.52873 - 47.36807 - - - 8.52889 - 47.36822 - - - 8.52898 - 47.36832 - - - 8.52924 - 47.36865 - - - 8.52953 - 47.36901 - - - 8.52973 - 47.36924 - - - 8.52981 - 47.36933 - - - 8.52991 - 47.36943 - - - 8.53001 - 47.36953 - - - 8.53026 - 47.36974 - - - 8.53058 - 47.37000 - - - 8.53071 - 47.37011 - - - 8.53087 - 47.37026 - - - 8.53097 - 47.37036 - - - 8.53106 - 47.37045 - - - 8.53113 - 47.37055 - - - 8.53125 - 47.37073 - - - 8.53133 - 47.37088 - - - 8.53137 - 47.37098 - - - 8.53141 - 47.37108 - - - 8.53145 - 47.37121 - - - 8.53163 - 47.37181 - - - 8.53168 - 47.37198 - - - 8.53176 - 47.37216 - - - 8.53179 - 47.37222 - - - 8.53179 - 47.37222 - - - 8.53176 - 47.37216 - - - 8.53168 - 47.37198 - - - 8.53163 - 47.37181 - - - 8.53145 - 47.37121 - - - 8.53141 - 47.37108 - - - 8.53137 - 47.37098 - - - 8.53133 - 47.37088 - - - 8.53125 - 47.37073 - - - 8.53113 - 47.37055 - - - 8.53106 - 47.37045 - - - 8.53097 - 47.37036 - - - 8.53087 - 47.37026 - - - 8.53071 - 47.37011 - - - 8.53058 - 47.37000 - - - 8.53026 - 47.36974 - - - 8.53001 - 47.36953 - - - 8.52991 - 47.36943 - - - 8.52981 - 47.36933 - - - 8.52973 - 47.36924 - - - 8.52953 - 47.36901 - - - 8.52924 - 47.36865 - - - 8.52898 - 47.36832 - - - 8.52889 - 47.36822 - - - 8.52873 - 47.36807 - - - 8.52855 - 47.36794 - - - 8.52836 - 47.36781 - - - 8.52817 - 47.36771 - - - 8.52796 - 47.36762 - - - 8.52764 - 47.36751 - - - 8.52702 - 47.36732 - - - 8.52679 - 47.36724 - - - 8.52653 - 47.36715 - - - 8.52625 - 47.36703 - - - 8.52597 - 47.36689 - - - 8.52572 - 47.36675 - - - 8.52546 - 47.36659 - - - 8.52524 - 47.36643 - - - 8.52503 - 47.36625 - - - 8.52480 - 47.36605 - - - 8.52450 - 47.36578 - - - 8.52421 - 47.36550 - - - 8.52400 - 47.36525 - - - 8.52388 - 47.36509 - - - 8.52378 - 47.36493 - - - 8.52356 - 47.36452 - - - 8.52342 - 47.36426 - - - 8.52325 - 47.36402 - - - 8.52312 - 47.36387 - - - 8.52249 - 47.36320 - - - 8.52238 - 47.36309 - - - 8.52226 - 47.36297 - - - 8.52214 - 47.36286 - - - 8.52193 - 47.36268 - - - 8.52214 - 47.36287 - - - 8.52218 - 47.36292 - - - 8.52222 - 47.36298 - - - 8.52226 - 47.36304 - - - 8.52229 - 47.36310 - - - 8.52232 - 47.36315 - - - 8.52236 - 47.36326 - - - 8.52238 - 47.36332 - - - 8.52239 - 47.36338 - - - 8.52240 - 47.36343 - - - 8.52241 - 47.36349 - - - 8.52242 - 47.36356 - - - 8.52244 - 47.36416 - - - 8.52244 - 47.36427 - - - 8.52242 - 47.36513 - - - 8.52242 - 47.36537 - - - 8.52242 - 47.36553 - - - 8.52244 - 47.36571 - - - 8.52248 - 47.36587 - - - 8.52254 - 47.36603 - - - 8.52260 - 47.36621 - - - 8.52268 - 47.36635 - - - 8.52276 - 47.36648 - - - 8.52285 - 47.36662 - - - 8.52355 - 47.36748 - - - 8.52375 - 47.36770 - - - 8.52397 - 47.36794 - - - 8.52417 - 47.36812 - - - 8.52444 - 47.36842 - - - 8.52456 - 47.36859 - - - 8.52466 - 47.36875 - - - 8.52475 - 47.36896 - - - 8.52479 - 47.36909 - - - 8.52484 - 47.36931 - - - 8.52485 - 47.36949 - - - 8.52485 - 47.36964 - - - 8.52483 - 47.36979 - - - 8.52478 - 47.36996 - - - 8.52473 - 47.37011 - - - 8.52467 - 47.37022 - - - 8.52461 - 47.37032 - - - 8.52454 - 47.37043 - - - 8.52446 - 47.37054 - - - 8.52433 - 47.37068 - - - 8.52425 - 47.37077 - - - 8.52415 - 47.37086 - - - 8.52408 - 47.37092 - - - 8.52395 - 47.37102 - - - 8.52382 - 47.37111 - - - 8.52356 - 47.37127 - - - 8.52334 - 47.37140 - - - 8.52322 - 47.37149 - - - 8.52312 - 47.37155 - - - 8.52080 - 47.37319 - - - 8.52032 - 47.37353 - - - 8.52018 - 47.37364 - - - 8.52009 - 47.37371 - - - 8.51996 - 47.37383 - - - 8.51988 - 47.37391 - - - 8.51980 - 47.37400 - - - 8.51969 - 47.37413 - - - 8.51960 - 47.37425 - - - 8.51942 - 47.37449 - - - 8.51928 - 47.37468 - - - 8.51919 - 47.37481 - - - 8.51908 - 47.37498 - - - 8.51900 - 47.37513 - - - 8.51886 - 47.37544 - - - 8.51882 - 47.37556 - - - 8.51879 - 47.37570 - - - 8.51876 - 47.37591 - - - 8.51874 - 47.37608 - - - 8.51873 - 47.37623 - - - 8.51872 - 47.37633 - - - 8.51872 - 47.37643 - - - 8.51873 - 47.37657 - - - 8.51876 - 47.37677 - - - 8.51881 - 47.37698 - - - 8.51884 - 47.37711 - - - 8.51892 - 47.37731 - - - 8.51898 - 47.37742 - - - 8.51904 - 47.37753 - - - 8.51910 - 47.37763 - - - 8.51919 - 47.37777 - - - 8.51932 - 47.37794 - - - 8.51947 - 47.37810 - - - 8.51961 - 47.37826 - - - 8.52024 - 47.37891 - - - 8.52089 - 47.37956 - - - 8.52110 - 47.37978 - - - 8.52132 - 47.37998 - - - 8.52156 - 47.38018 - - - 8.52172 - 47.38028 - - - 8.52189 - 47.38038 - - - 8.52195 - 47.38041 - - - 8.52203 - 47.38046 - - - 8.52220 - 47.38054 - - - 8.52231 - 47.38059 - - - 8.52240 - 47.38063 - - - 8.52251 - 47.38066 - - - 8.52262 - 47.38071 - - - 8.52280 - 47.38076 - - - 8.52293 - 47.38080 - - - 8.52307 - 47.38083 - - - 8.52320 - 47.38086 - - - 8.52335 - 47.38089 - - - 8.52350 - 47.38092 - - - 8.52367 - 47.38094 - - - 8.52385 - 47.38096 - - - 8.52404 - 47.38097 - - - 8.52433 - 47.38099 - - - 8.52485 - 47.38102 - - - 8.52587 - 47.38109 - - - 8.52609 - 47.38110 - - - 8.52629 - 47.38110 - - - 8.52643 - 47.38111 - - - 8.52657 - 47.38110 - - - 8.52670 - 47.38110 - - - 8.52682 - 47.38109 - - - 8.52697 - 47.38108 - - - 8.52721 - 47.38106 - - - 8.52748 - 47.38102 - - - 8.52760 - 47.38100 - - - 8.52773 - 47.38097 - - - 8.52786 - 47.38094 - - - 8.52806 - 47.38090 - - - 8.52820 - 47.38086 - - - 8.52843 - 47.38080 - - - 8.52892 - 47.38067 - - - 8.52938 - 47.38055 - - - 8.52971 - 47.38045 - - - 8.53064 - 47.38016 - - - 8.53112 - 47.38001 - - - 8.53245 - 47.37965 - - - 8.53289 - 47.37951 - - - 8.53350 - 47.37931 - - - 8.53431 - 47.37903 - - - 8.53526 - 47.37872 - - - 8.53624 - 47.37844 - - - 8.53802 - 47.37795 - - - 8.53864 - 47.37778 - - - 8.53921 - 47.37764 - - - 8.53944 - 47.37759 - - - PT22M - 14251 - - - - - Uetlibergbahn - - - 12780 - - - Sihltal-Zürich-Uetliberg-Bahn - - - ch:1:sjyid:100058:12780-002 - - - - - - 2 - - walk - - ch:1:sloid:3088:0:82204 - - Zürich HB SZU - - - - ch:1:sloid:3000:500:31 - - Zürich HB - - - 2024-03-09T07:07:00Z - 2024-03-09T07:32:00Z - PT25M - PT7M - PT18M - 189 - - - - - - 8.53946 - 47.37760 - - - 8.53943 - 47.37760 - - - - PT0M0S - 0 - - origin - left - - - - - - 8.53943 - 47.37760 - - - 8.53861 - 47.37781 - - - 8.53710 - 47.37821 - - - 8.53712 - 47.37821 - - - Bahnsteig - PT0H2M50S - 189 - - keep - straight on - - - - - - 8.53712 - 47.37821 - - - 8.53712 - 47.37821 - - - Einstieg Zug - PT0M0S - 0 - - enter - left - - - - - - 3 - - - ch:1:sloid:3000:500:31 - - Zürich HB - - - NO_DATA - - - 31 - - - 2024-03-09T07:32:00Z - - 1 - - - ch:1:sloid:7000:2:3 - - Bern - - - NO_DATA - - - 3 - - - 2024-03-09T08:28:00Z - - 2 - - - 2024-03-09 - ch:1:sjyid:100001:710-001 - ojp:91001:D - R - - rail - interRegionalRailService - - Zug - - - IC - - - - IC1 - - ojp:11 - - - Familienwagen mit Spielplatz - - A__FA - - - - Ruhezone in 1. Klasse - - A__RZ - mobilePhoneFreeZone - - - - Gratis-Internet mit der App SBB FreeSurf - - A__FS - - - - Businesszone in 1. Klasse - - A__BZ - firstClass - businessServices - - - - Restaurant - - A__WR - restaurantService - - - - Platzreservierung möglich - - A___R - - 8501026 - - Genève-Aéroport - - - - - - ch:1:sloid:3000:500:31 - - Zürich HB - - - - ch:1:sloid:7000:2:3 - - Bern - - - - - 8.53711 - 47.37820 - - - 8.53624 - 47.37844 - - - 8.53526 - 47.37872 - - - 8.53431 - 47.37903 - - - 8.53350 - 47.37931 - - - 8.53289 - 47.37951 - - - 8.53245 - 47.37965 - - - 8.53112 - 47.38001 - - - 8.53064 - 47.38016 - - - 8.53050 - 47.38020 - - - 8.53039 - 47.38024 - - - 8.52995 - 47.38041 - - - 8.52974 - 47.38048 - - - 8.52940 - 47.38058 - - - 8.52921 - 47.38064 - - - 8.52842 - 47.38085 - - - 8.52795 - 47.38098 - - - 8.52775 - 47.38103 - - - 8.52760 - 47.38106 - - - 8.52745 - 47.38109 - - - 8.52735 - 47.38111 - - - 8.52724 - 47.38113 - - - 8.52712 - 47.38114 - - - 8.52691 - 47.38117 - - - 8.52677 - 47.38118 - - - 8.52664 - 47.38118 - - - 8.52651 - 47.38119 - - - 8.52635 - 47.38119 - - - 8.52617 - 47.38118 - - - 8.52587 - 47.38117 - - - 8.52554 - 47.38115 - - - 8.52508 - 47.38114 - - - 8.52484 - 47.38113 - - - 8.52468 - 47.38113 - - - 8.52456 - 47.38114 - - - 8.52436 - 47.38115 - - - 8.52411 - 47.38117 - - - 8.52398 - 47.38119 - - - 8.52371 - 47.38122 - - - 8.52355 - 47.38125 - - - 8.52341 - 47.38128 - - - 8.52327 - 47.38131 - - - 8.52313 - 47.38135 - - - 8.52302 - 47.38138 - - - 8.52290 - 47.38142 - - - 8.52276 - 47.38146 - - - 8.52259 - 47.38152 - - - 8.52243 - 47.38158 - - - 8.52221 - 47.38168 - - - 8.52201 - 47.38178 - - - 8.52177 - 47.38191 - - - 8.52154 - 47.38206 - - - 8.52139 - 47.38216 - - - 8.52124 - 47.38228 - - - 8.52101 - 47.38248 - - - 8.52082 - 47.38264 - - - 8.52062 - 47.38281 - - - 8.52051 - 47.38289 - - - 8.52041 - 47.38297 - - - 8.52030 - 47.38305 - - - 8.52019 - 47.38312 - - - 8.52005 - 47.38321 - - - 8.51992 - 47.38328 - - - 8.51980 - 47.38335 - - - 8.51968 - 47.38342 - - - 8.51951 - 47.38350 - - - 8.51937 - 47.38356 - - - 8.51923 - 47.38362 - - - 8.51910 - 47.38368 - - - 8.51899 - 47.38372 - - - 8.51887 - 47.38376 - - - 8.51875 - 47.38380 - - - 8.51859 - 47.38386 - - - 8.51840 - 47.38391 - - - 8.51776 - 47.38409 - - - 8.51693 - 47.38431 - - - 8.51553 - 47.38470 - - - 8.51485 - 47.38488 - - - 8.50948 - 47.38634 - - - 8.50886 - 47.38645 - - - 8.50866 - 47.38650 - - - 8.50850 - 47.38654 - - - 8.50783 - 47.38672 - - - 8.50697 - 47.38704 - - - 8.50678 - 47.38712 - - - 8.50642 - 47.38727 - - - 8.50606 - 47.38743 - - - 8.50578 - 47.38753 - - - 8.50552 - 47.38762 - - - 8.50526 - 47.38770 - - - 8.50151 - 47.38881 - - - 8.50122 - 47.38889 - - - 8.50105 - 47.38893 - - - 8.50086 - 47.38898 - - - 8.50066 - 47.38902 - - - 8.50044 - 47.38906 - - - 8.50018 - 47.38911 - - - 8.49974 - 47.38918 - - - 8.49932 - 47.38924 - - - 8.49894 - 47.38928 - - - 8.49860 - 47.38930 - - - 8.49834 - 47.38933 - - - 8.49819 - 47.38935 - - - 8.49805 - 47.38937 - - - 8.49789 - 47.38940 - - - 8.49771 - 47.38943 - - - 8.49682 - 47.38960 - - - 8.49665 - 47.38964 - - - 8.49650 - 47.38967 - - - 8.49633 - 47.38971 - - - 8.49619 - 47.38975 - - - 8.49602 - 47.38980 - - - 8.49558 - 47.38993 - - - 8.49516 - 47.39005 - - - 8.49487 - 47.39012 - - - 8.49469 - 47.39016 - - - 8.49401 - 47.39031 - - - 8.49368 - 47.39038 - - - 8.49318 - 47.39050 - - - 8.49273 - 47.39061 - - - 8.49234 - 47.39072 - - - 8.48911 - 47.39159 - - - 8.48726 - 47.39209 - - - 8.48713 - 47.39212 - - - 8.48703 - 47.39214 - - - 8.48659 - 47.39224 - - - 8.48574 - 47.39248 - - - 8.48565 - 47.39251 - - - 8.48499 - 47.39267 - - - 8.48231 - 47.39336 - - - 8.48153 - 47.39356 - - - 8.48096 - 47.39370 - - - 8.47399 - 47.39564 - - - 8.46941 - 47.39687 - - - 8.46904 - 47.39698 - - - 8.46827 - 47.39720 - - - 8.46451 - 47.39821 - - - 8.46367 - 47.39846 - - - 8.46341 - 47.39854 - - - 8.46322 - 47.39859 - - - 8.46296 - 47.39866 - - - 8.46264 - 47.39873 - - - 8.46253 - 47.39876 - - - 8.46232 - 47.39882 - - - 8.46172 - 47.39900 - - - 8.46147 - 47.39908 - - - 8.46122 - 47.39916 - - - 8.46110 - 47.39920 - - - 8.46072 - 47.39931 - - - 8.46037 - 47.39940 - - - 8.46014 - 47.39946 - - - 8.45970 - 47.39956 - - - 8.45948 - 47.39961 - - - 8.45929 - 47.39965 - - - 8.45906 - 47.39969 - - - 8.45887 - 47.39972 - - - 8.45866 - 47.39975 - - - 8.45849 - 47.39978 - - - 8.45831 - 47.39980 - - - 8.45809 - 47.39982 - - - 8.45787 - 47.39984 - - - 8.45770 - 47.39985 - - - 8.45751 - 47.39985 - - - 8.45709 - 47.39987 - - - 8.45694 - 47.39987 - - - 8.45680 - 47.39987 - - - 8.45666 - 47.39986 - - - 8.45652 - 47.39986 - - - 8.45634 - 47.39985 - - - 8.45441 - 47.39970 - - - 8.44965 - 47.39936 - - - 8.44954 - 47.39935 - - - 8.44945 - 47.39935 - - - 8.44934 - 47.39935 - - - 8.44909 - 47.39935 - - - 8.44899 - 47.39935 - - - 8.44886 - 47.39934 - - - 8.44653 - 47.39918 - - - 8.44536 - 47.39909 - - - 8.44225 - 47.39887 - - - 8.44211 - 47.39886 - - - 8.44194 - 47.39885 - - - 8.44169 - 47.39886 - - - 8.44151 - 47.39885 - - - 8.44117 - 47.39882 - - - 8.44084 - 47.39881 - - - 8.44052 - 47.39880 - - - 8.44002 - 47.39877 - - - 8.43950 - 47.39872 - - - 8.43910 - 47.39870 - - - 8.43865 - 47.39868 - - - 8.43823 - 47.39866 - - - 8.43813 - 47.39865 - - - 8.43747 - 47.39860 - - - 8.43672 - 47.39857 - - - 8.43607 - 47.39851 - - - 8.43538 - 47.39847 - - - 8.43505 - 47.39845 - - - 8.43437 - 47.39841 - - - 8.43312 - 47.39832 - - - 8.43222 - 47.39825 - - - 8.43133 - 47.39816 - - - 8.43048 - 47.39807 - - - 8.42964 - 47.39798 - - - 8.42908 - 47.39794 - - - 8.42848 - 47.39792 - - - 8.42806 - 47.39792 - - - 8.42746 - 47.39794 - - - 8.42687 - 47.39799 - - - 8.42621 - 47.39806 - - - 8.42555 - 47.39816 - - - 8.42350 - 47.39850 - - - 8.42209 - 47.39873 - - - 8.42028 - 47.39901 - - - 8.41950 - 47.39912 - - - 8.41803 - 47.39932 - - - 8.41734 - 47.39942 - - - 8.41264 - 47.40015 - - - 8.41183 - 47.40029 - - - 8.41136 - 47.40038 - - - 8.41107 - 47.40045 - - - 8.41077 - 47.40053 - - - 8.41049 - 47.40062 - - - 8.41021 - 47.40072 - - - 8.40984 - 47.40086 - - - 8.40955 - 47.40098 - - - 8.40928 - 47.40110 - - - 8.40902 - 47.40122 - - - 8.40881 - 47.40133 - - - 8.40859 - 47.40146 - - - 8.40833 - 47.40164 - - - 8.40805 - 47.40183 - - - 8.40780 - 47.40202 - - - 8.40761 - 47.40217 - - - 8.40745 - 47.40232 - - - 8.40727 - 47.40250 - - - 8.40713 - 47.40266 - - - 8.40700 - 47.40282 - - - 8.40686 - 47.40302 - - - 8.40672 - 47.40324 - - - 8.40656 - 47.40351 - - - 8.40525 - 47.40589 - - - 8.40484 - 47.40661 - - - 8.40422 - 47.40767 - - - 8.40416 - 47.40776 - - - 8.40387 - 47.40822 - - - 8.40371 - 47.40844 - - - 8.40317 - 47.40913 - - - 8.40294 - 47.40936 - - - 8.40285 - 47.40944 - - - 8.40274 - 47.40953 - - - 8.40262 - 47.40962 - - - 8.40242 - 47.40975 - - - 8.40181 - 47.41013 - - - 8.40173 - 47.41018 - - - 8.40148 - 47.41035 - - - 8.40077 - 47.41075 - - - 8.40048 - 47.41091 - - - 8.40033 - 47.41099 - - - 8.40015 - 47.41107 - - - 8.39976 - 47.41122 - - - 8.39963 - 47.41127 - - - 8.39940 - 47.41138 - - - 8.39909 - 47.41157 - - - 8.39261 - 47.41608 - - - 8.39243 - 47.41620 - - - 8.39213 - 47.41640 - - - 8.39184 - 47.41658 - - - 8.39169 - 47.41665 - - - 8.39127 - 47.41685 - - - 8.39099 - 47.41698 - - - 8.38955 - 47.41770 - - - 8.38200 - 47.42145 - - - 8.38139 - 47.42174 - - - 8.38121 - 47.42182 - - - 8.38109 - 47.42188 - - - 8.38100 - 47.42193 - - - 8.38089 - 47.42199 - - - 8.38070 - 47.42211 - - - 8.38017 - 47.42236 - - - 8.37984 - 47.42255 - - - 8.37966 - 47.42264 - - - 8.37956 - 47.42269 - - - 8.37949 - 47.42272 - - - 8.37943 - 47.42274 - - - 8.37933 - 47.42278 - - - 8.37924 - 47.42281 - - - 8.37896 - 47.42289 - - - 8.37887 - 47.42292 - - - 8.37852 - 47.42301 - - - 8.37830 - 47.42308 - - - 8.37796 - 47.42319 - - - 8.37763 - 47.42332 - - - 8.37737 - 47.42345 - - - 8.37639 - 47.42390 - - - 8.37591 - 47.42407 - - - 8.37565 - 47.42419 - - - 8.37512 - 47.42444 - - - 8.37476 - 47.42457 - - - 8.37448 - 47.42468 - - - 8.36759 - 47.42789 - - - 8.36630 - 47.42848 - - - 8.36616 - 47.42854 - - - 8.36599 - 47.42861 - - - 8.36581 - 47.42869 - - - 8.36525 - 47.42895 - - - 8.36511 - 47.42901 - - - 8.36495 - 47.42907 - - - 8.36464 - 47.42917 - - - 8.36338 - 47.42959 - - - 8.36300 - 47.42974 - - - 8.36269 - 47.42987 - - - 8.36229 - 47.43007 - - - 8.36018 - 47.43122 - - - 8.35973 - 47.43142 - - - 8.35769 - 47.43217 - - - 8.35683 - 47.43246 - - - 8.35586 - 47.43279 - - - 8.35518 - 47.43302 - - - 8.35501 - 47.43308 - - - 8.35478 - 47.43316 - - - 8.35453 - 47.43328 - - - 8.35431 - 47.43337 - - - 8.35192 - 47.43423 - - - 8.35143 - 47.43441 - - - 8.35037 - 47.43483 - - - 8.35020 - 47.43489 - - - 8.34689 - 47.43609 - - - 8.34592 - 47.43644 - - - 8.34480 - 47.43684 - - - 8.34415 - 47.43707 - - - 8.34381 - 47.43717 - - - 8.34362 - 47.43723 - - - 8.34342 - 47.43729 - - - 8.34322 - 47.43735 - - - 8.34302 - 47.43741 - - - 8.34165 - 47.43769 - - - 8.34024 - 47.43790 - - - 8.33923 - 47.43799 - - - 8.33820 - 47.43803 - - - 8.33726 - 47.43802 - - - 8.33661 - 47.43798 - - - 8.33600 - 47.43793 - - - 8.33529 - 47.43785 - - - 8.33462 - 47.43775 - - - 8.33314 - 47.43751 - - - 8.33153 - 47.43728 - - - 8.32196 - 47.43573 - - - 8.27938 - 47.42869 - - - 8.27852 - 47.42855 - - - 8.27691 - 47.42826 - - - 8.27581 - 47.42806 - - - 8.27348 - 47.42760 - - - 8.27078 - 47.42708 - - - 8.27022 - 47.42699 - - - 8.26993 - 47.42695 - - - 8.26956 - 47.42690 - - - 8.26918 - 47.42685 - - - 8.26868 - 47.42681 - - - 8.26806 - 47.42677 - - - 8.26775 - 47.42675 - - - 8.26706 - 47.42673 - - - 8.26629 - 47.42672 - - - 8.26581 - 47.42674 - - - 8.26357 - 47.42682 - - - 8.26033 - 47.42694 - - - 8.25896 - 47.42697 - - - 8.25821 - 47.42696 - - - 8.25744 - 47.42693 - - - 8.25667 - 47.42687 - - - 8.25592 - 47.42678 - - - 8.25532 - 47.42668 - - - 8.25477 - 47.42659 - - - 8.25424 - 47.42647 - - - 8.25374 - 47.42635 - - - 8.25334 - 47.42623 - - - 8.25279 - 47.42606 - - - 8.25148 - 47.42560 - - - 8.25077 - 47.42528 - - - 8.25010 - 47.42494 - - - 8.24954 - 47.42461 - - - 8.24891 - 47.42422 - - - 8.24843 - 47.42388 - - - 8.24821 - 47.42370 - - - 8.24765 - 47.42324 - - - 8.24719 - 47.42280 - - - 8.24643 - 47.42197 - - - 8.24564 - 47.42107 - - - 8.24543 - 47.42084 - - - 8.24518 - 47.42060 - - - 8.24492 - 47.42036 - - - 8.24462 - 47.42005 - - - 8.24425 - 47.41969 - - - 8.24386 - 47.41933 - - - 8.24349 - 47.41899 - - - 8.24300 - 47.41858 - - - 8.24277 - 47.41838 - - - 8.24239 - 47.41810 - - - 8.24217 - 47.41795 - - - 8.24189 - 47.41779 - - - 8.24138 - 47.41752 - - - 8.24088 - 47.41720 - - - 8.24045 - 47.41695 - - - 8.23988 - 47.41664 - - - 8.23929 - 47.41636 - - - 8.23872 - 47.41609 - - - 8.23812 - 47.41584 - - - 8.23743 - 47.41558 - - - 8.23701 - 47.41543 - - - 8.23585 - 47.41505 - - - 8.23495 - 47.41478 - - - 8.23475 - 47.41470 - - - 8.23440 - 47.41455 - - - 8.23416 - 47.41446 - - - 8.23356 - 47.41426 - - - 8.23342 - 47.41421 - - - 8.23270 - 47.41395 - - - 8.23137 - 47.41356 - - - 8.23041 - 47.41327 - - - 8.22988 - 47.41312 - - - 8.22864 - 47.41272 - - - 8.22765 - 47.41244 - - - 8.22235 - 47.41093 - - - 8.22072 - 47.41046 - - - 8.22002 - 47.41026 - - - 8.21929 - 47.41003 - - - 8.21855 - 47.40974 - - - 8.21827 - 47.40961 - - - 8.21743 - 47.40919 - - - 8.21708 - 47.40899 - - - 8.21639 - 47.40856 - - - 8.21583 - 47.40819 - - - 8.21564 - 47.40807 - - - 8.21430 - 47.40723 - - - 8.21334 - 47.40664 - - - 8.21206 - 47.40587 - - - 8.21116 - 47.40537 - - - 8.21071 - 47.40509 - - - 8.21055 - 47.40499 - - - 8.21021 - 47.40474 - - - 8.20989 - 47.40449 - - - 8.20958 - 47.40421 - - - 8.20935 - 47.40399 - - - 8.20906 - 47.40367 - - - 8.20887 - 47.40345 - - - 8.20868 - 47.40319 - - - 8.20847 - 47.40288 - - - 8.20790 - 47.40191 - - - 8.20745 - 47.40108 - - - 8.20714 - 47.40050 - - - 8.20672 - 47.39965 - - - 8.20652 - 47.39923 - - - 8.20631 - 47.39877 - - - 8.20602 - 47.39811 - - - 8.20577 - 47.39763 - - - 8.20566 - 47.39742 - - - 8.20552 - 47.39721 - - - 8.20512 - 47.39668 - - - 8.20468 - 47.39619 - - - 8.20431 - 47.39585 - - - 8.20397 - 47.39557 - - - 8.20357 - 47.39528 - - - 8.20330 - 47.39510 - - - 8.20278 - 47.39479 - - - 8.20225 - 47.39453 - - - 8.20168 - 47.39427 - - - 8.20104 - 47.39403 - - - 8.20045 - 47.39385 - - - 8.19989 - 47.39370 - - - 8.19955 - 47.39363 - - - 8.19906 - 47.39354 - - - 8.19840 - 47.39342 - - - 8.19575 - 47.39301 - - - 8.19263 - 47.39253 - - - 8.18425 - 47.39123 - - - 8.18265 - 47.39098 - - - 8.18089 - 47.39071 - - - 8.18020 - 47.39061 - - - 8.17906 - 47.39042 - - - 8.17795 - 47.39027 - - - 8.17738 - 47.39020 - - - 8.17678 - 47.39017 - - - 8.17612 - 47.39016 - - - 8.17560 - 47.39018 - - - 8.17516 - 47.39022 - - - 8.17448 - 47.39030 - - - 8.17398 - 47.39038 - - - 8.17349 - 47.39048 - - - 8.17319 - 47.39056 - - - 8.17291 - 47.39064 - - - 8.17259 - 47.39073 - - - 8.17199 - 47.39094 - - - 8.17096 - 47.39133 - - - 8.17023 - 47.39158 - - - 8.16950 - 47.39181 - - - 8.16870 - 47.39204 - - - 8.16714 - 47.39248 - - - 8.16552 - 47.39292 - - - 8.16398 - 47.39337 - - - 8.16324 - 47.39360 - - - 8.16252 - 47.39383 - - - 8.16225 - 47.39392 - - - 8.16148 - 47.39416 - - - 8.16099 - 47.39431 - - - 8.16064 - 47.39441 - - - 8.16013 - 47.39455 - - - 8.15977 - 47.39465 - - - 8.15525 - 47.39608 - - - 8.15098 - 47.39744 - - - 8.15020 - 47.39769 - - - 8.14945 - 47.39795 - - - 8.14885 - 47.39818 - - - 8.14827 - 47.39843 - - - 8.14753 - 47.39879 - - - 8.14682 - 47.39919 - - - 8.14628 - 47.39954 - - - 8.14577 - 47.39989 - - - 8.14454 - 47.40085 - - - 8.14365 - 47.40149 - - - 8.14311 - 47.40185 - - - 8.14282 - 47.40201 - - - 8.14217 - 47.40236 - - - 8.14162 - 47.40263 - - - 8.14103 - 47.40289 - - - 8.14040 - 47.40313 - - - 8.13976 - 47.40335 - - - 8.13923 - 47.40351 - - - 8.13873 - 47.40365 - - - 8.13800 - 47.40382 - - - 8.13743 - 47.40393 - - - 8.13682 - 47.40403 - - - 8.13629 - 47.40410 - - - 8.13577 - 47.40415 - - - 8.13542 - 47.40418 - - - 8.13477 - 47.40422 - - - 8.13438 - 47.40423 - - - 8.13361 - 47.40424 - - - 8.13285 - 47.40421 - - - 8.13240 - 47.40418 - - - 8.13198 - 47.40415 - - - 8.13085 - 47.40403 - - - 8.13021 - 47.40395 - - - 8.12921 - 47.40380 - - - 8.12777 - 47.40355 - - - 8.12674 - 47.40335 - - - 8.12567 - 47.40311 - - - 8.12356 - 47.40264 - - - 8.12159 - 47.40227 - - - 8.12135 - 47.40222 - - - 8.11980 - 47.40192 - - - 8.11906 - 47.40179 - - - 8.11877 - 47.40174 - - - 8.11663 - 47.40144 - - - 8.11621 - 47.40138 - - - 8.08318 - 47.39657 - - - 8.08125 - 47.39628 - - - 8.07947 - 47.39602 - - - 8.07750 - 47.39576 - - - 8.07485 - 47.39544 - - - 8.07384 - 47.39531 - - - 8.07175 - 47.39500 - - - 8.07072 - 47.39485 - - - 8.06950 - 47.39464 - - - 8.06845 - 47.39447 - - - 8.06703 - 47.39426 - - - 8.06496 - 47.39396 - - - 8.06360 - 47.39376 - - - 8.06162 - 47.39347 - - - 8.06070 - 47.39332 - - - 8.06047 - 47.39328 - - - 8.05984 - 47.39313 - - - 8.05956 - 47.39307 - - - 8.05905 - 47.39297 - - - 8.05855 - 47.39286 - - - 8.05806 - 47.39275 - - - 8.05765 - 47.39265 - - - 8.05747 - 47.39261 - - - 8.05716 - 47.39254 - - - 8.05692 - 47.39250 - - - 8.05668 - 47.39245 - - - 8.05560 - 47.39218 - - - 8.05511 - 47.39205 - - - 8.05408 - 47.39172 - - - 8.05315 - 47.39143 - - - 8.05251 - 47.39125 - - - 8.05176 - 47.39104 - - - 8.04924 - 47.39040 - - - 8.04831 - 47.39014 - - - 8.04732 - 47.38988 - - - 8.04719 - 47.38984 - - - 8.04691 - 47.38976 - - - 8.04635 - 47.38962 - - - 8.04526 - 47.38932 - - - 8.04445 - 47.38912 - - - 8.04345 - 47.38890 - - - 8.04078 - 47.38839 - - - 8.03952 - 47.38813 - - - 8.03904 - 47.38802 - - - 8.03832 - 47.38787 - - - 8.03747 - 47.38768 - - - 8.03645 - 47.38743 - - - 8.03579 - 47.38727 - - - 8.03513 - 47.38710 - - - 8.03404 - 47.38679 - - - 8.03257 - 47.38641 - - - 8.03042 - 47.38586 - - - 8.02929 - 47.38557 - - - 8.02848 - 47.38535 - - - 8.02771 - 47.38512 - - - 8.02688 - 47.38485 - - - 8.02593 - 47.38450 - - - 8.02485 - 47.38412 - - - 8.02107 - 47.38267 - - - 8.02009 - 47.38227 - - - 8.01598 - 47.38061 - - - 8.01538 - 47.38038 - - - 8.01457 - 47.38007 - - - 8.01367 - 47.37971 - - - 8.01150 - 47.37884 - - - 8.01109 - 47.37866 - - - 8.00704 - 47.37702 - - - 8.00437 - 47.37595 - - - 8.00370 - 47.37564 - - - 8.00303 - 47.37527 - - - 8.00240 - 47.37486 - - - 8.00185 - 47.37437 - - - 8.00152 - 47.37403 - - - 8.00111 - 47.37351 - - - 8.00085 - 47.37306 - - - 8.00072 - 47.37278 - - - 7.99843 - 47.36778 - - - 7.99835 - 47.36761 - - - 7.99806 - 47.36708 - - - 7.99789 - 47.36674 - - - 7.99750 - 47.36588 - - - 7.99727 - 47.36543 - - - 7.99701 - 47.36498 - - - 7.99660 - 47.36446 - - - 7.99578 - 47.36367 - - - 7.99508 - 47.36312 - - - 7.99482 - 47.36292 - - - 7.99453 - 47.36273 - - - 7.99418 - 47.36252 - - - 7.99355 - 47.36219 - - - 7.99297 - 47.36193 - - - 7.99240 - 47.36172 - - - 7.98996 - 47.36083 - - - 7.98619 - 47.35945 - - - 7.98366 - 47.35850 - - - 7.98055 - 47.35734 - - - 7.97964 - 47.35700 - - - 7.97680 - 47.35587 - - - 7.97612 - 47.35562 - - - 7.97441 - 47.35498 - - - 7.97096 - 47.35369 - - - 7.96667 - 47.35210 - - - 7.96391 - 47.35106 - - - 7.96328 - 47.35084 - - - 7.96265 - 47.35066 - - - 7.96208 - 47.35052 - - - 7.96151 - 47.35041 - - - 7.96090 - 47.35033 - - - 7.96028 - 47.35028 - - - 7.95959 - 47.35025 - - - 7.95892 - 47.35026 - - - 7.95828 - 47.35031 - - - 7.95767 - 47.35038 - - - 7.95723 - 47.35044 - - - 7.95680 - 47.35053 - - - 7.95621 - 47.35068 - - - 7.95561 - 47.35084 - - - 7.95501 - 47.35107 - - - 7.95469 - 47.35119 - - - 7.95428 - 47.35138 - - - 7.95317 - 47.35194 - - - 7.95161 - 47.35274 - - - 7.95100 - 47.35303 - - - 7.95043 - 47.35327 - - - 7.95000 - 47.35342 - - - 7.94953 - 47.35357 - - - 7.94898 - 47.35372 - - - 7.94840 - 47.35386 - - - 7.94755 - 47.35403 - - - 7.94708 - 47.35410 - - - 7.94661 - 47.35415 - - - 7.94448 - 47.35437 - - - 7.94275 - 47.35456 - - - 7.93805 - 47.35513 - - - 7.93542 - 47.35545 - - - 7.93467 - 47.35553 - - - 7.93369 - 47.35567 - - - 7.93242 - 47.35590 - - - 7.93159 - 47.35609 - - - 7.93079 - 47.35630 - - - 7.93015 - 47.35649 - - - 7.92960 - 47.35667 - - - 7.92941 - 47.35674 - - - 7.92853 - 47.35707 - - - 7.92764 - 47.35746 - - - 7.92701 - 47.35777 - - - 7.92654 - 47.35803 - - - 7.92584 - 47.35845 - - - 7.92561 - 47.35859 - - - 7.92473 - 47.35909 - - - 7.92386 - 47.35956 - - - 7.92345 - 47.35977 - - - 7.92307 - 47.35994 - - - 7.92269 - 47.36008 - - - 7.92217 - 47.36025 - - - 7.92190 - 47.36033 - - - 7.92159 - 47.36040 - - - 7.92118 - 47.36048 - - - 7.92099 - 47.36052 - - - 7.92079 - 47.36054 - - - 7.92049 - 47.36058 - - - 7.92001 - 47.36062 - - - 7.91960 - 47.36063 - - - 7.91912 - 47.36062 - - - 7.91862 - 47.36058 - - - 7.91807 - 47.36051 - - - 7.91762 - 47.36042 - - - 7.91706 - 47.36028 - - - 7.91649 - 47.36009 - - - 7.91586 - 47.35982 - - - 7.91552 - 47.35965 - - - 7.91399 - 47.35887 - - - 7.91386 - 47.35881 - - - 7.91283 - 47.35823 - - - 7.91204 - 47.35783 - - - 7.91176 - 47.35768 - - - 7.91154 - 47.35755 - - - 7.91125 - 47.35736 - - - 7.91093 - 47.35712 - - - 7.91027 - 47.35650 - - - 7.90955 - 47.35579 - - - 7.90924 - 47.35542 - - - 7.90913 - 47.35528 - - - 7.90901 - 47.35512 - - - 7.90893 - 47.35499 - - - 7.90886 - 47.35487 - - - 7.90877 - 47.35473 - - - 7.90857 - 47.35435 - - - 7.90845 - 47.35407 - - - 7.90842 - 47.35401 - - - 7.90837 - 47.35385 - - - 7.90831 - 47.35358 - - - 7.90825 - 47.35326 - - - 7.90798 - 47.35162 - - - 7.90795 - 47.35142 - - - 7.90790 - 47.35116 - - - 7.90777 - 47.35066 - - - 7.90753 - 47.34977 - - - 7.90748 - 47.34956 - - - 7.90744 - 47.34941 - - - 7.90742 - 47.34926 - - - 7.90739 - 47.34914 - - - 7.90736 - 47.34905 - - - 7.90732 - 47.34894 - - - 7.90729 - 47.34886 - - - 7.90726 - 47.34874 - - - 7.90720 - 47.34839 - - - 7.90712 - 47.34795 - - - 7.90708 - 47.34766 - - - 7.90706 - 47.34752 - - - 7.90706 - 47.34739 - - - 7.90706 - 47.34725 - - - 7.90707 - 47.34711 - - - 7.90708 - 47.34695 - - - 7.90710 - 47.34681 - - - 7.90714 - 47.34666 - - - 7.90722 - 47.34640 - - - 7.90728 - 47.34625 - - - 7.90746 - 47.34581 - - - 7.90774 - 47.34513 - - - 7.90787 - 47.34482 - - - 7.90791 - 47.34469 - - - 7.90797 - 47.34450 - - - 7.90801 - 47.34436 - - - 7.90805 - 47.34418 - - - 7.90808 - 47.34400 - - - 7.90809 - 47.34392 - - - 7.90810 - 47.34384 - - - 7.90812 - 47.34368 - - - 7.90812 - 47.34352 - - - 7.90811 - 47.34319 - - - 7.90810 - 47.34308 - - - 7.90808 - 47.34284 - - - 7.90806 - 47.34275 - - - 7.90803 - 47.34263 - - - 7.90800 - 47.34248 - - - 7.90783 - 47.34197 - - - 7.90762 - 47.34147 - - - 7.90739 - 47.34103 - - - 7.90705 - 47.34048 - - - 7.90662 - 47.33988 - - - 7.90643 - 47.33963 - - - 7.90623 - 47.33939 - - - 7.90585 - 47.33898 - - - 7.90541 - 47.33854 - - - 7.90504 - 47.33824 - - - 7.90461 - 47.33786 - - - 7.90370 - 47.33709 - - - 7.90323 - 47.33664 - - - 7.90266 - 47.33604 - - - 7.89784 - 47.33038 - - - 7.89710 - 47.32947 - - - 7.89634 - 47.32837 - - - 7.89596 - 47.32771 - - - 7.89557 - 47.32701 - - - 7.89477 - 47.32522 - - - 7.89447 - 47.32449 - - - 7.89417 - 47.32375 - - - 7.89398 - 47.32320 - - - 7.89385 - 47.32279 - - - 7.89375 - 47.32240 - - - 7.89366 - 47.32200 - - - 7.89359 - 47.32159 - - - 7.89354 - 47.32116 - - - 7.89350 - 47.32065 - - - 7.89348 - 47.32019 - - - 7.89348 - 47.31972 - - - 7.89349 - 47.31808 - - - 7.89348 - 47.31777 - - - 7.89342 - 47.31726 - - - 7.89335 - 47.31670 - - - 7.89328 - 47.31635 - - - 7.89320 - 47.31601 - - - 7.89313 - 47.31574 - - - 7.89306 - 47.31547 - - - 7.89287 - 47.31489 - - - 7.89263 - 47.31434 - - - 7.89240 - 47.31382 - - - 7.89228 - 47.31357 - - - 7.89214 - 47.31332 - - - 7.89192 - 47.31293 - - - 7.89168 - 47.31257 - - - 7.89137 - 47.31217 - - - 7.89109 - 47.31182 - - - 7.89087 - 47.31158 - - - 7.89070 - 47.31140 - - - 7.89053 - 47.31122 - - - 7.89016 - 47.31088 - - - 7.88992 - 47.31068 - - - 7.88966 - 47.31049 - - - 7.88872 - 47.30983 - - - 7.88781 - 47.30929 - - - 7.88711 - 47.30893 - - - 7.88646 - 47.30864 - - - 7.88552 - 47.30829 - - - 7.88507 - 47.30814 - - - 7.88454 - 47.30798 - - - 7.88311 - 47.30760 - - - 7.88175 - 47.30724 - - - 7.87943 - 47.30664 - - - 7.87825 - 47.30630 - - - 7.87705 - 47.30591 - - - 7.87598 - 47.30554 - - - 7.87262 - 47.30423 - - - 7.87061 - 47.30344 - - - 7.86970 - 47.30308 - - - 7.86903 - 47.30284 - - - 7.86750 - 47.30222 - - - 7.86714 - 47.30207 - - - 7.86660 - 47.30183 - - - 7.86618 - 47.30165 - - - 7.86374 - 47.30067 - - - 7.86239 - 47.30004 - - - 7.86121 - 47.29940 - - - 7.86008 - 47.29868 - - - 7.85887 - 47.29777 - - - 7.85794 - 47.29696 - - - 7.85705 - 47.29606 - - - 7.85658 - 47.29550 - - - 7.85615 - 47.29494 - - - 7.85563 - 47.29420 - - - 7.85521 - 47.29345 - - - 7.85504 - 47.29313 - - - 7.85488 - 47.29279 - - - 7.85467 - 47.29231 - - - 7.85450 - 47.29184 - - - 7.85427 - 47.29109 - - - 7.85416 - 47.29066 - - - 7.85407 - 47.29020 - - - 7.85400 - 47.28967 - - - 7.85396 - 47.28928 - - - 7.85394 - 47.28887 - - - 7.85394 - 47.28799 - - - 7.85398 - 47.28710 - - - 7.85400 - 47.28619 - - - 7.85400 - 47.28523 - - - 7.85396 - 47.28427 - - - 7.85390 - 47.28333 - - - 7.85379 - 47.28222 - - - 7.85372 - 47.28167 - - - 7.85364 - 47.28110 - - - 7.85344 - 47.27996 - - - 7.85332 - 47.27937 - - - 7.85318 - 47.27875 - - - 7.85294 - 47.27777 - - - 7.85266 - 47.27678 - - - 7.85230 - 47.27569 - - - 7.85209 - 47.27511 - - - 7.85185 - 47.27447 - - - 7.85146 - 47.27358 - - - 7.85105 - 47.27273 - - - 7.85062 - 47.27194 - - - 7.85037 - 47.27150 - - - 7.85009 - 47.27105 - - - 7.84978 - 47.27055 - - - 7.84943 - 47.27003 - - - 7.84901 - 47.26943 - - - 7.84858 - 47.26887 - - - 7.84797 - 47.26809 - - - 7.84756 - 47.26761 - - - 7.84711 - 47.26710 - - - 7.84645 - 47.26640 - - - 7.84573 - 47.26568 - - - 7.84511 - 47.26509 - - - 7.84464 - 47.26466 - - - 7.84413 - 47.26422 - - - 7.84362 - 47.26379 - - - 7.84308 - 47.26336 - - - 7.84240 - 47.26284 - - - 7.84186 - 47.26245 - - - 7.84117 - 47.26196 - - - 7.84043 - 47.26146 - - - 7.83974 - 47.26102 - - - 7.83903 - 47.26059 - - - 7.83832 - 47.26017 - - - 7.83760 - 47.25976 - - - 7.83686 - 47.25937 - - - 7.83605 - 47.25896 - - - 7.83521 - 47.25855 - - - 7.83440 - 47.25818 - - - 7.83342 - 47.25775 - - - 7.83238 - 47.25732 - - - 7.83149 - 47.25698 - - - 7.83061 - 47.25666 - - - 7.82928 - 47.25621 - - - 7.82814 - 47.25586 - - - 7.82705 - 47.25554 - - - 7.82572 - 47.25519 - - - 7.82103 - 47.25409 - - - 7.82023 - 47.25389 - - - 7.81942 - 47.25368 - - - 7.81865 - 47.25347 - - - 7.81783 - 47.25322 - - - 7.81591 - 47.25261 - - - 7.81451 - 47.25210 - - - 7.81316 - 47.25156 - - - 7.81181 - 47.25099 - - - 7.81057 - 47.25041 - - - 7.80928 - 47.24976 - - - 7.80767 - 47.24889 - - - 7.80624 - 47.24801 - - - 7.80483 - 47.24708 - - - 7.80412 - 47.24656 - - - 7.80321 - 47.24589 - - - 7.80210 - 47.24500 - - - 7.79993 - 47.24298 - - - 7.79903 - 47.24207 - - - 7.79725 - 47.24022 - - - 7.79370 - 47.23654 - - - 7.79222 - 47.23502 - - - 7.79100 - 47.23379 - - - 7.79003 - 47.23286 - - - 7.78907 - 47.23202 - - - 7.78758 - 47.23081 - - - 7.78551 - 47.22931 - - - 7.78378 - 47.22819 - - - 7.78041 - 47.22625 - - - 7.77304 - 47.22215 - - - 7.77104 - 47.22102 - - - 7.77010 - 47.22046 - - - 7.76917 - 47.21988 - - - 7.76828 - 47.21930 - - - 7.76740 - 47.21870 - - - 7.76540 - 47.21731 - - - 7.76438 - 47.21663 - - - 7.76333 - 47.21595 - - - 7.76243 - 47.21541 - - - 7.76149 - 47.21486 - - - 7.76024 - 47.21419 - - - 7.75895 - 47.21352 - - - 7.75803 - 47.21307 - - - 7.75714 - 47.21266 - - - 7.75673 - 47.21247 - - - 7.75610 - 47.21219 - - - 7.75580 - 47.21207 - - - 7.75505 - 47.21175 - - - 7.75428 - 47.21144 - - - 7.75340 - 47.21110 - - - 7.75283 - 47.21089 - - - 7.75231 - 47.21070 - - - 7.75195 - 47.21057 - - - 7.75143 - 47.21039 - - - 7.74992 - 47.20990 - - - 7.74880 - 47.20956 - - - 7.74759 - 47.20922 - - - 7.74655 - 47.20894 - - - 7.74559 - 47.20870 - - - 7.74461 - 47.20846 - - - 7.74045 - 47.20751 - - - 7.72816 - 47.20470 - - - 7.72711 - 47.20446 - - - 7.72159 - 47.20319 - - - 7.70494 - 47.19937 - - - 7.70339 - 47.19902 - - - 7.70183 - 47.19871 - - - 7.70033 - 47.19844 - - - 7.69882 - 47.19818 - - - 7.69767 - 47.19798 - - - 7.69653 - 47.19776 - - - 7.69546 - 47.19755 - - - 7.69436 - 47.19732 - - - 7.69247 - 47.19693 - - - 7.69160 - 47.19676 - - - 7.69095 - 47.19665 - - - 7.69037 - 47.19656 - - - 7.68973 - 47.19647 - - - 7.68935 - 47.19642 - - - 7.68935 - 47.19642 - - - 7.68973 - 47.19647 - - - 7.69037 - 47.19656 - - - 7.69095 - 47.19665 - - - 7.69160 - 47.19676 - - - 7.69247 - 47.19693 - - - 7.69436 - 47.19732 - - - 7.69546 - 47.19755 - - - 7.69653 - 47.19776 - - - 7.69767 - 47.19798 - - - 7.69882 - 47.19818 - - - 7.68998 - 47.19668 - - - 7.68818 - 47.19638 - - - 7.68636 - 47.19606 - - - 7.68522 - 47.19584 - - - 7.68406 - 47.19559 - - - 7.68281 - 47.19531 - - - 7.68164 - 47.19502 - - - 7.68038 - 47.19469 - - - 7.67912 - 47.19433 - - - 7.67799 - 47.19398 - - - 7.67683 - 47.19360 - - - 7.67592 - 47.19329 - - - 7.67507 - 47.19298 - - - 7.67422 - 47.19266 - - - 7.67337 - 47.19232 - - - 7.67231 - 47.19189 - - - 7.67129 - 47.19144 - - - 7.67035 - 47.19101 - - - 7.66950 - 47.19061 - - - 7.66842 - 47.19007 - - - 7.66736 - 47.18951 - - - 7.66652 - 47.18904 - - - 7.66578 - 47.18862 - - - 7.66503 - 47.18817 - - - 7.66427 - 47.18770 - - - 7.66312 - 47.18695 - - - 7.66202 - 47.18618 - - - 7.65984 - 47.18465 - - - 7.65562 - 47.18167 - - - 7.64646 - 47.17523 - - - 7.64444 - 47.17387 - - - 7.63676 - 47.16913 - - - 7.63072 - 47.16542 - - - 7.62881 - 47.16427 - - - 7.62681 - 47.16316 - - - 7.62473 - 47.16211 - - - 7.62308 - 47.16135 - - - 7.62152 - 47.16069 - - - 7.61968 - 47.15997 - - - 7.61880 - 47.15965 - - - 7.61579 - 47.15865 - - - 7.61380 - 47.15800 - - - 7.61354 - 47.15791 - - - 7.61174 - 47.15725 - - - 7.61012 - 47.15660 - - - 7.60833 - 47.15583 - - - 7.60659 - 47.15501 - - - 7.60508 - 47.15424 - - - 7.60404 - 47.15366 - - - 7.60297 - 47.15306 - - - 7.60047 - 47.15149 - - - 7.59899 - 47.15045 - - - 7.59748 - 47.14930 - - - 7.59573 - 47.14782 - - - 7.59457 - 47.14677 - - - 7.59349 - 47.14568 - - - 7.59309 - 47.14526 - - - 7.59272 - 47.14486 - - - 7.59197 - 47.14401 - - - 7.59056 - 47.14226 - - - 7.58995 - 47.14141 - - - 7.58936 - 47.14056 - - - 7.58836 - 47.13892 - - - 7.58758 - 47.13747 - - - 7.58691 - 47.13602 - - - 7.58567 - 47.13319 - - - 7.58369 - 47.12860 - - - 7.58217 - 47.12474 - - - 7.58195 - 47.12419 - - - 7.58181 - 47.12381 - - - 7.58140 - 47.12268 - - - 7.58086 - 47.12116 - - - 7.58047 - 47.12003 - - - 7.58009 - 47.11889 - - - 7.57973 - 47.11775 - - - 7.57938 - 47.11661 - - - 7.57921 - 47.11605 - - - 7.57889 - 47.11492 - - - 7.57872 - 47.11436 - - - 7.57857 - 47.11380 - - - 7.57826 - 47.11267 - - - 7.57811 - 47.11210 - - - 7.57776 - 47.11070 - - - 7.57742 - 47.10929 - - - 7.57619 - 47.10415 - - - 7.57541 - 47.10092 - - - 7.57499 - 47.09913 - - - 7.57457 - 47.09735 - - - 7.57437 - 47.09654 - - - 7.57430 - 47.09613 - - - 7.57422 - 47.09573 - - - 7.57412 - 47.09532 - - - 7.57404 - 47.09492 - - - 7.57388 - 47.09412 - - - 7.57378 - 47.09346 - - - 7.57369 - 47.09278 - - - 7.57361 - 47.09209 - - - 7.57355 - 47.09140 - - - 7.57324 - 47.08694 - - - 7.57310 - 47.08561 - - - 7.57299 - 47.08491 - - - 7.57286 - 47.08423 - - - 7.57267 - 47.08340 - - - 7.57244 - 47.08257 - - - 7.57211 - 47.08155 - - - 7.57173 - 47.08056 - - - 7.57128 - 47.07955 - - - 7.57112 - 47.07919 - - - 7.57096 - 47.07887 - - - 7.57072 - 47.07842 - - - 7.57049 - 47.07799 - - - 7.57034 - 47.07774 - - - 7.57020 - 47.07749 - - - 7.56989 - 47.07698 - - - 7.56955 - 47.07644 - - - 7.56922 - 47.07591 - - - 7.56811 - 47.07427 - - - 7.56697 - 47.07263 - - - 7.56646 - 47.07193 - - - 7.56593 - 47.07123 - - - 7.56562 - 47.07081 - - - 7.56531 - 47.07040 - - - 7.56493 - 47.06992 - - - 7.56455 - 47.06946 - - - 7.56394 - 47.06875 - - - 7.56362 - 47.06839 - - - 7.56329 - 47.06804 - - - 7.56279 - 47.06753 - - - 7.56257 - 47.06731 - - - 7.56233 - 47.06708 - - - 7.56196 - 47.06673 - - - 7.56165 - 47.06644 - - - 7.56129 - 47.06611 - - - 7.56090 - 47.06578 - - - 7.56025 - 47.06523 - - - 7.55992 - 47.06497 - - - 7.55957 - 47.06469 - - - 7.55897 - 47.06424 - - - 7.55839 - 47.06381 - - - 7.55786 - 47.06344 - - - 7.55754 - 47.06322 - - - 7.55715 - 47.06296 - - - 7.55615 - 47.06232 - - - 7.55577 - 47.06209 - - - 7.55472 - 47.06148 - - - 7.55401 - 47.06109 - - - 7.55353 - 47.06084 - - - 7.55305 - 47.06059 - - - 7.55243 - 47.06028 - - - 7.55195 - 47.06005 - - - 7.55149 - 47.05983 - - - 7.55062 - 47.05943 - - - 7.54562 - 47.05716 - - - 7.54348 - 47.05617 - - - 7.54249 - 47.05571 - - - 7.54202 - 47.05548 - - - 7.54155 - 47.05523 - - - 7.54107 - 47.05498 - - - 7.54060 - 47.05472 - - - 7.54013 - 47.05447 - - - 7.53967 - 47.05420 - - - 7.53903 - 47.05382 - - - 7.53881 - 47.05368 - - - 7.53843 - 47.05345 - - - 7.53806 - 47.05321 - - - 7.53769 - 47.05296 - - - 7.53733 - 47.05272 - - - 7.53692 - 47.05244 - - - 7.53654 - 47.05216 - - - 7.53615 - 47.05188 - - - 7.53578 - 47.05160 - - - 7.53542 - 47.05131 - - - 7.53493 - 47.05092 - - - 7.53432 - 47.05041 - - - 7.53403 - 47.05015 - - - 7.53373 - 47.04989 - - - 7.53344 - 47.04962 - - - 7.53305 - 47.04925 - - - 7.53268 - 47.04888 - - - 7.53231 - 47.04850 - - - 7.53172 - 47.04786 - - - 7.53126 - 47.04734 - - - 7.53104 - 47.04709 - - - 7.53082 - 47.04682 - - - 7.53039 - 47.04628 - - - 7.52999 - 47.04574 - - - 7.52980 - 47.04547 - - - 7.52942 - 47.04493 - - - 7.52925 - 47.04466 - - - 7.52890 - 47.04413 - - - 7.52857 - 47.04356 - - - 7.52840 - 47.04327 - - - 7.52824 - 47.04297 - - - 7.52808 - 47.04268 - - - 7.52794 - 47.04240 - - - 7.52774 - 47.04198 - - - 7.52754 - 47.04156 - - - 7.52736 - 47.04113 - - - 7.52727 - 47.04091 - - - 7.52718 - 47.04070 - - - 7.52710 - 47.04049 - - - 7.52695 - 47.04007 - - - 7.52687 - 47.03986 - - - 7.52677 - 47.03955 - - - 7.52667 - 47.03924 - - - 7.52658 - 47.03893 - - - 7.52642 - 47.03835 - - - 7.52629 - 47.03783 - - - 7.52623 - 47.03757 - - - 7.52613 - 47.03704 - - - 7.52608 - 47.03677 - - - 7.52586 - 47.03542 - - - 7.52574 - 47.03474 - - - 7.52565 - 47.03430 - - - 7.52556 - 47.03387 - - - 7.52546 - 47.03344 - - - 7.52541 - 47.03323 - - - 7.52525 - 47.03265 - - - 7.52514 - 47.03229 - - - 7.52502 - 47.03193 - - - 7.52490 - 47.03157 - - - 7.52477 - 47.03121 - - - 7.52463 - 47.03085 - - - 7.52434 - 47.03013 - - - 7.52403 - 47.02942 - - - 7.52370 - 47.02870 - - - 7.52345 - 47.02815 - - - 7.52328 - 47.02777 - - - 7.52299 - 47.02713 - - - 7.52282 - 47.02676 - - - 7.52266 - 47.02645 - - - 7.52239 - 47.02593 - - - 7.52211 - 47.02541 - - - 7.52196 - 47.02516 - - - 7.52181 - 47.02491 - - - 7.52165 - 47.02466 - - - 7.52146 - 47.02438 - - - 7.51470 - 47.01411 - - - 7.51392 - 47.01293 - - - 7.51323 - 47.01188 - - - 7.51275 - 47.01117 - - - 7.51222 - 47.01042 - - - 7.51163 - 47.00965 - - - 7.51100 - 47.00890 - - - 7.51058 - 47.00842 - - - 7.51014 - 47.00795 - - - 7.50970 - 47.00750 - - - 7.50922 - 47.00704 - - - 7.50876 - 47.00661 - - - 7.50827 - 47.00617 - - - 7.50778 - 47.00575 - - - 7.50725 - 47.00532 - - - 7.50647 - 47.00472 - - - 7.50577 - 47.00421 - - - 7.50504 - 47.00371 - - - 7.50441 - 47.00330 - - - 7.50374 - 47.00288 - - - 7.50308 - 47.00250 - - - 7.50244 - 47.00213 - - - 7.50175 - 47.00176 - - - 7.50096 - 47.00135 - - - 7.49991 - 47.00085 - - - 7.49898 - 47.00044 - - - 7.49808 - 47.00006 - - - 7.49720 - 46.99971 - - - 7.49630 - 46.99938 - - - 7.49533 - 46.99905 - - - 7.49426 - 46.99871 - - - 7.49321 - 46.99841 - - - 7.49245 - 46.99820 - - - 7.49166 - 46.99800 - - - 7.49071 - 46.99778 - - - 7.48973 - 46.99757 - - - 7.48848 - 46.99733 - - - 7.48649 - 46.99698 - - - 7.48524 - 46.99675 - - - 7.48412 - 46.99652 - - - 7.48353 - 46.99640 - - - 7.48292 - 46.99625 - - - 7.48185 - 46.99598 - - - 7.48079 - 46.99569 - - - 7.47974 - 46.99538 - - - 7.47903 - 46.99515 - - - 7.47831 - 46.99490 - - - 7.47735 - 46.99456 - - - 7.47623 - 46.99412 - - - 7.47514 - 46.99366 - - - 7.47424 - 46.99325 - - - 7.47334 - 46.99281 - - - 7.47250 - 46.99238 - - - 7.47167 - 46.99193 - - - 7.47107 - 46.99158 - - - 7.47052 - 46.99125 - - - 7.46997 - 46.99091 - - - 7.46951 - 46.99061 - - - 7.46902 - 46.99028 - - - 7.46860 - 46.98996 - - - 7.46818 - 46.98962 - - - 7.46783 - 46.98931 - - - 7.46750 - 46.98899 - - - 7.46722 - 46.98870 - - - 7.46695 - 46.98839 - - - 7.46674 - 46.98813 - - - 7.46653 - 46.98785 - - - 7.46626 - 46.98745 - - - 7.46601 - 46.98701 - - - 7.46587 - 46.98675 - - - 7.46575 - 46.98649 - - - 7.46569 - 46.98634 - - - 7.46563 - 46.98619 - - - 7.46548 - 46.98579 - - - 7.46542 - 46.98559 - - - 7.46536 - 46.98538 - - - 7.46531 - 46.98517 - - - 7.46527 - 46.98498 - - - 7.46524 - 46.98477 - - - 7.46521 - 46.98457 - - - 7.46519 - 46.98437 - - - 7.46517 - 46.98416 - - - 7.46516 - 46.98396 - - - 7.46516 - 46.98376 - - - 7.46516 - 46.98355 - - - 7.46517 - 46.98333 - - - 7.46519 - 46.98312 - - - 7.46521 - 46.98290 - - - 7.46524 - 46.98270 - - - 7.46528 - 46.98247 - - - 7.46533 - 46.98226 - - - 7.46538 - 46.98204 - - - 7.46545 - 46.98181 - - - 7.46552 - 46.98162 - - - 7.46559 - 46.98141 - - - 7.46567 - 46.98121 - - - 7.46576 - 46.98100 - - - 7.46585 - 46.98079 - - - 7.46591 - 46.98067 - - - 7.46598 - 46.98055 - - - 7.46639 - 46.97979 - - - 7.46677 - 46.97911 - - - 7.46688 - 46.97891 - - - 7.46765 - 46.97756 - - - 7.46810 - 46.97674 - - - 7.46841 - 46.97620 - - - 7.46854 - 46.97597 - - - 7.46881 - 46.97550 - - - 7.46927 - 46.97467 - - - 7.46944 - 46.97434 - - - 7.46962 - 46.97397 - - - 7.46977 - 46.97370 - - - 7.47001 - 46.97326 - - - 7.47006 - 46.97316 - - - 7.47012 - 46.97303 - - - 7.47017 - 46.97292 - - - 7.47026 - 46.97270 - - - 7.47031 - 46.97254 - - - 7.47035 - 46.97240 - - - 7.47038 - 46.97226 - - - 7.47040 - 46.97214 - - - 7.47041 - 46.97202 - - - 7.47042 - 46.97189 - - - 7.47042 - 46.97177 - - - 7.47041 - 46.97164 - - - 7.47041 - 46.97152 - - - 7.47038 - 46.97131 - - - 7.47031 - 46.97103 - - - 7.47027 - 46.97091 - - - 7.47019 - 46.97068 - - - 7.47010 - 46.97048 - - - 7.47005 - 46.97037 - - - 7.46997 - 46.97023 - - - 7.46991 - 46.97014 - - - 7.46982 - 46.97001 - - - 7.46972 - 46.96989 - - - 7.46962 - 46.96976 - - - 7.46952 - 46.96965 - - - 7.46941 - 46.96954 - - - 7.46929 - 46.96942 - - - 7.46917 - 46.96931 - - - 7.46904 - 46.96921 - - - 7.46890 - 46.96910 - - - 7.46878 - 46.96902 - - - 7.46854 - 46.96886 - - - 7.46832 - 46.96874 - - - 7.46823 - 46.96868 - - - 7.46813 - 46.96863 - - - 7.46802 - 46.96858 - - - 7.46790 - 46.96853 - - - 7.46778 - 46.96847 - - - 7.46764 - 46.96842 - - - 7.46752 - 46.96837 - - - 7.46744 - 46.96834 - - - 7.46734 - 46.96830 - - - 7.46715 - 46.96824 - - - 7.46693 - 46.96818 - - - 7.46665 - 46.96810 - - - 7.46636 - 46.96803 - - - 7.46607 - 46.96796 - - - 7.46522 - 46.96777 - - - 7.46352 - 46.96737 - - - 7.46330 - 46.96732 - - - 7.46303 - 46.96726 - - - 7.46251 - 46.96715 - - - 7.46224 - 46.96709 - - - 7.46168 - 46.96695 - - - 7.46111 - 46.96681 - - - 7.46066 - 46.96669 - - - 7.46021 - 46.96657 - - - 7.45974 - 46.96644 - - - 7.45924 - 46.96631 - - - 7.45874 - 46.96619 - - - 7.45790 - 46.96599 - - - 7.45756 - 46.96590 - - - 7.45722 - 46.96582 - - - 7.45573 - 46.96542 - - - 7.45310 - 46.96472 - - - 7.45256 - 46.96457 - - - 7.45202 - 46.96443 - - - 7.45126 - 46.96422 - - - 7.45038 - 46.96400 - - - 7.44952 - 46.96380 - - - 7.44900 - 46.96367 - - - 7.44848 - 46.96353 - - - 7.44832 - 46.96348 - - - 7.44807 - 46.96339 - - - 7.44785 - 46.96331 - - - 7.44759 - 46.96320 - - - 7.44729 - 46.96305 - - - 7.44713 - 46.96297 - - - 7.44698 - 46.96289 - - - 7.44683 - 46.96280 - - - 7.44669 - 46.96271 - - - 7.44655 - 46.96262 - - - 7.44642 - 46.96253 - - - 7.44628 - 46.96243 - - - 7.44603 - 46.96222 - - - 7.44579 - 46.96200 - - - 7.44558 - 46.96179 - - - 7.44531 - 46.96152 - - - 7.44517 - 46.96135 - - - 7.44486 - 46.96100 - - - 7.44467 - 46.96079 - - - 7.44427 - 46.96037 - - - 7.44402 - 46.96012 - - - 7.44384 - 46.95991 - - - 7.44367 - 46.95969 - - - 7.44353 - 46.95948 - - - 7.44341 - 46.95925 - - - 7.44329 - 46.95902 - - - 7.44320 - 46.95878 - - - 7.44315 - 46.95855 - - - 7.44310 - 46.95831 - - - 7.44307 - 46.95807 - - - 7.44306 - 46.95782 - - - 7.44302 - 46.95655 - - - 7.44301 - 46.95628 - - - 7.44298 - 46.95603 - - - 7.44293 - 46.95578 - - - 7.44286 - 46.95554 - - - 7.44277 - 46.95530 - - - 7.44266 - 46.95507 - - - 7.44253 - 46.95484 - - - 7.44174 - 46.95341 - - - 7.44127 - 46.95261 - - - 7.44104 - 46.95224 - - - 7.44058 - 46.95151 - - - 7.44054 - 46.95144 - - - 7.44041 - 46.95118 - - - 7.44018 - 46.95073 - - - 7.44007 - 46.95048 - - - 7.43999 - 46.95023 - - - 7.43995 - 46.95010 - - - 7.43990 - 46.94996 - - - 7.43984 - 46.94982 - - - 7.43972 - 46.94962 - - - 7.43965 - 46.94952 - - - 7.43956 - 46.94941 - - - 7.43942 - 46.94929 - - - 7.43922 - 46.94913 - - - 7.43912 - 46.94908 - - - PT56M - 118113 - - - - - InterCity - - - 710 - - - Schweizerische Bundesbahnen SBB - - - ch:1:sjyid:100001:710-001 - - - - - - 4 - - walk - - ch:1:sloid:7000:2:3 - - Bern - - - - ch:1:sloid:76646:0:3 - - Bern, Bahnhof - - - 2024-03-09T08:28:00Z - 2024-03-09T08:36:00Z - PT8M - PT6M - PT2M - 556 - - - - - - 7.43909 - 46.94910 - - - 7.43532 - 46.94771 - - - Ausstieg Zug rechts - PT0M0S - 0 - - leave - left - - - - - - 7.43532 - 46.94771 - - - 7.43600 - 46.94764 - - - Merkurgässli - PT0M47S - 52 - - keep - straight on - - - - - - 7.43600 - 46.94764 - - - 7.43598 - 46.94736 - - - Merkurgässli - PT0M23S - 31 - - turn - right - - - - - - 7.43598 - 46.94736 - - - 7.43604 - 46.94737 - - - 7.43717 - 46.94732 - - - 7.43719 - 46.94732 - - - 7.43720 - 46.94732 - - - 7.43722 - 46.94733 - - - 7.43722 - 46.94733 - - - 7.43723 - 46.94735 - - - 7.43723 - 46.94735 - - - 7.43726 - 46.94735 - - - Laupenstrasse - PT0H1M29S - 99 - - turn - left - - - - - - 7.43726 - 46.94735 - - - 7.43735 - 46.94735 - - - Fußgängerampel - PT0M45S - 6 - - continue - straight on - - - - - - 7.43735 - 46.94735 - - - 7.43736 - 46.94730 - - - 7.43736 - 46.94726 - - - Fußweg - PT0M9S - 11 - - turn - right - - - - - - 7.43736 - 46.94726 - - - 7.43736 - 46.94720 - - - Fußgängerampel - PT0M45S - 5 - - continue - straight on - - - - - - 7.43736 - 46.94720 - - - 7.43737 - 46.94714 - - - 7.43737 - 46.94712 - - - Fußweg - PT0M6S - 8 - - continue - straight on - - - - - - 7.43737 - 46.94712 - - - 7.43756 - 46.94711 - - - 7.43774 - 46.94711 - - - 7.43783 - 46.94706 - - - 7.43786 - 46.94704 - - - Laupenstrasse/Bubenbergplatz - PT0M34S - 40 - - turn - left - - - - - - 7.43786 - 46.94704 - - - 7.43787 - 46.94703 - - - Fußweg - PT0M0S - 0 - - continue - straight on - - - - - - 7.43787 - 46.94703 - - - 7.43792 - 46.94707 - - - 7.43794 - 46.94708 - - - 7.43795 - 46.94708 - - - Fußweg - PT0M5S - 7 - - turn - left - - - - - - 7.43795 - 46.94708 - - - 7.43807 - 46.94700 - - - 7.43812 - 46.94700 - - - 7.43819 - 46.94699 - - - Fußweg am Straßenrand - PT0M19S - 22 - - turn - right - - - - - - 7.43819 - 46.94699 - - - 7.43823 - 46.94707 - - - 7.43824 - 46.94707 - - - 7.43824 - 46.94708 - - - 7.43826 - 46.94709 - - - 7.43827 - 46.94709 - - - 7.43828 - 46.94710 - - - 7.43828 - 46.94710 - - - 7.43872 - 46.94717 - - - 7.43882 - 46.94718 - - - Hirschengraben - PT0M50S - 57 - - turn - left - - - - - - 7.43882 - 46.94718 - - - 7.43885 - 46.94719 - - - 7.43886 - 46.94719 - - - 7.43889 - 46.94719 - - - Fußweg - PT0M3S - 5 - - turn - half left - - - - - - 7.43889 - 46.94719 - - - 7.43885 - 46.94729 - - - Schwanengasse - PT0M9S - 10 - - turn - left - - - - - - 7.43885 - 46.94729 - - - 7.43905 - 46.94732 - - - 7.43967 - 46.94742 - - - 7.43977 - 46.94744 - - - 7.43980 - 46.94745 - - - 7.43984 - 46.94747 - - - 7.43994 - 46.94751 - - - 7.43999 - 46.94756 - - - 7.44013 - 46.94763 - - - 7.44025 - 46.94768 - - - 7.44032 - 46.94769 - - - 7.44065 - 46.94776 - - - Bubenbergplatz - PT0H2M6S - 148 - - turn - right - - - - - - 7.44065 - 46.94776 - - - 7.44065 - 46.94775 - - - Fußweg - PT0M0S - 1 - - turn - right - - - - - - 7.44065 - 46.94775 - - - 7.44031 - 46.94767 - - - 7.44026 - 46.94766 - - - 7.44019 - 46.94764 - - - 7.44007 - 46.94758 - - - Bahnsteig - PT0M41S - 48 - - turn - right - - - - - - 7.44007 - 46.94758 - - - 7.44007 - 46.94758 - - - Einstieg Straßenbahn - PT0M0S - 0 - - enter - left - - - - - - 5 - - - ch:1:sloid:76646:0:3 - - Bern, Bahnhof - - - PLATFORM_ACCESS_WITH_ASSISTANCE - - - C - - - 2024-03-09T08:36:00Z - - 1 - - - ch:1:sloid:79896:0:1 - - Bern, Hirschengraben - - - A - - - 2024-03-09T08:37:00Z - - - 2024-03-09T08:37:00Z - - 2 - - - ch:1:sloid:89991:0:1 - - Bern, Monbijou - - - B - - - 2024-03-09T08:39:00Z - - - 2024-03-09T08:39:00Z - - 3 - - - 8589992 - - Bern, Sulgenau - - - 2024-03-09T08:40:00Z - - - 2024-03-09T08:40:00Z - - 4 - - - ch:1:sloid:89993:0:1 - - Bern, Wander - - - 2024-03-09T08:41:00Z - - - 2024-03-09T08:41:00Z - - 5 - - - ch:1:sloid:90022:0:1 - - Bern, Schönegg - - - 2024-03-09T08:42:00Z - - - 2024-03-09T08:42:00Z - - 6 - - - ch:1:sloid:90023:0:1 - - Bern, Sandrain - - - 2024-03-09T08:44:00Z - - - 2024-03-09T08:44:00Z - - 7 - - - ch:1:sloid:88562:0:1 - - Wabern, Gurtenbahn - - - PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE - - - B - - - 2024-03-09T08:45:00Z - - 8 - - - 2024-03-09 - ojp-91-9-_-j24-1-1300-TA - ojp:91009: - R - - tram - cityTram - - Tram - - - T - - - - 9 - - ojp:827 - - - VELOS: Platzzahl eingeschränkt - - A__VB - - - - Niederflureinstieg - - A__NF - palletAccess_lowFloor - - 8571395 - - Wabern, Tram-Endstation - - - - - - ch:1:sloid:76646:0:3 - - Bern, Bahnhof - - - - ch:1:sloid:88562:0:1 - - Wabern, Gurtenbahn - - - - - 7.44007 - 46.94756 - - - 7.43992 - 46.94752 - - - 7.43985 - 46.94750 - - - 7.43973 - 46.94748 - - - 7.43855 - 46.94728 - - - 7.43835 - 46.94725 - - - 7.43823 - 46.94722 - - - 7.43812 - 46.94719 - - - 7.43804 - 46.94716 - - - 7.43793 - 46.94712 - - - 7.43787 - 46.94709 - - - 7.43783 - 46.94707 - - - 7.43782 - 46.94706 - - - 7.43777 - 46.94702 - - - 7.43775 - 46.94699 - - - 7.43774 - 46.94697 - - - 7.43770 - 46.94690 - - - 7.43751 - 46.94643 - - - 7.43751 - 46.94643 - - - 7.43740 - 46.94614 - - - 7.43738 - 46.94611 - - - 7.43726 - 46.94592 - - - 7.43718 - 46.94578 - - - 7.43671 - 46.94510 - - - 7.43601 - 46.94402 - - - 7.43598 - 46.94396 - - - 7.43597 - 46.94393 - - - 7.43596 - 46.94389 - - - 7.43590 - 46.94322 - - - 7.43590 - 46.94322 - - - 7.43587 - 46.94275 - - - 7.43583 - 46.94215 - - - 7.43575 - 46.94118 - - - 7.43572 - 46.94097 - - - 7.43570 - 46.94086 - - - 7.43569 - 46.94069 - - - 7.43569 - 46.94065 - - - 7.43576 - 46.94008 - - - 7.43578 - 46.94002 - - - 7.43584 - 46.93983 - - - 7.43594 - 46.93936 - - - 7.43596 - 46.93929 - - - 7.43602 - 46.93914 - - - 7.43604 - 46.93906 - - - 7.43630 - 46.93758 - - - 7.43640 - 46.93707 - - - 7.43652 - 46.93661 - - - 7.43656 - 46.93649 - - - 7.43688 - 46.93523 - - - 7.43690 - 46.93513 - - - 7.43693 - 46.93505 - - - 7.43694 - 46.93503 - - - 7.43698 - 46.93498 - - - 7.43703 - 46.93493 - - - 7.43705 - 46.93491 - - - 7.43709 - 46.93488 - - - 7.43723 - 46.93480 - - - 7.43743 - 46.93474 - - - 7.43777 - 46.93461 - - - 7.43824 - 46.93444 - - - 7.43830 - 46.93442 - - - 7.43849 - 46.93436 - - - 7.43858 - 46.93434 - - - 7.43887 - 46.93427 - - - 7.43898 - 46.93425 - - - 7.43925 - 46.93419 - - - 7.43933 - 46.93416 - - - 7.43940 - 46.93414 - - - 7.43949 - 46.93411 - - - 7.44002 - 46.93389 - - - 7.44011 - 46.93384 - - - 7.44020 - 46.93380 - - - 7.44034 - 46.93371 - - - 7.44043 - 46.93363 - - - 7.44058 - 46.93353 - - - 7.44065 - 46.93349 - - - 7.44073 - 46.93344 - - - 7.44083 - 46.93338 - - - 7.44100 - 46.93330 - - - 7.44111 - 46.93325 - - - 7.44126 - 46.93319 - - - 7.44140 - 46.93314 - - - 7.44314 - 46.93253 - - - 7.44339 - 46.93244 - - - 7.44369 - 46.93232 - - - 7.44400 - 46.93220 - - - 7.44425 - 46.93209 - - - 7.44441 - 46.93202 - - - 7.44533 - 46.93157 - - - 7.44544 - 46.93153 - - - 7.44552 - 46.93151 - - - 7.44566 - 46.93147 - - - 7.44599 - 46.93140 - - - 7.44616 - 46.93136 - - - 7.44629 - 46.93132 - - - 7.44642 - 46.93127 - - - 7.44650 - 46.93124 - - - 7.44671 - 46.93116 - - - 7.44691 - 46.93106 - - - 7.44701 - 46.93100 - - - 7.44709 - 46.93095 - - - 7.44717 - 46.93090 - - - 7.44727 - 46.93083 - - - 7.44733 - 46.93078 - - - 7.44745 - 46.93068 - - - 7.44797 - 46.93021 - - - 7.44804 - 46.93015 - - - 7.44811 - 46.93010 - - - 7.44864 - 46.92986 - - - 7.44903 - 46.92972 - - - 7.44938 - 46.92957 - - - 7.44949 - 46.92952 - - - 7.44973 - 46.92945 - - - 7.45019 - 46.92929 - - - 7.45038 - 46.92921 - - - 7.45049 - 46.92916 - - - 7.45102 - 46.92891 - - - 7.45115 - 46.92885 - - - 7.45148 - 46.92870 - - - 7.45205 - 46.92843 - - - 7.45232 - 46.92831 - - - 7.45237 - 46.92828 - - - 7.45239 - 46.92826 - - - 7.45241 - 46.92824 - - - 7.45244 - 46.92819 - - - 7.45246 - 46.92815 - - - 7.45247 - 46.92812 - - - 7.45249 - 46.92807 - - - 7.45249 - 46.92804 - - - 7.45248 - 46.92798 - - - 7.45248 - 46.92795 - - - 7.45250 - 46.92792 - - - 7.45251 - 46.92790 - - - 7.45254 - 46.92787 - - - 7.45258 - 46.92785 - - - 7.45262 - 46.92784 - - - 7.45266 - 46.92783 - - - 7.45275 - 46.92783 - - - 7.45279 - 46.92783 - - - 7.45283 - 46.92784 - - - 7.45287 - 46.92786 - - - 7.45290 - 46.92788 - - - 7.45293 - 46.92790 - - - 7.45294 - 46.92794 - - - 7.45295 - 46.92796 - - - 7.45295 - 46.92799 - - - 7.45294 - 46.92802 - - - 7.45292 - 46.92805 - - - 7.45288 - 46.92809 - - - 7.45283 - 46.92813 - - - 7.45106 - 46.92895 - - - 7.45043 - 46.92926 - - - 7.45023 - 46.92934 - - - 7.44956 - 46.92957 - - - 7.44942 - 46.92961 - - - 7.44907 - 46.92976 - - - 7.44890 - 46.92984 - - - 7.44882 - 46.92989 - - - 7.44874 - 46.92993 - - - 7.44864 - 46.92997 - - - 7.44856 - 46.93000 - - - 7.44846 - 46.93005 - - - 7.44819 - 46.93016 - - - 7.44810 - 46.93021 - - - 7.44804 - 46.93024 - - - 7.44797 - 46.93030 - - - 7.44794 - 46.93033 - - - 7.44776 - 46.93050 - - - 7.44747 - 46.93075 - - - 7.44735 - 46.93085 - - - 7.44724 - 46.93093 - - - 7.44717 - 46.93097 - - - 7.44708 - 46.93102 - - - 7.44695 - 46.93109 - - - 7.44685 - 46.93113 - - - 7.44666 - 46.93122 - - - 7.44652 - 46.93127 - - - 7.44638 - 46.93132 - - - 7.44630 - 46.93135 - - - 7.44606 - 46.93141 - - - 7.44557 - 46.93152 - - - 7.44547 - 46.93155 - - - 7.44539 - 46.93158 - - - 7.44524 - 46.93165 - - - 7.44488 - 46.93182 - - - 7.44428 - 46.93211 - - - 7.44403 - 46.93222 - - - 7.44372 - 46.93235 - - - 7.44341 - 46.93246 - - - 7.44316 - 46.93256 - - - 7.44252 - 46.93278 - - - 7.44212 - 46.93292 - - - 7.44156 - 46.93311 - - - 7.44129 - 46.93321 - - - 7.44103 - 46.93332 - - - 7.44085 - 46.93341 - - - 7.44076 - 46.93346 - - - 7.44068 - 46.93351 - - - 7.44056 - 46.93359 - - - 7.44037 - 46.93372 - - - 7.44023 - 46.93381 - - - 7.44014 - 46.93386 - - - 7.44004 - 46.93391 - - - 7.43951 - 46.93413 - - - 7.43942 - 46.93417 - - - 7.43926 - 46.93421 - - - 7.43899 - 46.93427 - - - 7.43888 - 46.93429 - - - 7.43874 - 46.93433 - - - 7.43859 - 46.93436 - - - 7.43840 - 46.93442 - - - 7.43832 - 46.93444 - - - 7.43806 - 46.93453 - - - 7.43747 - 46.93475 - - - 7.43738 - 46.93478 - - - 7.43726 - 46.93483 - - - 7.43715 - 46.93488 - - - 7.43708 - 46.93493 - - - 7.43703 - 46.93498 - - - 7.43699 - 46.93503 - - - 7.43697 - 46.93508 - - - 7.43695 - 46.93513 - - - 7.43670 - 46.93608 - - - 7.43648 - 46.93698 - - - 7.43642 - 46.93719 - - - 7.43639 - 46.93731 - - - 7.43631 - 46.93773 - - - 7.43605 - 46.93921 - - - 7.43597 - 46.93963 - - - 7.43592 - 46.93998 - - - 7.43592 - 46.93998 - - - 7.43577 - 46.94083 - - - 7.43577 - 46.94090 - - - 7.43577 - 46.94097 - - - 7.43585 - 46.94193 - - - 7.43587 - 46.94215 - - - 7.43589 - 46.94243 - - - 7.43591 - 46.94275 - - - 7.43594 - 46.94295 - - - 7.43596 - 46.94310 - - - 7.43600 - 46.94367 - - - 7.43603 - 46.94389 - - - 7.43603 - 46.94393 - - - 7.43604 - 46.94397 - - - 7.43606 - 46.94401 - - - 7.43724 - 46.94579 - - - 7.43718 - 46.94578 - - - 7.43671 - 46.94510 - - - 7.43601 - 46.94402 - - - 7.43598 - 46.94396 - - - 7.43597 - 46.94393 - - - 7.43596 - 46.94389 - - - 7.43590 - 46.94322 - - - 7.43587 - 46.94275 - - - 7.43583 - 46.94215 - - - 7.43575 - 46.94118 - - - 7.43572 - 46.94097 - - - 7.43570 - 46.94086 - - - 7.43569 - 46.94069 - - - 7.43569 - 46.94065 - - - 7.43576 - 46.94008 - - - 7.43578 - 46.94002 - - - 7.43584 - 46.93983 - - - 7.43594 - 46.93936 - - - 7.43596 - 46.93929 - - - 7.43602 - 46.93914 - - - 7.43604 - 46.93906 - - - 7.43630 - 46.93758 - - - 7.43639 - 46.93714 - - - 7.43640 - 46.93707 - - - 7.43651 - 46.93663 - - - 7.43651 - 46.93663 - - - 7.43653 - 46.93655 - - - 7.43656 - 46.93649 - - - 7.43688 - 46.93523 - - - 7.43690 - 46.93513 - - - 7.43693 - 46.93505 - - - 7.43694 - 46.93503 - - - 7.43698 - 46.93498 - - - 7.43703 - 46.93493 - - - 7.43705 - 46.93491 - - - 7.43709 - 46.93488 - - - 7.43723 - 46.93480 - - - 7.43743 - 46.93474 - - - 7.43777 - 46.93461 - - - 7.43821 - 46.93445 - - - 7.43830 - 46.93442 - - - 7.43849 - 46.93436 - - - 7.43858 - 46.93434 - - - 7.43887 - 46.93427 - - - 7.43898 - 46.93425 - - - 7.43925 - 46.93419 - - - 7.43933 - 46.93416 - - - 7.43940 - 46.93414 - - - 7.43949 - 46.93411 - - - 7.43996 - 46.93391 - - - 7.43996 - 46.93391 - - - 7.44002 - 46.93389 - - - 7.44011 - 46.93384 - - - 7.44020 - 46.93380 - - - 7.44034 - 46.93371 - - - 7.44043 - 46.93363 - - - 7.44058 - 46.93353 - - - 7.44065 - 46.93349 - - - 7.44073 - 46.93344 - - - 7.44083 - 46.93338 - - - 7.44100 - 46.93330 - - - 7.44111 - 46.93325 - - - 7.44126 - 46.93319 - - - 7.44140 - 46.93314 - - - 7.44314 - 46.93253 - - - 7.44339 - 46.93244 - - - 7.44369 - 46.93232 - - - 7.44400 - 46.93220 - - - 7.44425 - 46.93209 - - - 7.44441 - 46.93202 - - - 7.44532 - 46.93158 - - - 7.44532 - 46.93158 - - - 7.44544 - 46.93153 - - - 7.44552 - 46.93151 - - - 7.44566 - 46.93147 - - - 7.44599 - 46.93140 - - - 7.44616 - 46.93136 - - - 7.44629 - 46.93132 - - - 7.44650 - 46.93124 - - - 7.44660 - 46.93120 - - - 7.44671 - 46.93116 - - - 7.44691 - 46.93106 - - - 7.44701 - 46.93100 - - - 7.44709 - 46.93095 - - - 7.44717 - 46.93090 - - - 7.44727 - 46.93083 - - - 7.44733 - 46.93078 - - - 7.44745 - 46.93068 - - - 7.44801 - 46.93017 - - - 7.44804 - 46.93015 - - - 7.44811 - 46.93010 - - - 7.44864 - 46.92986 - - - 7.44867 - 46.92985 - - - PT9M - 8041 - - - - - Tram - - - 4119 - - - Städtische Verkehrsbetriebe Bern - - - ojp-91-9-_-j24-1-1300-TA - - - - - - 6 - - walk - - ch:1:sloid:88562:0:1 - - Wabern, Gurtenbahn - - - - 8507097 - - Wabern (Gurtenbahn) - - - 2024-03-09T08:45:00Z - 2024-03-09T09:00:00Z - PT15M - PT6M - PT9M - - - - - 8588562 - - Gurtenbahn - - - - 8507097 - - Wabern (Gurtenbahn) - - - - 1015258360:2:MRCV:100 - 501365981:10:MRCV:100 - 0 - 0 - - - - level - footpath - - - - - - - 7 - - - 8507097 - - Wabern (Gurtenbahn) - - - NO_DATA - - - 2024-03-09T09:00:00Z - - 1 - - - 8507099 - - Gurten Kulm - - - NO_DATA - - - 2024-03-09T09:15:00Z - - 2 - - - 2024-03-09 - ojp-92-H2-Y-j24-1-47-TA - ojp:920H2:Y - R - - bus - localBusService - - Bus - - - B - - - - B - - ojp:122 - - - Niederflureinstieg - - A__NF - palletAccess_lowFloor - - 8507099 - - Gurten Kulm - - - - - - 8507097 - - Wabern (Gurtenbahn) - - - - 8507099 - - Gurten Kulm - - - - - 7.44608 - 46.92801 - - - 7.44623 - 46.92799 - - - 7.44640 - 46.92813 - - - 7.44662 - 46.92807 - - - 7.44699 - 46.92803 - - - 7.44727 - 46.92792 - - - 7.44743 - 46.92786 - - - 7.44794 - 46.92763 - - - 7.44803 - 46.92758 - - - 7.44811 - 46.92753 - - - 7.44817 - 46.92747 - - - 7.44833 - 46.92724 - - - 7.44853 - 46.92701 - - - 7.44884 - 46.92674 - - - 7.44934 - 46.92627 - - - 7.44971 - 46.92577 - - - 7.45004 - 46.92546 - - - 7.45032 - 46.92500 - - - 7.45058 - 46.92467 - - - 7.45064 - 46.92451 - - - 7.45063 - 46.92444 - - - 7.45061 - 46.92439 - - - 7.45032 - 46.92401 - - - 7.45026 - 46.92387 - - - 7.45023 - 46.92364 - - - 7.45026 - 46.92332 - - - 7.45035 - 46.92308 - - - 7.45048 - 46.92287 - - - 7.45060 - 46.92276 - - - 7.45080 - 46.92258 - - - 7.45088 - 46.92251 - - - 7.45116 - 46.92215 - - - 7.45194 - 46.92145 - - - 7.45212 - 46.92125 - - - 7.45233 - 46.92094 - - - 7.45276 - 46.92045 - - - 7.45288 - 46.92021 - - - 7.45296 - 46.92014 - - - 7.45326 - 46.91994 - - - 7.45353 - 46.91973 - - - 7.45392 - 46.91934 - - - 7.45408 - 46.91920 - - - 7.45445 - 46.91892 - - - 7.45494 - 46.91848 - - - 7.45532 - 46.91813 - - - 7.45541 - 46.91802 - - - 7.45561 - 46.91766 - - - 7.45582 - 46.91738 - - - 7.45596 - 46.91708 - - - 7.45616 - 46.91678 - - - 7.45630 - 46.91649 - - - 7.45642 - 46.91628 - - - 7.45646 - 46.91619 - - - 7.45651 - 46.91605 - - - 7.45656 - 46.91591 - - - 7.45658 - 46.91581 - - - 7.45660 - 46.91569 - - - 7.45661 - 46.91560 - - - 7.45657 - 46.91520 - - - 7.45668 - 46.91472 - - - 7.45669 - 46.91462 - - - 7.45658 - 46.91430 - - - 7.45656 - 46.91425 - - - 7.45650 - 46.91416 - - - 7.45639 - 46.91409 - - - 7.45626 - 46.91403 - - - 7.45610 - 46.91401 - - - 7.45605 - 46.91417 - - - 7.45602 - 46.91435 - - - 7.45603 - 46.91443 - - - 7.45606 - 46.91451 - - - 7.45607 - 46.91455 - - - 7.45607 - 46.91459 - - - 7.45604 - 46.91464 - - - 7.45598 - 46.91468 - - - 7.45558 - 46.91503 - - - 7.45546 - 46.91510 - - - 7.45536 - 46.91514 - - - 7.45525 - 46.91518 - - - 7.45512 - 46.91521 - - - 7.45500 - 46.91525 - - - 7.45491 - 46.91529 - - - 7.45482 - 46.91534 - - - 7.45460 - 46.91549 - - - 7.45419 - 46.91584 - - - 7.45409 - 46.91591 - - - 7.45402 - 46.91595 - - - 7.45393 - 46.91599 - - - 7.45382 - 46.91603 - - - 7.45368 - 46.91607 - - - 7.45350 - 46.91610 - - - 7.45324 - 46.91614 - - - 7.45296 - 46.91617 - - - 7.45279 - 46.91620 - - - 7.45249 - 46.91626 - - - 7.45236 - 46.91628 - - - 7.45220 - 46.91630 - - - 7.45192 - 46.91631 - - - 7.45172 - 46.91632 - - - 7.45155 - 46.91631 - - - 7.45147 - 46.91629 - - - 7.45139 - 46.91626 - - - 7.45131 - 46.91621 - - - 7.45113 - 46.91607 - - - 7.45104 - 46.91600 - - - 7.45096 - 46.91590 - - - 7.45089 - 46.91581 - - - 7.45100 - 46.91577 - - - 7.45107 - 46.91573 - - - 7.45136 - 46.91552 - - - 7.45140 - 46.91548 - - - 7.45145 - 46.91544 - - - 7.45148 - 46.91539 - - - 7.45151 - 46.91534 - - - 7.45152 - 46.91531 - - - 7.45152 - 46.91526 - - - 7.45151 - 46.91522 - - - 7.45149 - 46.91517 - - - 7.45146 - 46.91514 - - - 7.45141 - 46.91511 - - - 7.45134 - 46.91509 - - - 7.45127 - 46.91507 - - - 7.45119 - 46.91507 - - - 7.45109 - 46.91508 - - - 7.45097 - 46.91510 - - - 7.45089 - 46.91512 - - - 7.45009 - 46.91524 - - - 7.44956 - 46.91533 - - - 7.44876 - 46.91545 - - - 7.44850 - 46.91548 - - - 7.44708 - 46.91559 - - - 7.44693 - 46.91561 - - - 7.44684 - 46.91563 - - - 7.44679 - 46.91564 - - - 7.44674 - 46.91567 - - - 7.44670 - 46.91569 - - - 7.44667 - 46.91572 - - - 7.44665 - 46.91575 - - - 7.44659 - 46.91590 - - - 7.44657 - 46.91595 - - - 7.44653 - 46.91599 - - - 7.44650 - 46.91603 - - - 7.44646 - 46.91606 - - - 7.44641 - 46.91609 - - - 7.44635 - 46.91612 - - - 7.44626 - 46.91615 - - - 7.44611 - 46.91619 - - - 7.44598 - 46.91622 - - - 7.44590 - 46.91624 - - - 7.44583 - 46.91626 - - - 7.44578 - 46.91629 - - - 7.44569 - 46.91635 - - - 7.44519 - 46.91671 - - - 7.44485 - 46.91691 - - - 7.44435 - 46.91714 - - - 7.44402 - 46.91727 - - - 7.44388 - 46.91734 - - - 7.44380 - 46.91740 - - - 7.44364 - 46.91758 - - - 7.44351 - 46.91769 - - - 7.44337 - 46.91777 - - - 7.44321 - 46.91784 - - - 7.44268 - 46.91804 - - - 7.44255 - 46.91815 - - - 7.44242 - 46.91831 - - - 7.44229 - 46.91840 - - - 7.44181 - 46.91869 - - - 7.44151 - 46.91882 - - - 7.44114 - 46.91897 - - - 7.44067 - 46.91913 - - - 7.43979 - 46.91932 - - - 7.43965 - 46.91935 - - - PT15M - 3622 - - - - - Bus - - - 712 - - - Gurtenbahn - - - ojp-92-H2-Y-j24-1-47-TA - - - - - - - - ID-CD326806-4D06-496D-B690-F319ECA6B34B - - ID-CD326806-4D06-496D-B690-F319ECA6B34B - PT2H20M - 2024-03-09T07:25:00Z - 2024-03-09T09:45:00Z - 3 - - 1 - - - ch:1:sloid:3057:0:503972 - - Uetliberg - - - PLATFORM_ACCESS_WITHOUT_ASSISTANCE - - - 1 - - - 2024-03-09T07:25:00Z - - 1 - - - ch:1:sloid:3056:0:662664 - - Ringlikon - - - 1 - - - 2024-03-09T07:30:00Z - - - 2024-03-09T07:30:00Z - - 2 - - - ch:1:sloid:3055:0:646691 - - Uitikon Waldegg - - - 1 - - - 2024-03-09T07:32:00Z - - - 2024-03-09T07:33:00Z - - 3 - - - ch:1:sloid:3054:0:137935 - - Zürich Triemli - - - 1 - - - 2024-03-09T07:37:00Z - - - 2024-03-09T07:37:00Z - - 4 - - - ch:1:sloid:3053:0:255834 - - Zürich Schweighof - - - 1 - - - 2024-03-09T07:38:00Z - - - 2024-03-09T07:38:00Z - - 5 - - - ch:1:sloid:3052:0:785310 - - Zürich Friesenberg - - - 1 - - - 2024-03-09T07:39:00Z - - - 2024-03-09T07:39:00Z - - 6 - - - ch:1:sloid:3051:0:919934 - - Zürich Binz - - - 1 - - - 2024-03-09T07:41:00Z - - - 2024-03-09T07:42:00Z - - 7 - - - 8503090 - - Zürich Selnau - - - 1 - - - 2024-03-09T07:44:00Z - - - 2024-03-09T07:44:00Z - - 8 - - - ch:1:sloid:3088:0:82204 - - Zürich HB SZU - - - PLATFORM_ACCESS_WITHOUT_ASSISTANCE - - - 22 - - - 2024-03-09T07:47:00Z - - 9 - - - 2024-03-09 - ch:1:sjyid:100058:12788-001 - ojp:91010:A - H - - rail - regionalRail - - Zug - - - S - - - - S10 - - ojp:78 - - - VELOS: Keine Beförderung möglich - - A__VN - - - - Nur 2. Klasse - - A___2 - - - - Niederflureinstieg - - A__NF - palletAccess_lowFloor - - 8503088 - - Zürich HB SZU - - - - - - ch:1:sloid:3057:0:503972 - - Uetliberg - - - - ch:1:sloid:3088:0:82204 - - Zürich HB SZU - - - - - 8.48748 - 47.35198 - - - 8.48763 - 47.35254 - - - 8.48764 - 47.35259 - - - 8.48765 - 47.35267 - - - 8.48766 - 47.35272 - - - 8.48766 - 47.35277 - - - 8.48765 - 47.35286 - - - 8.48764 - 47.35295 - - - 8.48762 - 47.35301 - - - 8.48760 - 47.35309 - - - 8.48756 - 47.35319 - - - 8.48753 - 47.35324 - - - 8.48750 - 47.35329 - - - 8.48745 - 47.35337 - - - 8.48742 - 47.35341 - - - 8.48739 - 47.35345 - - - 8.48731 - 47.35354 - - - 8.48727 - 47.35358 - - - 8.48721 - 47.35362 - - - 8.48715 - 47.35367 - - - 8.48709 - 47.35371 - - - 8.48703 - 47.35375 - - - 8.48690 - 47.35382 - - - 8.48683 - 47.35386 - - - 8.48660 - 47.35396 - - - 8.48590 - 47.35427 - - - 8.48574 - 47.35435 - - - 8.48564 - 47.35441 - - - 8.48556 - 47.35445 - - - 8.48547 - 47.35451 - - - 8.48539 - 47.35456 - - - 8.48527 - 47.35465 - - - 8.48517 - 47.35475 - - - 8.48512 - 47.35480 - - - 8.48505 - 47.35488 - - - 8.48501 - 47.35493 - - - 8.48497 - 47.35498 - - - 8.48490 - 47.35507 - - - 8.48487 - 47.35512 - - - 8.48481 - 47.35523 - - - 8.48478 - 47.35530 - - - 8.48475 - 47.35539 - - - 8.48472 - 47.35549 - - - 8.48470 - 47.35555 - - - 8.48470 - 47.35560 - - - 8.48468 - 47.35572 - - - 8.48468 - 47.35582 - - - 8.48469 - 47.35596 - - - 8.48473 - 47.35638 - - - 8.48474 - 47.35645 - - - 8.48474 - 47.35654 - - - 8.48474 - 47.35660 - - - 8.48473 - 47.35665 - - - 8.48472 - 47.35672 - - - 8.48470 - 47.35681 - - - 8.48469 - 47.35687 - - - 8.48468 - 47.35692 - - - 8.48466 - 47.35697 - - - 8.48463 - 47.35703 - - - 8.48461 - 47.35709 - - - 8.48457 - 47.35715 - - - 8.48454 - 47.35720 - - - 8.48447 - 47.35732 - - - 8.48442 - 47.35738 - - - 8.48437 - 47.35744 - - - 8.48431 - 47.35750 - - - 8.48422 - 47.35760 - - - 8.48415 - 47.35765 - - - 8.48403 - 47.35775 - - - 8.48397 - 47.35780 - - - 8.48384 - 47.35789 - - - 8.48376 - 47.35793 - - - 8.48369 - 47.35798 - - - 8.48360 - 47.35802 - - - 8.48352 - 47.35806 - - - 8.48342 - 47.35811 - - - 8.48334 - 47.35813 - - - 8.48327 - 47.35816 - - - 8.48316 - 47.35819 - - - 8.48306 - 47.35822 - - - 8.48297 - 47.35824 - - - 8.48289 - 47.35826 - - - 8.48281 - 47.35827 - - - 8.48274 - 47.35828 - - - 8.48265 - 47.35829 - - - 8.48257 - 47.35829 - - - 8.48248 - 47.35830 - - - 8.48240 - 47.35830 - - - 8.48231 - 47.35830 - - - 8.48222 - 47.35830 - - - 8.48205 - 47.35829 - - - 8.48195 - 47.35827 - - - 8.48187 - 47.35826 - - - 8.48179 - 47.35825 - - - 8.48173 - 47.35823 - - - 8.48165 - 47.35821 - - - 8.48152 - 47.35817 - - - 8.48144 - 47.35815 - - - 8.48129 - 47.35809 - - - 8.48118 - 47.35803 - - - 8.48110 - 47.35799 - - - 8.48103 - 47.35795 - - - 8.48097 - 47.35791 - - - 8.48091 - 47.35787 - - - 8.48086 - 47.35783 - - - 8.48081 - 47.35778 - - - 8.48076 - 47.35774 - - - 8.48068 - 47.35766 - - - 8.48063 - 47.35760 - - - 8.48058 - 47.35753 - - - 8.48053 - 47.35746 - - - 8.48008 - 47.35682 - - - 8.47987 - 47.35652 - - - 8.47980 - 47.35642 - - - 8.47975 - 47.35637 - - - 8.47972 - 47.35633 - - - 8.47965 - 47.35626 - - - 8.47961 - 47.35623 - - - 8.47957 - 47.35619 - - - 8.47953 - 47.35616 - - - 8.47947 - 47.35612 - - - 8.47942 - 47.35609 - - - 8.47931 - 47.35603 - - - 8.47926 - 47.35600 - - - 8.47921 - 47.35598 - - - 8.47910 - 47.35593 - - - 8.47900 - 47.35589 - - - 8.47891 - 47.35586 - - - 8.47877 - 47.35583 - - - 8.47871 - 47.35582 - - - 8.47861 - 47.35580 - - - 8.47846 - 47.35578 - - - 8.47834 - 47.35577 - - - 8.47818 - 47.35577 - - - 8.47813 - 47.35577 - - - 8.47806 - 47.35578 - - - 8.47794 - 47.35579 - - - 8.47781 - 47.35581 - - - 8.47768 - 47.35583 - - - 8.47756 - 47.35586 - - - 8.47750 - 47.35588 - - - 8.47744 - 47.35590 - - - 8.47737 - 47.35592 - - - 8.47730 - 47.35595 - - - 8.47718 - 47.35600 - - - 8.47711 - 47.35604 - - - 8.47705 - 47.35607 - - - 8.47700 - 47.35610 - - - 8.47695 - 47.35614 - - - 8.47690 - 47.35617 - - - 8.47684 - 47.35621 - - - 8.47680 - 47.35625 - - - 8.47671 - 47.35634 - - - 8.47667 - 47.35639 - - - 8.47663 - 47.35643 - - - 8.47659 - 47.35648 - - - 8.47654 - 47.35657 - - - 8.47652 - 47.35662 - - - 8.47648 - 47.35670 - - - 8.47647 - 47.35675 - - - 8.47645 - 47.35684 - - - 8.47644 - 47.35693 - - - 8.47644 - 47.35698 - - - 8.47644 - 47.35707 - - - 8.47645 - 47.35714 - - - 8.47646 - 47.35719 - - - 8.47648 - 47.35725 - - - 8.47649 - 47.35730 - - - 8.47653 - 47.35737 - - - 8.47656 - 47.35743 - - - 8.47660 - 47.35749 - - - 8.47666 - 47.35757 - - - 8.47670 - 47.35762 - - - 8.47674 - 47.35766 - - - 8.47678 - 47.35770 - - - 8.47683 - 47.35774 - - - 8.47689 - 47.35779 - - - 8.47694 - 47.35783 - - - 8.47702 - 47.35788 - - - 8.47712 - 47.35794 - - - 8.47747 - 47.35815 - - - 8.47757 - 47.35822 - - - 8.47764 - 47.35827 - - - 8.47773 - 47.35834 - - - 8.47777 - 47.35838 - - - 8.47782 - 47.35843 - - - 8.47787 - 47.35848 - - - 8.47791 - 47.35853 - - - 8.47795 - 47.35859 - - - 8.47802 - 47.35869 - - - 8.47805 - 47.35875 - - - 8.47810 - 47.35886 - - - 8.47813 - 47.35897 - - - 8.47814 - 47.35905 - - - 8.47815 - 47.35912 - - - 8.47815 - 47.35920 - - - 8.47814 - 47.35929 - - - 8.47813 - 47.35934 - - - 8.47812 - 47.35941 - - - 8.47810 - 47.35947 - - - 8.47808 - 47.35952 - - - 8.47803 - 47.35964 - - - 8.47796 - 47.35975 - - - 8.47791 - 47.35981 - - - 8.47786 - 47.35987 - - - 8.47775 - 47.35998 - - - 8.47768 - 47.36004 - - - 8.47760 - 47.36010 - - - 8.47741 - 47.36021 - - - 8.47732 - 47.36026 - - - 8.47732 - 47.36026 - - - 8.47717 - 47.36033 - - - 8.47679 - 47.36052 - - - 8.47673 - 47.36055 - - - 8.47667 - 47.36058 - - - 8.47661 - 47.36061 - - - 8.47651 - 47.36068 - - - 8.47647 - 47.36070 - - - 8.47638 - 47.36076 - - - 8.47631 - 47.36083 - - - 8.47622 - 47.36092 - - - 8.47619 - 47.36095 - - - 8.47614 - 47.36101 - - - 8.47609 - 47.36109 - - - 8.47606 - 47.36113 - - - 8.47603 - 47.36120 - - - 8.47601 - 47.36123 - - - 8.47599 - 47.36128 - - - 8.47597 - 47.36136 - - - 8.47595 - 47.36140 - - - 8.47594 - 47.36148 - - - 8.47593 - 47.36154 - - - 8.47593 - 47.36159 - - - 8.47593 - 47.36167 - - - 8.47594 - 47.36183 - - - 8.47597 - 47.36204 - - - 8.47597 - 47.36216 - - - 8.47597 - 47.36222 - - - 8.47596 - 47.36231 - - - 8.47595 - 47.36238 - - - 8.47592 - 47.36250 - - - 8.47590 - 47.36256 - - - 8.47587 - 47.36263 - - - 8.47584 - 47.36269 - - - 8.47581 - 47.36275 - - - 8.47575 - 47.36284 - - - 8.47567 - 47.36295 - - - 8.47559 - 47.36304 - - - 8.47555 - 47.36308 - - - 8.47549 - 47.36313 - - - 8.47543 - 47.36318 - - - 8.47538 - 47.36322 - - - 8.47531 - 47.36328 - - - 8.47524 - 47.36333 - - - 8.47511 - 47.36341 - - - 8.47505 - 47.36344 - - - 8.47497 - 47.36348 - - - 8.47484 - 47.36353 - - - 8.47477 - 47.36356 - - - 8.47470 - 47.36359 - - - 8.47453 - 47.36364 - - - 8.47445 - 47.36367 - - - 8.47433 - 47.36370 - - - 8.47425 - 47.36371 - - - 8.47416 - 47.36373 - - - 8.47408 - 47.36374 - - - 8.47392 - 47.36376 - - - 8.47383 - 47.36377 - - - 8.47374 - 47.36377 - - - 8.47354 - 47.36377 - - - 8.47275 - 47.36377 - - - 8.47257 - 47.36378 - - - 8.47243 - 47.36378 - - - 8.47216 - 47.36379 - - - 8.47194 - 47.36380 - - - 8.47181 - 47.36381 - - - 8.47168 - 47.36383 - - - 8.47151 - 47.36385 - - - 8.47137 - 47.36386 - - - 8.47124 - 47.36388 - - - 8.47108 - 47.36391 - - - 8.47085 - 47.36395 - - - 8.47074 - 47.36397 - - - 8.47045 - 47.36404 - - - 8.47029 - 47.36408 - - - 8.47012 - 47.36413 - - - 8.46994 - 47.36418 - - - 8.46978 - 47.36423 - - - 8.46959 - 47.36429 - - - 8.46945 - 47.36435 - - - 8.46933 - 47.36439 - - - 8.46911 - 47.36449 - - - 8.46898 - 47.36454 - - - 8.46864 - 47.36469 - - - 8.46661 - 47.36561 - - - 8.46637 - 47.36572 - - - 8.46624 - 47.36578 - - - 8.46617 - 47.36582 - - - 8.46610 - 47.36586 - - - 8.46604 - 47.36589 - - - 8.46596 - 47.36595 - - - 8.46596 - 47.36595 - - - 8.46591 - 47.36598 - - - 8.46586 - 47.36602 - - - 8.46577 - 47.36610 - - - 8.46571 - 47.36615 - - - 8.46564 - 47.36623 - - - 8.46556 - 47.36632 - - - 8.46553 - 47.36637 - - - 8.46547 - 47.36646 - - - 8.46544 - 47.36650 - - - 8.46542 - 47.36654 - - - 8.46537 - 47.36666 - - - 8.46535 - 47.36672 - - - 8.46532 - 47.36682 - - - 8.46531 - 47.36689 - - - 8.46530 - 47.36699 - - - 8.46530 - 47.36709 - - - 8.46530 - 47.36714 - - - 8.46531 - 47.36724 - - - 8.46532 - 47.36730 - - - 8.46534 - 47.36738 - - - 8.46538 - 47.36748 - - - 8.46539 - 47.36753 - - - 8.46545 - 47.36763 - - - 8.46549 - 47.36771 - - - 8.46554 - 47.36778 - - - 8.46562 - 47.36788 - - - 8.46566 - 47.36793 - - - 8.46575 - 47.36801 - - - 8.46579 - 47.36805 - - - 8.46585 - 47.36810 - - - 8.46590 - 47.36815 - - - 8.46595 - 47.36818 - - - 8.46600 - 47.36821 - - - 8.46606 - 47.36825 - - - 8.46615 - 47.36831 - - - 8.46628 - 47.36837 - - - 8.46648 - 47.36847 - - - 8.46658 - 47.36851 - - - 8.46763 - 47.36895 - - - 8.46915 - 47.36959 - - - 8.46935 - 47.36967 - - - 8.46946 - 47.36971 - - - 8.46958 - 47.36975 - - - 8.46980 - 47.36983 - - - 8.46997 - 47.36988 - - - 8.47017 - 47.36994 - - - 8.47026 - 47.36996 - - - 8.47045 - 47.37000 - - - 8.47053 - 47.37002 - - - 8.47072 - 47.37006 - - - 8.47093 - 47.37009 - - - 8.47109 - 47.37011 - - - 8.47130 - 47.37013 - - - 8.47140 - 47.37014 - - - 8.47170 - 47.37016 - - - 8.47306 - 47.37024 - - - 8.47324 - 47.37025 - - - 8.47339 - 47.37025 - - - 8.47358 - 47.37025 - - - 8.47370 - 47.37025 - - - 8.47382 - 47.37025 - - - 8.47401 - 47.37024 - - - 8.47426 - 47.37022 - - - 8.47444 - 47.37020 - - - 8.47454 - 47.37019 - - - 8.47468 - 47.37017 - - - 8.47479 - 47.37015 - - - 8.47492 - 47.37013 - - - 8.47510 - 47.37009 - - - 8.47536 - 47.37003 - - - 8.47597 - 47.36988 - - - 8.47607 - 47.36986 - - - 8.47614 - 47.36985 - - - 8.47630 - 47.36983 - - - 8.47639 - 47.36982 - - - 8.47656 - 47.36980 - - - 8.47686 - 47.36978 - - - 8.47699 - 47.36977 - - - 8.47714 - 47.36975 - - - 8.47833 - 47.36955 - - - 8.47847 - 47.36953 - - - 8.47867 - 47.36949 - - - 8.47887 - 47.36945 - - - 8.47895 - 47.36942 - - - 8.47914 - 47.36937 - - - 8.47929 - 47.36932 - - - 8.47938 - 47.36929 - - - 8.47947 - 47.36925 - - - 8.47962 - 47.36919 - - - 8.47978 - 47.36912 - - - 8.48250 - 47.36782 - - - 8.48262 - 47.36777 - - - 8.48273 - 47.36773 - - - 8.48280 - 47.36770 - - - 8.48286 - 47.36768 - - - 8.48301 - 47.36764 - - - 8.48316 - 47.36760 - - - 8.48329 - 47.36757 - - - 8.48342 - 47.36755 - - - 8.48358 - 47.36753 - - - 8.48383 - 47.36751 - - - 8.48592 - 47.36735 - - - 8.48622 - 47.36731 - - - 8.48641 - 47.36729 - - - 8.48652 - 47.36727 - - - 8.48667 - 47.36725 - - - 8.48682 - 47.36722 - - - 8.48702 - 47.36717 - - - 8.48716 - 47.36714 - - - 8.48734 - 47.36709 - - - 8.48754 - 47.36703 - - - 8.48769 - 47.36698 - - - 8.48793 - 47.36689 - - - 8.48909 - 47.36646 - - - 8.48930 - 47.36638 - - - 8.48945 - 47.36634 - - - 8.48953 - 47.36632 - - - 8.48960 - 47.36630 - - - 8.48976 - 47.36626 - - - 8.48992 - 47.36623 - - - 8.49002 - 47.36621 - - - 8.49096 - 47.36605 - - - 8.49117 - 47.36601 - - - 8.49131 - 47.36598 - - - 8.49138 - 47.36597 - - - 8.49152 - 47.36593 - - - 8.49169 - 47.36587 - - - 8.49182 - 47.36582 - - - 8.49189 - 47.36579 - - - 8.49270 - 47.36545 - - - 8.49297 - 47.36534 - - - 8.49309 - 47.36529 - - - 8.49324 - 47.36524 - - - 8.49335 - 47.36520 - - - 8.49354 - 47.36515 - - - 8.49368 - 47.36511 - - - 8.49376 - 47.36509 - - - 8.49392 - 47.36506 - - - 8.49405 - 47.36503 - - - 8.49425 - 47.36500 - - - 8.49445 - 47.36498 - - - 8.49469 - 47.36495 - - - 8.49492 - 47.36494 - - - 8.49506 - 47.36493 - - - 8.49506 - 47.36493 - - - 8.49525 - 47.36493 - - - 8.49537 - 47.36493 - - - 8.49613 - 47.36495 - - - 8.49655 - 47.36496 - - - 8.50353 - 47.36498 - - - 8.50353 - 47.36498 - - - 8.50522 - 47.36498 - - - 8.50549 - 47.36498 - - - 8.50581 - 47.36497 - - - 8.50598 - 47.36496 - - - 8.50623 - 47.36495 - - - 8.50656 - 47.36493 - - - 8.50684 - 47.36491 - - - 8.50705 - 47.36489 - - - 8.50737 - 47.36485 - - - 8.50752 - 47.36483 - - - 8.50752 - 47.36483 - - - 8.50771 - 47.36481 - - - 8.50794 - 47.36478 - - - 8.51541 - 47.36364 - - - 8.51559 - 47.36361 - - - 8.51581 - 47.36357 - - - 8.51600 - 47.36354 - - - 8.51614 - 47.36350 - - - 8.51622 - 47.36348 - - - 8.51641 - 47.36343 - - - 8.51650 - 47.36340 - - - 8.51661 - 47.36337 - - - 8.51671 - 47.36333 - - - 8.51692 - 47.36325 - - - 8.51828 - 47.36273 - - - 8.51828 - 47.36273 - - - 8.51933 - 47.36232 - - - 8.51947 - 47.36228 - - - 8.51952 - 47.36226 - - - 8.51964 - 47.36223 - - - 8.51970 - 47.36221 - - - 8.51985 - 47.36219 - - - 8.51996 - 47.36217 - - - 8.52002 - 47.36216 - - - 8.52013 - 47.36215 - - - 8.52019 - 47.36215 - - - 8.52031 - 47.36214 - - - 8.52042 - 47.36214 - - - 8.52053 - 47.36215 - - - 8.52059 - 47.36215 - - - 8.52068 - 47.36216 - - - 8.52080 - 47.36218 - - - 8.52090 - 47.36219 - - - 8.52101 - 47.36221 - - - 8.52111 - 47.36224 - - - 8.52119 - 47.36226 - - - 8.52127 - 47.36229 - - - 8.52137 - 47.36233 - - - 8.52146 - 47.36237 - - - 8.52152 - 47.36240 - - - 8.52162 - 47.36246 - - - 8.52177 - 47.36255 - - - 8.52193 - 47.36268 - - - 8.52214 - 47.36286 - - - 8.52226 - 47.36297 - - - 8.52249 - 47.36320 - - - 8.52312 - 47.36387 - - - 8.52325 - 47.36402 - - - 8.52342 - 47.36426 - - - 8.52356 - 47.36452 - - - 8.52378 - 47.36493 - - - 8.52388 - 47.36509 - - - 8.52400 - 47.36525 - - - 8.52421 - 47.36550 - - - 8.52450 - 47.36578 - - - 8.52480 - 47.36605 - - - 8.52503 - 47.36625 - - - 8.52524 - 47.36643 - - - 8.52546 - 47.36659 - - - 8.52572 - 47.36675 - - - 8.52597 - 47.36689 - - - 8.52625 - 47.36703 - - - 8.52653 - 47.36715 - - - 8.52679 - 47.36724 - - - 8.52702 - 47.36732 - - - 8.52764 - 47.36751 - - - 8.52796 - 47.36762 - - - 8.52817 - 47.36771 - - - 8.52836 - 47.36781 - - - 8.52855 - 47.36794 - - - 8.52873 - 47.36807 - - - 8.52889 - 47.36822 - - - 8.52898 - 47.36832 - - - 8.52924 - 47.36865 - - - 8.52953 - 47.36901 - - - 8.52973 - 47.36924 - - - 8.52981 - 47.36933 - - - 8.52991 - 47.36943 - - - 8.53001 - 47.36953 - - - 8.53026 - 47.36974 - - - 8.53058 - 47.37000 - - - 8.53071 - 47.37011 - - - 8.53087 - 47.37026 - - - 8.53097 - 47.37036 - - - 8.53106 - 47.37045 - - - 8.53113 - 47.37055 - - - 8.53125 - 47.37073 - - - 8.53133 - 47.37088 - - - 8.53137 - 47.37098 - - - 8.53141 - 47.37108 - - - 8.53145 - 47.37121 - - - 8.53163 - 47.37181 - - - 8.53168 - 47.37198 - - - 8.53176 - 47.37216 - - - 8.53179 - 47.37222 - - - 8.53179 - 47.37222 - - - 8.53176 - 47.37216 - - - 8.53168 - 47.37198 - - - 8.53163 - 47.37181 - - - 8.53145 - 47.37121 - - - 8.53141 - 47.37108 - - - 8.53137 - 47.37098 - - - 8.53133 - 47.37088 - - - 8.53125 - 47.37073 - - - 8.53113 - 47.37055 - - - 8.53106 - 47.37045 - - - 8.53097 - 47.37036 - - - 8.53087 - 47.37026 - - - 8.53071 - 47.37011 - - - 8.53058 - 47.37000 - - - 8.53026 - 47.36974 - - - 8.53001 - 47.36953 - - - 8.52991 - 47.36943 - - - 8.52981 - 47.36933 - - - 8.52973 - 47.36924 - - - 8.52953 - 47.36901 - - - 8.52924 - 47.36865 - - - 8.52898 - 47.36832 - - - 8.52889 - 47.36822 - - - 8.52873 - 47.36807 - - - 8.52855 - 47.36794 - - - 8.52836 - 47.36781 - - - 8.52817 - 47.36771 - - - 8.52796 - 47.36762 - - - 8.52764 - 47.36751 - - - 8.52702 - 47.36732 - - - 8.52679 - 47.36724 - - - 8.52653 - 47.36715 - - - 8.52625 - 47.36703 - - - 8.52597 - 47.36689 - - - 8.52572 - 47.36675 - - - 8.52546 - 47.36659 - - - 8.52524 - 47.36643 - - - 8.52503 - 47.36625 - - - 8.52480 - 47.36605 - - - 8.52450 - 47.36578 - - - 8.52421 - 47.36550 - - - 8.52400 - 47.36525 - - - 8.52388 - 47.36509 - - - 8.52378 - 47.36493 - - - 8.52356 - 47.36452 - - - 8.52342 - 47.36426 - - - 8.52325 - 47.36402 - - - 8.52312 - 47.36387 - - - 8.52249 - 47.36320 - - - 8.52238 - 47.36309 - - - 8.52226 - 47.36297 - - - 8.52214 - 47.36286 - - - 8.52193 - 47.36268 - - - 8.52214 - 47.36287 - - - 8.52218 - 47.36292 - - - 8.52222 - 47.36298 - - - 8.52226 - 47.36304 - - - 8.52229 - 47.36310 - - - 8.52232 - 47.36315 - - - 8.52236 - 47.36326 - - - 8.52238 - 47.36332 - - - 8.52239 - 47.36338 - - - 8.52240 - 47.36343 - - - 8.52241 - 47.36349 - - - 8.52242 - 47.36356 - - - 8.52244 - 47.36416 - - - 8.52244 - 47.36427 - - - 8.52242 - 47.36513 - - - 8.52242 - 47.36537 - - - 8.52242 - 47.36553 - - - 8.52244 - 47.36571 - - - 8.52248 - 47.36587 - - - 8.52254 - 47.36603 - - - 8.52260 - 47.36621 - - - 8.52268 - 47.36635 - - - 8.52276 - 47.36648 - - - 8.52285 - 47.36662 - - - 8.52355 - 47.36748 - - - 8.52375 - 47.36770 - - - 8.52397 - 47.36794 - - - 8.52417 - 47.36812 - - - 8.52444 - 47.36842 - - - 8.52456 - 47.36859 - - - 8.52466 - 47.36875 - - - 8.52475 - 47.36896 - - - 8.52479 - 47.36909 - - - 8.52484 - 47.36931 - - - 8.52485 - 47.36949 - - - 8.52485 - 47.36964 - - - 8.52483 - 47.36979 - - - 8.52478 - 47.36996 - - - 8.52473 - 47.37011 - - - 8.52467 - 47.37022 - - - 8.52461 - 47.37032 - - - 8.52454 - 47.37043 - - - 8.52446 - 47.37054 - - - 8.52433 - 47.37068 - - - 8.52425 - 47.37077 - - - 8.52415 - 47.37086 - - - 8.52408 - 47.37092 - - - 8.52395 - 47.37102 - - - 8.52382 - 47.37111 - - - 8.52356 - 47.37127 - - - 8.52334 - 47.37140 - - - 8.52322 - 47.37149 - - - 8.52312 - 47.37155 - - - 8.52080 - 47.37319 - - - 8.52032 - 47.37353 - - - 8.52018 - 47.37364 - - - 8.52009 - 47.37371 - - - 8.51996 - 47.37383 - - - 8.51988 - 47.37391 - - - 8.51980 - 47.37400 - - - 8.51969 - 47.37413 - - - 8.51960 - 47.37425 - - - 8.51942 - 47.37449 - - - 8.51928 - 47.37468 - - - 8.51919 - 47.37481 - - - 8.51908 - 47.37498 - - - 8.51900 - 47.37513 - - - 8.51886 - 47.37544 - - - 8.51882 - 47.37556 - - - 8.51879 - 47.37570 - - - 8.51876 - 47.37591 - - - 8.51874 - 47.37608 - - - 8.51873 - 47.37623 - - - 8.51872 - 47.37633 - - - 8.51872 - 47.37643 - - - 8.51873 - 47.37657 - - - 8.51876 - 47.37677 - - - 8.51881 - 47.37698 - - - 8.51884 - 47.37711 - - - 8.51892 - 47.37731 - - - 8.51898 - 47.37742 - - - 8.51904 - 47.37753 - - - 8.51910 - 47.37763 - - - 8.51919 - 47.37777 - - - 8.51932 - 47.37794 - - - 8.51947 - 47.37810 - - - 8.51961 - 47.37826 - - - 8.52024 - 47.37891 - - - 8.52089 - 47.37956 - - - 8.52110 - 47.37978 - - - 8.52132 - 47.37998 - - - 8.52156 - 47.38018 - - - 8.52172 - 47.38028 - - - 8.52189 - 47.38038 - - - 8.52195 - 47.38041 - - - 8.52203 - 47.38046 - - - 8.52220 - 47.38054 - - - 8.52231 - 47.38059 - - - 8.52240 - 47.38063 - - - 8.52251 - 47.38066 - - - 8.52262 - 47.38071 - - - 8.52280 - 47.38076 - - - 8.52293 - 47.38080 - - - 8.52307 - 47.38083 - - - 8.52320 - 47.38086 - - - 8.52335 - 47.38089 - - - 8.52350 - 47.38092 - - - 8.52367 - 47.38094 - - - 8.52385 - 47.38096 - - - 8.52404 - 47.38097 - - - 8.52433 - 47.38099 - - - 8.52485 - 47.38102 - - - 8.52587 - 47.38109 - - - 8.52609 - 47.38110 - - - 8.52629 - 47.38110 - - - 8.52643 - 47.38111 - - - 8.52657 - 47.38110 - - - 8.52670 - 47.38110 - - - 8.52682 - 47.38109 - - - 8.52697 - 47.38108 - - - 8.52721 - 47.38106 - - - 8.52748 - 47.38102 - - - 8.52760 - 47.38100 - - - 8.52773 - 47.38097 - - - 8.52786 - 47.38094 - - - 8.52806 - 47.38090 - - - 8.52820 - 47.38086 - - - 8.52843 - 47.38080 - - - 8.52892 - 47.38067 - - - 8.52938 - 47.38055 - - - 8.52971 - 47.38045 - - - 8.53064 - 47.38016 - - - 8.53112 - 47.38001 - - - 8.53245 - 47.37965 - - - 8.53289 - 47.37951 - - - 8.53350 - 47.37931 - - - 8.53431 - 47.37903 - - - 8.53526 - 47.37872 - - - 8.53624 - 47.37844 - - - 8.53802 - 47.37795 - - - 8.53864 - 47.37778 - - - 8.53921 - 47.37764 - - - 8.53944 - 47.37759 - - - PT22M - 14251 - - - - - Uetlibergbahn - - - 12788 - - - Sihltal-Zürich-Uetliberg-Bahn - - - ch:1:sjyid:100058:12788-001 - - - - - - 2 - - walk - - ch:1:sloid:3088:0:82204 - - Zürich HB SZU - - - - ch:1:sloid:3000:500:31 - - Zürich HB - - - 2024-03-09T07:47:00Z - 2024-03-09T08:02:00Z - PT15M - PT7M - PT8M - 189 - - - - - - 8.53946 - 47.37760 - - - 8.53943 - 47.37760 - - - - PT0M0S - 0 - - origin - left - - - - - - 8.53943 - 47.37760 - - - 8.53861 - 47.37781 - - - 8.53710 - 47.37821 - - - 8.53712 - 47.37821 - - - Bahnsteig - PT0H2M50S - 189 - - keep - straight on - - - - - - 8.53712 - 47.37821 - - - 8.53712 - 47.37821 - - - Einstieg Zug - PT0M0S - 0 - - enter - left - - - - - - 3 - - - ch:1:sloid:3000:500:31 - - Zürich HB - - - NO_DATA - - - 31 - - - 2024-03-09T08:02:00Z - - 1 - - - ch:1:sloid:7000:4:7 - - Bern - - - NO_DATA - - - 7 - - - 2024-03-09T08:58:00Z - - 2 - - - 2024-03-09 - ch:1:sjyid:100001:810-001 - ojp:91008:E - R - - rail - interRegionalRailService - - Zug - - - IC - - - - IC8 - - ojp:11 - - - Platzreservierung möglich - - A___R - - - - Businesszone in 1. Klasse - - A__BZ - firstClass - businessServices - - - - Familienwagen mit Spielplatz - - A__FA - - - - Gratis-Internet mit der App SBB FreeSurf - - A__FS - - - - Ruhezone in 1. Klasse - - A__RZ - mobilePhoneFreeZone - - - - Restaurant - - A__WR - restaurantService - - 8501609 - - Brig - - - - - - ch:1:sloid:3000:500:31 - - Zürich HB - - - - ch:1:sloid:7000:4:7 - - Bern - - - - - 8.53711 - 47.37820 - - - 8.53624 - 47.37844 - - - 8.53526 - 47.37872 - - - 8.53431 - 47.37903 - - - 8.53350 - 47.37931 - - - 8.53289 - 47.37951 - - - 8.53245 - 47.37965 - - - 8.53112 - 47.38001 - - - 8.53064 - 47.38016 - - - 8.53050 - 47.38020 - - - 8.53039 - 47.38024 - - - 8.52995 - 47.38041 - - - 8.52974 - 47.38048 - - - 8.52940 - 47.38058 - - - 8.52921 - 47.38064 - - - 8.52842 - 47.38085 - - - 8.52795 - 47.38098 - - - 8.52775 - 47.38103 - - - 8.52760 - 47.38106 - - - 8.52745 - 47.38109 - - - 8.52735 - 47.38111 - - - 8.52724 - 47.38113 - - - 8.52712 - 47.38114 - - - 8.52691 - 47.38117 - - - 8.52677 - 47.38118 - - - 8.52664 - 47.38118 - - - 8.52651 - 47.38119 - - - 8.52635 - 47.38119 - - - 8.52617 - 47.38118 - - - 8.52587 - 47.38117 - - - 8.52554 - 47.38115 - - - 8.52508 - 47.38114 - - - 8.52484 - 47.38113 - - - 8.52468 - 47.38113 - - - 8.52456 - 47.38114 - - - 8.52436 - 47.38115 - - - 8.52411 - 47.38117 - - - 8.52398 - 47.38119 - - - 8.52371 - 47.38122 - - - 8.52355 - 47.38125 - - - 8.52341 - 47.38128 - - - 8.52327 - 47.38131 - - - 8.52313 - 47.38135 - - - 8.52302 - 47.38138 - - - 8.52290 - 47.38142 - - - 8.52276 - 47.38146 - - - 8.52259 - 47.38152 - - - 8.52243 - 47.38158 - - - 8.52221 - 47.38168 - - - 8.52201 - 47.38178 - - - 8.52177 - 47.38191 - - - 8.52154 - 47.38206 - - - 8.52139 - 47.38216 - - - 8.52124 - 47.38228 - - - 8.52101 - 47.38248 - - - 8.52082 - 47.38264 - - - 8.52062 - 47.38281 - - - 8.52051 - 47.38289 - - - 8.52041 - 47.38297 - - - 8.52030 - 47.38305 - - - 8.52019 - 47.38312 - - - 8.52005 - 47.38321 - - - 8.51992 - 47.38328 - - - 8.51980 - 47.38335 - - - 8.51968 - 47.38342 - - - 8.51951 - 47.38350 - - - 8.51937 - 47.38356 - - - 8.51923 - 47.38362 - - - 8.51910 - 47.38368 - - - 8.51899 - 47.38372 - - - 8.51887 - 47.38376 - - - 8.51875 - 47.38380 - - - 8.51859 - 47.38386 - - - 8.51840 - 47.38391 - - - 8.51776 - 47.38409 - - - 8.51693 - 47.38431 - - - 8.51553 - 47.38470 - - - 8.51485 - 47.38488 - - - 8.50948 - 47.38634 - - - 8.50886 - 47.38645 - - - 8.50866 - 47.38650 - - - 8.50850 - 47.38654 - - - 8.50783 - 47.38672 - - - 8.50697 - 47.38704 - - - 8.50678 - 47.38712 - - - 8.50642 - 47.38727 - - - 8.50606 - 47.38743 - - - 8.50578 - 47.38753 - - - 8.50552 - 47.38762 - - - 8.50526 - 47.38770 - - - 8.50151 - 47.38881 - - - 8.50122 - 47.38889 - - - 8.50105 - 47.38893 - - - 8.50086 - 47.38898 - - - 8.50066 - 47.38902 - - - 8.50044 - 47.38906 - - - 8.50018 - 47.38911 - - - 8.49974 - 47.38918 - - - 8.49932 - 47.38924 - - - 8.49894 - 47.38928 - - - 8.49860 - 47.38930 - - - 8.49834 - 47.38933 - - - 8.49819 - 47.38935 - - - 8.49805 - 47.38937 - - - 8.49789 - 47.38940 - - - 8.49771 - 47.38943 - - - 8.49682 - 47.38960 - - - 8.49665 - 47.38964 - - - 8.49650 - 47.38967 - - - 8.49633 - 47.38971 - - - 8.49619 - 47.38975 - - - 8.49602 - 47.38980 - - - 8.49558 - 47.38993 - - - 8.49516 - 47.39005 - - - 8.49487 - 47.39012 - - - 8.49469 - 47.39016 - - - 8.49401 - 47.39031 - - - 8.49368 - 47.39038 - - - 8.49318 - 47.39050 - - - 8.49273 - 47.39061 - - - 8.49234 - 47.39072 - - - 8.48911 - 47.39159 - - - 8.48726 - 47.39209 - - - 8.48713 - 47.39212 - - - 8.48703 - 47.39214 - - - 8.48659 - 47.39224 - - - 8.48574 - 47.39248 - - - 8.48565 - 47.39251 - - - 8.48499 - 47.39267 - - - 8.48231 - 47.39336 - - - 8.48153 - 47.39356 - - - 8.48096 - 47.39370 - - - 8.47399 - 47.39564 - - - 8.46941 - 47.39687 - - - 8.46904 - 47.39698 - - - 8.46827 - 47.39720 - - - 8.46451 - 47.39821 - - - 8.46367 - 47.39846 - - - 8.46341 - 47.39854 - - - 8.46322 - 47.39859 - - - 8.46296 - 47.39866 - - - 8.46264 - 47.39873 - - - 8.46253 - 47.39876 - - - 8.46232 - 47.39882 - - - 8.46172 - 47.39900 - - - 8.46147 - 47.39908 - - - 8.46122 - 47.39916 - - - 8.46110 - 47.39920 - - - 8.46072 - 47.39931 - - - 8.46037 - 47.39940 - - - 8.46014 - 47.39946 - - - 8.45970 - 47.39956 - - - 8.45948 - 47.39961 - - - 8.45929 - 47.39965 - - - 8.45906 - 47.39969 - - - 8.45887 - 47.39972 - - - 8.45866 - 47.39975 - - - 8.45849 - 47.39978 - - - 8.45831 - 47.39980 - - - 8.45809 - 47.39982 - - - 8.45787 - 47.39984 - - - 8.45770 - 47.39985 - - - 8.45751 - 47.39985 - - - 8.45709 - 47.39987 - - - 8.45694 - 47.39987 - - - 8.45680 - 47.39987 - - - 8.45666 - 47.39986 - - - 8.45652 - 47.39986 - - - 8.45634 - 47.39985 - - - 8.45441 - 47.39970 - - - 8.44965 - 47.39936 - - - 8.44954 - 47.39935 - - - 8.44945 - 47.39935 - - - 8.44934 - 47.39935 - - - 8.44909 - 47.39935 - - - 8.44899 - 47.39935 - - - 8.44886 - 47.39934 - - - 8.44653 - 47.39918 - - - 8.44536 - 47.39909 - - - 8.44225 - 47.39887 - - - 8.44211 - 47.39886 - - - 8.44194 - 47.39885 - - - 8.44169 - 47.39886 - - - 8.44151 - 47.39885 - - - 8.44117 - 47.39882 - - - 8.44084 - 47.39881 - - - 8.44052 - 47.39880 - - - 8.44002 - 47.39877 - - - 8.43950 - 47.39872 - - - 8.43910 - 47.39870 - - - 8.43865 - 47.39868 - - - 8.43823 - 47.39866 - - - 8.43813 - 47.39865 - - - 8.43747 - 47.39860 - - - 8.43672 - 47.39857 - - - 8.43607 - 47.39851 - - - 8.43538 - 47.39847 - - - 8.43505 - 47.39845 - - - 8.43437 - 47.39841 - - - 8.43312 - 47.39832 - - - 8.43222 - 47.39825 - - - 8.43133 - 47.39816 - - - 8.43048 - 47.39807 - - - 8.42964 - 47.39798 - - - 8.42908 - 47.39794 - - - 8.42848 - 47.39792 - - - 8.42806 - 47.39792 - - - 8.42746 - 47.39794 - - - 8.42687 - 47.39799 - - - 8.42621 - 47.39806 - - - 8.42555 - 47.39816 - - - 8.42350 - 47.39850 - - - 8.42209 - 47.39873 - - - 8.42028 - 47.39901 - - - 8.41950 - 47.39912 - - - 8.41803 - 47.39932 - - - 8.41734 - 47.39942 - - - 8.41264 - 47.40015 - - - 8.41183 - 47.40029 - - - 8.41136 - 47.40038 - - - 8.41107 - 47.40045 - - - 8.41077 - 47.40053 - - - 8.41049 - 47.40062 - - - 8.41021 - 47.40072 - - - 8.40984 - 47.40086 - - - 8.40955 - 47.40098 - - - 8.40928 - 47.40110 - - - 8.40902 - 47.40122 - - - 8.40881 - 47.40133 - - - 8.40859 - 47.40146 - - - 8.40833 - 47.40164 - - - 8.40805 - 47.40183 - - - 8.40780 - 47.40202 - - - 8.40761 - 47.40217 - - - 8.40745 - 47.40232 - - - 8.40727 - 47.40250 - - - 8.40713 - 47.40266 - - - 8.40700 - 47.40282 - - - 8.40686 - 47.40302 - - - 8.40672 - 47.40324 - - - 8.40656 - 47.40351 - - - 8.40525 - 47.40589 - - - 8.40484 - 47.40661 - - - 8.40422 - 47.40767 - - - 8.40416 - 47.40776 - - - 8.40387 - 47.40822 - - - 8.40371 - 47.40844 - - - 8.40317 - 47.40913 - - - 8.40294 - 47.40936 - - - 8.40285 - 47.40944 - - - 8.40274 - 47.40953 - - - 8.40262 - 47.40962 - - - 8.40242 - 47.40975 - - - 8.40181 - 47.41013 - - - 8.40173 - 47.41018 - - - 8.40148 - 47.41035 - - - 8.40077 - 47.41075 - - - 8.40048 - 47.41091 - - - 8.40033 - 47.41099 - - - 8.40015 - 47.41107 - - - 8.39976 - 47.41122 - - - 8.39963 - 47.41127 - - - 8.39940 - 47.41138 - - - 8.39909 - 47.41157 - - - 8.39261 - 47.41608 - - - 8.39243 - 47.41620 - - - 8.39213 - 47.41640 - - - 8.39184 - 47.41658 - - - 8.39169 - 47.41665 - - - 8.39127 - 47.41685 - - - 8.39099 - 47.41698 - - - 8.38955 - 47.41770 - - - 8.38200 - 47.42145 - - - 8.38139 - 47.42174 - - - 8.38121 - 47.42182 - - - 8.38109 - 47.42188 - - - 8.38100 - 47.42193 - - - 8.38089 - 47.42199 - - - 8.38070 - 47.42211 - - - 8.38017 - 47.42236 - - - 8.37984 - 47.42255 - - - 8.37966 - 47.42264 - - - 8.37956 - 47.42269 - - - 8.37949 - 47.42272 - - - 8.37943 - 47.42274 - - - 8.37933 - 47.42278 - - - 8.37924 - 47.42281 - - - 8.37896 - 47.42289 - - - 8.37887 - 47.42292 - - - 8.37852 - 47.42301 - - - 8.37830 - 47.42308 - - - 8.37796 - 47.42319 - - - 8.37763 - 47.42332 - - - 8.37737 - 47.42345 - - - 8.37639 - 47.42390 - - - 8.37591 - 47.42407 - - - 8.37565 - 47.42419 - - - 8.37512 - 47.42444 - - - 8.37476 - 47.42457 - - - 8.37448 - 47.42468 - - - 8.36759 - 47.42789 - - - 8.36630 - 47.42848 - - - 8.36616 - 47.42854 - - - 8.36599 - 47.42861 - - - 8.36581 - 47.42869 - - - 8.36525 - 47.42895 - - - 8.36511 - 47.42901 - - - 8.36495 - 47.42907 - - - 8.36464 - 47.42917 - - - 8.36338 - 47.42959 - - - 8.36300 - 47.42974 - - - 8.36269 - 47.42987 - - - 8.36229 - 47.43007 - - - 8.36018 - 47.43122 - - - 8.35973 - 47.43142 - - - 8.35769 - 47.43217 - - - 8.35683 - 47.43246 - - - 8.35586 - 47.43279 - - - 8.35518 - 47.43302 - - - 8.35501 - 47.43308 - - - 8.35478 - 47.43316 - - - 8.35453 - 47.43328 - - - 8.35431 - 47.43337 - - - 8.35192 - 47.43423 - - - 8.35143 - 47.43441 - - - 8.35037 - 47.43483 - - - 8.35020 - 47.43489 - - - 8.34689 - 47.43609 - - - 8.34592 - 47.43644 - - - 8.34480 - 47.43684 - - - 8.34415 - 47.43707 - - - 8.34381 - 47.43717 - - - 8.34362 - 47.43723 - - - 8.34342 - 47.43729 - - - 8.34322 - 47.43735 - - - 8.34302 - 47.43741 - - - 8.34165 - 47.43769 - - - 8.34024 - 47.43790 - - - 8.33923 - 47.43799 - - - 8.33820 - 47.43803 - - - 8.33726 - 47.43802 - - - 8.33661 - 47.43798 - - - 8.33600 - 47.43793 - - - 8.33529 - 47.43785 - - - 8.33462 - 47.43775 - - - 8.33314 - 47.43751 - - - 8.33153 - 47.43728 - - - 8.32196 - 47.43573 - - - 8.27938 - 47.42869 - - - 8.27852 - 47.42855 - - - 8.27691 - 47.42826 - - - 8.27581 - 47.42806 - - - 8.27348 - 47.42760 - - - 8.27078 - 47.42708 - - - 8.27022 - 47.42699 - - - 8.26993 - 47.42695 - - - 8.26956 - 47.42690 - - - 8.26918 - 47.42685 - - - 8.26868 - 47.42681 - - - 8.26806 - 47.42677 - - - 8.26775 - 47.42675 - - - 8.26706 - 47.42673 - - - 8.26629 - 47.42672 - - - 8.26581 - 47.42674 - - - 8.26357 - 47.42682 - - - 8.26033 - 47.42694 - - - 8.25896 - 47.42697 - - - 8.25821 - 47.42696 - - - 8.25744 - 47.42693 - - - 8.25667 - 47.42687 - - - 8.25592 - 47.42678 - - - 8.25532 - 47.42668 - - - 8.25477 - 47.42659 - - - 8.25424 - 47.42647 - - - 8.25374 - 47.42635 - - - 8.25334 - 47.42623 - - - 8.25279 - 47.42606 - - - 8.25148 - 47.42560 - - - 8.25077 - 47.42528 - - - 8.25010 - 47.42494 - - - 8.24954 - 47.42461 - - - 8.24891 - 47.42422 - - - 8.24843 - 47.42388 - - - 8.24821 - 47.42370 - - - 8.24765 - 47.42324 - - - 8.24719 - 47.42280 - - - 8.24643 - 47.42197 - - - 8.24564 - 47.42107 - - - 8.24543 - 47.42084 - - - 8.24518 - 47.42060 - - - 8.24492 - 47.42036 - - - 8.24462 - 47.42005 - - - 8.24425 - 47.41969 - - - 8.24386 - 47.41933 - - - 8.24349 - 47.41899 - - - 8.24300 - 47.41858 - - - 8.24277 - 47.41838 - - - 8.24239 - 47.41810 - - - 8.24217 - 47.41795 - - - 8.24189 - 47.41779 - - - 8.24138 - 47.41752 - - - 8.24088 - 47.41720 - - - 8.24045 - 47.41695 - - - 8.23988 - 47.41664 - - - 8.23929 - 47.41636 - - - 8.23872 - 47.41609 - - - 8.23812 - 47.41584 - - - 8.23743 - 47.41558 - - - 8.23701 - 47.41543 - - - 8.23585 - 47.41505 - - - 8.23495 - 47.41478 - - - 8.23475 - 47.41470 - - - 8.23440 - 47.41455 - - - 8.23416 - 47.41446 - - - 8.23356 - 47.41426 - - - 8.23342 - 47.41421 - - - 8.23270 - 47.41395 - - - 8.23137 - 47.41356 - - - 8.23041 - 47.41327 - - - 8.22988 - 47.41312 - - - 8.22864 - 47.41272 - - - 8.22765 - 47.41244 - - - 8.22235 - 47.41093 - - - 8.22072 - 47.41046 - - - 8.22002 - 47.41026 - - - 8.21929 - 47.41003 - - - 8.21855 - 47.40974 - - - 8.21827 - 47.40961 - - - 8.21743 - 47.40919 - - - 8.21708 - 47.40899 - - - 8.21639 - 47.40856 - - - 8.21583 - 47.40819 - - - 8.21564 - 47.40807 - - - 8.21430 - 47.40723 - - - 8.21334 - 47.40664 - - - 8.21206 - 47.40587 - - - 8.21116 - 47.40537 - - - 8.21071 - 47.40509 - - - 8.21055 - 47.40499 - - - 8.21021 - 47.40474 - - - 8.20989 - 47.40449 - - - 8.20958 - 47.40421 - - - 8.20935 - 47.40399 - - - 8.20906 - 47.40367 - - - 8.20887 - 47.40345 - - - 8.20868 - 47.40319 - - - 8.20847 - 47.40288 - - - 8.20790 - 47.40191 - - - 8.20745 - 47.40108 - - - 8.20714 - 47.40050 - - - 8.20672 - 47.39965 - - - 8.20652 - 47.39923 - - - 8.20631 - 47.39877 - - - 8.20602 - 47.39811 - - - 8.20577 - 47.39763 - - - 8.20566 - 47.39742 - - - 8.20552 - 47.39721 - - - 8.20512 - 47.39668 - - - 8.20468 - 47.39619 - - - 8.20431 - 47.39585 - - - 8.20397 - 47.39557 - - - 8.20357 - 47.39528 - - - 8.20330 - 47.39510 - - - 8.20278 - 47.39479 - - - 8.20225 - 47.39453 - - - 8.20168 - 47.39427 - - - 8.20104 - 47.39403 - - - 8.20045 - 47.39385 - - - 8.19989 - 47.39370 - - - 8.19955 - 47.39363 - - - 8.19906 - 47.39354 - - - 8.19840 - 47.39342 - - - 8.19575 - 47.39301 - - - 8.19263 - 47.39253 - - - 8.18425 - 47.39123 - - - 8.18265 - 47.39098 - - - 8.18089 - 47.39071 - - - 8.18020 - 47.39061 - - - 8.17906 - 47.39042 - - - 8.17795 - 47.39027 - - - 8.17738 - 47.39020 - - - 8.17678 - 47.39017 - - - 8.17612 - 47.39016 - - - 8.17560 - 47.39018 - - - 8.17516 - 47.39022 - - - 8.17448 - 47.39030 - - - 8.17398 - 47.39038 - - - 8.17349 - 47.39048 - - - 8.17319 - 47.39056 - - - 8.17291 - 47.39064 - - - 8.17259 - 47.39073 - - - 8.17199 - 47.39094 - - - 8.17096 - 47.39133 - - - 8.17023 - 47.39158 - - - 8.16950 - 47.39181 - - - 8.16870 - 47.39204 - - - 8.16714 - 47.39248 - - - 8.16552 - 47.39292 - - - 8.16398 - 47.39337 - - - 8.16324 - 47.39360 - - - 8.16252 - 47.39383 - - - 8.16225 - 47.39392 - - - 8.16148 - 47.39416 - - - 8.16099 - 47.39431 - - - 8.16064 - 47.39441 - - - 8.16013 - 47.39455 - - - 8.15977 - 47.39465 - - - 8.15525 - 47.39608 - - - 8.15098 - 47.39744 - - - 8.15020 - 47.39769 - - - 8.14945 - 47.39795 - - - 8.14885 - 47.39818 - - - 8.14827 - 47.39843 - - - 8.14753 - 47.39879 - - - 8.14682 - 47.39919 - - - 8.14628 - 47.39954 - - - 8.14577 - 47.39989 - - - 8.14454 - 47.40085 - - - 8.14365 - 47.40149 - - - 8.14311 - 47.40185 - - - 8.14282 - 47.40201 - - - 8.14217 - 47.40236 - - - 8.14162 - 47.40263 - - - 8.14103 - 47.40289 - - - 8.14040 - 47.40313 - - - 8.13976 - 47.40335 - - - 8.13923 - 47.40351 - - - 8.13873 - 47.40365 - - - 8.13800 - 47.40382 - - - 8.13743 - 47.40393 - - - 8.13682 - 47.40403 - - - 8.13629 - 47.40410 - - - 8.13577 - 47.40415 - - - 8.13542 - 47.40418 - - - 8.13477 - 47.40422 - - - 8.13438 - 47.40423 - - - 8.13361 - 47.40424 - - - 8.13285 - 47.40421 - - - 8.13240 - 47.40418 - - - 8.13198 - 47.40415 - - - 8.13085 - 47.40403 - - - 8.13021 - 47.40395 - - - 8.12921 - 47.40380 - - - 8.12777 - 47.40355 - - - 8.12674 - 47.40335 - - - 8.12567 - 47.40311 - - - 8.12356 - 47.40264 - - - 8.12159 - 47.40227 - - - 8.12135 - 47.40222 - - - 8.11980 - 47.40192 - - - 8.11906 - 47.40179 - - - 8.11877 - 47.40174 - - - 8.11663 - 47.40144 - - - 8.11621 - 47.40138 - - - 8.08318 - 47.39657 - - - 8.08125 - 47.39628 - - - 8.07947 - 47.39602 - - - 8.07750 - 47.39576 - - - 8.07485 - 47.39544 - - - 8.07384 - 47.39531 - - - 8.07175 - 47.39500 - - - 8.07072 - 47.39485 - - - 8.06950 - 47.39464 - - - 8.06845 - 47.39447 - - - 8.06703 - 47.39426 - - - 8.06496 - 47.39396 - - - 8.06360 - 47.39376 - - - 8.06162 - 47.39347 - - - 8.06070 - 47.39332 - - - 8.06047 - 47.39328 - - - 8.05984 - 47.39313 - - - 8.05956 - 47.39307 - - - 8.05905 - 47.39297 - - - 8.05855 - 47.39286 - - - 8.05806 - 47.39275 - - - 8.05765 - 47.39265 - - - 8.05747 - 47.39261 - - - 8.05716 - 47.39254 - - - 8.05692 - 47.39250 - - - 8.05668 - 47.39245 - - - 8.05560 - 47.39218 - - - 8.05511 - 47.39205 - - - 8.05408 - 47.39172 - - - 8.05315 - 47.39143 - - - 8.05251 - 47.39125 - - - 8.05176 - 47.39104 - - - 8.04924 - 47.39040 - - - 8.04831 - 47.39014 - - - 8.04732 - 47.38988 - - - 8.04719 - 47.38984 - - - 8.04691 - 47.38976 - - - 8.04635 - 47.38962 - - - 8.04526 - 47.38932 - - - 8.04445 - 47.38912 - - - 8.04345 - 47.38890 - - - 8.04078 - 47.38839 - - - 8.03952 - 47.38813 - - - 8.03904 - 47.38802 - - - 8.03832 - 47.38787 - - - 8.03747 - 47.38768 - - - 8.03645 - 47.38743 - - - 8.03579 - 47.38727 - - - 8.03513 - 47.38710 - - - 8.03404 - 47.38679 - - - 8.03257 - 47.38641 - - - 8.03042 - 47.38586 - - - 8.02929 - 47.38557 - - - 8.02848 - 47.38535 - - - 8.02771 - 47.38512 - - - 8.02688 - 47.38485 - - - 8.02593 - 47.38450 - - - 8.02485 - 47.38412 - - - 8.02107 - 47.38267 - - - 8.02009 - 47.38227 - - - 8.01598 - 47.38061 - - - 8.01538 - 47.38038 - - - 8.01457 - 47.38007 - - - 8.01367 - 47.37971 - - - 8.01150 - 47.37884 - - - 8.01109 - 47.37866 - - - 8.00704 - 47.37702 - - - 8.00437 - 47.37595 - - - 8.00370 - 47.37564 - - - 8.00303 - 47.37527 - - - 8.00240 - 47.37486 - - - 8.00185 - 47.37437 - - - 8.00152 - 47.37403 - - - 8.00111 - 47.37351 - - - 8.00085 - 47.37306 - - - 8.00072 - 47.37278 - - - 7.99843 - 47.36778 - - - 7.99835 - 47.36761 - - - 7.99806 - 47.36708 - - - 7.99789 - 47.36674 - - - 7.99750 - 47.36588 - - - 7.99727 - 47.36543 - - - 7.99701 - 47.36498 - - - 7.99660 - 47.36446 - - - 7.99578 - 47.36367 - - - 7.99508 - 47.36312 - - - 7.99482 - 47.36292 - - - 7.99453 - 47.36273 - - - 7.99418 - 47.36252 - - - 7.99355 - 47.36219 - - - 7.99297 - 47.36193 - - - 7.99240 - 47.36172 - - - 7.98996 - 47.36083 - - - 7.98619 - 47.35945 - - - 7.98366 - 47.35850 - - - 7.98055 - 47.35734 - - - 7.97964 - 47.35700 - - - 7.97680 - 47.35587 - - - 7.97612 - 47.35562 - - - 7.97441 - 47.35498 - - - 7.97096 - 47.35369 - - - 7.96667 - 47.35210 - - - 7.96391 - 47.35106 - - - 7.96328 - 47.35084 - - - 7.96265 - 47.35066 - - - 7.96208 - 47.35052 - - - 7.96151 - 47.35041 - - - 7.96090 - 47.35033 - - - 7.96028 - 47.35028 - - - 7.95959 - 47.35025 - - - 7.95892 - 47.35026 - - - 7.95828 - 47.35031 - - - 7.95767 - 47.35038 - - - 7.95723 - 47.35044 - - - 7.95680 - 47.35053 - - - 7.95621 - 47.35068 - - - 7.95561 - 47.35084 - - - 7.95501 - 47.35107 - - - 7.95469 - 47.35119 - - - 7.95428 - 47.35138 - - - 7.95317 - 47.35194 - - - 7.95161 - 47.35274 - - - 7.95100 - 47.35303 - - - 7.95043 - 47.35327 - - - 7.95000 - 47.35342 - - - 7.94953 - 47.35357 - - - 7.94898 - 47.35372 - - - 7.94840 - 47.35386 - - - 7.94755 - 47.35403 - - - 7.94708 - 47.35410 - - - 7.94661 - 47.35415 - - - 7.94448 - 47.35437 - - - 7.94275 - 47.35456 - - - 7.93805 - 47.35513 - - - 7.93542 - 47.35545 - - - 7.93467 - 47.35553 - - - 7.93369 - 47.35567 - - - 7.93242 - 47.35590 - - - 7.93159 - 47.35609 - - - 7.93079 - 47.35630 - - - 7.93015 - 47.35649 - - - 7.92960 - 47.35667 - - - 7.92941 - 47.35674 - - - 7.92853 - 47.35707 - - - 7.92764 - 47.35746 - - - 7.92701 - 47.35777 - - - 7.92654 - 47.35803 - - - 7.92584 - 47.35845 - - - 7.92561 - 47.35859 - - - 7.92473 - 47.35909 - - - 7.92386 - 47.35956 - - - 7.92345 - 47.35977 - - - 7.92307 - 47.35994 - - - 7.92269 - 47.36008 - - - 7.92217 - 47.36025 - - - 7.92190 - 47.36033 - - - 7.92159 - 47.36040 - - - 7.92118 - 47.36048 - - - 7.92099 - 47.36052 - - - 7.92079 - 47.36054 - - - 7.92049 - 47.36058 - - - 7.92001 - 47.36062 - - - 7.91960 - 47.36063 - - - 7.91912 - 47.36062 - - - 7.91862 - 47.36058 - - - 7.91807 - 47.36051 - - - 7.91762 - 47.36042 - - - 7.91706 - 47.36028 - - - 7.91649 - 47.36009 - - - 7.91586 - 47.35982 - - - 7.91552 - 47.35965 - - - 7.91399 - 47.35887 - - - 7.91386 - 47.35881 - - - 7.91283 - 47.35823 - - - 7.91204 - 47.35783 - - - 7.91176 - 47.35768 - - - 7.91154 - 47.35755 - - - 7.91125 - 47.35736 - - - 7.91093 - 47.35712 - - - 7.91027 - 47.35650 - - - 7.90955 - 47.35579 - - - 7.90924 - 47.35542 - - - 7.90913 - 47.35528 - - - 7.90901 - 47.35512 - - - 7.90893 - 47.35499 - - - 7.90886 - 47.35487 - - - 7.90877 - 47.35473 - - - 7.90857 - 47.35435 - - - 7.90845 - 47.35407 - - - 7.90842 - 47.35401 - - - 7.90837 - 47.35385 - - - 7.90831 - 47.35358 - - - 7.90825 - 47.35326 - - - 7.90798 - 47.35162 - - - 7.90795 - 47.35142 - - - 7.90790 - 47.35116 - - - 7.90777 - 47.35066 - - - 7.90753 - 47.34977 - - - 7.90748 - 47.34956 - - - 7.90744 - 47.34941 - - - 7.90742 - 47.34926 - - - 7.90739 - 47.34914 - - - 7.90736 - 47.34905 - - - 7.90732 - 47.34894 - - - 7.90729 - 47.34886 - - - 7.90726 - 47.34874 - - - 7.90720 - 47.34839 - - - 7.90712 - 47.34795 - - - 7.90708 - 47.34766 - - - 7.90706 - 47.34752 - - - 7.90706 - 47.34739 - - - 7.90706 - 47.34725 - - - 7.90707 - 47.34711 - - - 7.90708 - 47.34695 - - - 7.90710 - 47.34681 - - - 7.90714 - 47.34666 - - - 7.90722 - 47.34640 - - - 7.90728 - 47.34625 - - - 7.90746 - 47.34581 - - - 7.90774 - 47.34513 - - - 7.90787 - 47.34482 - - - 7.90791 - 47.34469 - - - 7.90797 - 47.34450 - - - 7.90801 - 47.34436 - - - 7.90805 - 47.34418 - - - 7.90808 - 47.34400 - - - 7.90809 - 47.34392 - - - 7.90810 - 47.34384 - - - 7.90812 - 47.34368 - - - 7.90812 - 47.34352 - - - 7.90811 - 47.34319 - - - 7.90810 - 47.34308 - - - 7.90808 - 47.34284 - - - 7.90806 - 47.34275 - - - 7.90803 - 47.34263 - - - 7.90800 - 47.34248 - - - 7.90783 - 47.34197 - - - 7.90762 - 47.34147 - - - 7.90739 - 47.34103 - - - 7.90705 - 47.34048 - - - 7.90662 - 47.33988 - - - 7.90643 - 47.33963 - - - 7.90623 - 47.33939 - - - 7.90585 - 47.33898 - - - 7.90541 - 47.33854 - - - 7.90504 - 47.33824 - - - 7.90461 - 47.33786 - - - 7.90370 - 47.33709 - - - 7.90323 - 47.33664 - - - 7.90266 - 47.33604 - - - 7.89784 - 47.33038 - - - 7.89710 - 47.32947 - - - 7.89634 - 47.32837 - - - 7.89596 - 47.32771 - - - 7.89557 - 47.32701 - - - 7.89477 - 47.32522 - - - 7.89447 - 47.32449 - - - 7.89417 - 47.32375 - - - 7.89398 - 47.32320 - - - 7.89385 - 47.32279 - - - 7.89375 - 47.32240 - - - 7.89366 - 47.32200 - - - 7.89359 - 47.32159 - - - 7.89354 - 47.32116 - - - 7.89350 - 47.32065 - - - 7.89348 - 47.32019 - - - 7.89348 - 47.31972 - - - 7.89349 - 47.31808 - - - 7.89348 - 47.31777 - - - 7.89342 - 47.31726 - - - 7.89335 - 47.31670 - - - 7.89328 - 47.31635 - - - 7.89320 - 47.31601 - - - 7.89313 - 47.31574 - - - 7.89306 - 47.31547 - - - 7.89287 - 47.31489 - - - 7.89263 - 47.31434 - - - 7.89240 - 47.31382 - - - 7.89228 - 47.31357 - - - 7.89214 - 47.31332 - - - 7.89192 - 47.31293 - - - 7.89168 - 47.31257 - - - 7.89137 - 47.31217 - - - 7.89109 - 47.31182 - - - 7.89087 - 47.31158 - - - 7.89070 - 47.31140 - - - 7.89053 - 47.31122 - - - 7.89016 - 47.31088 - - - 7.88992 - 47.31068 - - - 7.88966 - 47.31049 - - - 7.88872 - 47.30983 - - - 7.88781 - 47.30929 - - - 7.88711 - 47.30893 - - - 7.88646 - 47.30864 - - - 7.88552 - 47.30829 - - - 7.88507 - 47.30814 - - - 7.88454 - 47.30798 - - - 7.88311 - 47.30760 - - - 7.88175 - 47.30724 - - - 7.87943 - 47.30664 - - - 7.87825 - 47.30630 - - - 7.87705 - 47.30591 - - - 7.87598 - 47.30554 - - - 7.87262 - 47.30423 - - - 7.87061 - 47.30344 - - - 7.86970 - 47.30308 - - - 7.86903 - 47.30284 - - - 7.86750 - 47.30222 - - - 7.86714 - 47.30207 - - - 7.86660 - 47.30183 - - - 7.86618 - 47.30165 - - - 7.86374 - 47.30067 - - - 7.86239 - 47.30004 - - - 7.86121 - 47.29940 - - - 7.86008 - 47.29868 - - - 7.85887 - 47.29777 - - - 7.85794 - 47.29696 - - - 7.85705 - 47.29606 - - - 7.85658 - 47.29550 - - - 7.85615 - 47.29494 - - - 7.85563 - 47.29420 - - - 7.85521 - 47.29345 - - - 7.85504 - 47.29313 - - - 7.85488 - 47.29279 - - - 7.85467 - 47.29231 - - - 7.85450 - 47.29184 - - - 7.85427 - 47.29109 - - - 7.85416 - 47.29066 - - - 7.85407 - 47.29020 - - - 7.85400 - 47.28967 - - - 7.85396 - 47.28928 - - - 7.85394 - 47.28887 - - - 7.85394 - 47.28799 - - - 7.85398 - 47.28710 - - - 7.85400 - 47.28619 - - - 7.85400 - 47.28523 - - - 7.85396 - 47.28427 - - - 7.85390 - 47.28333 - - - 7.85379 - 47.28222 - - - 7.85372 - 47.28167 - - - 7.85364 - 47.28110 - - - 7.85344 - 47.27996 - - - 7.85332 - 47.27937 - - - 7.85318 - 47.27875 - - - 7.85294 - 47.27777 - - - 7.85266 - 47.27678 - - - 7.85230 - 47.27569 - - - 7.85209 - 47.27511 - - - 7.85185 - 47.27447 - - - 7.85146 - 47.27358 - - - 7.85105 - 47.27273 - - - 7.85062 - 47.27194 - - - 7.85037 - 47.27150 - - - 7.85009 - 47.27105 - - - 7.84978 - 47.27055 - - - 7.84943 - 47.27003 - - - 7.84901 - 47.26943 - - - 7.84858 - 47.26887 - - - 7.84797 - 47.26809 - - - 7.84756 - 47.26761 - - - 7.84711 - 47.26710 - - - 7.84645 - 47.26640 - - - 7.84573 - 47.26568 - - - 7.84511 - 47.26509 - - - 7.84464 - 47.26466 - - - 7.84413 - 47.26422 - - - 7.84362 - 47.26379 - - - 7.84308 - 47.26336 - - - 7.84240 - 47.26284 - - - 7.84186 - 47.26245 - - - 7.84117 - 47.26196 - - - 7.84043 - 47.26146 - - - 7.83974 - 47.26102 - - - 7.83903 - 47.26059 - - - 7.83832 - 47.26017 - - - 7.83760 - 47.25976 - - - 7.83686 - 47.25937 - - - 7.83605 - 47.25896 - - - 7.83521 - 47.25855 - - - 7.83440 - 47.25818 - - - 7.83342 - 47.25775 - - - 7.83238 - 47.25732 - - - 7.83149 - 47.25698 - - - 7.83061 - 47.25666 - - - 7.82928 - 47.25621 - - - 7.82814 - 47.25586 - - - 7.82705 - 47.25554 - - - 7.82572 - 47.25519 - - - 7.82103 - 47.25409 - - - 7.82023 - 47.25389 - - - 7.81942 - 47.25368 - - - 7.81865 - 47.25347 - - - 7.81783 - 47.25322 - - - 7.81591 - 47.25261 - - - 7.81451 - 47.25210 - - - 7.81316 - 47.25156 - - - 7.81181 - 47.25099 - - - 7.81057 - 47.25041 - - - 7.80928 - 47.24976 - - - 7.80767 - 47.24889 - - - 7.80624 - 47.24801 - - - 7.80483 - 47.24708 - - - 7.80412 - 47.24656 - - - 7.80321 - 47.24589 - - - 7.80210 - 47.24500 - - - 7.79993 - 47.24298 - - - 7.79903 - 47.24207 - - - 7.79725 - 47.24022 - - - 7.79370 - 47.23654 - - - 7.79222 - 47.23502 - - - 7.79100 - 47.23379 - - - 7.79003 - 47.23286 - - - 7.78907 - 47.23202 - - - 7.78758 - 47.23081 - - - 7.78551 - 47.22931 - - - 7.78378 - 47.22819 - - - 7.78041 - 47.22625 - - - 7.77304 - 47.22215 - - - 7.77104 - 47.22102 - - - 7.77010 - 47.22046 - - - 7.76917 - 47.21988 - - - 7.76828 - 47.21930 - - - 7.76740 - 47.21870 - - - 7.76540 - 47.21731 - - - 7.76438 - 47.21663 - - - 7.76333 - 47.21595 - - - 7.76243 - 47.21541 - - - 7.76149 - 47.21486 - - - 7.76024 - 47.21419 - - - 7.75895 - 47.21352 - - - 7.75803 - 47.21307 - - - 7.75714 - 47.21266 - - - 7.75673 - 47.21247 - - - 7.75610 - 47.21219 - - - 7.75580 - 47.21207 - - - 7.75505 - 47.21175 - - - 7.75428 - 47.21144 - - - 7.75340 - 47.21110 - - - 7.75283 - 47.21089 - - - 7.75231 - 47.21070 - - - 7.75195 - 47.21057 - - - 7.75143 - 47.21039 - - - 7.74992 - 47.20990 - - - 7.74880 - 47.20956 - - - 7.74759 - 47.20922 - - - 7.74655 - 47.20894 - - - 7.74559 - 47.20870 - - - 7.74461 - 47.20846 - - - 7.74045 - 47.20751 - - - 7.72816 - 47.20470 - - - 7.72711 - 47.20446 - - - 7.72159 - 47.20319 - - - 7.70494 - 47.19937 - - - 7.70339 - 47.19902 - - - 7.70183 - 47.19871 - - - 7.70033 - 47.19844 - - - 7.69882 - 47.19818 - - - 7.69767 - 47.19798 - - - 7.69653 - 47.19776 - - - 7.69546 - 47.19755 - - - 7.69436 - 47.19732 - - - 7.69247 - 47.19693 - - - 7.69160 - 47.19676 - - - 7.69095 - 47.19665 - - - 7.69037 - 47.19656 - - - 7.68973 - 47.19647 - - - 7.68935 - 47.19642 - - - 7.68935 - 47.19642 - - - 7.68973 - 47.19647 - - - 7.69037 - 47.19656 - - - 7.69095 - 47.19665 - - - 7.69160 - 47.19676 - - - 7.69247 - 47.19693 - - - 7.69436 - 47.19732 - - - 7.69546 - 47.19755 - - - 7.69653 - 47.19776 - - - 7.69767 - 47.19798 - - - 7.69882 - 47.19818 - - - 7.68998 - 47.19668 - - - 7.68818 - 47.19638 - - - 7.68636 - 47.19606 - - - 7.68522 - 47.19584 - - - 7.68406 - 47.19559 - - - 7.68281 - 47.19531 - - - 7.68164 - 47.19502 - - - 7.68038 - 47.19469 - - - 7.67912 - 47.19433 - - - 7.67799 - 47.19398 - - - 7.67683 - 47.19360 - - - 7.67592 - 47.19329 - - - 7.67507 - 47.19298 - - - 7.67422 - 47.19266 - - - 7.67337 - 47.19232 - - - 7.67231 - 47.19189 - - - 7.67129 - 47.19144 - - - 7.67035 - 47.19101 - - - 7.66950 - 47.19061 - - - 7.66842 - 47.19007 - - - 7.66736 - 47.18951 - - - 7.66652 - 47.18904 - - - 7.66578 - 47.18862 - - - 7.66503 - 47.18817 - - - 7.66427 - 47.18770 - - - 7.66312 - 47.18695 - - - 7.66202 - 47.18618 - - - 7.65984 - 47.18465 - - - 7.65562 - 47.18167 - - - 7.64646 - 47.17523 - - - 7.64444 - 47.17387 - - - 7.63676 - 47.16913 - - - 7.63072 - 47.16542 - - - 7.62881 - 47.16427 - - - 7.62681 - 47.16316 - - - 7.62473 - 47.16211 - - - 7.62308 - 47.16135 - - - 7.62152 - 47.16069 - - - 7.61968 - 47.15997 - - - 7.61880 - 47.15965 - - - 7.61579 - 47.15865 - - - 7.61380 - 47.15800 - - - 7.61354 - 47.15791 - - - 7.61174 - 47.15725 - - - 7.61012 - 47.15660 - - - 7.60833 - 47.15583 - - - 7.60659 - 47.15501 - - - 7.60508 - 47.15424 - - - 7.60404 - 47.15366 - - - 7.60297 - 47.15306 - - - 7.60047 - 47.15149 - - - 7.59899 - 47.15045 - - - 7.59748 - 47.14930 - - - 7.59573 - 47.14782 - - - 7.59457 - 47.14677 - - - 7.59349 - 47.14568 - - - 7.59309 - 47.14526 - - - 7.59272 - 47.14486 - - - 7.59197 - 47.14401 - - - 7.59056 - 47.14226 - - - 7.58995 - 47.14141 - - - 7.58936 - 47.14056 - - - 7.58836 - 47.13892 - - - 7.58758 - 47.13747 - - - 7.58691 - 47.13602 - - - 7.58567 - 47.13319 - - - 7.58369 - 47.12860 - - - 7.58217 - 47.12474 - - - 7.58195 - 47.12419 - - - 7.58181 - 47.12381 - - - 7.58140 - 47.12268 - - - 7.58086 - 47.12116 - - - 7.58047 - 47.12003 - - - 7.58009 - 47.11889 - - - 7.57973 - 47.11775 - - - 7.57938 - 47.11661 - - - 7.57921 - 47.11605 - - - 7.57889 - 47.11492 - - - 7.57872 - 47.11436 - - - 7.57857 - 47.11380 - - - 7.57826 - 47.11267 - - - 7.57811 - 47.11210 - - - 7.57776 - 47.11070 - - - 7.57742 - 47.10929 - - - 7.57619 - 47.10415 - - - 7.57541 - 47.10092 - - - 7.57499 - 47.09913 - - - 7.57457 - 47.09735 - - - 7.57437 - 47.09654 - - - 7.57430 - 47.09613 - - - 7.57422 - 47.09573 - - - 7.57412 - 47.09532 - - - 7.57404 - 47.09492 - - - 7.57388 - 47.09412 - - - 7.57378 - 47.09346 - - - 7.57369 - 47.09278 - - - 7.57361 - 47.09209 - - - 7.57355 - 47.09140 - - - 7.57324 - 47.08694 - - - 7.57310 - 47.08561 - - - 7.57299 - 47.08491 - - - 7.57286 - 47.08423 - - - 7.57267 - 47.08340 - - - 7.57244 - 47.08257 - - - 7.57211 - 47.08155 - - - 7.57173 - 47.08056 - - - 7.57128 - 47.07955 - - - 7.57112 - 47.07919 - - - 7.57096 - 47.07887 - - - 7.57072 - 47.07842 - - - 7.57049 - 47.07799 - - - 7.57034 - 47.07774 - - - 7.57020 - 47.07749 - - - 7.56989 - 47.07698 - - - 7.56955 - 47.07644 - - - 7.56922 - 47.07591 - - - 7.56811 - 47.07427 - - - 7.56697 - 47.07263 - - - 7.56646 - 47.07193 - - - 7.56593 - 47.07123 - - - 7.56562 - 47.07081 - - - 7.56531 - 47.07040 - - - 7.56493 - 47.06992 - - - 7.56455 - 47.06946 - - - 7.56394 - 47.06875 - - - 7.56362 - 47.06839 - - - 7.56329 - 47.06804 - - - 7.56279 - 47.06753 - - - 7.56257 - 47.06731 - - - 7.56233 - 47.06708 - - - 7.56196 - 47.06673 - - - 7.56165 - 47.06644 - - - 7.56129 - 47.06611 - - - 7.56090 - 47.06578 - - - 7.56025 - 47.06523 - - - 7.55992 - 47.06497 - - - 7.55957 - 47.06469 - - - 7.55897 - 47.06424 - - - 7.55839 - 47.06381 - - - 7.55786 - 47.06344 - - - 7.55754 - 47.06322 - - - 7.55715 - 47.06296 - - - 7.55615 - 47.06232 - - - 7.55577 - 47.06209 - - - 7.55472 - 47.06148 - - - 7.55401 - 47.06109 - - - 7.55353 - 47.06084 - - - 7.55305 - 47.06059 - - - 7.55243 - 47.06028 - - - 7.55195 - 47.06005 - - - 7.55149 - 47.05983 - - - 7.55062 - 47.05943 - - - 7.54562 - 47.05716 - - - 7.54348 - 47.05617 - - - 7.54249 - 47.05571 - - - 7.54202 - 47.05548 - - - 7.54155 - 47.05523 - - - 7.54107 - 47.05498 - - - 7.54060 - 47.05472 - - - 7.54013 - 47.05447 - - - 7.53967 - 47.05420 - - - 7.53903 - 47.05382 - - - 7.53881 - 47.05368 - - - 7.53843 - 47.05345 - - - 7.53806 - 47.05321 - - - 7.53769 - 47.05296 - - - 7.53733 - 47.05272 - - - 7.53692 - 47.05244 - - - 7.53654 - 47.05216 - - - 7.53615 - 47.05188 - - - 7.53578 - 47.05160 - - - 7.53542 - 47.05131 - - - 7.53493 - 47.05092 - - - 7.53432 - 47.05041 - - - 7.53403 - 47.05015 - - - 7.53373 - 47.04989 - - - 7.53344 - 47.04962 - - - 7.53305 - 47.04925 - - - 7.53268 - 47.04888 - - - 7.53231 - 47.04850 - - - 7.53172 - 47.04786 - - - 7.53126 - 47.04734 - - - 7.53104 - 47.04709 - - - 7.53082 - 47.04682 - - - 7.53039 - 47.04628 - - - 7.52999 - 47.04574 - - - 7.52980 - 47.04547 - - - 7.52942 - 47.04493 - - - 7.52925 - 47.04466 - - - 7.52890 - 47.04413 - - - 7.52857 - 47.04356 - - - 7.52840 - 47.04327 - - - 7.52824 - 47.04297 - - - 7.52808 - 47.04268 - - - 7.52794 - 47.04240 - - - 7.52774 - 47.04198 - - - 7.52754 - 47.04156 - - - 7.52736 - 47.04113 - - - 7.52727 - 47.04091 - - - 7.52718 - 47.04070 - - - 7.52710 - 47.04049 - - - 7.52695 - 47.04007 - - - 7.52687 - 47.03986 - - - 7.52677 - 47.03955 - - - 7.52667 - 47.03924 - - - 7.52658 - 47.03893 - - - 7.52642 - 47.03835 - - - 7.52629 - 47.03783 - - - 7.52623 - 47.03757 - - - 7.52613 - 47.03704 - - - 7.52608 - 47.03677 - - - 7.52586 - 47.03542 - - - 7.52574 - 47.03474 - - - 7.52565 - 47.03430 - - - 7.52556 - 47.03387 - - - 7.52546 - 47.03344 - - - 7.52541 - 47.03323 - - - 7.52525 - 47.03265 - - - 7.52514 - 47.03229 - - - 7.52502 - 47.03193 - - - 7.52490 - 47.03157 - - - 7.52477 - 47.03121 - - - 7.52463 - 47.03085 - - - 7.52434 - 47.03013 - - - 7.52403 - 47.02942 - - - 7.52370 - 47.02870 - - - 7.52345 - 47.02815 - - - 7.52328 - 47.02777 - - - 7.52299 - 47.02713 - - - 7.52282 - 47.02676 - - - 7.52266 - 47.02645 - - - 7.52239 - 47.02593 - - - 7.52211 - 47.02541 - - - 7.52196 - 47.02516 - - - 7.52181 - 47.02491 - - - 7.52165 - 47.02466 - - - 7.52146 - 47.02438 - - - 7.51470 - 47.01411 - - - 7.51392 - 47.01293 - - - 7.51323 - 47.01188 - - - 7.51275 - 47.01117 - - - 7.51222 - 47.01042 - - - 7.51163 - 47.00965 - - - 7.51100 - 47.00890 - - - 7.51058 - 47.00842 - - - 7.51014 - 47.00795 - - - 7.50970 - 47.00750 - - - 7.50922 - 47.00704 - - - 7.50876 - 47.00661 - - - 7.50827 - 47.00617 - - - 7.50778 - 47.00575 - - - 7.50725 - 47.00532 - - - 7.50647 - 47.00472 - - - 7.50577 - 47.00421 - - - 7.50504 - 47.00371 - - - 7.50441 - 47.00330 - - - 7.50374 - 47.00288 - - - 7.50308 - 47.00250 - - - 7.50244 - 47.00213 - - - 7.50175 - 47.00176 - - - 7.50096 - 47.00135 - - - 7.49991 - 47.00085 - - - 7.49898 - 47.00044 - - - 7.49808 - 47.00006 - - - 7.49720 - 46.99971 - - - 7.49630 - 46.99938 - - - 7.49533 - 46.99905 - - - 7.49426 - 46.99871 - - - 7.49321 - 46.99841 - - - 7.49245 - 46.99820 - - - 7.49166 - 46.99800 - - - 7.49071 - 46.99778 - - - 7.48973 - 46.99757 - - - 7.48848 - 46.99733 - - - 7.48649 - 46.99698 - - - 7.48524 - 46.99675 - - - 7.48412 - 46.99652 - - - 7.48353 - 46.99640 - - - 7.48292 - 46.99625 - - - 7.48185 - 46.99598 - - - 7.48079 - 46.99569 - - - 7.47974 - 46.99538 - - - 7.47903 - 46.99515 - - - 7.47831 - 46.99490 - - - 7.47735 - 46.99456 - - - 7.47623 - 46.99412 - - - 7.47514 - 46.99366 - - - 7.47424 - 46.99325 - - - 7.47334 - 46.99281 - - - 7.47250 - 46.99238 - - - 7.47167 - 46.99193 - - - 7.47107 - 46.99158 - - - 7.47052 - 46.99125 - - - 7.46997 - 46.99091 - - - 7.46951 - 46.99061 - - - 7.46902 - 46.99028 - - - 7.46860 - 46.98996 - - - 7.46818 - 46.98962 - - - 7.46783 - 46.98931 - - - 7.46750 - 46.98899 - - - 7.46722 - 46.98870 - - - 7.46695 - 46.98839 - - - 7.46674 - 46.98813 - - - 7.46653 - 46.98785 - - - 7.46626 - 46.98745 - - - 7.46601 - 46.98701 - - - 7.46587 - 46.98675 - - - 7.46575 - 46.98649 - - - 7.46569 - 46.98634 - - - 7.46563 - 46.98619 - - - 7.46548 - 46.98579 - - - 7.46542 - 46.98559 - - - 7.46536 - 46.98538 - - - 7.46531 - 46.98517 - - - 7.46527 - 46.98498 - - - 7.46524 - 46.98477 - - - 7.46521 - 46.98457 - - - 7.46519 - 46.98437 - - - 7.46517 - 46.98416 - - - 7.46516 - 46.98396 - - - 7.46516 - 46.98376 - - - 7.46516 - 46.98355 - - - 7.46517 - 46.98333 - - - 7.46519 - 46.98312 - - - 7.46521 - 46.98290 - - - 7.46524 - 46.98270 - - - 7.46528 - 46.98247 - - - 7.46533 - 46.98226 - - - 7.46538 - 46.98204 - - - 7.46545 - 46.98181 - - - 7.46552 - 46.98162 - - - 7.46559 - 46.98141 - - - 7.46567 - 46.98121 - - - 7.46576 - 46.98100 - - - 7.46585 - 46.98079 - - - 7.46591 - 46.98067 - - - 7.46598 - 46.98055 - - - 7.46639 - 46.97979 - - - 7.46677 - 46.97911 - - - 7.46688 - 46.97891 - - - 7.46765 - 46.97756 - - - 7.46810 - 46.97674 - - - 7.46841 - 46.97620 - - - 7.46854 - 46.97597 - - - 7.46881 - 46.97550 - - - 7.46927 - 46.97467 - - - 7.46944 - 46.97434 - - - 7.46962 - 46.97397 - - - 7.46977 - 46.97370 - - - 7.47001 - 46.97326 - - - 7.47006 - 46.97316 - - - 7.47012 - 46.97303 - - - 7.47017 - 46.97292 - - - 7.47026 - 46.97270 - - - 7.47031 - 46.97254 - - - 7.47035 - 46.97240 - - - 7.47038 - 46.97226 - - - 7.47040 - 46.97214 - - - 7.47041 - 46.97202 - - - 7.47042 - 46.97189 - - - 7.47042 - 46.97177 - - - 7.47041 - 46.97164 - - - 7.47041 - 46.97152 - - - 7.47038 - 46.97131 - - - 7.47031 - 46.97103 - - - 7.47027 - 46.97091 - - - 7.47019 - 46.97068 - - - 7.47010 - 46.97048 - - - 7.47005 - 46.97037 - - - 7.46997 - 46.97023 - - - 7.46991 - 46.97014 - - - 7.46982 - 46.97001 - - - 7.46972 - 46.96989 - - - 7.46962 - 46.96976 - - - 7.46952 - 46.96965 - - - 7.46941 - 46.96954 - - - 7.46929 - 46.96942 - - - 7.46917 - 46.96931 - - - 7.46904 - 46.96921 - - - 7.46890 - 46.96910 - - - 7.46878 - 46.96902 - - - 7.46854 - 46.96886 - - - 7.46832 - 46.96874 - - - 7.46823 - 46.96868 - - - 7.46813 - 46.96863 - - - 7.46802 - 46.96858 - - - 7.46790 - 46.96853 - - - 7.46778 - 46.96847 - - - 7.46764 - 46.96842 - - - 7.46752 - 46.96837 - - - 7.46744 - 46.96834 - - - 7.46734 - 46.96830 - - - 7.46715 - 46.96824 - - - 7.46693 - 46.96818 - - - 7.46665 - 46.96810 - - - 7.46636 - 46.96803 - - - 7.46607 - 46.96796 - - - 7.46522 - 46.96777 - - - 7.46352 - 46.96737 - - - 7.46330 - 46.96732 - - - 7.46303 - 46.96726 - - - 7.46251 - 46.96715 - - - 7.46224 - 46.96709 - - - 7.46168 - 46.96695 - - - 7.46111 - 46.96681 - - - 7.46066 - 46.96669 - - - 7.46021 - 46.96657 - - - 7.45974 - 46.96644 - - - 7.45924 - 46.96631 - - - 7.45874 - 46.96619 - - - 7.45790 - 46.96599 - - - 7.45756 - 46.96590 - - - 7.45722 - 46.96582 - - - 7.45573 - 46.96542 - - - 7.45310 - 46.96472 - - - 7.45256 - 46.96457 - - - 7.45202 - 46.96443 - - - 7.45126 - 46.96422 - - - 7.45038 - 46.96400 - - - 7.44952 - 46.96380 - - - 7.44900 - 46.96367 - - - 7.44848 - 46.96353 - - - 7.44832 - 46.96348 - - - 7.44807 - 46.96339 - - - 7.44785 - 46.96331 - - - 7.44759 - 46.96320 - - - 7.44729 - 46.96305 - - - 7.44713 - 46.96297 - - - 7.44698 - 46.96289 - - - 7.44683 - 46.96280 - - - 7.44669 - 46.96271 - - - 7.44655 - 46.96262 - - - 7.44642 - 46.96253 - - - 7.44628 - 46.96243 - - - 7.44603 - 46.96222 - - - 7.44579 - 46.96200 - - - 7.44558 - 46.96179 - - - 7.44531 - 46.96152 - - - 7.44517 - 46.96135 - - - 7.44486 - 46.96100 - - - 7.44467 - 46.96079 - - - 7.44427 - 46.96037 - - - 7.44402 - 46.96012 - - - 7.44384 - 46.95991 - - - 7.44367 - 46.95969 - - - 7.44353 - 46.95948 - - - 7.44341 - 46.95925 - - - 7.44329 - 46.95902 - - - 7.44320 - 46.95878 - - - 7.44315 - 46.95855 - - - 7.44310 - 46.95831 - - - 7.44307 - 46.95807 - - - 7.44306 - 46.95782 - - - 7.44302 - 46.95655 - - - 7.44301 - 46.95628 - - - 7.44298 - 46.95603 - - - 7.44293 - 46.95578 - - - 7.44286 - 46.95554 - - - 7.44277 - 46.95530 - - - 7.44266 - 46.95507 - - - 7.44253 - 46.95484 - - - 7.44174 - 46.95341 - - - 7.44127 - 46.95261 - - - 7.44104 - 46.95224 - - - 7.44058 - 46.95151 - - - 7.44054 - 46.95144 - - - 7.44031 - 46.95111 - - - 7.43990 - 46.95053 - - - 7.43979 - 46.95031 - - - 7.43969 - 46.95015 - - - 7.43964 - 46.95004 - - - 7.43950 - 46.94984 - - - 7.43941 - 46.94975 - - - 7.43923 - 46.94957 - - - 7.43896 - 46.94937 - - - 7.43879 - 46.94928 - - - PT56M - 118102 - - - - - InterCity - - - 810 - - - Schweizerische Bundesbahnen SBB - - - ch:1:sjyid:100001:810-001 - - - - - - 4 - - walk - - ch:1:sloid:7000:4:7 - - Bern - - - - ch:1:sloid:76646:0:3 - - Bern, Bahnhof - - - 2024-03-09T08:58:00Z - 2024-03-09T09:13:00Z - PT15M - PT6M - PT9M - 556 - - - - - - 7.43877 - 46.94933 - - - 7.43532 - 46.94771 - - - Ausstieg Zug rechts - PT0M0S - 0 - - leave - left - - - - - - 7.43532 - 46.94771 - - - 7.43600 - 46.94764 - - - Merkurgässli - PT0M47S - 52 - - keep - straight on - - - - - - 7.43600 - 46.94764 - - - 7.43598 - 46.94736 - - - Merkurgässli - PT0M23S - 31 - - turn - right - - - - - - 7.43598 - 46.94736 - - - 7.43604 - 46.94737 - - - 7.43717 - 46.94732 - - - 7.43719 - 46.94732 - - - 7.43720 - 46.94732 - - - 7.43722 - 46.94733 - - - 7.43722 - 46.94733 - - - 7.43723 - 46.94735 - - - 7.43723 - 46.94735 - - - 7.43726 - 46.94735 - - - Laupenstrasse - PT0H1M29S - 99 - - turn - left - - - - - - 7.43726 - 46.94735 - - - 7.43735 - 46.94735 - - - Fußgängerampel - PT0M45S - 6 - - continue - straight on - - - - - - 7.43735 - 46.94735 - - - 7.43736 - 46.94730 - - - 7.43736 - 46.94726 - - - Fußweg - PT0M9S - 11 - - turn - right - - - - - - 7.43736 - 46.94726 - - - 7.43736 - 46.94720 - - - Fußgängerampel - PT0M45S - 5 - - continue - straight on - - - - - - 7.43736 - 46.94720 - - - 7.43737 - 46.94714 - - - 7.43737 - 46.94712 - - - Fußweg - PT0M6S - 8 - - continue - straight on - - - - - - 7.43737 - 46.94712 - - - 7.43756 - 46.94711 - - - 7.43774 - 46.94711 - - - 7.43783 - 46.94706 - - - 7.43786 - 46.94704 - - - Laupenstrasse/Bubenbergplatz - PT0M34S - 40 - - turn - left - - - - - - 7.43786 - 46.94704 - - - 7.43787 - 46.94703 - - - Fußweg - PT0M0S - 0 - - continue - straight on - - - - - - 7.43787 - 46.94703 - - - 7.43792 - 46.94707 - - - 7.43794 - 46.94708 - - - 7.43795 - 46.94708 - - - Fußweg - PT0M5S - 7 - - turn - left - - - - - - 7.43795 - 46.94708 - - - 7.43807 - 46.94700 - - - 7.43812 - 46.94700 - - - 7.43819 - 46.94699 - - - Fußweg am Straßenrand - PT0M19S - 22 - - turn - right - - - - - - 7.43819 - 46.94699 - - - 7.43823 - 46.94707 - - - 7.43824 - 46.94707 - - - 7.43824 - 46.94708 - - - 7.43826 - 46.94709 - - - 7.43827 - 46.94709 - - - 7.43828 - 46.94710 - - - 7.43828 - 46.94710 - - - 7.43872 - 46.94717 - - - 7.43882 - 46.94718 - - - Hirschengraben - PT0M50S - 57 - - turn - left - - - - - - 7.43882 - 46.94718 - - - 7.43885 - 46.94719 - - - 7.43886 - 46.94719 - - - 7.43889 - 46.94719 - - - Fußweg - PT0M3S - 5 - - turn - half left - - - - - - 7.43889 - 46.94719 - - - 7.43885 - 46.94729 - - - Schwanengasse - PT0M9S - 10 - - turn - left - - - - - - 7.43885 - 46.94729 - - - 7.43905 - 46.94732 - - - 7.43967 - 46.94742 - - - 7.43977 - 46.94744 - - - 7.43980 - 46.94745 - - - 7.43984 - 46.94747 - - - 7.43994 - 46.94751 - - - 7.43999 - 46.94756 - - - 7.44013 - 46.94763 - - - 7.44025 - 46.94768 - - - 7.44032 - 46.94769 - - - 7.44065 - 46.94776 - - - Bubenbergplatz - PT0H2M6S - 148 - - turn - right - - - - - - 7.44065 - 46.94776 - - - 7.44065 - 46.94775 - - - Fußweg - PT0M0S - 1 - - turn - right - - - - - - 7.44065 - 46.94775 - - - 7.44031 - 46.94767 - - - 7.44026 - 46.94766 - - - 7.44019 - 46.94764 - - - 7.44007 - 46.94758 - - - Bahnsteig - PT0M41S - 48 - - turn - right - - - - - - 7.44007 - 46.94758 - - - 7.44007 - 46.94758 - - - Einstieg Straßenbahn - PT0M0S - 0 - - enter - left - - - - - - 5 - - - ch:1:sloid:76646:0:3 - - Bern, Bahnhof - - - PLATFORM_ACCESS_WITH_ASSISTANCE - - - C - - - 2024-03-09T09:13:00Z - - 1 - - - ch:1:sloid:79896:0:1 - - Bern, Hirschengraben - - - A - - - 2024-03-09T09:14:00Z - - - 2024-03-09T09:14:00Z - - 2 - - - ch:1:sloid:89991:0:1 - - Bern, Monbijou - - - B - - - 2024-03-09T09:16:00Z - - - 2024-03-09T09:16:00Z - - 3 - - - 8589992 - - Bern, Sulgenau - - - 2024-03-09T09:17:00Z - - - 2024-03-09T09:17:00Z - - 4 - - - ch:1:sloid:89993:0:1 - - Bern, Wander - - - 2024-03-09T09:18:00Z - - - 2024-03-09T09:18:00Z - - 5 - - - ch:1:sloid:90022:0:1 - - Bern, Schönegg - - - 2024-03-09T09:20:00Z - - - 2024-03-09T09:20:00Z - - 6 - - - ch:1:sloid:90023:0:1 - - Bern, Sandrain - - - 2024-03-09T09:21:00Z - - - 2024-03-09T09:21:00Z - - 7 - - - ch:1:sloid:88562:0:1 - - Wabern, Gurtenbahn - - - PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE - - - B - - - 2024-03-09T09:22:00Z - - 8 - - - 2024-03-09 - ojp-91-9-_-j24-1-1429-TA - ojp:91009: - R - - tram - cityTram - - Tram - - - T - - - - 9 - - ojp:827 - - - VELOS: Platzzahl eingeschränkt - - A__VB - - - - Niederflureinstieg - - A__NF - palletAccess_lowFloor - - 8571395 - - Wabern, Tram-Endstation - - - - - - ch:1:sloid:76646:0:3 - - Bern, Bahnhof - - - - ch:1:sloid:88562:0:1 - - Wabern, Gurtenbahn - - - - - 7.44007 - 46.94756 - - - 7.43992 - 46.94752 - - - 7.43985 - 46.94750 - - - 7.43973 - 46.94748 - - - 7.43855 - 46.94728 - - - 7.43835 - 46.94725 - - - 7.43823 - 46.94722 - - - 7.43812 - 46.94719 - - - 7.43804 - 46.94716 - - - 7.43793 - 46.94712 - - - 7.43787 - 46.94709 - - - 7.43783 - 46.94707 - - - 7.43782 - 46.94706 - - - 7.43777 - 46.94702 - - - 7.43775 - 46.94699 - - - 7.43774 - 46.94697 - - - 7.43770 - 46.94690 - - - 7.43751 - 46.94643 - - - 7.43751 - 46.94643 - - - 7.43740 - 46.94614 - - - 7.43738 - 46.94611 - - - 7.43726 - 46.94592 - - - 7.43718 - 46.94578 - - - 7.43671 - 46.94510 - - - 7.43601 - 46.94402 - - - 7.43598 - 46.94396 - - - 7.43597 - 46.94393 - - - 7.43596 - 46.94389 - - - 7.43590 - 46.94322 - - - 7.43590 - 46.94322 - - - 7.43587 - 46.94275 - - - 7.43583 - 46.94215 - - - 7.43575 - 46.94118 - - - 7.43572 - 46.94097 - - - 7.43570 - 46.94086 - - - 7.43569 - 46.94069 - - - 7.43569 - 46.94065 - - - 7.43576 - 46.94008 - - - 7.43578 - 46.94002 - - - 7.43584 - 46.93983 - - - 7.43594 - 46.93936 - - - 7.43596 - 46.93929 - - - 7.43602 - 46.93914 - - - 7.43604 - 46.93906 - - - 7.43630 - 46.93758 - - - 7.43640 - 46.93707 - - - 7.43652 - 46.93661 - - - 7.43656 - 46.93649 - - - 7.43688 - 46.93523 - - - 7.43690 - 46.93513 - - - 7.43693 - 46.93505 - - - 7.43694 - 46.93503 - - - 7.43698 - 46.93498 - - - 7.43703 - 46.93493 - - - 7.43705 - 46.93491 - - - 7.43709 - 46.93488 - - - 7.43723 - 46.93480 - - - 7.43743 - 46.93474 - - - 7.43777 - 46.93461 - - - 7.43824 - 46.93444 - - - 7.43830 - 46.93442 - - - 7.43849 - 46.93436 - - - 7.43858 - 46.93434 - - - 7.43887 - 46.93427 - - - 7.43898 - 46.93425 - - - 7.43925 - 46.93419 - - - 7.43933 - 46.93416 - - - 7.43940 - 46.93414 - - - 7.43949 - 46.93411 - - - 7.44002 - 46.93389 - - - 7.44011 - 46.93384 - - - 7.44020 - 46.93380 - - - 7.44034 - 46.93371 - - - 7.44043 - 46.93363 - - - 7.44058 - 46.93353 - - - 7.44065 - 46.93349 - - - 7.44073 - 46.93344 - - - 7.44083 - 46.93338 - - - 7.44100 - 46.93330 - - - 7.44111 - 46.93325 - - - 7.44126 - 46.93319 - - - 7.44140 - 46.93314 - - - 7.44314 - 46.93253 - - - 7.44339 - 46.93244 - - - 7.44369 - 46.93232 - - - 7.44400 - 46.93220 - - - 7.44425 - 46.93209 - - - 7.44441 - 46.93202 - - - 7.44533 - 46.93157 - - - 7.44544 - 46.93153 - - - 7.44552 - 46.93151 - - - 7.44566 - 46.93147 - - - 7.44599 - 46.93140 - - - 7.44616 - 46.93136 - - - 7.44629 - 46.93132 - - - 7.44642 - 46.93127 - - - 7.44650 - 46.93124 - - - 7.44671 - 46.93116 - - - 7.44691 - 46.93106 - - - 7.44701 - 46.93100 - - - 7.44709 - 46.93095 - - - 7.44717 - 46.93090 - - - 7.44727 - 46.93083 - - - 7.44733 - 46.93078 - - - 7.44745 - 46.93068 - - - 7.44797 - 46.93021 - - - 7.44804 - 46.93015 - - - 7.44811 - 46.93010 - - - 7.44864 - 46.92986 - - - 7.44903 - 46.92972 - - - 7.44938 - 46.92957 - - - 7.44949 - 46.92952 - - - 7.44973 - 46.92945 - - - 7.45019 - 46.92929 - - - 7.45038 - 46.92921 - - - 7.45049 - 46.92916 - - - 7.45102 - 46.92891 - - - 7.45115 - 46.92885 - - - 7.45148 - 46.92870 - - - 7.45205 - 46.92843 - - - 7.45232 - 46.92831 - - - 7.45237 - 46.92828 - - - 7.45239 - 46.92826 - - - 7.45241 - 46.92824 - - - 7.45244 - 46.92819 - - - 7.45246 - 46.92815 - - - 7.45247 - 46.92812 - - - 7.45249 - 46.92807 - - - 7.45249 - 46.92804 - - - 7.45248 - 46.92798 - - - 7.45248 - 46.92795 - - - 7.45250 - 46.92792 - - - 7.45251 - 46.92790 - - - 7.45254 - 46.92787 - - - 7.45258 - 46.92785 - - - 7.45262 - 46.92784 - - - 7.45266 - 46.92783 - - - 7.45275 - 46.92783 - - - 7.45279 - 46.92783 - - - 7.45283 - 46.92784 - - - 7.45287 - 46.92786 - - - 7.45290 - 46.92788 - - - 7.45293 - 46.92790 - - - 7.45294 - 46.92794 - - - 7.45295 - 46.92796 - - - 7.45295 - 46.92799 - - - 7.45294 - 46.92802 - - - 7.45292 - 46.92805 - - - 7.45288 - 46.92809 - - - 7.45283 - 46.92813 - - - 7.45106 - 46.92895 - - - 7.45043 - 46.92926 - - - 7.45023 - 46.92934 - - - 7.44956 - 46.92957 - - - 7.44942 - 46.92961 - - - 7.44907 - 46.92976 - - - 7.44890 - 46.92984 - - - 7.44882 - 46.92989 - - - 7.44874 - 46.92993 - - - 7.44864 - 46.92997 - - - 7.44856 - 46.93000 - - - 7.44846 - 46.93005 - - - 7.44819 - 46.93016 - - - 7.44810 - 46.93021 - - - 7.44804 - 46.93024 - - - 7.44797 - 46.93030 - - - 7.44794 - 46.93033 - - - 7.44776 - 46.93050 - - - 7.44747 - 46.93075 - - - 7.44735 - 46.93085 - - - 7.44724 - 46.93093 - - - 7.44717 - 46.93097 - - - 7.44708 - 46.93102 - - - 7.44695 - 46.93109 - - - 7.44685 - 46.93113 - - - 7.44666 - 46.93122 - - - 7.44652 - 46.93127 - - - 7.44638 - 46.93132 - - - 7.44630 - 46.93135 - - - 7.44606 - 46.93141 - - - 7.44557 - 46.93152 - - - 7.44547 - 46.93155 - - - 7.44539 - 46.93158 - - - 7.44524 - 46.93165 - - - 7.44488 - 46.93182 - - - 7.44428 - 46.93211 - - - 7.44403 - 46.93222 - - - 7.44372 - 46.93235 - - - 7.44341 - 46.93246 - - - 7.44316 - 46.93256 - - - 7.44252 - 46.93278 - - - 7.44212 - 46.93292 - - - 7.44156 - 46.93311 - - - 7.44129 - 46.93321 - - - 7.44103 - 46.93332 - - - 7.44085 - 46.93341 - - - 7.44076 - 46.93346 - - - 7.44068 - 46.93351 - - - 7.44056 - 46.93359 - - - 7.44037 - 46.93372 - - - 7.44023 - 46.93381 - - - 7.44014 - 46.93386 - - - 7.44004 - 46.93391 - - - 7.43951 - 46.93413 - - - 7.43942 - 46.93417 - - - 7.43926 - 46.93421 - - - 7.43899 - 46.93427 - - - 7.43888 - 46.93429 - - - 7.43874 - 46.93433 - - - 7.43859 - 46.93436 - - - 7.43840 - 46.93442 - - - 7.43832 - 46.93444 - - - 7.43806 - 46.93453 - - - 7.43747 - 46.93475 - - - 7.43738 - 46.93478 - - - 7.43726 - 46.93483 - - - 7.43715 - 46.93488 - - - 7.43708 - 46.93493 - - - 7.43703 - 46.93498 - - - 7.43699 - 46.93503 - - - 7.43697 - 46.93508 - - - 7.43695 - 46.93513 - - - 7.43670 - 46.93608 - - - 7.43648 - 46.93698 - - - 7.43642 - 46.93719 - - - 7.43639 - 46.93731 - - - 7.43631 - 46.93773 - - - 7.43605 - 46.93921 - - - 7.43597 - 46.93963 - - - 7.43592 - 46.93998 - - - 7.43592 - 46.93998 - - - 7.43577 - 46.94083 - - - 7.43577 - 46.94090 - - - 7.43577 - 46.94097 - - - 7.43585 - 46.94193 - - - 7.43587 - 46.94215 - - - 7.43589 - 46.94243 - - - 7.43591 - 46.94275 - - - 7.43594 - 46.94295 - - - 7.43596 - 46.94310 - - - 7.43600 - 46.94367 - - - 7.43603 - 46.94389 - - - 7.43603 - 46.94393 - - - 7.43604 - 46.94397 - - - 7.43606 - 46.94401 - - - 7.43724 - 46.94579 - - - 7.43718 - 46.94578 - - - 7.43671 - 46.94510 - - - 7.43601 - 46.94402 - - - 7.43598 - 46.94396 - - - 7.43597 - 46.94393 - - - 7.43596 - 46.94389 - - - 7.43590 - 46.94322 - - - 7.43587 - 46.94275 - - - 7.43583 - 46.94215 - - - 7.43575 - 46.94118 - - - 7.43572 - 46.94097 - - - 7.43570 - 46.94086 - - - 7.43569 - 46.94069 - - - 7.43569 - 46.94065 - - - 7.43576 - 46.94008 - - - 7.43578 - 46.94002 - - - 7.43584 - 46.93983 - - - 7.43594 - 46.93936 - - - 7.43596 - 46.93929 - - - 7.43602 - 46.93914 - - - 7.43604 - 46.93906 - - - 7.43630 - 46.93758 - - - 7.43639 - 46.93714 - - - 7.43640 - 46.93707 - - - 7.43651 - 46.93663 - - - 7.43651 - 46.93663 - - - 7.43653 - 46.93655 - - - 7.43656 - 46.93649 - - - 7.43688 - 46.93523 - - - 7.43690 - 46.93513 - - - 7.43693 - 46.93505 - - - 7.43694 - 46.93503 - - - 7.43698 - 46.93498 - - - 7.43703 - 46.93493 - - - 7.43705 - 46.93491 - - - 7.43709 - 46.93488 - - - 7.43723 - 46.93480 - - - 7.43743 - 46.93474 - - - 7.43777 - 46.93461 - - - 7.43821 - 46.93445 - - - 7.43830 - 46.93442 - - - 7.43849 - 46.93436 - - - 7.43858 - 46.93434 - - - 7.43887 - 46.93427 - - - 7.43898 - 46.93425 - - - 7.43925 - 46.93419 - - - 7.43933 - 46.93416 - - - 7.43940 - 46.93414 - - - 7.43949 - 46.93411 - - - 7.43996 - 46.93391 - - - 7.43996 - 46.93391 - - - 7.44002 - 46.93389 - - - 7.44011 - 46.93384 - - - 7.44020 - 46.93380 - - - 7.44034 - 46.93371 - - - 7.44043 - 46.93363 - - - 7.44058 - 46.93353 - - - 7.44065 - 46.93349 - - - 7.44073 - 46.93344 - - - 7.44083 - 46.93338 - - - 7.44100 - 46.93330 - - - 7.44111 - 46.93325 - - - 7.44126 - 46.93319 - - - 7.44140 - 46.93314 - - - 7.44314 - 46.93253 - - - 7.44339 - 46.93244 - - - 7.44369 - 46.93232 - - - 7.44400 - 46.93220 - - - 7.44425 - 46.93209 - - - 7.44441 - 46.93202 - - - 7.44532 - 46.93158 - - - 7.44532 - 46.93158 - - - 7.44544 - 46.93153 - - - 7.44552 - 46.93151 - - - 7.44566 - 46.93147 - - - 7.44599 - 46.93140 - - - 7.44616 - 46.93136 - - - 7.44629 - 46.93132 - - - 7.44650 - 46.93124 - - - 7.44660 - 46.93120 - - - 7.44671 - 46.93116 - - - 7.44691 - 46.93106 - - - 7.44701 - 46.93100 - - - 7.44709 - 46.93095 - - - 7.44717 - 46.93090 - - - 7.44727 - 46.93083 - - - 7.44733 - 46.93078 - - - 7.44745 - 46.93068 - - - 7.44801 - 46.93017 - - - 7.44804 - 46.93015 - - - 7.44811 - 46.93010 - - - 7.44864 - 46.92986 - - - 7.44867 - 46.92985 - - - PT9M - 8041 - - - - - Tram - - - 4163 - - - Städtische Verkehrsbetriebe Bern - - - ojp-91-9-_-j24-1-1429-TA - - - - - - 6 - - walk - - ch:1:sloid:88562:0:1 - - Wabern, Gurtenbahn - - - - 8507097 - - Wabern (Gurtenbahn) - - - 2024-03-09T09:22:00Z - 2024-03-09T09:30:00Z - PT8M - PT6M - PT2M - - - - - 8588562 - - Gurtenbahn - - - - 8507097 - - Wabern (Gurtenbahn) - - - - 1015258360:2:MRCV:100 - 501365981:10:MRCV:100 - 0 - 0 - - - - level - footpath - - - - - - - 7 - - - 8507097 - - Wabern (Gurtenbahn) - - - NO_DATA - - - 2024-03-09T09:30:00Z - - 1 - - - 8507099 - - Gurten Kulm - - - NO_DATA - - - 2024-03-09T09:45:00Z - - 2 - - - 2024-03-09 - ojp-92-H2-Y-j24-1-32-TA - ojp:920H2:Y - R - - bus - localBusService - - Bus - - - B - - - - B - - ojp:122 - - - Niederflureinstieg - - A__NF - palletAccess_lowFloor - - 8507099 - - Gurten Kulm - - - - - - 8507097 - - Wabern (Gurtenbahn) - - - - 8507099 - - Gurten Kulm - - - - - 7.44608 - 46.92801 - - - 7.44623 - 46.92799 - - - 7.44640 - 46.92813 - - - 7.44662 - 46.92807 - - - 7.44699 - 46.92803 - - - 7.44727 - 46.92792 - - - 7.44743 - 46.92786 - - - 7.44794 - 46.92763 - - - 7.44803 - 46.92758 - - - 7.44811 - 46.92753 - - - 7.44817 - 46.92747 - - - 7.44833 - 46.92724 - - - 7.44853 - 46.92701 - - - 7.44884 - 46.92674 - - - 7.44934 - 46.92627 - - - 7.44971 - 46.92577 - - - 7.45004 - 46.92546 - - - 7.45032 - 46.92500 - - - 7.45058 - 46.92467 - - - 7.45064 - 46.92451 - - - 7.45063 - 46.92444 - - - 7.45061 - 46.92439 - - - 7.45032 - 46.92401 - - - 7.45026 - 46.92387 - - - 7.45023 - 46.92364 - - - 7.45026 - 46.92332 - - - 7.45035 - 46.92308 - - - 7.45048 - 46.92287 - - - 7.45060 - 46.92276 - - - 7.45080 - 46.92258 - - - 7.45088 - 46.92251 - - - 7.45116 - 46.92215 - - - 7.45194 - 46.92145 - - - 7.45212 - 46.92125 - - - 7.45233 - 46.92094 - - - 7.45276 - 46.92045 - - - 7.45288 - 46.92021 - - - 7.45296 - 46.92014 - - - 7.45326 - 46.91994 - - - 7.45353 - 46.91973 - - - 7.45392 - 46.91934 - - - 7.45408 - 46.91920 - - - 7.45445 - 46.91892 - - - 7.45494 - 46.91848 - - - 7.45532 - 46.91813 - - - 7.45541 - 46.91802 - - - 7.45561 - 46.91766 - - - 7.45582 - 46.91738 - - - 7.45596 - 46.91708 - - - 7.45616 - 46.91678 - - - 7.45630 - 46.91649 - - - 7.45642 - 46.91628 - - - 7.45646 - 46.91619 - - - 7.45651 - 46.91605 - - - 7.45656 - 46.91591 - - - 7.45658 - 46.91581 - - - 7.45660 - 46.91569 - - - 7.45661 - 46.91560 - - - 7.45657 - 46.91520 - - - 7.45668 - 46.91472 - - - 7.45669 - 46.91462 - - - 7.45658 - 46.91430 - - - 7.45656 - 46.91425 - - - 7.45650 - 46.91416 - - - 7.45639 - 46.91409 - - - 7.45626 - 46.91403 - - - 7.45610 - 46.91401 - - - 7.45605 - 46.91417 - - - 7.45602 - 46.91435 - - - 7.45603 - 46.91443 - - - 7.45606 - 46.91451 - - - 7.45607 - 46.91455 - - - 7.45607 - 46.91459 - - - 7.45604 - 46.91464 - - - 7.45598 - 46.91468 - - - 7.45558 - 46.91503 - - - 7.45546 - 46.91510 - - - 7.45536 - 46.91514 - - - 7.45525 - 46.91518 - - - 7.45512 - 46.91521 - - - 7.45500 - 46.91525 - - - 7.45491 - 46.91529 - - - 7.45482 - 46.91534 - - - 7.45460 - 46.91549 - - - 7.45419 - 46.91584 - - - 7.45409 - 46.91591 - - - 7.45402 - 46.91595 - - - 7.45393 - 46.91599 - - - 7.45382 - 46.91603 - - - 7.45368 - 46.91607 - - - 7.45350 - 46.91610 - - - 7.45324 - 46.91614 - - - 7.45296 - 46.91617 - - - 7.45279 - 46.91620 - - - 7.45249 - 46.91626 - - - 7.45236 - 46.91628 - - - 7.45220 - 46.91630 - - - 7.45192 - 46.91631 - - - 7.45172 - 46.91632 - - - 7.45155 - 46.91631 - - - 7.45147 - 46.91629 - - - 7.45139 - 46.91626 - - - 7.45131 - 46.91621 - - - 7.45113 - 46.91607 - - - 7.45104 - 46.91600 - - - 7.45096 - 46.91590 - - - 7.45089 - 46.91581 - - - 7.45100 - 46.91577 - - - 7.45107 - 46.91573 - - - 7.45136 - 46.91552 - - - 7.45140 - 46.91548 - - - 7.45145 - 46.91544 - - - 7.45148 - 46.91539 - - - 7.45151 - 46.91534 - - - 7.45152 - 46.91531 - - - 7.45152 - 46.91526 - - - 7.45151 - 46.91522 - - - 7.45149 - 46.91517 - - - 7.45146 - 46.91514 - - - 7.45141 - 46.91511 - - - 7.45134 - 46.91509 - - - 7.45127 - 46.91507 - - - 7.45119 - 46.91507 - - - 7.45109 - 46.91508 - - - 7.45097 - 46.91510 - - - 7.45089 - 46.91512 - - - 7.45009 - 46.91524 - - - 7.44956 - 46.91533 - - - 7.44876 - 46.91545 - - - 7.44850 - 46.91548 - - - 7.44708 - 46.91559 - - - 7.44693 - 46.91561 - - - 7.44684 - 46.91563 - - - 7.44679 - 46.91564 - - - 7.44674 - 46.91567 - - - 7.44670 - 46.91569 - - - 7.44667 - 46.91572 - - - 7.44665 - 46.91575 - - - 7.44659 - 46.91590 - - - 7.44657 - 46.91595 - - - 7.44653 - 46.91599 - - - 7.44650 - 46.91603 - - - 7.44646 - 46.91606 - - - 7.44641 - 46.91609 - - - 7.44635 - 46.91612 - - - 7.44626 - 46.91615 - - - 7.44611 - 46.91619 - - - 7.44598 - 46.91622 - - - 7.44590 - 46.91624 - - - 7.44583 - 46.91626 - - - 7.44578 - 46.91629 - - - 7.44569 - 46.91635 - - - 7.44519 - 46.91671 - - - 7.44485 - 46.91691 - - - 7.44435 - 46.91714 - - - 7.44402 - 46.91727 - - - 7.44388 - 46.91734 - - - 7.44380 - 46.91740 - - - 7.44364 - 46.91758 - - - 7.44351 - 46.91769 - - - 7.44337 - 46.91777 - - - 7.44321 - 46.91784 - - - 7.44268 - 46.91804 - - - 7.44255 - 46.91815 - - - 7.44242 - 46.91831 - - - 7.44229 - 46.91840 - - - 7.44181 - 46.91869 - - - 7.44151 - 46.91882 - - - 7.44114 - 46.91897 - - - 7.44067 - 46.91913 - - - 7.43979 - 46.91932 - - - 7.43965 - 46.91935 - - - PT15M - 3622 - - - - - Bus - - - 714 - - - Gurtenbahn - - - ojp-92-H2-Y-j24-1-32-TA - - - - - - - - ID-BAC63A0F-AF8D-4AF7-AD74-4F0CE67302D0 - - ID-BAC63A0F-AF8D-4AF7-AD74-4F0CE67302D0 - PT2H30M - 2024-03-09T07:45:00Z - 2024-03-09T10:15:00Z - 3 - - 1 - - - ch:1:sloid:3057:0:503972 - - Uetliberg - - - PLATFORM_ACCESS_WITHOUT_ASSISTANCE - - - 1 - - - 2024-03-09T07:45:00Z - - 1 - - - ch:1:sloid:3056:0:662664 - - Ringlikon - - - 1 - - - 2024-03-09T07:50:00Z - - - 2024-03-09T07:50:00Z - - 2 - - - ch:1:sloid:3055:0:646691 - - Uitikon Waldegg - - - 1 - - - 2024-03-09T07:52:00Z - - - 2024-03-09T07:53:00Z - - 3 - - - ch:1:sloid:3054:0:137935 - - Zürich Triemli - - - 1 - - - 2024-03-09T07:57:00Z - - - 2024-03-09T07:57:00Z - - 4 - - - ch:1:sloid:3053:0:255834 - - Zürich Schweighof - - - 1 - - - 2024-03-09T07:58:00Z - - - 2024-03-09T07:58:00Z - - 5 - - - ch:1:sloid:3052:0:785310 - - Zürich Friesenberg - - - 1 - - - 2024-03-09T07:59:00Z - - - 2024-03-09T07:59:00Z - - 6 - - - ch:1:sloid:3051:0:919934 - - Zürich Binz - - - 1 - - - 2024-03-09T08:01:00Z - - - 2024-03-09T08:02:00Z - - 7 - - - 8503090 - - Zürich Selnau - - - 1 - - - 2024-03-09T08:04:00Z - - - 2024-03-09T08:04:00Z - - 8 - - - ch:1:sloid:3088:0:82204 - - Zürich HB SZU - - - PLATFORM_ACCESS_WITHOUT_ASSISTANCE - - - 22 - - - 2024-03-09T08:07:00Z - - 9 - - - 2024-03-09 - ch:1:sjyid:100058:12792-001 - ojp:91010:A - H - - rail - regionalRail - - Zug - - - S - - - - S10 - - ojp:78 - - - VELOS: Keine Beförderung möglich - - A__VN - - - - Nur 2. Klasse - - A___2 - - - - Niederflureinstieg - - A__NF - palletAccess_lowFloor - - 8503088 - - Zürich HB SZU - - - - - - ch:1:sloid:3057:0:503972 - - Uetliberg - - - - ch:1:sloid:3088:0:82204 - - Zürich HB SZU - - - - - 8.48748 - 47.35198 - - - 8.48763 - 47.35254 - - - 8.48764 - 47.35259 - - - 8.48765 - 47.35267 - - - 8.48766 - 47.35272 - - - 8.48766 - 47.35277 - - - 8.48765 - 47.35286 - - - 8.48764 - 47.35295 - - - 8.48762 - 47.35301 - - - 8.48760 - 47.35309 - - - 8.48756 - 47.35319 - - - 8.48753 - 47.35324 - - - 8.48750 - 47.35329 - - - 8.48745 - 47.35337 - - - 8.48742 - 47.35341 - - - 8.48739 - 47.35345 - - - 8.48731 - 47.35354 - - - 8.48727 - 47.35358 - - - 8.48721 - 47.35362 - - - 8.48715 - 47.35367 - - - 8.48709 - 47.35371 - - - 8.48703 - 47.35375 - - - 8.48690 - 47.35382 - - - 8.48683 - 47.35386 - - - 8.48660 - 47.35396 - - - 8.48590 - 47.35427 - - - 8.48574 - 47.35435 - - - 8.48564 - 47.35441 - - - 8.48556 - 47.35445 - - - 8.48547 - 47.35451 - - - 8.48539 - 47.35456 - - - 8.48527 - 47.35465 - - - 8.48517 - 47.35475 - - - 8.48512 - 47.35480 - - - 8.48505 - 47.35488 - - - 8.48501 - 47.35493 - - - 8.48497 - 47.35498 - - - 8.48490 - 47.35507 - - - 8.48487 - 47.35512 - - - 8.48481 - 47.35523 - - - 8.48478 - 47.35530 - - - 8.48475 - 47.35539 - - - 8.48472 - 47.35549 - - - 8.48470 - 47.35555 - - - 8.48470 - 47.35560 - - - 8.48468 - 47.35572 - - - 8.48468 - 47.35582 - - - 8.48469 - 47.35596 - - - 8.48473 - 47.35638 - - - 8.48474 - 47.35645 - - - 8.48474 - 47.35654 - - - 8.48474 - 47.35660 - - - 8.48473 - 47.35665 - - - 8.48472 - 47.35672 - - - 8.48470 - 47.35681 - - - 8.48469 - 47.35687 - - - 8.48468 - 47.35692 - - - 8.48466 - 47.35697 - - - 8.48463 - 47.35703 - - - 8.48461 - 47.35709 - - - 8.48457 - 47.35715 - - - 8.48454 - 47.35720 - - - 8.48447 - 47.35732 - - - 8.48442 - 47.35738 - - - 8.48437 - 47.35744 - - - 8.48431 - 47.35750 - - - 8.48422 - 47.35760 - - - 8.48415 - 47.35765 - - - 8.48403 - 47.35775 - - - 8.48397 - 47.35780 - - - 8.48384 - 47.35789 - - - 8.48376 - 47.35793 - - - 8.48369 - 47.35798 - - - 8.48360 - 47.35802 - - - 8.48352 - 47.35806 - - - 8.48342 - 47.35811 - - - 8.48334 - 47.35813 - - - 8.48327 - 47.35816 - - - 8.48316 - 47.35819 - - - 8.48306 - 47.35822 - - - 8.48297 - 47.35824 - - - 8.48289 - 47.35826 - - - 8.48281 - 47.35827 - - - 8.48274 - 47.35828 - - - 8.48265 - 47.35829 - - - 8.48257 - 47.35829 - - - 8.48248 - 47.35830 - - - 8.48240 - 47.35830 - - - 8.48231 - 47.35830 - - - 8.48222 - 47.35830 - - - 8.48205 - 47.35829 - - - 8.48195 - 47.35827 - - - 8.48187 - 47.35826 - - - 8.48179 - 47.35825 - - - 8.48173 - 47.35823 - - - 8.48165 - 47.35821 - - - 8.48152 - 47.35817 - - - 8.48144 - 47.35815 - - - 8.48129 - 47.35809 - - - 8.48118 - 47.35803 - - - 8.48110 - 47.35799 - - - 8.48103 - 47.35795 - - - 8.48097 - 47.35791 - - - 8.48091 - 47.35787 - - - 8.48086 - 47.35783 - - - 8.48081 - 47.35778 - - - 8.48076 - 47.35774 - - - 8.48068 - 47.35766 - - - 8.48063 - 47.35760 - - - 8.48058 - 47.35753 - - - 8.48053 - 47.35746 - - - 8.48008 - 47.35682 - - - 8.47987 - 47.35652 - - - 8.47980 - 47.35642 - - - 8.47975 - 47.35637 - - - 8.47972 - 47.35633 - - - 8.47965 - 47.35626 - - - 8.47961 - 47.35623 - - - 8.47957 - 47.35619 - - - 8.47953 - 47.35616 - - - 8.47947 - 47.35612 - - - 8.47942 - 47.35609 - - - 8.47931 - 47.35603 - - - 8.47926 - 47.35600 - - - 8.47921 - 47.35598 - - - 8.47910 - 47.35593 - - - 8.47900 - 47.35589 - - - 8.47891 - 47.35586 - - - 8.47877 - 47.35583 - - - 8.47871 - 47.35582 - - - 8.47861 - 47.35580 - - - 8.47846 - 47.35578 - - - 8.47834 - 47.35577 - - - 8.47818 - 47.35577 - - - 8.47813 - 47.35577 - - - 8.47806 - 47.35578 - - - 8.47794 - 47.35579 - - - 8.47781 - 47.35581 - - - 8.47768 - 47.35583 - - - 8.47756 - 47.35586 - - - 8.47750 - 47.35588 - - - 8.47744 - 47.35590 - - - 8.47737 - 47.35592 - - - 8.47730 - 47.35595 - - - 8.47718 - 47.35600 - - - 8.47711 - 47.35604 - - - 8.47705 - 47.35607 - - - 8.47700 - 47.35610 - - - 8.47695 - 47.35614 - - - 8.47690 - 47.35617 - - - 8.47684 - 47.35621 - - - 8.47680 - 47.35625 - - - 8.47671 - 47.35634 - - - 8.47667 - 47.35639 - - - 8.47663 - 47.35643 - - - 8.47659 - 47.35648 - - - 8.47654 - 47.35657 - - - 8.47652 - 47.35662 - - - 8.47648 - 47.35670 - - - 8.47647 - 47.35675 - - - 8.47645 - 47.35684 - - - 8.47644 - 47.35693 - - - 8.47644 - 47.35698 - - - 8.47644 - 47.35707 - - - 8.47645 - 47.35714 - - - 8.47646 - 47.35719 - - - 8.47648 - 47.35725 - - - 8.47649 - 47.35730 - - - 8.47653 - 47.35737 - - - 8.47656 - 47.35743 - - - 8.47660 - 47.35749 - - - 8.47666 - 47.35757 - - - 8.47670 - 47.35762 - - - 8.47674 - 47.35766 - - - 8.47678 - 47.35770 - - - 8.47683 - 47.35774 - - - 8.47689 - 47.35779 - - - 8.47694 - 47.35783 - - - 8.47702 - 47.35788 - - - 8.47712 - 47.35794 - - - 8.47747 - 47.35815 - - - 8.47757 - 47.35822 - - - 8.47764 - 47.35827 - - - 8.47773 - 47.35834 - - - 8.47777 - 47.35838 - - - 8.47782 - 47.35843 - - - 8.47787 - 47.35848 - - - 8.47791 - 47.35853 - - - 8.47795 - 47.35859 - - - 8.47802 - 47.35869 - - - 8.47805 - 47.35875 - - - 8.47810 - 47.35886 - - - 8.47813 - 47.35897 - - - 8.47814 - 47.35905 - - - 8.47815 - 47.35912 - - - 8.47815 - 47.35920 - - - 8.47814 - 47.35929 - - - 8.47813 - 47.35934 - - - 8.47812 - 47.35941 - - - 8.47810 - 47.35947 - - - 8.47808 - 47.35952 - - - 8.47803 - 47.35964 - - - 8.47796 - 47.35975 - - - 8.47791 - 47.35981 - - - 8.47786 - 47.35987 - - - 8.47775 - 47.35998 - - - 8.47768 - 47.36004 - - - 8.47760 - 47.36010 - - - 8.47741 - 47.36021 - - - 8.47732 - 47.36026 - - - 8.47732 - 47.36026 - - - 8.47717 - 47.36033 - - - 8.47679 - 47.36052 - - - 8.47673 - 47.36055 - - - 8.47667 - 47.36058 - - - 8.47661 - 47.36061 - - - 8.47651 - 47.36068 - - - 8.47647 - 47.36070 - - - 8.47638 - 47.36076 - - - 8.47631 - 47.36083 - - - 8.47622 - 47.36092 - - - 8.47619 - 47.36095 - - - 8.47614 - 47.36101 - - - 8.47609 - 47.36109 - - - 8.47606 - 47.36113 - - - 8.47603 - 47.36120 - - - 8.47601 - 47.36123 - - - 8.47599 - 47.36128 - - - 8.47597 - 47.36136 - - - 8.47595 - 47.36140 - - - 8.47594 - 47.36148 - - - 8.47593 - 47.36154 - - - 8.47593 - 47.36159 - - - 8.47593 - 47.36167 - - - 8.47594 - 47.36183 - - - 8.47597 - 47.36204 - - - 8.47597 - 47.36216 - - - 8.47597 - 47.36222 - - - 8.47596 - 47.36231 - - - 8.47595 - 47.36238 - - - 8.47592 - 47.36250 - - - 8.47590 - 47.36256 - - - 8.47587 - 47.36263 - - - 8.47584 - 47.36269 - - - 8.47581 - 47.36275 - - - 8.47575 - 47.36284 - - - 8.47567 - 47.36295 - - - 8.47559 - 47.36304 - - - 8.47555 - 47.36308 - - - 8.47549 - 47.36313 - - - 8.47543 - 47.36318 - - - 8.47538 - 47.36322 - - - 8.47531 - 47.36328 - - - 8.47524 - 47.36333 - - - 8.47511 - 47.36341 - - - 8.47505 - 47.36344 - - - 8.47497 - 47.36348 - - - 8.47484 - 47.36353 - - - 8.47477 - 47.36356 - - - 8.47470 - 47.36359 - - - 8.47453 - 47.36364 - - - 8.47445 - 47.36367 - - - 8.47433 - 47.36370 - - - 8.47425 - 47.36371 - - - 8.47416 - 47.36373 - - - 8.47408 - 47.36374 - - - 8.47392 - 47.36376 - - - 8.47383 - 47.36377 - - - 8.47374 - 47.36377 - - - 8.47354 - 47.36377 - - - 8.47275 - 47.36377 - - - 8.47257 - 47.36378 - - - 8.47243 - 47.36378 - - - 8.47216 - 47.36379 - - - 8.47194 - 47.36380 - - - 8.47181 - 47.36381 - - - 8.47168 - 47.36383 - - - 8.47151 - 47.36385 - - - 8.47137 - 47.36386 - - - 8.47124 - 47.36388 - - - 8.47108 - 47.36391 - - - 8.47085 - 47.36395 - - - 8.47074 - 47.36397 - - - 8.47045 - 47.36404 - - - 8.47029 - 47.36408 - - - 8.47012 - 47.36413 - - - 8.46994 - 47.36418 - - - 8.46978 - 47.36423 - - - 8.46959 - 47.36429 - - - 8.46945 - 47.36435 - - - 8.46933 - 47.36439 - - - 8.46911 - 47.36449 - - - 8.46898 - 47.36454 - - - 8.46864 - 47.36469 - - - 8.46661 - 47.36561 - - - 8.46637 - 47.36572 - - - 8.46624 - 47.36578 - - - 8.46617 - 47.36582 - - - 8.46610 - 47.36586 - - - 8.46604 - 47.36589 - - - 8.46596 - 47.36595 - - - 8.46596 - 47.36595 - - - 8.46591 - 47.36598 - - - 8.46586 - 47.36602 - - - 8.46577 - 47.36610 - - - 8.46571 - 47.36615 - - - 8.46564 - 47.36623 - - - 8.46556 - 47.36632 - - - 8.46553 - 47.36637 - - - 8.46547 - 47.36646 - - - 8.46544 - 47.36650 - - - 8.46542 - 47.36654 - - - 8.46537 - 47.36666 - - - 8.46535 - 47.36672 - - - 8.46532 - 47.36682 - - - 8.46531 - 47.36689 - - - 8.46530 - 47.36699 - - - 8.46530 - 47.36709 - - - 8.46530 - 47.36714 - - - 8.46531 - 47.36724 - - - 8.46532 - 47.36730 - - - 8.46534 - 47.36738 - - - 8.46538 - 47.36748 - - - 8.46539 - 47.36753 - - - 8.46545 - 47.36763 - - - 8.46549 - 47.36771 - - - 8.46554 - 47.36778 - - - 8.46562 - 47.36788 - - - 8.46566 - 47.36793 - - - 8.46575 - 47.36801 - - - 8.46579 - 47.36805 - - - 8.46585 - 47.36810 - - - 8.46590 - 47.36815 - - - 8.46595 - 47.36818 - - - 8.46600 - 47.36821 - - - 8.46606 - 47.36825 - - - 8.46615 - 47.36831 - - - 8.46628 - 47.36837 - - - 8.46648 - 47.36847 - - - 8.46658 - 47.36851 - - - 8.46763 - 47.36895 - - - 8.46915 - 47.36959 - - - 8.46935 - 47.36967 - - - 8.46946 - 47.36971 - - - 8.46958 - 47.36975 - - - 8.46980 - 47.36983 - - - 8.46997 - 47.36988 - - - 8.47017 - 47.36994 - - - 8.47026 - 47.36996 - - - 8.47045 - 47.37000 - - - 8.47053 - 47.37002 - - - 8.47072 - 47.37006 - - - 8.47093 - 47.37009 - - - 8.47109 - 47.37011 - - - 8.47130 - 47.37013 - - - 8.47140 - 47.37014 - - - 8.47170 - 47.37016 - - - 8.47306 - 47.37024 - - - 8.47324 - 47.37025 - - - 8.47339 - 47.37025 - - - 8.47358 - 47.37025 - - - 8.47370 - 47.37025 - - - 8.47382 - 47.37025 - - - 8.47401 - 47.37024 - - - 8.47426 - 47.37022 - - - 8.47444 - 47.37020 - - - 8.47454 - 47.37019 - - - 8.47468 - 47.37017 - - - 8.47479 - 47.37015 - - - 8.47492 - 47.37013 - - - 8.47510 - 47.37009 - - - 8.47536 - 47.37003 - - - 8.47597 - 47.36988 - - - 8.47607 - 47.36986 - - - 8.47614 - 47.36985 - - - 8.47630 - 47.36983 - - - 8.47639 - 47.36982 - - - 8.47656 - 47.36980 - - - 8.47686 - 47.36978 - - - 8.47699 - 47.36977 - - - 8.47714 - 47.36975 - - - 8.47833 - 47.36955 - - - 8.47847 - 47.36953 - - - 8.47867 - 47.36949 - - - 8.47887 - 47.36945 - - - 8.47895 - 47.36942 - - - 8.47914 - 47.36937 - - - 8.47929 - 47.36932 - - - 8.47938 - 47.36929 - - - 8.47947 - 47.36925 - - - 8.47962 - 47.36919 - - - 8.47978 - 47.36912 - - - 8.48250 - 47.36782 - - - 8.48262 - 47.36777 - - - 8.48273 - 47.36773 - - - 8.48280 - 47.36770 - - - 8.48286 - 47.36768 - - - 8.48301 - 47.36764 - - - 8.48316 - 47.36760 - - - 8.48329 - 47.36757 - - - 8.48342 - 47.36755 - - - 8.48358 - 47.36753 - - - 8.48383 - 47.36751 - - - 8.48592 - 47.36735 - - - 8.48622 - 47.36731 - - - 8.48641 - 47.36729 - - - 8.48652 - 47.36727 - - - 8.48667 - 47.36725 - - - 8.48682 - 47.36722 - - - 8.48702 - 47.36717 - - - 8.48716 - 47.36714 - - - 8.48734 - 47.36709 - - - 8.48754 - 47.36703 - - - 8.48769 - 47.36698 - - - 8.48793 - 47.36689 - - - 8.48909 - 47.36646 - - - 8.48930 - 47.36638 - - - 8.48945 - 47.36634 - - - 8.48953 - 47.36632 - - - 8.48960 - 47.36630 - - - 8.48976 - 47.36626 - - - 8.48992 - 47.36623 - - - 8.49002 - 47.36621 - - - 8.49096 - 47.36605 - - - 8.49117 - 47.36601 - - - 8.49131 - 47.36598 - - - 8.49138 - 47.36597 - - - 8.49152 - 47.36593 - - - 8.49169 - 47.36587 - - - 8.49182 - 47.36582 - - - 8.49189 - 47.36579 - - - 8.49270 - 47.36545 - - - 8.49297 - 47.36534 - - - 8.49309 - 47.36529 - - - 8.49324 - 47.36524 - - - 8.49335 - 47.36520 - - - 8.49354 - 47.36515 - - - 8.49368 - 47.36511 - - - 8.49376 - 47.36509 - - - 8.49392 - 47.36506 - - - 8.49405 - 47.36503 - - - 8.49425 - 47.36500 - - - 8.49445 - 47.36498 - - - 8.49469 - 47.36495 - - - 8.49492 - 47.36494 - - - 8.49506 - 47.36493 - - - 8.49506 - 47.36493 - - - 8.49525 - 47.36493 - - - 8.49537 - 47.36493 - - - 8.49613 - 47.36495 - - - 8.49655 - 47.36496 - - - 8.50353 - 47.36498 - - - 8.50353 - 47.36498 - - - 8.50522 - 47.36498 - - - 8.50549 - 47.36498 - - - 8.50581 - 47.36497 - - - 8.50598 - 47.36496 - - - 8.50623 - 47.36495 - - - 8.50656 - 47.36493 - - - 8.50684 - 47.36491 - - - 8.50705 - 47.36489 - - - 8.50737 - 47.36485 - - - 8.50752 - 47.36483 - - - 8.50752 - 47.36483 - - - 8.50771 - 47.36481 - - - 8.50794 - 47.36478 - - - 8.51541 - 47.36364 - - - 8.51559 - 47.36361 - - - 8.51581 - 47.36357 - - - 8.51600 - 47.36354 - - - 8.51614 - 47.36350 - - - 8.51622 - 47.36348 - - - 8.51641 - 47.36343 - - - 8.51650 - 47.36340 - - - 8.51661 - 47.36337 - - - 8.51671 - 47.36333 - - - 8.51692 - 47.36325 - - - 8.51828 - 47.36273 - - - 8.51828 - 47.36273 - - - 8.51933 - 47.36232 - - - 8.51947 - 47.36228 - - - 8.51952 - 47.36226 - - - 8.51964 - 47.36223 - - - 8.51970 - 47.36221 - - - 8.51985 - 47.36219 - - - 8.51996 - 47.36217 - - - 8.52002 - 47.36216 - - - 8.52013 - 47.36215 - - - 8.52019 - 47.36215 - - - 8.52031 - 47.36214 - - - 8.52042 - 47.36214 - - - 8.52053 - 47.36215 - - - 8.52059 - 47.36215 - - - 8.52068 - 47.36216 - - - 8.52080 - 47.36218 - - - 8.52090 - 47.36219 - - - 8.52101 - 47.36221 - - - 8.52111 - 47.36224 - - - 8.52119 - 47.36226 - - - 8.52127 - 47.36229 - - - 8.52137 - 47.36233 - - - 8.52146 - 47.36237 - - - 8.52152 - 47.36240 - - - 8.52162 - 47.36246 - - - 8.52177 - 47.36255 - - - 8.52193 - 47.36268 - - - 8.52214 - 47.36286 - - - 8.52226 - 47.36297 - - - 8.52249 - 47.36320 - - - 8.52312 - 47.36387 - - - 8.52325 - 47.36402 - - - 8.52342 - 47.36426 - - - 8.52356 - 47.36452 - - - 8.52378 - 47.36493 - - - 8.52388 - 47.36509 - - - 8.52400 - 47.36525 - - - 8.52421 - 47.36550 - - - 8.52450 - 47.36578 - - - 8.52480 - 47.36605 - - - 8.52503 - 47.36625 - - - 8.52524 - 47.36643 - - - 8.52546 - 47.36659 - - - 8.52572 - 47.36675 - - - 8.52597 - 47.36689 - - - 8.52625 - 47.36703 - - - 8.52653 - 47.36715 - - - 8.52679 - 47.36724 - - - 8.52702 - 47.36732 - - - 8.52764 - 47.36751 - - - 8.52796 - 47.36762 - - - 8.52817 - 47.36771 - - - 8.52836 - 47.36781 - - - 8.52855 - 47.36794 - - - 8.52873 - 47.36807 - - - 8.52889 - 47.36822 - - - 8.52898 - 47.36832 - - - 8.52924 - 47.36865 - - - 8.52953 - 47.36901 - - - 8.52973 - 47.36924 - - - 8.52981 - 47.36933 - - - 8.52991 - 47.36943 - - - 8.53001 - 47.36953 - - - 8.53026 - 47.36974 - - - 8.53058 - 47.37000 - - - 8.53071 - 47.37011 - - - 8.53087 - 47.37026 - - - 8.53097 - 47.37036 - - - 8.53106 - 47.37045 - - - 8.53113 - 47.37055 - - - 8.53125 - 47.37073 - - - 8.53133 - 47.37088 - - - 8.53137 - 47.37098 - - - 8.53141 - 47.37108 - - - 8.53145 - 47.37121 - - - 8.53163 - 47.37181 - - - 8.53168 - 47.37198 - - - 8.53176 - 47.37216 - - - 8.53179 - 47.37222 - - - 8.53179 - 47.37222 - - - 8.53176 - 47.37216 - - - 8.53168 - 47.37198 - - - 8.53163 - 47.37181 - - - 8.53145 - 47.37121 - - - 8.53141 - 47.37108 - - - 8.53137 - 47.37098 - - - 8.53133 - 47.37088 - - - 8.53125 - 47.37073 - - - 8.53113 - 47.37055 - - - 8.53106 - 47.37045 - - - 8.53097 - 47.37036 - - - 8.53087 - 47.37026 - - - 8.53071 - 47.37011 - - - 8.53058 - 47.37000 - - - 8.53026 - 47.36974 - - - 8.53001 - 47.36953 - - - 8.52991 - 47.36943 - - - 8.52981 - 47.36933 - - - 8.52973 - 47.36924 - - - 8.52953 - 47.36901 - - - 8.52924 - 47.36865 - - - 8.52898 - 47.36832 - - - 8.52889 - 47.36822 - - - 8.52873 - 47.36807 - - - 8.52855 - 47.36794 - - - 8.52836 - 47.36781 - - - 8.52817 - 47.36771 - - - 8.52796 - 47.36762 - - - 8.52764 - 47.36751 - - - 8.52702 - 47.36732 - - - 8.52679 - 47.36724 - - - 8.52653 - 47.36715 - - - 8.52625 - 47.36703 - - - 8.52597 - 47.36689 - - - 8.52572 - 47.36675 - - - 8.52546 - 47.36659 - - - 8.52524 - 47.36643 - - - 8.52503 - 47.36625 - - - 8.52480 - 47.36605 - - - 8.52450 - 47.36578 - - - 8.52421 - 47.36550 - - - 8.52400 - 47.36525 - - - 8.52388 - 47.36509 - - - 8.52378 - 47.36493 - - - 8.52356 - 47.36452 - - - 8.52342 - 47.36426 - - - 8.52325 - 47.36402 - - - 8.52312 - 47.36387 - - - 8.52249 - 47.36320 - - - 8.52238 - 47.36309 - - - 8.52226 - 47.36297 - - - 8.52214 - 47.36286 - - - 8.52193 - 47.36268 - - - 8.52214 - 47.36287 - - - 8.52218 - 47.36292 - - - 8.52222 - 47.36298 - - - 8.52226 - 47.36304 - - - 8.52229 - 47.36310 - - - 8.52232 - 47.36315 - - - 8.52236 - 47.36326 - - - 8.52238 - 47.36332 - - - 8.52239 - 47.36338 - - - 8.52240 - 47.36343 - - - 8.52241 - 47.36349 - - - 8.52242 - 47.36356 - - - 8.52244 - 47.36416 - - - 8.52244 - 47.36427 - - - 8.52242 - 47.36513 - - - 8.52242 - 47.36537 - - - 8.52242 - 47.36553 - - - 8.52244 - 47.36571 - - - 8.52248 - 47.36587 - - - 8.52254 - 47.36603 - - - 8.52260 - 47.36621 - - - 8.52268 - 47.36635 - - - 8.52276 - 47.36648 - - - 8.52285 - 47.36662 - - - 8.52355 - 47.36748 - - - 8.52375 - 47.36770 - - - 8.52397 - 47.36794 - - - 8.52417 - 47.36812 - - - 8.52444 - 47.36842 - - - 8.52456 - 47.36859 - - - 8.52466 - 47.36875 - - - 8.52475 - 47.36896 - - - 8.52479 - 47.36909 - - - 8.52484 - 47.36931 - - - 8.52485 - 47.36949 - - - 8.52485 - 47.36964 - - - 8.52483 - 47.36979 - - - 8.52478 - 47.36996 - - - 8.52473 - 47.37011 - - - 8.52467 - 47.37022 - - - 8.52461 - 47.37032 - - - 8.52454 - 47.37043 - - - 8.52446 - 47.37054 - - - 8.52433 - 47.37068 - - - 8.52425 - 47.37077 - - - 8.52415 - 47.37086 - - - 8.52408 - 47.37092 - - - 8.52395 - 47.37102 - - - 8.52382 - 47.37111 - - - 8.52356 - 47.37127 - - - 8.52334 - 47.37140 - - - 8.52322 - 47.37149 - - - 8.52312 - 47.37155 - - - 8.52080 - 47.37319 - - - 8.52032 - 47.37353 - - - 8.52018 - 47.37364 - - - 8.52009 - 47.37371 - - - 8.51996 - 47.37383 - - - 8.51988 - 47.37391 - - - 8.51980 - 47.37400 - - - 8.51969 - 47.37413 - - - 8.51960 - 47.37425 - - - 8.51942 - 47.37449 - - - 8.51928 - 47.37468 - - - 8.51919 - 47.37481 - - - 8.51908 - 47.37498 - - - 8.51900 - 47.37513 - - - 8.51886 - 47.37544 - - - 8.51882 - 47.37556 - - - 8.51879 - 47.37570 - - - 8.51876 - 47.37591 - - - 8.51874 - 47.37608 - - - 8.51873 - 47.37623 - - - 8.51872 - 47.37633 - - - 8.51872 - 47.37643 - - - 8.51873 - 47.37657 - - - 8.51876 - 47.37677 - - - 8.51881 - 47.37698 - - - 8.51884 - 47.37711 - - - 8.51892 - 47.37731 - - - 8.51898 - 47.37742 - - - 8.51904 - 47.37753 - - - 8.51910 - 47.37763 - - - 8.51919 - 47.37777 - - - 8.51932 - 47.37794 - - - 8.51947 - 47.37810 - - - 8.51961 - 47.37826 - - - 8.52024 - 47.37891 - - - 8.52089 - 47.37956 - - - 8.52110 - 47.37978 - - - 8.52132 - 47.37998 - - - 8.52156 - 47.38018 - - - 8.52172 - 47.38028 - - - 8.52189 - 47.38038 - - - 8.52195 - 47.38041 - - - 8.52203 - 47.38046 - - - 8.52220 - 47.38054 - - - 8.52231 - 47.38059 - - - 8.52240 - 47.38063 - - - 8.52251 - 47.38066 - - - 8.52262 - 47.38071 - - - 8.52280 - 47.38076 - - - 8.52293 - 47.38080 - - - 8.52307 - 47.38083 - - - 8.52320 - 47.38086 - - - 8.52335 - 47.38089 - - - 8.52350 - 47.38092 - - - 8.52367 - 47.38094 - - - 8.52385 - 47.38096 - - - 8.52404 - 47.38097 - - - 8.52433 - 47.38099 - - - 8.52485 - 47.38102 - - - 8.52587 - 47.38109 - - - 8.52609 - 47.38110 - - - 8.52629 - 47.38110 - - - 8.52643 - 47.38111 - - - 8.52657 - 47.38110 - - - 8.52670 - 47.38110 - - - 8.52682 - 47.38109 - - - 8.52697 - 47.38108 - - - 8.52721 - 47.38106 - - - 8.52748 - 47.38102 - - - 8.52760 - 47.38100 - - - 8.52773 - 47.38097 - - - 8.52786 - 47.38094 - - - 8.52806 - 47.38090 - - - 8.52820 - 47.38086 - - - 8.52843 - 47.38080 - - - 8.52892 - 47.38067 - - - 8.52938 - 47.38055 - - - 8.52971 - 47.38045 - - - 8.53064 - 47.38016 - - - 8.53112 - 47.38001 - - - 8.53245 - 47.37965 - - - 8.53289 - 47.37951 - - - 8.53350 - 47.37931 - - - 8.53431 - 47.37903 - - - 8.53526 - 47.37872 - - - 8.53624 - 47.37844 - - - 8.53802 - 47.37795 - - - 8.53864 - 47.37778 - - - 8.53921 - 47.37764 - - - 8.53944 - 47.37759 - - - PT22M - 14251 - - - - - Uetlibergbahn - - - 12792 - - - Sihltal-Zürich-Uetliberg-Bahn - - - ch:1:sjyid:100058:12792-001 - - - - - - 2 - - walk - - ch:1:sloid:3088:0:82204 - - Zürich HB SZU - - - - ch:1:sloid:3000:500:31 - - Zürich HB - - - 2024-03-09T08:07:00Z - 2024-03-09T08:32:00Z - PT25M - PT7M - PT18M - 189 - - - - - - 8.53946 - 47.37760 - - - 8.53943 - 47.37760 - - - - PT0M0S - 0 - - origin - left - - - - - - 8.53943 - 47.37760 - - - 8.53861 - 47.37781 - - - 8.53710 - 47.37821 - - - 8.53712 - 47.37821 - - - Bahnsteig - PT0H2M50S - 189 - - keep - straight on - - - - - - 8.53712 - 47.37821 - - - 8.53712 - 47.37821 - - - Einstieg Zug - PT0M0S - 0 - - enter - left - - - - - - 3 - - - ch:1:sloid:3000:500:31 - - Zürich HB - - - NO_DATA - - - 31 - - - 2024-03-09T08:32:00Z - - 1 - - - ch:1:sloid:7000:2:3 - - Bern - - - NO_DATA - - - 3 - - - 2024-03-09T09:28:00Z - - 2 - - - 2024-03-09 - ch:1:sjyid:100001:712-001 - ojp:91001:D - R - - rail - interRegionalRailService - - Zug - - - IC - - - - IC1 - - ojp:11 - - - Familienwagen mit Spielplatz - - A__FA - - - - Ruhezone in 1. Klasse - - A__RZ - mobilePhoneFreeZone - - - - Gratis-Internet mit der App SBB FreeSurf - - A__FS - - - - Businesszone in 1. Klasse - - A__BZ - firstClass - businessServices - - - - Restaurant - - A__WR - restaurantService - - - - Platzreservierung möglich - - A___R - - 8501026 - - Genève-Aéroport - - - - - - ch:1:sloid:3000:500:31 - - Zürich HB - - - - ch:1:sloid:7000:2:3 - - Bern - - - - - 8.53711 - 47.37820 - - - 8.53624 - 47.37844 - - - 8.53526 - 47.37872 - - - 8.53431 - 47.37903 - - - 8.53350 - 47.37931 - - - 8.53289 - 47.37951 - - - 8.53245 - 47.37965 - - - 8.53112 - 47.38001 - - - 8.53064 - 47.38016 - - - 8.53050 - 47.38020 - - - 8.53039 - 47.38024 - - - 8.52995 - 47.38041 - - - 8.52974 - 47.38048 - - - 8.52940 - 47.38058 - - - 8.52921 - 47.38064 - - - 8.52842 - 47.38085 - - - 8.52795 - 47.38098 - - - 8.52775 - 47.38103 - - - 8.52760 - 47.38106 - - - 8.52745 - 47.38109 - - - 8.52735 - 47.38111 - - - 8.52724 - 47.38113 - - - 8.52712 - 47.38114 - - - 8.52691 - 47.38117 - - - 8.52677 - 47.38118 - - - 8.52664 - 47.38118 - - - 8.52651 - 47.38119 - - - 8.52635 - 47.38119 - - - 8.52617 - 47.38118 - - - 8.52587 - 47.38117 - - - 8.52554 - 47.38115 - - - 8.52508 - 47.38114 - - - 8.52484 - 47.38113 - - - 8.52468 - 47.38113 - - - 8.52456 - 47.38114 - - - 8.52436 - 47.38115 - - - 8.52411 - 47.38117 - - - 8.52398 - 47.38119 - - - 8.52371 - 47.38122 - - - 8.52355 - 47.38125 - - - 8.52341 - 47.38128 - - - 8.52327 - 47.38131 - - - 8.52313 - 47.38135 - - - 8.52302 - 47.38138 - - - 8.52290 - 47.38142 - - - 8.52276 - 47.38146 - - - 8.52259 - 47.38152 - - - 8.52243 - 47.38158 - - - 8.52221 - 47.38168 - - - 8.52201 - 47.38178 - - - 8.52177 - 47.38191 - - - 8.52154 - 47.38206 - - - 8.52139 - 47.38216 - - - 8.52124 - 47.38228 - - - 8.52101 - 47.38248 - - - 8.52082 - 47.38264 - - - 8.52062 - 47.38281 - - - 8.52051 - 47.38289 - - - 8.52041 - 47.38297 - - - 8.52030 - 47.38305 - - - 8.52019 - 47.38312 - - - 8.52005 - 47.38321 - - - 8.51992 - 47.38328 - - - 8.51980 - 47.38335 - - - 8.51968 - 47.38342 - - - 8.51951 - 47.38350 - - - 8.51937 - 47.38356 - - - 8.51923 - 47.38362 - - - 8.51910 - 47.38368 - - - 8.51899 - 47.38372 - - - 8.51887 - 47.38376 - - - 8.51875 - 47.38380 - - - 8.51859 - 47.38386 - - - 8.51840 - 47.38391 - - - 8.51776 - 47.38409 - - - 8.51693 - 47.38431 - - - 8.51553 - 47.38470 - - - 8.51485 - 47.38488 - - - 8.50948 - 47.38634 - - - 8.50886 - 47.38645 - - - 8.50866 - 47.38650 - - - 8.50850 - 47.38654 - - - 8.50783 - 47.38672 - - - 8.50697 - 47.38704 - - - 8.50678 - 47.38712 - - - 8.50642 - 47.38727 - - - 8.50606 - 47.38743 - - - 8.50578 - 47.38753 - - - 8.50552 - 47.38762 - - - 8.50526 - 47.38770 - - - 8.50151 - 47.38881 - - - 8.50122 - 47.38889 - - - 8.50105 - 47.38893 - - - 8.50086 - 47.38898 - - - 8.50066 - 47.38902 - - - 8.50044 - 47.38906 - - - 8.50018 - 47.38911 - - - 8.49974 - 47.38918 - - - 8.49932 - 47.38924 - - - 8.49894 - 47.38928 - - - 8.49860 - 47.38930 - - - 8.49834 - 47.38933 - - - 8.49819 - 47.38935 - - - 8.49805 - 47.38937 - - - 8.49789 - 47.38940 - - - 8.49771 - 47.38943 - - - 8.49682 - 47.38960 - - - 8.49665 - 47.38964 - - - 8.49650 - 47.38967 - - - 8.49633 - 47.38971 - - - 8.49619 - 47.38975 - - - 8.49602 - 47.38980 - - - 8.49558 - 47.38993 - - - 8.49516 - 47.39005 - - - 8.49487 - 47.39012 - - - 8.49469 - 47.39016 - - - 8.49401 - 47.39031 - - - 8.49368 - 47.39038 - - - 8.49318 - 47.39050 - - - 8.49273 - 47.39061 - - - 8.49234 - 47.39072 - - - 8.48911 - 47.39159 - - - 8.48726 - 47.39209 - - - 8.48713 - 47.39212 - - - 8.48703 - 47.39214 - - - 8.48659 - 47.39224 - - - 8.48574 - 47.39248 - - - 8.48565 - 47.39251 - - - 8.48499 - 47.39267 - - - 8.48231 - 47.39336 - - - 8.48153 - 47.39356 - - - 8.48096 - 47.39370 - - - 8.47399 - 47.39564 - - - 8.46941 - 47.39687 - - - 8.46904 - 47.39698 - - - 8.46827 - 47.39720 - - - 8.46451 - 47.39821 - - - 8.46367 - 47.39846 - - - 8.46341 - 47.39854 - - - 8.46322 - 47.39859 - - - 8.46296 - 47.39866 - - - 8.46264 - 47.39873 - - - 8.46253 - 47.39876 - - - 8.46232 - 47.39882 - - - 8.46172 - 47.39900 - - - 8.46147 - 47.39908 - - - 8.46122 - 47.39916 - - - 8.46110 - 47.39920 - - - 8.46072 - 47.39931 - - - 8.46037 - 47.39940 - - - 8.46014 - 47.39946 - - - 8.45970 - 47.39956 - - - 8.45948 - 47.39961 - - - 8.45929 - 47.39965 - - - 8.45906 - 47.39969 - - - 8.45887 - 47.39972 - - - 8.45866 - 47.39975 - - - 8.45849 - 47.39978 - - - 8.45831 - 47.39980 - - - 8.45809 - 47.39982 - - - 8.45787 - 47.39984 - - - 8.45770 - 47.39985 - - - 8.45751 - 47.39985 - - - 8.45709 - 47.39987 - - - 8.45694 - 47.39987 - - - 8.45680 - 47.39987 - - - 8.45666 - 47.39986 - - - 8.45652 - 47.39986 - - - 8.45634 - 47.39985 - - - 8.45441 - 47.39970 - - - 8.44965 - 47.39936 - - - 8.44954 - 47.39935 - - - 8.44945 - 47.39935 - - - 8.44934 - 47.39935 - - - 8.44909 - 47.39935 - - - 8.44899 - 47.39935 - - - 8.44886 - 47.39934 - - - 8.44653 - 47.39918 - - - 8.44536 - 47.39909 - - - 8.44225 - 47.39887 - - - 8.44211 - 47.39886 - - - 8.44194 - 47.39885 - - - 8.44169 - 47.39886 - - - 8.44151 - 47.39885 - - - 8.44117 - 47.39882 - - - 8.44084 - 47.39881 - - - 8.44052 - 47.39880 - - - 8.44002 - 47.39877 - - - 8.43950 - 47.39872 - - - 8.43910 - 47.39870 - - - 8.43865 - 47.39868 - - - 8.43823 - 47.39866 - - - 8.43813 - 47.39865 - - - 8.43747 - 47.39860 - - - 8.43672 - 47.39857 - - - 8.43607 - 47.39851 - - - 8.43538 - 47.39847 - - - 8.43505 - 47.39845 - - - 8.43437 - 47.39841 - - - 8.43312 - 47.39832 - - - 8.43222 - 47.39825 - - - 8.43133 - 47.39816 - - - 8.43048 - 47.39807 - - - 8.42964 - 47.39798 - - - 8.42908 - 47.39794 - - - 8.42848 - 47.39792 - - - 8.42806 - 47.39792 - - - 8.42746 - 47.39794 - - - 8.42687 - 47.39799 - - - 8.42621 - 47.39806 - - - 8.42555 - 47.39816 - - - 8.42350 - 47.39850 - - - 8.42209 - 47.39873 - - - 8.42028 - 47.39901 - - - 8.41950 - 47.39912 - - - 8.41803 - 47.39932 - - - 8.41734 - 47.39942 - - - 8.41264 - 47.40015 - - - 8.41183 - 47.40029 - - - 8.41136 - 47.40038 - - - 8.41107 - 47.40045 - - - 8.41077 - 47.40053 - - - 8.41049 - 47.40062 - - - 8.41021 - 47.40072 - - - 8.40984 - 47.40086 - - - 8.40955 - 47.40098 - - - 8.40928 - 47.40110 - - - 8.40902 - 47.40122 - - - 8.40881 - 47.40133 - - - 8.40859 - 47.40146 - - - 8.40833 - 47.40164 - - - 8.40805 - 47.40183 - - - 8.40780 - 47.40202 - - - 8.40761 - 47.40217 - - - 8.40745 - 47.40232 - - - 8.40727 - 47.40250 - - - 8.40713 - 47.40266 - - - 8.40700 - 47.40282 - - - 8.40686 - 47.40302 - - - 8.40672 - 47.40324 - - - 8.40656 - 47.40351 - - - 8.40525 - 47.40589 - - - 8.40484 - 47.40661 - - - 8.40422 - 47.40767 - - - 8.40416 - 47.40776 - - - 8.40387 - 47.40822 - - - 8.40371 - 47.40844 - - - 8.40317 - 47.40913 - - - 8.40294 - 47.40936 - - - 8.40285 - 47.40944 - - - 8.40274 - 47.40953 - - - 8.40262 - 47.40962 - - - 8.40242 - 47.40975 - - - 8.40181 - 47.41013 - - - 8.40173 - 47.41018 - - - 8.40148 - 47.41035 - - - 8.40077 - 47.41075 - - - 8.40048 - 47.41091 - - - 8.40033 - 47.41099 - - - 8.40015 - 47.41107 - - - 8.39976 - 47.41122 - - - 8.39963 - 47.41127 - - - 8.39940 - 47.41138 - - - 8.39909 - 47.41157 - - - 8.39261 - 47.41608 - - - 8.39243 - 47.41620 - - - 8.39213 - 47.41640 - - - 8.39184 - 47.41658 - - - 8.39169 - 47.41665 - - - 8.39127 - 47.41685 - - - 8.39099 - 47.41698 - - - 8.38955 - 47.41770 - - - 8.38200 - 47.42145 - - - 8.38139 - 47.42174 - - - 8.38121 - 47.42182 - - - 8.38109 - 47.42188 - - - 8.38100 - 47.42193 - - - 8.38089 - 47.42199 - - - 8.38070 - 47.42211 - - - 8.38017 - 47.42236 - - - 8.37984 - 47.42255 - - - 8.37966 - 47.42264 - - - 8.37956 - 47.42269 - - - 8.37949 - 47.42272 - - - 8.37943 - 47.42274 - - - 8.37933 - 47.42278 - - - 8.37924 - 47.42281 - - - 8.37896 - 47.42289 - - - 8.37887 - 47.42292 - - - 8.37852 - 47.42301 - - - 8.37830 - 47.42308 - - - 8.37796 - 47.42319 - - - 8.37763 - 47.42332 - - - 8.37737 - 47.42345 - - - 8.37639 - 47.42390 - - - 8.37591 - 47.42407 - - - 8.37565 - 47.42419 - - - 8.37512 - 47.42444 - - - 8.37476 - 47.42457 - - - 8.37448 - 47.42468 - - - 8.36759 - 47.42789 - - - 8.36630 - 47.42848 - - - 8.36616 - 47.42854 - - - 8.36599 - 47.42861 - - - 8.36581 - 47.42869 - - - 8.36525 - 47.42895 - - - 8.36511 - 47.42901 - - - 8.36495 - 47.42907 - - - 8.36464 - 47.42917 - - - 8.36338 - 47.42959 - - - 8.36300 - 47.42974 - - - 8.36269 - 47.42987 - - - 8.36229 - 47.43007 - - - 8.36018 - 47.43122 - - - 8.35973 - 47.43142 - - - 8.35769 - 47.43217 - - - 8.35683 - 47.43246 - - - 8.35586 - 47.43279 - - - 8.35518 - 47.43302 - - - 8.35501 - 47.43308 - - - 8.35478 - 47.43316 - - - 8.35453 - 47.43328 - - - 8.35431 - 47.43337 - - - 8.35192 - 47.43423 - - - 8.35143 - 47.43441 - - - 8.35037 - 47.43483 - - - 8.35020 - 47.43489 - - - 8.34689 - 47.43609 - - - 8.34592 - 47.43644 - - - 8.34480 - 47.43684 - - - 8.34415 - 47.43707 - - - 8.34381 - 47.43717 - - - 8.34362 - 47.43723 - - - 8.34342 - 47.43729 - - - 8.34322 - 47.43735 - - - 8.34302 - 47.43741 - - - 8.34165 - 47.43769 - - - 8.34024 - 47.43790 - - - 8.33923 - 47.43799 - - - 8.33820 - 47.43803 - - - 8.33726 - 47.43802 - - - 8.33661 - 47.43798 - - - 8.33600 - 47.43793 - - - 8.33529 - 47.43785 - - - 8.33462 - 47.43775 - - - 8.33314 - 47.43751 - - - 8.33153 - 47.43728 - - - 8.32196 - 47.43573 - - - 8.27938 - 47.42869 - - - 8.27852 - 47.42855 - - - 8.27691 - 47.42826 - - - 8.27581 - 47.42806 - - - 8.27348 - 47.42760 - - - 8.27078 - 47.42708 - - - 8.27022 - 47.42699 - - - 8.26993 - 47.42695 - - - 8.26956 - 47.42690 - - - 8.26918 - 47.42685 - - - 8.26868 - 47.42681 - - - 8.26806 - 47.42677 - - - 8.26775 - 47.42675 - - - 8.26706 - 47.42673 - - - 8.26629 - 47.42672 - - - 8.26581 - 47.42674 - - - 8.26357 - 47.42682 - - - 8.26033 - 47.42694 - - - 8.25896 - 47.42697 - - - 8.25821 - 47.42696 - - - 8.25744 - 47.42693 - - - 8.25667 - 47.42687 - - - 8.25592 - 47.42678 - - - 8.25532 - 47.42668 - - - 8.25477 - 47.42659 - - - 8.25424 - 47.42647 - - - 8.25374 - 47.42635 - - - 8.25334 - 47.42623 - - - 8.25279 - 47.42606 - - - 8.25148 - 47.42560 - - - 8.25077 - 47.42528 - - - 8.25010 - 47.42494 - - - 8.24954 - 47.42461 - - - 8.24891 - 47.42422 - - - 8.24843 - 47.42388 - - - 8.24821 - 47.42370 - - - 8.24765 - 47.42324 - - - 8.24719 - 47.42280 - - - 8.24643 - 47.42197 - - - 8.24564 - 47.42107 - - - 8.24543 - 47.42084 - - - 8.24518 - 47.42060 - - - 8.24492 - 47.42036 - - - 8.24462 - 47.42005 - - - 8.24425 - 47.41969 - - - 8.24386 - 47.41933 - - - 8.24349 - 47.41899 - - - 8.24300 - 47.41858 - - - 8.24277 - 47.41838 - - - 8.24239 - 47.41810 - - - 8.24217 - 47.41795 - - - 8.24189 - 47.41779 - - - 8.24138 - 47.41752 - - - 8.24088 - 47.41720 - - - 8.24045 - 47.41695 - - - 8.23988 - 47.41664 - - - 8.23929 - 47.41636 - - - 8.23872 - 47.41609 - - - 8.23812 - 47.41584 - - - 8.23743 - 47.41558 - - - 8.23701 - 47.41543 - - - 8.23585 - 47.41505 - - - 8.23495 - 47.41478 - - - 8.23475 - 47.41470 - - - 8.23440 - 47.41455 - - - 8.23416 - 47.41446 - - - 8.23356 - 47.41426 - - - 8.23342 - 47.41421 - - - 8.23270 - 47.41395 - - - 8.23137 - 47.41356 - - - 8.23041 - 47.41327 - - - 8.22988 - 47.41312 - - - 8.22864 - 47.41272 - - - 8.22765 - 47.41244 - - - 8.22235 - 47.41093 - - - 8.22072 - 47.41046 - - - 8.22002 - 47.41026 - - - 8.21929 - 47.41003 - - - 8.21855 - 47.40974 - - - 8.21827 - 47.40961 - - - 8.21743 - 47.40919 - - - 8.21708 - 47.40899 - - - 8.21639 - 47.40856 - - - 8.21583 - 47.40819 - - - 8.21564 - 47.40807 - - - 8.21430 - 47.40723 - - - 8.21334 - 47.40664 - - - 8.21206 - 47.40587 - - - 8.21116 - 47.40537 - - - 8.21071 - 47.40509 - - - 8.21055 - 47.40499 - - - 8.21021 - 47.40474 - - - 8.20989 - 47.40449 - - - 8.20958 - 47.40421 - - - 8.20935 - 47.40399 - - - 8.20906 - 47.40367 - - - 8.20887 - 47.40345 - - - 8.20868 - 47.40319 - - - 8.20847 - 47.40288 - - - 8.20790 - 47.40191 - - - 8.20745 - 47.40108 - - - 8.20714 - 47.40050 - - - 8.20672 - 47.39965 - - - 8.20652 - 47.39923 - - - 8.20631 - 47.39877 - - - 8.20602 - 47.39811 - - - 8.20577 - 47.39763 - - - 8.20566 - 47.39742 - - - 8.20552 - 47.39721 - - - 8.20512 - 47.39668 - - - 8.20468 - 47.39619 - - - 8.20431 - 47.39585 - - - 8.20397 - 47.39557 - - - 8.20357 - 47.39528 - - - 8.20330 - 47.39510 - - - 8.20278 - 47.39479 - - - 8.20225 - 47.39453 - - - 8.20168 - 47.39427 - - - 8.20104 - 47.39403 - - - 8.20045 - 47.39385 - - - 8.19989 - 47.39370 - - - 8.19955 - 47.39363 - - - 8.19906 - 47.39354 - - - 8.19840 - 47.39342 - - - 8.19575 - 47.39301 - - - 8.19263 - 47.39253 - - - 8.18425 - 47.39123 - - - 8.18265 - 47.39098 - - - 8.18089 - 47.39071 - - - 8.18020 - 47.39061 - - - 8.17906 - 47.39042 - - - 8.17795 - 47.39027 - - - 8.17738 - 47.39020 - - - 8.17678 - 47.39017 - - - 8.17612 - 47.39016 - - - 8.17560 - 47.39018 - - - 8.17516 - 47.39022 - - - 8.17448 - 47.39030 - - - 8.17398 - 47.39038 - - - 8.17349 - 47.39048 - - - 8.17319 - 47.39056 - - - 8.17291 - 47.39064 - - - 8.17259 - 47.39073 - - - 8.17199 - 47.39094 - - - 8.17096 - 47.39133 - - - 8.17023 - 47.39158 - - - 8.16950 - 47.39181 - - - 8.16870 - 47.39204 - - - 8.16714 - 47.39248 - - - 8.16552 - 47.39292 - - - 8.16398 - 47.39337 - - - 8.16324 - 47.39360 - - - 8.16252 - 47.39383 - - - 8.16225 - 47.39392 - - - 8.16148 - 47.39416 - - - 8.16099 - 47.39431 - - - 8.16064 - 47.39441 - - - 8.16013 - 47.39455 - - - 8.15977 - 47.39465 - - - 8.15525 - 47.39608 - - - 8.15098 - 47.39744 - - - 8.15020 - 47.39769 - - - 8.14945 - 47.39795 - - - 8.14885 - 47.39818 - - - 8.14827 - 47.39843 - - - 8.14753 - 47.39879 - - - 8.14682 - 47.39919 - - - 8.14628 - 47.39954 - - - 8.14577 - 47.39989 - - - 8.14454 - 47.40085 - - - 8.14365 - 47.40149 - - - 8.14311 - 47.40185 - - - 8.14282 - 47.40201 - - - 8.14217 - 47.40236 - - - 8.14162 - 47.40263 - - - 8.14103 - 47.40289 - - - 8.14040 - 47.40313 - - - 8.13976 - 47.40335 - - - 8.13923 - 47.40351 - - - 8.13873 - 47.40365 - - - 8.13800 - 47.40382 - - - 8.13743 - 47.40393 - - - 8.13682 - 47.40403 - - - 8.13629 - 47.40410 - - - 8.13577 - 47.40415 - - - 8.13542 - 47.40418 - - - 8.13477 - 47.40422 - - - 8.13438 - 47.40423 - - - 8.13361 - 47.40424 - - - 8.13285 - 47.40421 - - - 8.13240 - 47.40418 - - - 8.13198 - 47.40415 - - - 8.13085 - 47.40403 - - - 8.13021 - 47.40395 - - - 8.12921 - 47.40380 - - - 8.12777 - 47.40355 - - - 8.12674 - 47.40335 - - - 8.12567 - 47.40311 - - - 8.12356 - 47.40264 - - - 8.12159 - 47.40227 - - - 8.12135 - 47.40222 - - - 8.11980 - 47.40192 - - - 8.11906 - 47.40179 - - - 8.11877 - 47.40174 - - - 8.11663 - 47.40144 - - - 8.11621 - 47.40138 - - - 8.08318 - 47.39657 - - - 8.08125 - 47.39628 - - - 8.07947 - 47.39602 - - - 8.07750 - 47.39576 - - - 8.07485 - 47.39544 - - - 8.07384 - 47.39531 - - - 8.07175 - 47.39500 - - - 8.07072 - 47.39485 - - - 8.06950 - 47.39464 - - - 8.06845 - 47.39447 - - - 8.06703 - 47.39426 - - - 8.06496 - 47.39396 - - - 8.06360 - 47.39376 - - - 8.06162 - 47.39347 - - - 8.06070 - 47.39332 - - - 8.06047 - 47.39328 - - - 8.05984 - 47.39313 - - - 8.05956 - 47.39307 - - - 8.05905 - 47.39297 - - - 8.05855 - 47.39286 - - - 8.05806 - 47.39275 - - - 8.05765 - 47.39265 - - - 8.05747 - 47.39261 - - - 8.05716 - 47.39254 - - - 8.05692 - 47.39250 - - - 8.05668 - 47.39245 - - - 8.05560 - 47.39218 - - - 8.05511 - 47.39205 - - - 8.05408 - 47.39172 - - - 8.05315 - 47.39143 - - - 8.05251 - 47.39125 - - - 8.05176 - 47.39104 - - - 8.04924 - 47.39040 - - - 8.04831 - 47.39014 - - - 8.04732 - 47.38988 - - - 8.04719 - 47.38984 - - - 8.04691 - 47.38976 - - - 8.04635 - 47.38962 - - - 8.04526 - 47.38932 - - - 8.04445 - 47.38912 - - - 8.04345 - 47.38890 - - - 8.04078 - 47.38839 - - - 8.03952 - 47.38813 - - - 8.03904 - 47.38802 - - - 8.03832 - 47.38787 - - - 8.03747 - 47.38768 - - - 8.03645 - 47.38743 - - - 8.03579 - 47.38727 - - - 8.03513 - 47.38710 - - - 8.03404 - 47.38679 - - - 8.03257 - 47.38641 - - - 8.03042 - 47.38586 - - - 8.02929 - 47.38557 - - - 8.02848 - 47.38535 - - - 8.02771 - 47.38512 - - - 8.02688 - 47.38485 - - - 8.02593 - 47.38450 - - - 8.02485 - 47.38412 - - - 8.02107 - 47.38267 - - - 8.02009 - 47.38227 - - - 8.01598 - 47.38061 - - - 8.01538 - 47.38038 - - - 8.01457 - 47.38007 - - - 8.01367 - 47.37971 - - - 8.01150 - 47.37884 - - - 8.01109 - 47.37866 - - - 8.00704 - 47.37702 - - - 8.00437 - 47.37595 - - - 8.00370 - 47.37564 - - - 8.00303 - 47.37527 - - - 8.00240 - 47.37486 - - - 8.00185 - 47.37437 - - - 8.00152 - 47.37403 - - - 8.00111 - 47.37351 - - - 8.00085 - 47.37306 - - - 8.00072 - 47.37278 - - - 7.99843 - 47.36778 - - - 7.99835 - 47.36761 - - - 7.99806 - 47.36708 - - - 7.99789 - 47.36674 - - - 7.99750 - 47.36588 - - - 7.99727 - 47.36543 - - - 7.99701 - 47.36498 - - - 7.99660 - 47.36446 - - - 7.99578 - 47.36367 - - - 7.99508 - 47.36312 - - - 7.99482 - 47.36292 - - - 7.99453 - 47.36273 - - - 7.99418 - 47.36252 - - - 7.99355 - 47.36219 - - - 7.99297 - 47.36193 - - - 7.99240 - 47.36172 - - - 7.98996 - 47.36083 - - - 7.98619 - 47.35945 - - - 7.98366 - 47.35850 - - - 7.98055 - 47.35734 - - - 7.97964 - 47.35700 - - - 7.97680 - 47.35587 - - - 7.97612 - 47.35562 - - - 7.97441 - 47.35498 - - - 7.97096 - 47.35369 - - - 7.96667 - 47.35210 - - - 7.96391 - 47.35106 - - - 7.96328 - 47.35084 - - - 7.96265 - 47.35066 - - - 7.96208 - 47.35052 - - - 7.96151 - 47.35041 - - - 7.96090 - 47.35033 - - - 7.96028 - 47.35028 - - - 7.95959 - 47.35025 - - - 7.95892 - 47.35026 - - - 7.95828 - 47.35031 - - - 7.95767 - 47.35038 - - - 7.95723 - 47.35044 - - - 7.95680 - 47.35053 - - - 7.95621 - 47.35068 - - - 7.95561 - 47.35084 - - - 7.95501 - 47.35107 - - - 7.95469 - 47.35119 - - - 7.95428 - 47.35138 - - - 7.95317 - 47.35194 - - - 7.95161 - 47.35274 - - - 7.95100 - 47.35303 - - - 7.95043 - 47.35327 - - - 7.95000 - 47.35342 - - - 7.94953 - 47.35357 - - - 7.94898 - 47.35372 - - - 7.94840 - 47.35386 - - - 7.94755 - 47.35403 - - - 7.94708 - 47.35410 - - - 7.94661 - 47.35415 - - - 7.94448 - 47.35437 - - - 7.94275 - 47.35456 - - - 7.93805 - 47.35513 - - - 7.93542 - 47.35545 - - - 7.93467 - 47.35553 - - - 7.93369 - 47.35567 - - - 7.93242 - 47.35590 - - - 7.93159 - 47.35609 - - - 7.93079 - 47.35630 - - - 7.93015 - 47.35649 - - - 7.92960 - 47.35667 - - - 7.92941 - 47.35674 - - - 7.92853 - 47.35707 - - - 7.92764 - 47.35746 - - - 7.92701 - 47.35777 - - - 7.92654 - 47.35803 - - - 7.92584 - 47.35845 - - - 7.92561 - 47.35859 - - - 7.92473 - 47.35909 - - - 7.92386 - 47.35956 - - - 7.92345 - 47.35977 - - - 7.92307 - 47.35994 - - - 7.92269 - 47.36008 - - - 7.92217 - 47.36025 - - - 7.92190 - 47.36033 - - - 7.92159 - 47.36040 - - - 7.92118 - 47.36048 - - - 7.92099 - 47.36052 - - - 7.92079 - 47.36054 - - - 7.92049 - 47.36058 - - - 7.92001 - 47.36062 - - - 7.91960 - 47.36063 - - - 7.91912 - 47.36062 - - - 7.91862 - 47.36058 - - - 7.91807 - 47.36051 - - - 7.91762 - 47.36042 - - - 7.91706 - 47.36028 - - - 7.91649 - 47.36009 - - - 7.91586 - 47.35982 - - - 7.91552 - 47.35965 - - - 7.91399 - 47.35887 - - - 7.91386 - 47.35881 - - - 7.91283 - 47.35823 - - - 7.91204 - 47.35783 - - - 7.91176 - 47.35768 - - - 7.91154 - 47.35755 - - - 7.91125 - 47.35736 - - - 7.91093 - 47.35712 - - - 7.91027 - 47.35650 - - - 7.90955 - 47.35579 - - - 7.90924 - 47.35542 - - - 7.90913 - 47.35528 - - - 7.90901 - 47.35512 - - - 7.90893 - 47.35499 - - - 7.90886 - 47.35487 - - - 7.90877 - 47.35473 - - - 7.90857 - 47.35435 - - - 7.90845 - 47.35407 - - - 7.90842 - 47.35401 - - - 7.90837 - 47.35385 - - - 7.90831 - 47.35358 - - - 7.90825 - 47.35326 - - - 7.90798 - 47.35162 - - - 7.90795 - 47.35142 - - - 7.90790 - 47.35116 - - - 7.90777 - 47.35066 - - - 7.90753 - 47.34977 - - - 7.90748 - 47.34956 - - - 7.90744 - 47.34941 - - - 7.90742 - 47.34926 - - - 7.90739 - 47.34914 - - - 7.90736 - 47.34905 - - - 7.90732 - 47.34894 - - - 7.90729 - 47.34886 - - - 7.90726 - 47.34874 - - - 7.90720 - 47.34839 - - - 7.90712 - 47.34795 - - - 7.90708 - 47.34766 - - - 7.90706 - 47.34752 - - - 7.90706 - 47.34739 - - - 7.90706 - 47.34725 - - - 7.90707 - 47.34711 - - - 7.90708 - 47.34695 - - - 7.90710 - 47.34681 - - - 7.90714 - 47.34666 - - - 7.90722 - 47.34640 - - - 7.90728 - 47.34625 - - - 7.90746 - 47.34581 - - - 7.90774 - 47.34513 - - - 7.90787 - 47.34482 - - - 7.90791 - 47.34469 - - - 7.90797 - 47.34450 - - - 7.90801 - 47.34436 - - - 7.90805 - 47.34418 - - - 7.90808 - 47.34400 - - - 7.90809 - 47.34392 - - - 7.90810 - 47.34384 - - - 7.90812 - 47.34368 - - - 7.90812 - 47.34352 - - - 7.90811 - 47.34319 - - - 7.90810 - 47.34308 - - - 7.90808 - 47.34284 - - - 7.90806 - 47.34275 - - - 7.90803 - 47.34263 - - - 7.90800 - 47.34248 - - - 7.90783 - 47.34197 - - - 7.90762 - 47.34147 - - - 7.90739 - 47.34103 - - - 7.90705 - 47.34048 - - - 7.90662 - 47.33988 - - - 7.90643 - 47.33963 - - - 7.90623 - 47.33939 - - - 7.90585 - 47.33898 - - - 7.90541 - 47.33854 - - - 7.90504 - 47.33824 - - - 7.90461 - 47.33786 - - - 7.90370 - 47.33709 - - - 7.90323 - 47.33664 - - - 7.90266 - 47.33604 - - - 7.89784 - 47.33038 - - - 7.89710 - 47.32947 - - - 7.89634 - 47.32837 - - - 7.89596 - 47.32771 - - - 7.89557 - 47.32701 - - - 7.89477 - 47.32522 - - - 7.89447 - 47.32449 - - - 7.89417 - 47.32375 - - - 7.89398 - 47.32320 - - - 7.89385 - 47.32279 - - - 7.89375 - 47.32240 - - - 7.89366 - 47.32200 - - - 7.89359 - 47.32159 - - - 7.89354 - 47.32116 - - - 7.89350 - 47.32065 - - - 7.89348 - 47.32019 - - - 7.89348 - 47.31972 - - - 7.89349 - 47.31808 - - - 7.89348 - 47.31777 - - - 7.89342 - 47.31726 - - - 7.89335 - 47.31670 - - - 7.89328 - 47.31635 - - - 7.89320 - 47.31601 - - - 7.89313 - 47.31574 - - - 7.89306 - 47.31547 - - - 7.89287 - 47.31489 - - - 7.89263 - 47.31434 - - - 7.89240 - 47.31382 - - - 7.89228 - 47.31357 - - - 7.89214 - 47.31332 - - - 7.89192 - 47.31293 - - - 7.89168 - 47.31257 - - - 7.89137 - 47.31217 - - - 7.89109 - 47.31182 - - - 7.89087 - 47.31158 - - - 7.89070 - 47.31140 - - - 7.89053 - 47.31122 - - - 7.89016 - 47.31088 - - - 7.88992 - 47.31068 - - - 7.88966 - 47.31049 - - - 7.88872 - 47.30983 - - - 7.88781 - 47.30929 - - - 7.88711 - 47.30893 - - - 7.88646 - 47.30864 - - - 7.88552 - 47.30829 - - - 7.88507 - 47.30814 - - - 7.88454 - 47.30798 - - - 7.88311 - 47.30760 - - - 7.88175 - 47.30724 - - - 7.87943 - 47.30664 - - - 7.87825 - 47.30630 - - - 7.87705 - 47.30591 - - - 7.87598 - 47.30554 - - - 7.87262 - 47.30423 - - - 7.87061 - 47.30344 - - - 7.86970 - 47.30308 - - - 7.86903 - 47.30284 - - - 7.86750 - 47.30222 - - - 7.86714 - 47.30207 - - - 7.86660 - 47.30183 - - - 7.86618 - 47.30165 - - - 7.86374 - 47.30067 - - - 7.86239 - 47.30004 - - - 7.86121 - 47.29940 - - - 7.86008 - 47.29868 - - - 7.85887 - 47.29777 - - - 7.85794 - 47.29696 - - - 7.85705 - 47.29606 - - - 7.85658 - 47.29550 - - - 7.85615 - 47.29494 - - - 7.85563 - 47.29420 - - - 7.85521 - 47.29345 - - - 7.85504 - 47.29313 - - - 7.85488 - 47.29279 - - - 7.85467 - 47.29231 - - - 7.85450 - 47.29184 - - - 7.85427 - 47.29109 - - - 7.85416 - 47.29066 - - - 7.85407 - 47.29020 - - - 7.85400 - 47.28967 - - - 7.85396 - 47.28928 - - - 7.85394 - 47.28887 - - - 7.85394 - 47.28799 - - - 7.85398 - 47.28710 - - - 7.85400 - 47.28619 - - - 7.85400 - 47.28523 - - - 7.85396 - 47.28427 - - - 7.85390 - 47.28333 - - - 7.85379 - 47.28222 - - - 7.85372 - 47.28167 - - - 7.85364 - 47.28110 - - - 7.85344 - 47.27996 - - - 7.85332 - 47.27937 - - - 7.85318 - 47.27875 - - - 7.85294 - 47.27777 - - - 7.85266 - 47.27678 - - - 7.85230 - 47.27569 - - - 7.85209 - 47.27511 - - - 7.85185 - 47.27447 - - - 7.85146 - 47.27358 - - - 7.85105 - 47.27273 - - - 7.85062 - 47.27194 - - - 7.85037 - 47.27150 - - - 7.85009 - 47.27105 - - - 7.84978 - 47.27055 - - - 7.84943 - 47.27003 - - - 7.84901 - 47.26943 - - - 7.84858 - 47.26887 - - - 7.84797 - 47.26809 - - - 7.84756 - 47.26761 - - - 7.84711 - 47.26710 - - - 7.84645 - 47.26640 - - - 7.84573 - 47.26568 - - - 7.84511 - 47.26509 - - - 7.84464 - 47.26466 - - - 7.84413 - 47.26422 - - - 7.84362 - 47.26379 - - - 7.84308 - 47.26336 - - - 7.84240 - 47.26284 - - - 7.84186 - 47.26245 - - - 7.84117 - 47.26196 - - - 7.84043 - 47.26146 - - - 7.83974 - 47.26102 - - - 7.83903 - 47.26059 - - - 7.83832 - 47.26017 - - - 7.83760 - 47.25976 - - - 7.83686 - 47.25937 - - - 7.83605 - 47.25896 - - - 7.83521 - 47.25855 - - - 7.83440 - 47.25818 - - - 7.83342 - 47.25775 - - - 7.83238 - 47.25732 - - - 7.83149 - 47.25698 - - - 7.83061 - 47.25666 - - - 7.82928 - 47.25621 - - - 7.82814 - 47.25586 - - - 7.82705 - 47.25554 - - - 7.82572 - 47.25519 - - - 7.82103 - 47.25409 - - - 7.82023 - 47.25389 - - - 7.81942 - 47.25368 - - - 7.81865 - 47.25347 - - - 7.81783 - 47.25322 - - - 7.81591 - 47.25261 - - - 7.81451 - 47.25210 - - - 7.81316 - 47.25156 - - - 7.81181 - 47.25099 - - - 7.81057 - 47.25041 - - - 7.80928 - 47.24976 - - - 7.80767 - 47.24889 - - - 7.80624 - 47.24801 - - - 7.80483 - 47.24708 - - - 7.80412 - 47.24656 - - - 7.80321 - 47.24589 - - - 7.80210 - 47.24500 - - - 7.79993 - 47.24298 - - - 7.79903 - 47.24207 - - - 7.79725 - 47.24022 - - - 7.79370 - 47.23654 - - - 7.79222 - 47.23502 - - - 7.79100 - 47.23379 - - - 7.79003 - 47.23286 - - - 7.78907 - 47.23202 - - - 7.78758 - 47.23081 - - - 7.78551 - 47.22931 - - - 7.78378 - 47.22819 - - - 7.78041 - 47.22625 - - - 7.77304 - 47.22215 - - - 7.77104 - 47.22102 - - - 7.77010 - 47.22046 - - - 7.76917 - 47.21988 - - - 7.76828 - 47.21930 - - - 7.76740 - 47.21870 - - - 7.76540 - 47.21731 - - - 7.76438 - 47.21663 - - - 7.76333 - 47.21595 - - - 7.76243 - 47.21541 - - - 7.76149 - 47.21486 - - - 7.76024 - 47.21419 - - - 7.75895 - 47.21352 - - - 7.75803 - 47.21307 - - - 7.75714 - 47.21266 - - - 7.75673 - 47.21247 - - - 7.75610 - 47.21219 - - - 7.75580 - 47.21207 - - - 7.75505 - 47.21175 - - - 7.75428 - 47.21144 - - - 7.75340 - 47.21110 - - - 7.75283 - 47.21089 - - - 7.75231 - 47.21070 - - - 7.75195 - 47.21057 - - - 7.75143 - 47.21039 - - - 7.74992 - 47.20990 - - - 7.74880 - 47.20956 - - - 7.74759 - 47.20922 - - - 7.74655 - 47.20894 - - - 7.74559 - 47.20870 - - - 7.74461 - 47.20846 - - - 7.74045 - 47.20751 - - - 7.72816 - 47.20470 - - - 7.72711 - 47.20446 - - - 7.72159 - 47.20319 - - - 7.70494 - 47.19937 - - - 7.70339 - 47.19902 - - - 7.70183 - 47.19871 - - - 7.70033 - 47.19844 - - - 7.69882 - 47.19818 - - - 7.69767 - 47.19798 - - - 7.69653 - 47.19776 - - - 7.69546 - 47.19755 - - - 7.69436 - 47.19732 - - - 7.69247 - 47.19693 - - - 7.69160 - 47.19676 - - - 7.69095 - 47.19665 - - - 7.69037 - 47.19656 - - - 7.68973 - 47.19647 - - - 7.68935 - 47.19642 - - - 7.68935 - 47.19642 - - - 7.68973 - 47.19647 - - - 7.69037 - 47.19656 - - - 7.69095 - 47.19665 - - - 7.69160 - 47.19676 - - - 7.69247 - 47.19693 - - - 7.69436 - 47.19732 - - - 7.69546 - 47.19755 - - - 7.69653 - 47.19776 - - - 7.69767 - 47.19798 - - - 7.69882 - 47.19818 - - - 7.68998 - 47.19668 - - - 7.68818 - 47.19638 - - - 7.68636 - 47.19606 - - - 7.68522 - 47.19584 - - - 7.68406 - 47.19559 - - - 7.68281 - 47.19531 - - - 7.68164 - 47.19502 - - - 7.68038 - 47.19469 - - - 7.67912 - 47.19433 - - - 7.67799 - 47.19398 - - - 7.67683 - 47.19360 - - - 7.67592 - 47.19329 - - - 7.67507 - 47.19298 - - - 7.67422 - 47.19266 - - - 7.67337 - 47.19232 - - - 7.67231 - 47.19189 - - - 7.67129 - 47.19144 - - - 7.67035 - 47.19101 - - - 7.66950 - 47.19061 - - - 7.66842 - 47.19007 - - - 7.66736 - 47.18951 - - - 7.66652 - 47.18904 - - - 7.66578 - 47.18862 - - - 7.66503 - 47.18817 - - - 7.66427 - 47.18770 - - - 7.66312 - 47.18695 - - - 7.66202 - 47.18618 - - - 7.65984 - 47.18465 - - - 7.65562 - 47.18167 - - - 7.64646 - 47.17523 - - - 7.64444 - 47.17387 - - - 7.63676 - 47.16913 - - - 7.63072 - 47.16542 - - - 7.62881 - 47.16427 - - - 7.62681 - 47.16316 - - - 7.62473 - 47.16211 - - - 7.62308 - 47.16135 - - - 7.62152 - 47.16069 - - - 7.61968 - 47.15997 - - - 7.61880 - 47.15965 - - - 7.61579 - 47.15865 - - - 7.61380 - 47.15800 - - - 7.61354 - 47.15791 - - - 7.61174 - 47.15725 - - - 7.61012 - 47.15660 - - - 7.60833 - 47.15583 - - - 7.60659 - 47.15501 - - - 7.60508 - 47.15424 - - - 7.60404 - 47.15366 - - - 7.60297 - 47.15306 - - - 7.60047 - 47.15149 - - - 7.59899 - 47.15045 - - - 7.59748 - 47.14930 - - - 7.59573 - 47.14782 - - - 7.59457 - 47.14677 - - - 7.59349 - 47.14568 - - - 7.59309 - 47.14526 - - - 7.59272 - 47.14486 - - - 7.59197 - 47.14401 - - - 7.59056 - 47.14226 - - - 7.58995 - 47.14141 - - - 7.58936 - 47.14056 - - - 7.58836 - 47.13892 - - - 7.58758 - 47.13747 - - - 7.58691 - 47.13602 - - - 7.58567 - 47.13319 - - - 7.58369 - 47.12860 - - - 7.58217 - 47.12474 - - - 7.58195 - 47.12419 - - - 7.58181 - 47.12381 - - - 7.58140 - 47.12268 - - - 7.58086 - 47.12116 - - - 7.58047 - 47.12003 - - - 7.58009 - 47.11889 - - - 7.57973 - 47.11775 - - - 7.57938 - 47.11661 - - - 7.57921 - 47.11605 - - - 7.57889 - 47.11492 - - - 7.57872 - 47.11436 - - - 7.57857 - 47.11380 - - - 7.57826 - 47.11267 - - - 7.57811 - 47.11210 - - - 7.57776 - 47.11070 - - - 7.57742 - 47.10929 - - - 7.57619 - 47.10415 - - - 7.57541 - 47.10092 - - - 7.57499 - 47.09913 - - - 7.57457 - 47.09735 - - - 7.57437 - 47.09654 - - - 7.57430 - 47.09613 - - - 7.57422 - 47.09573 - - - 7.57412 - 47.09532 - - - 7.57404 - 47.09492 - - - 7.57388 - 47.09412 - - - 7.57378 - 47.09346 - - - 7.57369 - 47.09278 - - - 7.57361 - 47.09209 - - - 7.57355 - 47.09140 - - - 7.57324 - 47.08694 - - - 7.57310 - 47.08561 - - - 7.57299 - 47.08491 - - - 7.57286 - 47.08423 - - - 7.57267 - 47.08340 - - - 7.57244 - 47.08257 - - - 7.57211 - 47.08155 - - - 7.57173 - 47.08056 - - - 7.57128 - 47.07955 - - - 7.57112 - 47.07919 - - - 7.57096 - 47.07887 - - - 7.57072 - 47.07842 - - - 7.57049 - 47.07799 - - - 7.57034 - 47.07774 - - - 7.57020 - 47.07749 - - - 7.56989 - 47.07698 - - - 7.56955 - 47.07644 - - - 7.56922 - 47.07591 - - - 7.56811 - 47.07427 - - - 7.56697 - 47.07263 - - - 7.56646 - 47.07193 - - - 7.56593 - 47.07123 - - - 7.56562 - 47.07081 - - - 7.56531 - 47.07040 - - - 7.56493 - 47.06992 - - - 7.56455 - 47.06946 - - - 7.56394 - 47.06875 - - - 7.56362 - 47.06839 - - - 7.56329 - 47.06804 - - - 7.56279 - 47.06753 - - - 7.56257 - 47.06731 - - - 7.56233 - 47.06708 - - - 7.56196 - 47.06673 - - - 7.56165 - 47.06644 - - - 7.56129 - 47.06611 - - - 7.56090 - 47.06578 - - - 7.56025 - 47.06523 - - - 7.55992 - 47.06497 - - - 7.55957 - 47.06469 - - - 7.55897 - 47.06424 - - - 7.55839 - 47.06381 - - - 7.55786 - 47.06344 - - - 7.55754 - 47.06322 - - - 7.55715 - 47.06296 - - - 7.55615 - 47.06232 - - - 7.55577 - 47.06209 - - - 7.55472 - 47.06148 - - - 7.55401 - 47.06109 - - - 7.55353 - 47.06084 - - - 7.55305 - 47.06059 - - - 7.55243 - 47.06028 - - - 7.55195 - 47.06005 - - - 7.55149 - 47.05983 - - - 7.55062 - 47.05943 - - - 7.54562 - 47.05716 - - - 7.54348 - 47.05617 - - - 7.54249 - 47.05571 - - - 7.54202 - 47.05548 - - - 7.54155 - 47.05523 - - - 7.54107 - 47.05498 - - - 7.54060 - 47.05472 - - - 7.54013 - 47.05447 - - - 7.53967 - 47.05420 - - - 7.53903 - 47.05382 - - - 7.53881 - 47.05368 - - - 7.53843 - 47.05345 - - - 7.53806 - 47.05321 - - - 7.53769 - 47.05296 - - - 7.53733 - 47.05272 - - - 7.53692 - 47.05244 - - - 7.53654 - 47.05216 - - - 7.53615 - 47.05188 - - - 7.53578 - 47.05160 - - - 7.53542 - 47.05131 - - - 7.53493 - 47.05092 - - - 7.53432 - 47.05041 - - - 7.53403 - 47.05015 - - - 7.53373 - 47.04989 - - - 7.53344 - 47.04962 - - - 7.53305 - 47.04925 - - - 7.53268 - 47.04888 - - - 7.53231 - 47.04850 - - - 7.53172 - 47.04786 - - - 7.53126 - 47.04734 - - - 7.53104 - 47.04709 - - - 7.53082 - 47.04682 - - - 7.53039 - 47.04628 - - - 7.52999 - 47.04574 - - - 7.52980 - 47.04547 - - - 7.52942 - 47.04493 - - - 7.52925 - 47.04466 - - - 7.52890 - 47.04413 - - - 7.52857 - 47.04356 - - - 7.52840 - 47.04327 - - - 7.52824 - 47.04297 - - - 7.52808 - 47.04268 - - - 7.52794 - 47.04240 - - - 7.52774 - 47.04198 - - - 7.52754 - 47.04156 - - - 7.52736 - 47.04113 - - - 7.52727 - 47.04091 - - - 7.52718 - 47.04070 - - - 7.52710 - 47.04049 - - - 7.52695 - 47.04007 - - - 7.52687 - 47.03986 - - - 7.52677 - 47.03955 - - - 7.52667 - 47.03924 - - - 7.52658 - 47.03893 - - - 7.52642 - 47.03835 - - - 7.52629 - 47.03783 - - - 7.52623 - 47.03757 - - - 7.52613 - 47.03704 - - - 7.52608 - 47.03677 - - - 7.52586 - 47.03542 - - - 7.52574 - 47.03474 - - - 7.52565 - 47.03430 - - - 7.52556 - 47.03387 - - - 7.52546 - 47.03344 - - - 7.52541 - 47.03323 - - - 7.52525 - 47.03265 - - - 7.52514 - 47.03229 - - - 7.52502 - 47.03193 - - - 7.52490 - 47.03157 - - - 7.52477 - 47.03121 - - - 7.52463 - 47.03085 - - - 7.52434 - 47.03013 - - - 7.52403 - 47.02942 - - - 7.52370 - 47.02870 - - - 7.52345 - 47.02815 - - - 7.52328 - 47.02777 - - - 7.52299 - 47.02713 - - - 7.52282 - 47.02676 - - - 7.52266 - 47.02645 - - - 7.52239 - 47.02593 - - - 7.52211 - 47.02541 - - - 7.52196 - 47.02516 - - - 7.52181 - 47.02491 - - - 7.52165 - 47.02466 - - - 7.52146 - 47.02438 - - - 7.51470 - 47.01411 - - - 7.51392 - 47.01293 - - - 7.51323 - 47.01188 - - - 7.51275 - 47.01117 - - - 7.51222 - 47.01042 - - - 7.51163 - 47.00965 - - - 7.51100 - 47.00890 - - - 7.51058 - 47.00842 - - - 7.51014 - 47.00795 - - - 7.50970 - 47.00750 - - - 7.50922 - 47.00704 - - - 7.50876 - 47.00661 - - - 7.50827 - 47.00617 - - - 7.50778 - 47.00575 - - - 7.50725 - 47.00532 - - - 7.50647 - 47.00472 - - - 7.50577 - 47.00421 - - - 7.50504 - 47.00371 - - - 7.50441 - 47.00330 - - - 7.50374 - 47.00288 - - - 7.50308 - 47.00250 - - - 7.50244 - 47.00213 - - - 7.50175 - 47.00176 - - - 7.50096 - 47.00135 - - - 7.49991 - 47.00085 - - - 7.49898 - 47.00044 - - - 7.49808 - 47.00006 - - - 7.49720 - 46.99971 - - - 7.49630 - 46.99938 - - - 7.49533 - 46.99905 - - - 7.49426 - 46.99871 - - - 7.49321 - 46.99841 - - - 7.49245 - 46.99820 - - - 7.49166 - 46.99800 - - - 7.49071 - 46.99778 - - - 7.48973 - 46.99757 - - - 7.48848 - 46.99733 - - - 7.48649 - 46.99698 - - - 7.48524 - 46.99675 - - - 7.48412 - 46.99652 - - - 7.48353 - 46.99640 - - - 7.48292 - 46.99625 - - - 7.48185 - 46.99598 - - - 7.48079 - 46.99569 - - - 7.47974 - 46.99538 - - - 7.47903 - 46.99515 - - - 7.47831 - 46.99490 - - - 7.47735 - 46.99456 - - - 7.47623 - 46.99412 - - - 7.47514 - 46.99366 - - - 7.47424 - 46.99325 - - - 7.47334 - 46.99281 - - - 7.47250 - 46.99238 - - - 7.47167 - 46.99193 - - - 7.47107 - 46.99158 - - - 7.47052 - 46.99125 - - - 7.46997 - 46.99091 - - - 7.46951 - 46.99061 - - - 7.46902 - 46.99028 - - - 7.46860 - 46.98996 - - - 7.46818 - 46.98962 - - - 7.46783 - 46.98931 - - - 7.46750 - 46.98899 - - - 7.46722 - 46.98870 - - - 7.46695 - 46.98839 - - - 7.46674 - 46.98813 - - - 7.46653 - 46.98785 - - - 7.46626 - 46.98745 - - - 7.46601 - 46.98701 - - - 7.46587 - 46.98675 - - - 7.46575 - 46.98649 - - - 7.46569 - 46.98634 - - - 7.46563 - 46.98619 - - - 7.46548 - 46.98579 - - - 7.46542 - 46.98559 - - - 7.46536 - 46.98538 - - - 7.46531 - 46.98517 - - - 7.46527 - 46.98498 - - - 7.46524 - 46.98477 - - - 7.46521 - 46.98457 - - - 7.46519 - 46.98437 - - - 7.46517 - 46.98416 - - - 7.46516 - 46.98396 - - - 7.46516 - 46.98376 - - - 7.46516 - 46.98355 - - - 7.46517 - 46.98333 - - - 7.46519 - 46.98312 - - - 7.46521 - 46.98290 - - - 7.46524 - 46.98270 - - - 7.46528 - 46.98247 - - - 7.46533 - 46.98226 - - - 7.46538 - 46.98204 - - - 7.46545 - 46.98181 - - - 7.46552 - 46.98162 - - - 7.46559 - 46.98141 - - - 7.46567 - 46.98121 - - - 7.46576 - 46.98100 - - - 7.46585 - 46.98079 - - - 7.46591 - 46.98067 - - - 7.46598 - 46.98055 - - - 7.46639 - 46.97979 - - - 7.46677 - 46.97911 - - - 7.46688 - 46.97891 - - - 7.46765 - 46.97756 - - - 7.46810 - 46.97674 - - - 7.46841 - 46.97620 - - - 7.46854 - 46.97597 - - - 7.46881 - 46.97550 - - - 7.46927 - 46.97467 - - - 7.46944 - 46.97434 - - - 7.46962 - 46.97397 - - - 7.46977 - 46.97370 - - - 7.47001 - 46.97326 - - - 7.47006 - 46.97316 - - - 7.47012 - 46.97303 - - - 7.47017 - 46.97292 - - - 7.47026 - 46.97270 - - - 7.47031 - 46.97254 - - - 7.47035 - 46.97240 - - - 7.47038 - 46.97226 - - - 7.47040 - 46.97214 - - - 7.47041 - 46.97202 - - - 7.47042 - 46.97189 - - - 7.47042 - 46.97177 - - - 7.47041 - 46.97164 - - - 7.47041 - 46.97152 - - - 7.47038 - 46.97131 - - - 7.47031 - 46.97103 - - - 7.47027 - 46.97091 - - - 7.47019 - 46.97068 - - - 7.47010 - 46.97048 - - - 7.47005 - 46.97037 - - - 7.46997 - 46.97023 - - - 7.46991 - 46.97014 - - - 7.46982 - 46.97001 - - - 7.46972 - 46.96989 - - - 7.46962 - 46.96976 - - - 7.46952 - 46.96965 - - - 7.46941 - 46.96954 - - - 7.46929 - 46.96942 - - - 7.46917 - 46.96931 - - - 7.46904 - 46.96921 - - - 7.46890 - 46.96910 - - - 7.46878 - 46.96902 - - - 7.46854 - 46.96886 - - - 7.46832 - 46.96874 - - - 7.46823 - 46.96868 - - - 7.46813 - 46.96863 - - - 7.46802 - 46.96858 - - - 7.46790 - 46.96853 - - - 7.46778 - 46.96847 - - - 7.46764 - 46.96842 - - - 7.46752 - 46.96837 - - - 7.46744 - 46.96834 - - - 7.46734 - 46.96830 - - - 7.46715 - 46.96824 - - - 7.46693 - 46.96818 - - - 7.46665 - 46.96810 - - - 7.46636 - 46.96803 - - - 7.46607 - 46.96796 - - - 7.46522 - 46.96777 - - - 7.46352 - 46.96737 - - - 7.46330 - 46.96732 - - - 7.46303 - 46.96726 - - - 7.46251 - 46.96715 - - - 7.46224 - 46.96709 - - - 7.46168 - 46.96695 - - - 7.46111 - 46.96681 - - - 7.46066 - 46.96669 - - - 7.46021 - 46.96657 - - - 7.45974 - 46.96644 - - - 7.45924 - 46.96631 - - - 7.45874 - 46.96619 - - - 7.45790 - 46.96599 - - - 7.45756 - 46.96590 - - - 7.45722 - 46.96582 - - - 7.45573 - 46.96542 - - - 7.45310 - 46.96472 - - - 7.45256 - 46.96457 - - - 7.45202 - 46.96443 - - - 7.45126 - 46.96422 - - - 7.45038 - 46.96400 - - - 7.44952 - 46.96380 - - - 7.44900 - 46.96367 - - - 7.44848 - 46.96353 - - - 7.44832 - 46.96348 - - - 7.44807 - 46.96339 - - - 7.44785 - 46.96331 - - - 7.44759 - 46.96320 - - - 7.44729 - 46.96305 - - - 7.44713 - 46.96297 - - - 7.44698 - 46.96289 - - - 7.44683 - 46.96280 - - - 7.44669 - 46.96271 - - - 7.44655 - 46.96262 - - - 7.44642 - 46.96253 - - - 7.44628 - 46.96243 - - - 7.44603 - 46.96222 - - - 7.44579 - 46.96200 - - - 7.44558 - 46.96179 - - - 7.44531 - 46.96152 - - - 7.44517 - 46.96135 - - - 7.44486 - 46.96100 - - - 7.44467 - 46.96079 - - - 7.44427 - 46.96037 - - - 7.44402 - 46.96012 - - - 7.44384 - 46.95991 - - - 7.44367 - 46.95969 - - - 7.44353 - 46.95948 - - - 7.44341 - 46.95925 - - - 7.44329 - 46.95902 - - - 7.44320 - 46.95878 - - - 7.44315 - 46.95855 - - - 7.44310 - 46.95831 - - - 7.44307 - 46.95807 - - - 7.44306 - 46.95782 - - - 7.44302 - 46.95655 - - - 7.44301 - 46.95628 - - - 7.44298 - 46.95603 - - - 7.44293 - 46.95578 - - - 7.44286 - 46.95554 - - - 7.44277 - 46.95530 - - - 7.44266 - 46.95507 - - - 7.44253 - 46.95484 - - - 7.44174 - 46.95341 - - - 7.44127 - 46.95261 - - - 7.44104 - 46.95224 - - - 7.44058 - 46.95151 - - - 7.44054 - 46.95144 - - - 7.44041 - 46.95118 - - - 7.44018 - 46.95073 - - - 7.44007 - 46.95048 - - - 7.43999 - 46.95023 - - - 7.43995 - 46.95010 - - - 7.43990 - 46.94996 - - - 7.43984 - 46.94982 - - - 7.43972 - 46.94962 - - - 7.43965 - 46.94952 - - - 7.43956 - 46.94941 - - - 7.43942 - 46.94929 - - - 7.43922 - 46.94913 - - - 7.43912 - 46.94908 - - - PT56M - 118113 - - - - - InterCity - - - 712 - - - Schweizerische Bundesbahnen SBB - - - ch:1:sjyid:100001:712-001 - - - - - - 4 - - walk - - ch:1:sloid:7000:2:3 - - Bern - - - - ch:1:sloid:76646:0:3 - - Bern, Bahnhof - - - 2024-03-09T09:28:00Z - 2024-03-09T09:36:00Z - PT8M - PT6M - PT2M - 556 - - - - - - 7.43909 - 46.94910 - - - 7.43532 - 46.94771 - - - Ausstieg Zug rechts - PT0M0S - 0 - - leave - left - - - - - - 7.43532 - 46.94771 - - - 7.43600 - 46.94764 - - - Merkurgässli - PT0M47S - 52 - - keep - straight on - - - - - - 7.43600 - 46.94764 - - - 7.43598 - 46.94736 - - - Merkurgässli - PT0M23S - 31 - - turn - right - - - - - - 7.43598 - 46.94736 - - - 7.43604 - 46.94737 - - - 7.43717 - 46.94732 - - - 7.43719 - 46.94732 - - - 7.43720 - 46.94732 - - - 7.43722 - 46.94733 - - - 7.43722 - 46.94733 - - - 7.43723 - 46.94735 - - - 7.43723 - 46.94735 - - - 7.43726 - 46.94735 - - - Laupenstrasse - PT0H1M29S - 99 - - turn - left - - - - - - 7.43726 - 46.94735 - - - 7.43735 - 46.94735 - - - Fußgängerampel - PT0M45S - 6 - - continue - straight on - - - - - - 7.43735 - 46.94735 - - - 7.43736 - 46.94730 - - - 7.43736 - 46.94726 - - - Fußweg - PT0M9S - 11 - - turn - right - - - - - - 7.43736 - 46.94726 - - - 7.43736 - 46.94720 - - - Fußgängerampel - PT0M45S - 5 - - continue - straight on - - - - - - 7.43736 - 46.94720 - - - 7.43737 - 46.94714 - - - 7.43737 - 46.94712 - - - Fußweg - PT0M6S - 8 - - continue - straight on - - - - - - 7.43737 - 46.94712 - - - 7.43756 - 46.94711 - - - 7.43774 - 46.94711 - - - 7.43783 - 46.94706 - - - 7.43786 - 46.94704 - - - Laupenstrasse/Bubenbergplatz - PT0M34S - 40 - - turn - left - - - - - - 7.43786 - 46.94704 - - - 7.43787 - 46.94703 - - - Fußweg - PT0M0S - 0 - - continue - straight on - - - - - - 7.43787 - 46.94703 - - - 7.43792 - 46.94707 - - - 7.43794 - 46.94708 - - - 7.43795 - 46.94708 - - - Fußweg - PT0M5S - 7 - - turn - left - - - - - - 7.43795 - 46.94708 - - - 7.43807 - 46.94700 - - - 7.43812 - 46.94700 - - - 7.43819 - 46.94699 - - - Fußweg am Straßenrand - PT0M19S - 22 - - turn - right - - - - - - 7.43819 - 46.94699 - - - 7.43823 - 46.94707 - - - 7.43824 - 46.94707 - - - 7.43824 - 46.94708 - - - 7.43826 - 46.94709 - - - 7.43827 - 46.94709 - - - 7.43828 - 46.94710 - - - 7.43828 - 46.94710 - - - 7.43872 - 46.94717 - - - 7.43882 - 46.94718 - - - Hirschengraben - PT0M50S - 57 - - turn - left - - - - - - 7.43882 - 46.94718 - - - 7.43885 - 46.94719 - - - 7.43886 - 46.94719 - - - 7.43889 - 46.94719 - - - Fußweg - PT0M3S - 5 - - turn - half left - - - - - - 7.43889 - 46.94719 - - - 7.43885 - 46.94729 - - - Schwanengasse - PT0M9S - 10 - - turn - left - - - - - - 7.43885 - 46.94729 - - - 7.43905 - 46.94732 - - - 7.43967 - 46.94742 - - - 7.43977 - 46.94744 - - - 7.43980 - 46.94745 - - - 7.43984 - 46.94747 - - - 7.43994 - 46.94751 - - - 7.43999 - 46.94756 - - - 7.44013 - 46.94763 - - - 7.44025 - 46.94768 - - - 7.44032 - 46.94769 - - - 7.44065 - 46.94776 - - - Bubenbergplatz - PT0H2M6S - 148 - - turn - right - - - - - - 7.44065 - 46.94776 - - - 7.44065 - 46.94775 - - - Fußweg - PT0M0S - 1 - - turn - right - - - - - - 7.44065 - 46.94775 - - - 7.44031 - 46.94767 - - - 7.44026 - 46.94766 - - - 7.44019 - 46.94764 - - - 7.44007 - 46.94758 - - - Bahnsteig - PT0M41S - 48 - - turn - right - - - - - - 7.44007 - 46.94758 - - - 7.44007 - 46.94758 - - - Einstieg Straßenbahn - PT0M0S - 0 - - enter - left - - - - - - 5 - - - ch:1:sloid:76646:0:3 - - Bern, Bahnhof - - - PLATFORM_ACCESS_WITH_ASSISTANCE - - - C - - - 2024-03-09T09:36:00Z - - 1 - - - ch:1:sloid:79896:0:1 - - Bern, Hirschengraben - - - A - - - 2024-03-09T09:37:00Z - - - 2024-03-09T09:37:00Z - - 2 - - - ch:1:sloid:89991:0:1 - - Bern, Monbijou - - - B - - - 2024-03-09T09:39:00Z - - - 2024-03-09T09:39:00Z - - 3 - - - 8589992 - - Bern, Sulgenau - - - 2024-03-09T09:40:00Z - - - 2024-03-09T09:40:00Z - - 4 - - - ch:1:sloid:89993:0:1 - - Bern, Wander - - - 2024-03-09T09:41:00Z - - - 2024-03-09T09:41:00Z - - 5 - - - ch:1:sloid:90022:0:1 - - Bern, Schönegg - - - 2024-03-09T09:42:00Z - - - 2024-03-09T09:42:00Z - - 6 - - - ch:1:sloid:90023:0:1 - - Bern, Sandrain - - - 2024-03-09T09:44:00Z - - - 2024-03-09T09:44:00Z - - 7 - - - ch:1:sloid:88562:0:1 - - Wabern, Gurtenbahn - - - PLATFORM_NOT_WHEELCHAIR_ACCESSIBLE - - - B - - - 2024-03-09T09:45:00Z - - 8 - - - 2024-03-09 - ojp-91-9-_-j24-1-1243-TA - ojp:91009: - R - - tram - cityTram - - Tram - - - T - - - - 9 - - ojp:827 - - - VELOS: Platzzahl eingeschränkt - - A__VB - - - - Niederflureinstieg - - A__NF - palletAccess_lowFloor - - 8571395 - - Wabern, Tram-Endstation - - - - - - ch:1:sloid:76646:0:3 - - Bern, Bahnhof - - - - ch:1:sloid:88562:0:1 - - Wabern, Gurtenbahn - - - - - 7.44007 - 46.94756 - - - 7.43992 - 46.94752 - - - 7.43985 - 46.94750 - - - 7.43973 - 46.94748 - - - 7.43855 - 46.94728 - - - 7.43835 - 46.94725 - - - 7.43823 - 46.94722 - - - 7.43812 - 46.94719 - - - 7.43804 - 46.94716 - - - 7.43793 - 46.94712 - - - 7.43787 - 46.94709 - - - 7.43783 - 46.94707 - - - 7.43782 - 46.94706 - - - 7.43777 - 46.94702 - - - 7.43775 - 46.94699 - - - 7.43774 - 46.94697 - - - 7.43770 - 46.94690 - - - 7.43751 - 46.94643 - - - 7.43751 - 46.94643 - - - 7.43740 - 46.94614 - - - 7.43738 - 46.94611 - - - 7.43726 - 46.94592 - - - 7.43718 - 46.94578 - - - 7.43671 - 46.94510 - - - 7.43601 - 46.94402 - - - 7.43598 - 46.94396 - - - 7.43597 - 46.94393 - - - 7.43596 - 46.94389 - - - 7.43590 - 46.94322 - - - 7.43590 - 46.94322 - - - 7.43587 - 46.94275 - - - 7.43583 - 46.94215 - - - 7.43575 - 46.94118 - - - 7.43572 - 46.94097 - - - 7.43570 - 46.94086 - - - 7.43569 - 46.94069 - - - 7.43569 - 46.94065 - - - 7.43576 - 46.94008 - - - 7.43578 - 46.94002 - - - 7.43584 - 46.93983 - - - 7.43594 - 46.93936 - - - 7.43596 - 46.93929 - - - 7.43602 - 46.93914 - - - 7.43604 - 46.93906 - - - 7.43630 - 46.93758 - - - 7.43640 - 46.93707 - - - 7.43652 - 46.93661 - - - 7.43656 - 46.93649 - - - 7.43688 - 46.93523 - - - 7.43690 - 46.93513 - - - 7.43693 - 46.93505 - - - 7.43694 - 46.93503 - - - 7.43698 - 46.93498 - - - 7.43703 - 46.93493 - - - 7.43705 - 46.93491 - - - 7.43709 - 46.93488 - - - 7.43723 - 46.93480 - - - 7.43743 - 46.93474 - - - 7.43777 - 46.93461 - - - 7.43824 - 46.93444 - - - 7.43830 - 46.93442 - - - 7.43849 - 46.93436 - - - 7.43858 - 46.93434 - - - 7.43887 - 46.93427 - - - 7.43898 - 46.93425 - - - 7.43925 - 46.93419 - - - 7.43933 - 46.93416 - - - 7.43940 - 46.93414 - - - 7.43949 - 46.93411 - - - 7.44002 - 46.93389 - - - 7.44011 - 46.93384 - - - 7.44020 - 46.93380 - - - 7.44034 - 46.93371 - - - 7.44043 - 46.93363 - - - 7.44058 - 46.93353 - - - 7.44065 - 46.93349 - - - 7.44073 - 46.93344 - - - 7.44083 - 46.93338 - - - 7.44100 - 46.93330 - - - 7.44111 - 46.93325 - - - 7.44126 - 46.93319 - - - 7.44140 - 46.93314 - - - 7.44314 - 46.93253 - - - 7.44339 - 46.93244 - - - 7.44369 - 46.93232 - - - 7.44400 - 46.93220 - - - 7.44425 - 46.93209 - - - 7.44441 - 46.93202 - - - 7.44533 - 46.93157 - - - 7.44544 - 46.93153 - - - 7.44552 - 46.93151 - - - 7.44566 - 46.93147 - - - 7.44599 - 46.93140 - - - 7.44616 - 46.93136 - - - 7.44629 - 46.93132 - - - 7.44642 - 46.93127 - - - 7.44650 - 46.93124 - - - 7.44671 - 46.93116 - - - 7.44691 - 46.93106 - - - 7.44701 - 46.93100 - - - 7.44709 - 46.93095 - - - 7.44717 - 46.93090 - - - 7.44727 - 46.93083 - - - 7.44733 - 46.93078 - - - 7.44745 - 46.93068 - - - 7.44797 - 46.93021 - - - 7.44804 - 46.93015 - - - 7.44811 - 46.93010 - - - 7.44864 - 46.92986 - - - 7.44903 - 46.92972 - - - 7.44938 - 46.92957 - - - 7.44949 - 46.92952 - - - 7.44973 - 46.92945 - - - 7.45019 - 46.92929 - - - 7.45038 - 46.92921 - - - 7.45049 - 46.92916 - - - 7.45102 - 46.92891 - - - 7.45115 - 46.92885 - - - 7.45148 - 46.92870 - - - 7.45205 - 46.92843 - - - 7.45232 - 46.92831 - - - 7.45237 - 46.92828 - - - 7.45239 - 46.92826 - - - 7.45241 - 46.92824 - - - 7.45244 - 46.92819 - - - 7.45246 - 46.92815 - - - 7.45247 - 46.92812 - - - 7.45249 - 46.92807 - - - 7.45249 - 46.92804 - - - 7.45248 - 46.92798 - - - 7.45248 - 46.92795 - - - 7.45250 - 46.92792 - - - 7.45251 - 46.92790 - - - 7.45254 - 46.92787 - - - 7.45258 - 46.92785 - - - 7.45262 - 46.92784 - - - 7.45266 - 46.92783 - - - 7.45275 - 46.92783 - - - 7.45279 - 46.92783 - - - 7.45283 - 46.92784 - - - 7.45287 - 46.92786 - - - 7.45290 - 46.92788 - - - 7.45293 - 46.92790 - - - 7.45294 - 46.92794 - - - 7.45295 - 46.92796 - - - 7.45295 - 46.92799 - - - 7.45294 - 46.92802 - - - 7.45292 - 46.92805 - - - 7.45288 - 46.92809 - - - 7.45283 - 46.92813 - - - 7.45106 - 46.92895 - - - 7.45043 - 46.92926 - - - 7.45023 - 46.92934 - - - 7.44956 - 46.92957 - - - 7.44942 - 46.92961 - - - 7.44907 - 46.92976 - - - 7.44890 - 46.92984 - - - 7.44882 - 46.92989 - - - 7.44874 - 46.92993 - - - 7.44864 - 46.92997 - - - 7.44856 - 46.93000 - - - 7.44846 - 46.93005 - - - 7.44819 - 46.93016 - - - 7.44810 - 46.93021 - - - 7.44804 - 46.93024 - - - 7.44797 - 46.93030 - - - 7.44794 - 46.93033 - - - 7.44776 - 46.93050 - - - 7.44747 - 46.93075 - - - 7.44735 - 46.93085 - - - 7.44724 - 46.93093 - - - 7.44717 - 46.93097 - - - 7.44708 - 46.93102 - - - 7.44695 - 46.93109 - - - 7.44685 - 46.93113 - - - 7.44666 - 46.93122 - - - 7.44652 - 46.93127 - - - 7.44638 - 46.93132 - - - 7.44630 - 46.93135 - - - 7.44606 - 46.93141 - - - 7.44557 - 46.93152 - - - 7.44547 - 46.93155 - - - 7.44539 - 46.93158 - - - 7.44524 - 46.93165 - - - 7.44488 - 46.93182 - - - 7.44428 - 46.93211 - - - 7.44403 - 46.93222 - - - 7.44372 - 46.93235 - - - 7.44341 - 46.93246 - - - 7.44316 - 46.93256 - - - 7.44252 - 46.93278 - - - 7.44212 - 46.93292 - - - 7.44156 - 46.93311 - - - 7.44129 - 46.93321 - - - 7.44103 - 46.93332 - - - 7.44085 - 46.93341 - - - 7.44076 - 46.93346 - - - 7.44068 - 46.93351 - - - 7.44056 - 46.93359 - - - 7.44037 - 46.93372 - - - 7.44023 - 46.93381 - - - 7.44014 - 46.93386 - - - 7.44004 - 46.93391 - - - 7.43951 - 46.93413 - - - 7.43942 - 46.93417 - - - 7.43926 - 46.93421 - - - 7.43899 - 46.93427 - - - 7.43888 - 46.93429 - - - 7.43874 - 46.93433 - - - 7.43859 - 46.93436 - - - 7.43840 - 46.93442 - - - 7.43832 - 46.93444 - - - 7.43806 - 46.93453 - - - 7.43747 - 46.93475 - - - 7.43738 - 46.93478 - - - 7.43726 - 46.93483 - - - 7.43715 - 46.93488 - - - 7.43708 - 46.93493 - - - 7.43703 - 46.93498 - - - 7.43699 - 46.93503 - - - 7.43697 - 46.93508 - - - 7.43695 - 46.93513 - - - 7.43670 - 46.93608 - - - 7.43648 - 46.93698 - - - 7.43642 - 46.93719 - - - 7.43639 - 46.93731 - - - 7.43631 - 46.93773 - - - 7.43605 - 46.93921 - - - 7.43597 - 46.93963 - - - 7.43592 - 46.93998 - - - 7.43592 - 46.93998 - - - 7.43577 - 46.94083 - - - 7.43577 - 46.94090 - - - 7.43577 - 46.94097 - - - 7.43585 - 46.94193 - - - 7.43587 - 46.94215 - - - 7.43589 - 46.94243 - - - 7.43591 - 46.94275 - - - 7.43594 - 46.94295 - - - 7.43596 - 46.94310 - - - 7.43600 - 46.94367 - - - 7.43603 - 46.94389 - - - 7.43603 - 46.94393 - - - 7.43604 - 46.94397 - - - 7.43606 - 46.94401 - - - 7.43724 - 46.94579 - - - 7.43718 - 46.94578 - - - 7.43671 - 46.94510 - - - 7.43601 - 46.94402 - - - 7.43598 - 46.94396 - - - 7.43597 - 46.94393 - - - 7.43596 - 46.94389 - - - 7.43590 - 46.94322 - - - 7.43587 - 46.94275 - - - 7.43583 - 46.94215 - - - 7.43575 - 46.94118 - - - 7.43572 - 46.94097 - - - 7.43570 - 46.94086 - - - 7.43569 - 46.94069 - - - 7.43569 - 46.94065 - - - 7.43576 - 46.94008 - - - 7.43578 - 46.94002 - - - 7.43584 - 46.93983 - - - 7.43594 - 46.93936 - - - 7.43596 - 46.93929 - - - 7.43602 - 46.93914 - - - 7.43604 - 46.93906 - - - 7.43630 - 46.93758 - - - 7.43639 - 46.93714 - - - 7.43640 - 46.93707 - - - 7.43651 - 46.93663 - - - 7.43651 - 46.93663 - - - 7.43653 - 46.93655 - - - 7.43656 - 46.93649 - - - 7.43688 - 46.93523 - - - 7.43690 - 46.93513 - - - 7.43693 - 46.93505 - - - 7.43694 - 46.93503 - - - 7.43698 - 46.93498 - - - 7.43703 - 46.93493 - - - 7.43705 - 46.93491 - - - 7.43709 - 46.93488 - - - 7.43723 - 46.93480 - - - 7.43743 - 46.93474 - - - 7.43777 - 46.93461 - - - 7.43821 - 46.93445 - - - 7.43830 - 46.93442 - - - 7.43849 - 46.93436 - - - 7.43858 - 46.93434 - - - 7.43887 - 46.93427 - - - 7.43898 - 46.93425 - - - 7.43925 - 46.93419 - - - 7.43933 - 46.93416 - - - 7.43940 - 46.93414 - - - 7.43949 - 46.93411 - - - 7.43996 - 46.93391 - - - 7.43996 - 46.93391 - - - 7.44002 - 46.93389 - - - 7.44011 - 46.93384 - - - 7.44020 - 46.93380 - - - 7.44034 - 46.93371 - - - 7.44043 - 46.93363 - - - 7.44058 - 46.93353 - - - 7.44065 - 46.93349 - - - 7.44073 - 46.93344 - - - 7.44083 - 46.93338 - - - 7.44100 - 46.93330 - - - 7.44111 - 46.93325 - - - 7.44126 - 46.93319 - - - 7.44140 - 46.93314 - - - 7.44314 - 46.93253 - - - 7.44339 - 46.93244 - - - 7.44369 - 46.93232 - - - 7.44400 - 46.93220 - - - 7.44425 - 46.93209 - - - 7.44441 - 46.93202 - - - 7.44532 - 46.93158 - - - 7.44532 - 46.93158 - - - 7.44544 - 46.93153 - - - 7.44552 - 46.93151 - - - 7.44566 - 46.93147 - - - 7.44599 - 46.93140 - - - 7.44616 - 46.93136 - - - 7.44629 - 46.93132 - - - 7.44650 - 46.93124 - - - 7.44660 - 46.93120 - - - 7.44671 - 46.93116 - - - 7.44691 - 46.93106 - - - 7.44701 - 46.93100 - - - 7.44709 - 46.93095 - - - 7.44717 - 46.93090 - - - 7.44727 - 46.93083 - - - 7.44733 - 46.93078 - - - 7.44745 - 46.93068 - - - 7.44801 - 46.93017 - - - 7.44804 - 46.93015 - - - 7.44811 - 46.93010 - - - 7.44864 - 46.92986 - - - 7.44867 - 46.92985 - - - PT9M - 8041 - - - - - Tram - - - 4188 - - - Städtische Verkehrsbetriebe Bern - - - ojp-91-9-_-j24-1-1243-TA - - - - - - 6 - - walk - - ch:1:sloid:88562:0:1 - - Wabern, Gurtenbahn - - - - 8507097 - - Wabern (Gurtenbahn) - - - 2024-03-09T09:45:00Z - 2024-03-09T10:00:00Z - PT15M - PT6M - PT9M - - - - - 8588562 - - Gurtenbahn - - - - 8507097 - - Wabern (Gurtenbahn) - - - - 1015258360:2:MRCV:100 - 501365981:10:MRCV:100 - 0 - 0 - - - - level - footpath - - - - - - - 7 - - - 8507097 - - Wabern (Gurtenbahn) - - - NO_DATA - - - 2024-03-09T10:00:00Z - - 1 - - - 8507099 - - Gurten Kulm - - - NO_DATA - - - 2024-03-09T10:15:00Z - - 2 - - - 2024-03-09 - ojp-92-H2-Y-j24-1-50-TA - ojp:920H2:Y - R - - bus - localBusService - - Bus - - - B - - - - B - - ojp:122 - - - Niederflureinstieg - - A__NF - palletAccess_lowFloor - - 8507099 - - Gurten Kulm - - - - - - 8507097 - - Wabern (Gurtenbahn) - - - - 8507099 - - Gurten Kulm - - - - - 7.44608 - 46.92801 - - - 7.44623 - 46.92799 - - - 7.44640 - 46.92813 - - - 7.44662 - 46.92807 - - - 7.44699 - 46.92803 - - - 7.44727 - 46.92792 - - - 7.44743 - 46.92786 - - - 7.44794 - 46.92763 - - - 7.44803 - 46.92758 - - - 7.44811 - 46.92753 - - - 7.44817 - 46.92747 - - - 7.44833 - 46.92724 - - - 7.44853 - 46.92701 - - - 7.44884 - 46.92674 - - - 7.44934 - 46.92627 - - - 7.44971 - 46.92577 - - - 7.45004 - 46.92546 - - - 7.45032 - 46.92500 - - - 7.45058 - 46.92467 - - - 7.45064 - 46.92451 - - - 7.45063 - 46.92444 - - - 7.45061 - 46.92439 - - - 7.45032 - 46.92401 - - - 7.45026 - 46.92387 - - - 7.45023 - 46.92364 - - - 7.45026 - 46.92332 - - - 7.45035 - 46.92308 - - - 7.45048 - 46.92287 - - - 7.45060 - 46.92276 - - - 7.45080 - 46.92258 - - - 7.45088 - 46.92251 - - - 7.45116 - 46.92215 - - - 7.45194 - 46.92145 - - - 7.45212 - 46.92125 - - - 7.45233 - 46.92094 - - - 7.45276 - 46.92045 - - - 7.45288 - 46.92021 - - - 7.45296 - 46.92014 - - - 7.45326 - 46.91994 - - - 7.45353 - 46.91973 - - - 7.45392 - 46.91934 - - - 7.45408 - 46.91920 - - - 7.45445 - 46.91892 - - - 7.45494 - 46.91848 - - - 7.45532 - 46.91813 - - - 7.45541 - 46.91802 - - - 7.45561 - 46.91766 - - - 7.45582 - 46.91738 - - - 7.45596 - 46.91708 - - - 7.45616 - 46.91678 - - - 7.45630 - 46.91649 - - - 7.45642 - 46.91628 - - - 7.45646 - 46.91619 - - - 7.45651 - 46.91605 - - - 7.45656 - 46.91591 - - - 7.45658 - 46.91581 - - - 7.45660 - 46.91569 - - - 7.45661 - 46.91560 - - - 7.45657 - 46.91520 - - - 7.45668 - 46.91472 - - - 7.45669 - 46.91462 - - - 7.45658 - 46.91430 - - - 7.45656 - 46.91425 - - - 7.45650 - 46.91416 - - - 7.45639 - 46.91409 - - - 7.45626 - 46.91403 - - - 7.45610 - 46.91401 - - - 7.45605 - 46.91417 - - - 7.45602 - 46.91435 - - - 7.45603 - 46.91443 - - - 7.45606 - 46.91451 - - - 7.45607 - 46.91455 - - - 7.45607 - 46.91459 - - - 7.45604 - 46.91464 - - - 7.45598 - 46.91468 - - - 7.45558 - 46.91503 - - - 7.45546 - 46.91510 - - - 7.45536 - 46.91514 - - - 7.45525 - 46.91518 - - - 7.45512 - 46.91521 - - - 7.45500 - 46.91525 - - - 7.45491 - 46.91529 - - - 7.45482 - 46.91534 - - - 7.45460 - 46.91549 - - - 7.45419 - 46.91584 - - - 7.45409 - 46.91591 - - - 7.45402 - 46.91595 - - - 7.45393 - 46.91599 - - - 7.45382 - 46.91603 - - - 7.45368 - 46.91607 - - - 7.45350 - 46.91610 - - - 7.45324 - 46.91614 - - - 7.45296 - 46.91617 - - - 7.45279 - 46.91620 - - - 7.45249 - 46.91626 - - - 7.45236 - 46.91628 - - - 7.45220 - 46.91630 - - - 7.45192 - 46.91631 - - - 7.45172 - 46.91632 - - - 7.45155 - 46.91631 - - - 7.45147 - 46.91629 - - - 7.45139 - 46.91626 - - - 7.45131 - 46.91621 - - - 7.45113 - 46.91607 - - - 7.45104 - 46.91600 - - - 7.45096 - 46.91590 - - - 7.45089 - 46.91581 - - - 7.45100 - 46.91577 - - - 7.45107 - 46.91573 - - - 7.45136 - 46.91552 - - - 7.45140 - 46.91548 - - - 7.45145 - 46.91544 - - - 7.45148 - 46.91539 - - - 7.45151 - 46.91534 - - - 7.45152 - 46.91531 - - - 7.45152 - 46.91526 - - - 7.45151 - 46.91522 - - - 7.45149 - 46.91517 - - - 7.45146 - 46.91514 - - - 7.45141 - 46.91511 - - - 7.45134 - 46.91509 - - - 7.45127 - 46.91507 - - - 7.45119 - 46.91507 - - - 7.45109 - 46.91508 - - - 7.45097 - 46.91510 - - - 7.45089 - 46.91512 - - - 7.45009 - 46.91524 - - - 7.44956 - 46.91533 - - - 7.44876 - 46.91545 - - - 7.44850 - 46.91548 - - - 7.44708 - 46.91559 - - - 7.44693 - 46.91561 - - - 7.44684 - 46.91563 - - - 7.44679 - 46.91564 - - - 7.44674 - 46.91567 - - - 7.44670 - 46.91569 - - - 7.44667 - 46.91572 - - - 7.44665 - 46.91575 - - - 7.44659 - 46.91590 - - - 7.44657 - 46.91595 - - - 7.44653 - 46.91599 - - - 7.44650 - 46.91603 - - - 7.44646 - 46.91606 - - - 7.44641 - 46.91609 - - - 7.44635 - 46.91612 - - - 7.44626 - 46.91615 - - - 7.44611 - 46.91619 - - - 7.44598 - 46.91622 - - - 7.44590 - 46.91624 - - - 7.44583 - 46.91626 - - - 7.44578 - 46.91629 - - - 7.44569 - 46.91635 - - - 7.44519 - 46.91671 - - - 7.44485 - 46.91691 - - - 7.44435 - 46.91714 - - - 7.44402 - 46.91727 - - - 7.44388 - 46.91734 - - - 7.44380 - 46.91740 - - - 7.44364 - 46.91758 - - - 7.44351 - 46.91769 - - - 7.44337 - 46.91777 - - - 7.44321 - 46.91784 - - - 7.44268 - 46.91804 - - - 7.44255 - 46.91815 - - - 7.44242 - 46.91831 - - - 7.44229 - 46.91840 - - - 7.44181 - 46.91869 - - - 7.44151 - 46.91882 - - - 7.44114 - 46.91897 - - - 7.44067 - 46.91913 - - - 7.43979 - 46.91932 - - - 7.43965 - 46.91935 - - - PT15M - 3622 - - - - - Bus - - - 716 - - - Gurtenbahn - - - ojp-92-H2-Y-j24-1-50-TA - - - - - - - - - - \ No newline at end of file diff --git a/tests/ojp-fixtures/trr-response-zh-be.xml b/tests/ojp-fixtures/trr-response-zh-be.xml new file mode 100644 index 00000000..d38ebd69 --- /dev/null +++ b/tests/ojp-fixtures/trr-response-zh-be.xml @@ -0,0 +1,365 @@ + + + + + 2025-09-01T21:37:14.4052394+02:00 + MENTZ + + 2025-09-01T21:37:14.4052402+02:00 + 00-7d4736c8715a936eeac687ed84d6593c-7f1aa7c24d574ce2-00 + en + 40 + + + + + 8507000 + + Bern + + + EFA + 111055:0:2 + + 23006351:1 + + + Bern + + + 7.43783 + 46.94846 + + + + + ch:1:sloid:7000:1:2 + + Bern + + + EFA + 111055:0:2 + + 8507000 + 23006351:1 + + + Bern + + + 7.43783 + 46.94846 + + + + + 23006351:1 + + Bern + + + + Bern + + + 7.43783 + 46.94846 + + + + + 8500218 + + Olten + + + EFA + 106652:0:7 + + 23019581:1 + + + Olten + + + 7.90781 + 47.35204 + + + + + ch:1:sloid:218:4:7 + + Olten + + + EFA + 106652:0:7 + + 8500218 + 23019581:1 + + + Olten + + + 7.90781 + 47.35204 + + + + + 23019581:1 + + Olten + + + + Olten + + + 7.90781 + 47.35204 + + + + + 8503000 + + Zürich HB + + + EFA + 108276:0:33 + + 23026261:27 + + + Zürich HB + + + 8.53675 + 47.37852 + + + + + ch:1:sloid:3000:501:33 + + Zürich HB + + + EFA + 108276:0:33 + + 8503000 + 23026261:27 + + + Zürich HB + + + 8.53675 + 47.37852 + + + + + 23026261:27 + + Zürich + + + + Zürich HB + + + 8.53675 + 47.37852 + + + + + + + ID-F3402DBB-3494-425E-8E34-66AE803EAD97 + + ID-F3402DBB-3494-425E-8E34-66AE803EAD97 + PT58M48S + 2025-09-01T20:02:30Z + 2025-09-01T21:01:18Z + 0 + + 1 + PT58M48S + + + ch:1:sloid:7000:1:2 + + Bern + + + PLATFORM_ACCESS_WITH_ASSISTANCE_WHEN_NOTIFIED + + + 2 + + + 2 + + + 2025-09-01T20:02:00Z + 2025-09-01T20:02:30Z + + 1 + + firstClass + manySeatsAvailable + + + secondClass + manySeatsAvailable + + + + ch:1:sloid:218:4:7 + + Olten + + + PLATFORM_ACCESS_WITH_ASSISTANCE_WHEN_NOTIFIED + + + 7 + + + 7 + + + 2025-09-01T20:28:00Z + 2025-09-01T20:28:24Z + + + 2025-09-01T20:30:00Z + 2025-09-01T20:31:18Z + + 2 + + firstClass + manySeatsAvailable + + + secondClass + manySeatsAvailable + + + + ch:1:sloid:3000:501:33 + + Zürich HB + + + PLATFORM_ACCESS_WITHOUT_ASSISTANCE + + + 33 + + + 33 + + + 2025-09-01T21:02:00Z + 2025-09-01T21:01:18Z + + 4 + + + 2025-09-01 + ch:1:sjyid:100001:837-001 + IC8 + ojp:91008:E + H + + rail + interregionalRail + + Zug + + + IC + + + + + InterCity + + + IC + + 23 + + + IC8 + + 837 + + + Businesszone in 1. Klasse + + A__BZ + 50 + + + + Familienwagen mit Spielplatz + + A__FA + 50 + + + + Ruhezone in 1. Klasse + + A__RZ + 50 + + + + Gratis-Internet mit der App SBB FreeSurf + + A__FS + 50 + + + + Niederflureinstieg + + A__NF + 50 + + + + Aussteigeseite: Links + + ojp91008EH_InfoCall130_108276_1 + 50 + + + n/a + + 11 + 8506121 + + Romanshorn + + + + + + + + + + \ No newline at end of file diff --git a/tests/ojp-geoposition.test.ts b/tests/ojp-geoposition.test.ts new file mode 100644 index 00000000..3cf607f7 --- /dev/null +++ b/tests/ojp-geoposition.test.ts @@ -0,0 +1,31 @@ +import * as OJP from '../src'; +import { OJP_Helpers } from './helpers/ojp-test.helpers'; + +describe('OJP Test GeoPosition', () => { + let ojp: OJP.SDK; + + beforeAll(async () => { + ojp = OJP_Helpers.DefaultSDK(); + }); + + test('Constructor with literal coords a-la GoogleMaps lat/lng', () => { + // literal coords, a-la GoogleMaps + const g1 = new OJP.GeoPosition('47.528438383,8.3393993902'); + expect(g1.isValid()).toBe(true); + expect(g1.longitude).toBe(8.339399); + expect(g1.latitude).toBe(47.528438); + expect(g1.asLatLngString()).toBe('47.528438,8.339399'); + }); + + test('Constructor with longitude, Latitude', () => { + const g1 = new OJP.GeoPosition(8.373338383, 47.73); + expect(g1.isValid()).toBe(true); + expect(g1.longitude).toBe(8.373338); + expect(g1.latitude).toBe(47.73); + }); + + test('Constructor with invalid coordinates', () => { + const g1 = new OJP.GeoPosition(Infinity, Infinity); + expect(g1.isValid()).toBe(false); + }); +}); diff --git a/tests/ojp-request.test.ts b/tests/ojp-request.test.ts new file mode 100644 index 00000000..e8ec0c6d --- /dev/null +++ b/tests/ojp-request.test.ts @@ -0,0 +1,85 @@ + +import { XMLParser } from 'fast-xml-parser'; + +import * as OJP from '../src' +import { OJP_Helpers } from './helpers/ojp-test.helpers'; + +import { DefaultXML_Config } from '../src/constants'; + +describe('OJP Test Request', () => { + let ojp: OJP.SDK; + let parser: XMLParser; + + beforeAll(async () => { + ojp = OJP_Helpers.DefaultSDK(); + parser = new XMLParser(); + }); + + test('Test LIR Name', () => { + const request = ojp.requests.LocationInformationRequest.initWithLocationName('Bern'); + const requestorRef = 'test.requestorRef'; + const requestXML = request.buildRequestXML('de', requestorRef, DefaultXML_Config); + + const requestJSON = parser.parse(requestXML); + + const requestRequestorRef = requestJSON['OJP']['OJPRequest']['siri:ServiceRequest']['siri:RequestorRef']; + expect(requestRequestorRef).toBe(requestorRef); + + const requestNodeJSON = requestJSON['OJP']['OJPRequest']['siri:ServiceRequest']['OJPLocationInformationRequest']; + + const requestName = requestNodeJSON['InitialInput']['Name']; + expect(requestName).toBe('Bern'); + + const requestNumberOfResults = requestNodeJSON['Restrictions']['NumberOfResults']; + expect(requestNumberOfResults).toBe(10); + }); + + test('Test LIR PlaceRef', () => { + const request = ojp.requests.LocationInformationRequest.initWithPlaceRef('8507000'); + const requestorRef = 'test.requestorRef'; + const requestXML = request.buildRequestXML('de', requestorRef, DefaultXML_Config); + + const requestJSON = parser.parse(requestXML); + + const requestRequestorRef = requestJSON['OJP']['OJPRequest']['siri:ServiceRequest']['siri:RequestorRef']; + expect(requestRequestorRef).toBe(requestorRef); + + const requestNodeJSON = requestJSON['OJP']['OJPRequest']['siri:ServiceRequest']['OJPLocationInformationRequest']; + + const requestStopPlaceRef = requestNodeJSON['PlaceRef']['StopPlaceRef']; + expect(requestStopPlaceRef).toBe(8507000); + }); + + test('Test LIR BBOX', () => { + const bbox1 = '7.433259,46.937798,7.475252,46.954805'; + const request = ojp.requests.LocationInformationRequest.initWithBBOX(bbox1, ['stop'], 536); + + const requestorRef = 'test.requestorRef'; + const requestXML = request.buildRequestXML('de', requestorRef, DefaultXML_Config); + const requestJSON = parser.parse(requestXML); + + const requestRequestorRef = requestJSON['OJP']['OJPRequest']['siri:ServiceRequest']['siri:RequestorRef']; + expect(requestRequestorRef).toBe(requestorRef); + + const requestNodeJSON = requestJSON['OJP']['OJPRequest']['siri:ServiceRequest']['OJPLocationInformationRequest']; + + expect(requestNodeJSON['Restrictions']['Type']).toBe('stop'); + + const rectangleJSON = requestNodeJSON['InitialInput']['GeoRestriction']['Rectangle']; + + expect(rectangleJSON['UpperLeft']['siri:Longitude']).toBe(7.433259); + expect(rectangleJSON['LowerRight']['siri:Latitude']).toBe(46.937798); + + // This is equivalent with bbox1 + const bbox2 = [7.433259, 46.937798, 7.475252, 46.954805]; + const request2 = ojp.requests.LocationInformationRequest.initWithBBOX(bbox2, ['stop'], 536); + const request2_XML = request2.buildRequestXML('de', requestorRef, DefaultXML_Config); + const request2_JSON = parser.parse(request2_XML); + + const requestNode2_JSON = request2_JSON['OJP']['OJPRequest']['siri:ServiceRequest']['OJPLocationInformationRequest']; + const rectangle2_JSON = requestNode2_JSON['InitialInput']['GeoRestriction']['Rectangle']; + + expect(rectangle2_JSON['UpperLeft']['siri:Longitude']).toBe(7.433259); + expect(rectangle2_JSON['LowerRight']['siri:Latitude']).toBe(46.937798); + }); +}); diff --git a/tests/ser-siri-sx-situations.test.ts b/tests/ser-siri-sx-situations.test.ts new file mode 100644 index 00000000..68972026 --- /dev/null +++ b/tests/ser-siri-sx-situations.test.ts @@ -0,0 +1,49 @@ +import { FileHelpers } from './helpers/file-helpers'; + +import * as OJP_Types from 'ojp-shared-types'; +import { OJP_Helpers } from './helpers/ojp-test.helpers'; + +describe('OJP Test TripRequest Response', () => { + let response: OJP_Types.StopEventDeliverySchema; + + beforeAll(async () => { + const ojp = OJP_Helpers.DefaultSDK(); + const mockXML = FileHelpers.loadMockXML('ser-response-situations.xml'); + const mockRequest = ojp.requests.StopEventRequest.initWithResponseMock(mockXML); + + const ojpResponse = await mockRequest.fetchResponse(ojp); + if (ojpResponse.ok) { + response = ojpResponse.value; + } + }); + + test('Test single situationFullRefs array', () => { + const stopEvents = response.stopEventResult.map(el => el.stopEvent); + + const stopEvent1Situations = stopEvents[0].service.situationFullRefs?.situationFullRef ?? []; + expect(stopEvent1Situations.length).toBe(1); + + const stopEvent2Situations = stopEvents[1].service.situationFullRefs?.situationFullRef ?? []; + expect(stopEvent2Situations.length).toBe(2); + }); + + test('Test situations model', () => { + const situations = response.stopEventResponseContext?.situations?.ptSituation ?? []; + + const situation1 = situations[0]; + + expect(situation1.validityPeriod.length).toBe(1); + + const actions = situation1.publishingActions?.publishingAction ?? []; + expect(actions[0].publishAtScope.scopeType).toBe('line'); + expect(actions[0].passengerInformationAction[0].actionRef).toBe(''); + + const textualContentItems = actions[0].passengerInformationAction[0].textualContent; + expect(textualContentItems[0].summaryContent.summaryText).toBe('Bus services of line 560 are running at irregular intervals.'); + expect(textualContentItems[0].reasonContent?.reasonText).toBe('This is due to an accident.'); + expect(textualContentItems[0].durationContent?.durationText).toBe('The duration of the restriction is not known.'); + expect(textualContentItems[0].descriptionContent.length).toBe(0); + expect(textualContentItems[0].remarkContent.length).toBe(0); + expect(textualContentItems[0].infoLink[0].uri).toBe('https://www.PostAuto.ch'); + }); +}); diff --git a/tests/tr-siri-sx-situations.test.ts b/tests/tr-siri-sx-situations.test.ts new file mode 100644 index 00000000..1e9fc850 --- /dev/null +++ b/tests/tr-siri-sx-situations.test.ts @@ -0,0 +1,52 @@ +import { FileHelpers } from './helpers/file-helpers'; + +import * as OJP_Types from 'ojp-shared-types'; +import { OJP_Helpers } from './helpers/ojp-test.helpers'; + +describe('OJP Test TripRequest Response', () => { + let response: OJP_Types.TripDeliverySchema; + + beforeAll(async () => { + const ojp = OJP_Helpers.DefaultSDK(); + const mockXML = FileHelpers.loadMockXML('tr-response-situations.xml'); + const mockRequest = ojp.requests.TripRequest.initWithResponseMock(mockXML); + + const ojpResponse = await mockRequest.fetchResponse(ojp); + if (ojpResponse.ok) { + response = ojpResponse.value; + } + }); + + test('Test single situationFullRefs array', () => { + const trips = response.tripResult.map(el => el.trip); + + const trip1Situations = trips[0].leg[0].timedLeg?.service.situationFullRefs?.situationFullRef ?? []; + expect(trip1Situations.length).toBe(1); + + const trip2Situations = trips[1].leg[0].timedLeg?.service.situationFullRefs?.situationFullRef ?? []; + expect(trip2Situations.length).toBe(0); + + const trip3Situations = trips[2].leg[3].timedLeg?.service.situationFullRefs?.situationFullRef ?? []; + expect(trip3Situations.length).toBe(3); + }); + + test('Test situations model', () => { + const situations = response.tripResponseContext?.situations?.ptSituation ?? []; + + const situation1 = situations[0]; + + expect(situation1.validityPeriod.length).toBe(1); + + const actions = situation1.publishingActions?.publishingAction ?? []; + expect(actions[0].publishAtScope.scopeType).toBe('stopPoint'); + expect(actions[0].passengerInformationAction[0].actionRef).toBe(''); + + const textualContentItems = actions[0].passengerInformationAction[0].textualContent; + expect(textualContentItems[0].summaryContent.summaryText).toBe('The Neuchâtel, St-Honoré stop is closed.'); + expect(textualContentItems[0].reasonContent?.reasonText).toBe('This is due to construction work.'); + expect(textualContentItems[0].durationContent?.durationText).toBe('The restriction lasts from 07.04.2025, 08:00 until 06.06.2025, 17:00.'); + expect(textualContentItems[0].descriptionContent.length).toBe(0); + expect(textualContentItems[0].remarkContent.length).toBe(0); + expect(textualContentItems[0].infoLink[0].uri).toBe('https://www.transn.ch/'); + }); +}); diff --git a/tests/trip-request-response.test.ts b/tests/trip-request-response.test.ts new file mode 100644 index 00000000..6706488f --- /dev/null +++ b/tests/trip-request-response.test.ts @@ -0,0 +1,96 @@ +import { FileHelpers } from './helpers/file-helpers'; + +import * as OJP_Types from 'ojp-shared-types'; +import * as OJP from '../src'; +import { OJP_Helpers } from './helpers/ojp-test.helpers'; + +describe('OJP Test TripRequest Response', () => { + let trips: OJP.Trip[]; + + beforeAll(async () => { + const ojp = OJP_Helpers.DefaultSDK(); + const mockXML = FileHelpers.loadMockXML('tr-response-zh-be.xml'); + const mockRequest = ojp.requests.TripRequest.initWithResponseMock(mockXML); + const response = await mockRequest.fetchResponse(ojp); + if (response.ok) { + trips = response.value.tripResult.map(el => el.trip); + } else { + // TODO: handle errors + } + }); + + test('Test TR response single array', () => { + // check for MapArrayTags mapping in src/types/openapi/openapi-dependencies.ts + // single child nodes would generate + // trip.leg property + // instead of + // trip.leg[] (expected) + expect(Array.isArray(trips[0].leg)).toBe(true); + expect(trips[0].leg.length).toBe(1); + + expect(trips[1].leg.length).toBe(3); + }); + + test('Test TR XML number parsing', () => { + const trip = trips[1]; + expect(trip.transfers).toBe(1); + }); + + test('Test TR response empty array', () => { + const trip = trips[0]; + + const timedLeg1 = trip.leg[0].timedLeg as OJP_Types.TimedLegSchema; + if (timedLeg1) { + expect(timedLeg1.legIntermediate.length).toBe(0); + } + }) + + test('Test TR response single array', () => { + const trip = trips[2]; + + const timedLeg1 = trip.leg[0].timedLeg as OJP_Types.TimedLegSchema; + if (timedLeg1) { + expect(timedLeg1.legIntermediate.length).toBe(1); + } + + const timedLeg2 = trip.leg[2].timedLeg as OJP_Types.TimedLegSchema; + if (timedLeg2) { + expect(timedLeg2.legIntermediate.length).toBe(6); + } + }); + + test('Test TR response / array',() => { + const trip = trips[2]; + + const timedLeg1 = trip.leg[0].timedLeg as OJP_Types.TimedLegSchema; + if (timedLeg1) { + const service = timedLeg1.service; + expect(service.attribute.length).toBe(2); + } + }); + + test('Test TR Response Status', () => { + const trip = trips[2]; + + expect(trip.cancelled).toBeFalsy(); + expect(trip.unplanned).toBeFalsy(); + expect(trip.deviation).toBeFalsy(); + expect(trip.delayed).toBeFalsy(); + expect(trip.infeasible).toBe(true); + }) + + test('Test TR response array', () => { + const legBoard = trips[0].leg[0].timedLeg?.legBoard ?? null; + const legAlight = trips[0].leg[0].timedLeg?.legAlight ?? null; + + if (legBoard === null || legAlight === null) { + throw new Error('Expected leg board / alight'); + } + + // LegBoard has 2 ExpectedDepartureOccupancy nodes + expect(legBoard.expectedDepartureOccupancy?.length).toBe(2); + + // LegAlight has only one ExpectedDepartureOccupancy node + expect(legAlight.expectedDepartureOccupancy?.length).toBe(1); + }); +}); diff --git a/tests/trr-response.test.ts b/tests/trr-response.test.ts new file mode 100644 index 00000000..d6813d54 --- /dev/null +++ b/tests/trr-response.test.ts @@ -0,0 +1,24 @@ +import { FileHelpers } from './helpers/file-helpers'; + +import * as OJP_Types from 'ojp-shared-types'; +import { OJP_Helpers } from './helpers/ojp-test.helpers'; + +describe('OJP Test TripRefineRequest Response', () => { + let response: OJP_Types.TRR_DeliverySchema; + + beforeAll(async () => { + const ojp = OJP_Helpers.DefaultSDK(); + const mockXML = FileHelpers.loadMockXML('trr-response-zh-be.xml'); + const mockRequest = ojp.requests.TripRefineRequest.initWithResponseMock(mockXML); + + const ojpResponse = await mockRequest.fetchResponse(ojp); + if (ojpResponse.ok) { + response = ojpResponse.value; + } + }); + + test('Test OJPTripRefineDelivery.TripResult array', () => { + const trips = response.tripResult.map(el => el.trip); + expect(trips.length).toBe(1); + }); +}); diff --git a/tsconfig.json b/tsconfig.json index 5aa8350e..265d718c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,16 +1,21 @@ { "compilerOptions": { - "target": "ES2018", - "module": "ES2020", - "lib": ["DOM", "ES2018"], - "declaration": true, + "target": "ES2022", + "module": "CommonJS", + "moduleResolution": "node", + "lib": ["DOM", "ES2022"], + + "rootDir": "src", "outDir": "./lib", - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, "strict": true, - "moduleResolution": "node", - "skipLibCheck": true + + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + + // Ensures .d.ts files are generated. + "declaration": true, + // Ensures JavaScript files are also emitted. + "emitDeclarationOnly": false }, - "include": ["src/**/*"], - "exclude": ["node_modules", "**/*.spec.ts", "**/*.test.ts"] + "include": ["src/**/*"] }