raain-app 1.5.29 → 1.5.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ### Changed
11
+
12
+ - RAD-121:
13
+ - Cumulative reorg
14
+
15
+ ## [1.5.30] - 2025-07-05
16
+
17
+ ### Changed
18
+
19
+ - RAD-121: some reorg + details (W)
20
+
21
+ ## [1.5.29] - 2025-07-04
22
+
10
23
  ### Fixed
11
24
 
12
25
  - RAD-121: with raain-ui 2.3.16, no editable charts, local dates everywhere
@@ -13,10 +13,10 @@ export class RaainCompareStackComponent {
13
13
  }
14
14
  }
15
15
  RaainCompareStackComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RaainCompareStackComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
16
- RaainCompareStackComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RaainCompareStackComponent, selector: "raain-compare-stack", inputs: { compareManager: "compareManager", currentHeight: "currentHeight", cumulative: "cumulative" }, outputs: { selectedPoint: "selectedPoint" }, ngImport: i0, template: "<div *ngIf=\"cumulative\">\n <ion-col size-md=\"6\" size-xs=\"12\">\n <ion-card class=\"card-compare\">\n <ion-card-header>Cumulative</ion-card-header>\n <ion-card-content *ngIf=\"compareManager.globalComparePoints?.length\">\n <raain-compare\n (selectedPoint)=\"onClick($event)\"\n [compareIndex]=\"0\"\n [currentHeight]=\"500\"\n [pointMax]=\"compareManager.globalComparePointsMax\"\n [points]=\"compareManager.globalComparePoints\"></raain-compare>\n </ion-card-content>\n </ion-card>\n </ion-col>\n</div>\n\n<div *ngIf=\"!cumulative\">\n\n <!--\n <ion-col>\n <ion-card id=\"card-matrix\">\n <div *ngIf=\"compareManager?.compareNames?.length\">\n <raain-speed [compareSpeedMatrix]=\"compareManager.compareSpeedMatrix\"\n [compareTrustedIndicator]=\"compareManager.compareTrustedIndicator\"\n [currentHeight]=\"300\"\n ></raain-speed>\n </div>\n <ion-card-content>\n {{ compareManager?.compareVersion }}\n </ion-card-content>\n </ion-card>\n </ion-col> -->\n\n <ion-col *ngFor=\"let compare of compareManager?.uiCompares; index as compareIndex\" size-md=\"6\" size-xs=\"12\">\n <ion-card class=\"card-compare\">\n <ion-card-header>{{ compare.name }} {{ compare.remarks }}\n </ion-card-header>\n <ion-card-content *ngIf=\"compare.comparePoints?.length\">\n <raain-compare\n (selectedPoint)=\"onClick($event)\"\n [compareIndex]=\"compareIndex\"\n [currentHeight]=\"500\"\n [pointMax]=\"compare.comparePointsMax\"\n [points]=\"compare.comparePoints\"></raain-compare>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!--\n <ion-card id=\"card-selected-gauge\" slot=\"end\">\n <ion-card-content>\n <ion-accordion-group>\n\n <ion-accordion value=\"selected\">\n <ion-item color=\"light\" slot=\"header\">\n <ion-label>debug</ion-label>\n </ion-item>\n\n <div class=\"ion-padding\" slot=\"content\">\n date: {{ currentTimeframeTarget.date | date:'yyyy-MM-dd HH:mm:ss' }}<br>\n radarMeasureId: {{ currentTimeframeTarget.radarMeasureId }}<br>\n rainComputationId: {{ currentTimeframeTarget.rainComputationId }}<br>\n rainComputationVersion: {{ currentTimeframeTarget.rainComputationVersion }}<br>\n rainComputationQualitiesPerDate :\n <ul>\n <li *ngFor=\"let rcq of currentTimeframeTarget.rainComputationQualitiesPerDate\">\n {{ rcq.version }} - {{ rcq.id }}\n </li>\n </ul>\n </div>\n\n </ion-accordion>\n <ion-accordion *ngIf=\"selectedGauge\" value=\"context\">\n <ion-item color=\"light\" slot=\"header\">\n <ion-label>{{ selectedGaugeInPointsDetail }}</ion-label>\n </ion-item>\n <div [innerHTML]=\"formatLabelOfSelectedGauge(selectedGaugeInPoints)\" class=\"ion-padding\"\n slot=\"content\"></div>\n </ion-accordion>\n </ion-accordion-group>\n </ion-card-content>\n </ion-card>\n -->\n</div>\n", styles: ["#card-matrix{width:170px}.card-compare{min-width:300px}ion-card-header{padding:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i2.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i2.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i3.RaainCompareComponent, selector: "raain-compare", inputs: ["points", "pointMax", "remarks", "compareIndex", "currentHeight", "currentWidth"], outputs: ["selectedPoint"] }] });
16
+ RaainCompareStackComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RaainCompareStackComponent, selector: "raain-compare-stack", inputs: { compareManager: "compareManager", currentHeight: "currentHeight", cumulative: "cumulative" }, outputs: { selectedPoint: "selectedPoint" }, ngImport: i0, template: "<div *ngIf=\"cumulative\">\n <ion-col size-md=\"6\" size-xs=\"12\">\n <ion-card class=\"card-compare\">\n <ion-card-header>Cumulative\n [{{ compareManager.compareDates[0] | date:'yyyy-MM-dd HH:mm' }}\n - {{ compareManager.compareDates[compareManager.compareDates.length - 1] | date:'yyyy-MM-dd HH:mm' }}]\n </ion-card-header>\n <ion-card-content *ngIf=\"compareManager.globalComparePoints?.length\">\n <raain-compare\n (selectedPoint)=\"onClick($event)\"\n [compareIndex]=\"0\"\n [currentHeight]=\"500\"\n [pointMax]=\"compareManager.globalComparePointsMax\"\n [points]=\"compareManager.globalComparePoints\"></raain-compare>\n </ion-card-content>\n </ion-card>\n </ion-col>\n</div>\n\n<div *ngIf=\"!cumulative\">\n <ion-col *ngFor=\"let compare of compareManager?.uiCompares; index as compareIndex\" size-md=\"6\" size-xs=\"12\">\n <ion-card class=\"card-compare\">\n <ion-card-header>Gauges filled {{ compare.name }} {{ compare.remarks }}\n </ion-card-header>\n <ion-card-content *ngIf=\"compare.comparePoints?.length\">\n <raain-compare\n (selectedPoint)=\"onClick($event)\"\n [compareIndex]=\"compareIndex\"\n [currentHeight]=\"500\"\n [pointMax]=\"compare.comparePointsMax\"\n [points]=\"compare.comparePoints\"></raain-compare>\n </ion-card-content>\n </ion-card>\n </ion-col>\n</div>\n\n<!-- TODO Speed average used\n<ion-col>\n Speed average used : {{ compareManager?.compareSpeed?.pixelsPerPeriod ?? 0 / 12 }} m/s\n with {{ compareManager?.compareSpeed?.angleInDegrees }} \u00B0\n</ion-col>\n-->\n", styles: ["#card-matrix{width:170px}.card-compare{min-width:300px}ion-card-header{padding:0 0 0 10px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i2.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i2.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i3.RaainCompareComponent, selector: "raain-compare", inputs: ["points", "pointMax", "remarks", "compareIndex", "currentHeight", "currentWidth"], outputs: ["selectedPoint"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] });
17
17
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RaainCompareStackComponent, decorators: [{
18
18
  type: Component,
19
- args: [{ selector: 'raain-compare-stack', template: "<div *ngIf=\"cumulative\">\n <ion-col size-md=\"6\" size-xs=\"12\">\n <ion-card class=\"card-compare\">\n <ion-card-header>Cumulative</ion-card-header>\n <ion-card-content *ngIf=\"compareManager.globalComparePoints?.length\">\n <raain-compare\n (selectedPoint)=\"onClick($event)\"\n [compareIndex]=\"0\"\n [currentHeight]=\"500\"\n [pointMax]=\"compareManager.globalComparePointsMax\"\n [points]=\"compareManager.globalComparePoints\"></raain-compare>\n </ion-card-content>\n </ion-card>\n </ion-col>\n</div>\n\n<div *ngIf=\"!cumulative\">\n\n <!--\n <ion-col>\n <ion-card id=\"card-matrix\">\n <div *ngIf=\"compareManager?.compareNames?.length\">\n <raain-speed [compareSpeedMatrix]=\"compareManager.compareSpeedMatrix\"\n [compareTrustedIndicator]=\"compareManager.compareTrustedIndicator\"\n [currentHeight]=\"300\"\n ></raain-speed>\n </div>\n <ion-card-content>\n {{ compareManager?.compareVersion }}\n </ion-card-content>\n </ion-card>\n </ion-col> -->\n\n <ion-col *ngFor=\"let compare of compareManager?.uiCompares; index as compareIndex\" size-md=\"6\" size-xs=\"12\">\n <ion-card class=\"card-compare\">\n <ion-card-header>{{ compare.name }} {{ compare.remarks }}\n </ion-card-header>\n <ion-card-content *ngIf=\"compare.comparePoints?.length\">\n <raain-compare\n (selectedPoint)=\"onClick($event)\"\n [compareIndex]=\"compareIndex\"\n [currentHeight]=\"500\"\n [pointMax]=\"compare.comparePointsMax\"\n [points]=\"compare.comparePoints\"></raain-compare>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!--\n <ion-card id=\"card-selected-gauge\" slot=\"end\">\n <ion-card-content>\n <ion-accordion-group>\n\n <ion-accordion value=\"selected\">\n <ion-item color=\"light\" slot=\"header\">\n <ion-label>debug</ion-label>\n </ion-item>\n\n <div class=\"ion-padding\" slot=\"content\">\n date: {{ currentTimeframeTarget.date | date:'yyyy-MM-dd HH:mm:ss' }}<br>\n radarMeasureId: {{ currentTimeframeTarget.radarMeasureId }}<br>\n rainComputationId: {{ currentTimeframeTarget.rainComputationId }}<br>\n rainComputationVersion: {{ currentTimeframeTarget.rainComputationVersion }}<br>\n rainComputationQualitiesPerDate :\n <ul>\n <li *ngFor=\"let rcq of currentTimeframeTarget.rainComputationQualitiesPerDate\">\n {{ rcq.version }} - {{ rcq.id }}\n </li>\n </ul>\n </div>\n\n </ion-accordion>\n <ion-accordion *ngIf=\"selectedGauge\" value=\"context\">\n <ion-item color=\"light\" slot=\"header\">\n <ion-label>{{ selectedGaugeInPointsDetail }}</ion-label>\n </ion-item>\n <div [innerHTML]=\"formatLabelOfSelectedGauge(selectedGaugeInPoints)\" class=\"ion-padding\"\n slot=\"content\"></div>\n </ion-accordion>\n </ion-accordion-group>\n </ion-card-content>\n </ion-card>\n -->\n</div>\n", styles: ["#card-matrix{width:170px}.card-compare{min-width:300px}ion-card-header{padding:0}\n"] }]
19
+ args: [{ selector: 'raain-compare-stack', template: "<div *ngIf=\"cumulative\">\n <ion-col size-md=\"6\" size-xs=\"12\">\n <ion-card class=\"card-compare\">\n <ion-card-header>Cumulative\n [{{ compareManager.compareDates[0] | date:'yyyy-MM-dd HH:mm' }}\n - {{ compareManager.compareDates[compareManager.compareDates.length - 1] | date:'yyyy-MM-dd HH:mm' }}]\n </ion-card-header>\n <ion-card-content *ngIf=\"compareManager.globalComparePoints?.length\">\n <raain-compare\n (selectedPoint)=\"onClick($event)\"\n [compareIndex]=\"0\"\n [currentHeight]=\"500\"\n [pointMax]=\"compareManager.globalComparePointsMax\"\n [points]=\"compareManager.globalComparePoints\"></raain-compare>\n </ion-card-content>\n </ion-card>\n </ion-col>\n</div>\n\n<div *ngIf=\"!cumulative\">\n <ion-col *ngFor=\"let compare of compareManager?.uiCompares; index as compareIndex\" size-md=\"6\" size-xs=\"12\">\n <ion-card class=\"card-compare\">\n <ion-card-header>Gauges filled {{ compare.name }} {{ compare.remarks }}\n </ion-card-header>\n <ion-card-content *ngIf=\"compare.comparePoints?.length\">\n <raain-compare\n (selectedPoint)=\"onClick($event)\"\n [compareIndex]=\"compareIndex\"\n [currentHeight]=\"500\"\n [pointMax]=\"compare.comparePointsMax\"\n [points]=\"compare.comparePoints\"></raain-compare>\n </ion-card-content>\n </ion-card>\n </ion-col>\n</div>\n\n<!-- TODO Speed average used\n<ion-col>\n Speed average used : {{ compareManager?.compareSpeed?.pixelsPerPeriod ?? 0 / 12 }} m/s\n with {{ compareManager?.compareSpeed?.angleInDegrees }} \u00B0\n</ion-col>\n-->\n", styles: ["#card-matrix{width:170px}.card-compare{min-width:300px}ion-card-header{padding:0 0 0 10px}\n"] }]
20
20
  }], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { compareManager: [{
21
21
  type: Input
22
22
  }], currentHeight: [{
@@ -26,4 +26,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
26
26
  }], cumulative: [{
27
27
  type: Input
28
28
  }] } });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tY29tcGFyZS1zdGFjay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9zaGFyZWQvcmFhaW4tY29tcGFyZS1zdGFjay9yYWFpbi1jb21wYXJlLXN0YWNrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9jb3JlL3NoYXJlZC9yYWFpbi1jb21wYXJlLXN0YWNrL3JhYWluLWNvbXBhcmUtc3RhY2suY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFTN0UsTUFBTSxPQUFPLDBCQUEwQjtJQWFuQyxZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUwzQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUF5QyxDQUFDO0lBSzVDLENBQUM7SUFFNUIsT0FBTyxDQUFDLENBQXdDO1FBQ3RELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxZQUFZLEVBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7O3dIQWpCUSwwQkFBMEI7NEdBQTFCLDBCQUEwQixnTkNUdkMsNm9HQW9GQTs0RkQzRWEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNJLHFCQUFxQjs2RkFNeEIsY0FBYztzQkFEcEIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLE1BQU07Z0JBSUEsVUFBVTtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBOZ1pvbmUsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1hZVHlwZX0gZnJvbSAnLi4veHl0eXBlJztcbmltcG9ydCB7Q29tcGFyZU1hbmFnZXJ9IGZyb20gJy4uL3Rvb2xzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdyYWFpbi1jb21wYXJlLXN0YWNrJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmFhaW4tY29tcGFyZS1zdGFjay5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcmFhaW4tY29tcGFyZS1zdGFjay5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBSYWFpbkNvbXBhcmVTdGFja0NvbXBvbmVudCB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY29tcGFyZU1hbmFnZXI6IENvbXBhcmVNYW5hZ2VyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY3VycmVudEhlaWdodDogbnVtYmVyO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHNlbGVjdGVkUG9pbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHtwb2ludDogWFlUeXBlOyBjb21wYXJlSW5kZXg6IG51bWJlcn0+KCk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjdW11bGF0aXZlOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge31cblxuICAgIHByb3RlY3RlZCBvbkNsaWNrKGU6IHtwb2ludDogWFlUeXBlOyBjb21wYXJlSW5kZXg6IG51bWJlcn0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFBvaW50LmVtaXQoe3BvaW50OiBlLnBvaW50LCBjb21wYXJlSW5kZXg6IGUuY29tcGFyZUluZGV4fSk7XG4gICAgfVxufVxuIiwiPGRpdiAqbmdJZj1cImN1bXVsYXRpdmVcIj5cbiAgPGlvbi1jb2wgc2l6ZS1tZD1cIjZcIiBzaXplLXhzPVwiMTJcIj5cbiAgICA8aW9uLWNhcmQgY2xhc3M9XCJjYXJkLWNvbXBhcmVcIj5cbiAgICAgIDxpb24tY2FyZC1oZWFkZXI+Q3VtdWxhdGl2ZTwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgPGlvbi1jYXJkLWNvbnRlbnQgKm5nSWY9XCJjb21wYXJlTWFuYWdlci5nbG9iYWxDb21wYXJlUG9pbnRzPy5sZW5ndGhcIj5cbiAgICAgICAgPHJhYWluLWNvbXBhcmVcbiAgICAgICAgICAoc2VsZWN0ZWRQb2ludCk9XCJvbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgIFtjb21wYXJlSW5kZXhdPVwiMFwiXG4gICAgICAgICAgW2N1cnJlbnRIZWlnaHRdPVwiNTAwXCJcbiAgICAgICAgICBbcG9pbnRNYXhdPVwiY29tcGFyZU1hbmFnZXIuZ2xvYmFsQ29tcGFyZVBvaW50c01heFwiXG4gICAgICAgICAgW3BvaW50c109XCJjb21wYXJlTWFuYWdlci5nbG9iYWxDb21wYXJlUG9pbnRzXCI+PC9yYWFpbi1jb21wYXJlPlxuICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgIDwvaW9uLWNhcmQ+XG4gIDwvaW9uLWNvbD5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiIWN1bXVsYXRpdmVcIj5cblxuICA8IS0tXG4gIDxpb24tY29sPlxuICAgIDxpb24tY2FyZCBpZD1cImNhcmQtbWF0cml4XCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY29tcGFyZU1hbmFnZXI/LmNvbXBhcmVOYW1lcz8ubGVuZ3RoXCI+XG4gICAgICAgIDxyYWFpbi1zcGVlZCBbY29tcGFyZVNwZWVkTWF0cml4XT1cImNvbXBhcmVNYW5hZ2VyLmNvbXBhcmVTcGVlZE1hdHJpeFwiXG4gICAgICAgICAgICAgICAgICAgICBbY29tcGFyZVRydXN0ZWRJbmRpY2F0b3JdPVwiY29tcGFyZU1hbmFnZXIuY29tcGFyZVRydXN0ZWRJbmRpY2F0b3JcIlxuICAgICAgICAgICAgICAgICAgICAgW2N1cnJlbnRIZWlnaHRdPVwiMzAwXCJcbiAgICAgICAgPjwvcmFhaW4tc3BlZWQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICB7eyBjb21wYXJlTWFuYWdlcj8uY29tcGFyZVZlcnNpb24gfX1cbiAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICA8L2lvbi1jYXJkPlxuICA8L2lvbi1jb2w+IC0tPlxuXG4gIDxpb24tY29sICpuZ0Zvcj1cImxldCBjb21wYXJlIG9mICBjb21wYXJlTWFuYWdlcj8udWlDb21wYXJlczsgaW5kZXggYXMgY29tcGFyZUluZGV4XCIgc2l6ZS1tZD1cIjZcIiBzaXplLXhzPVwiMTJcIj5cbiAgICA8aW9uLWNhcmQgY2xhc3M9XCJjYXJkLWNvbXBhcmVcIj5cbiAgICAgIDxpb24tY2FyZC1oZWFkZXI+e3sgY29tcGFyZS5uYW1lIH19IHt7IGNvbXBhcmUucmVtYXJrcyB9fVxuICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICA8aW9uLWNhcmQtY29udGVudCAqbmdJZj1cImNvbXBhcmUuY29tcGFyZVBvaW50cz8ubGVuZ3RoXCI+XG4gICAgICAgIDxyYWFpbi1jb21wYXJlXG4gICAgICAgICAgKHNlbGVjdGVkUG9pbnQpPVwib25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICBbY29tcGFyZUluZGV4XT1cImNvbXBhcmVJbmRleFwiXG4gICAgICAgICAgW2N1cnJlbnRIZWlnaHRdPVwiNTAwXCJcbiAgICAgICAgICBbcG9pbnRNYXhdPVwiY29tcGFyZS5jb21wYXJlUG9pbnRzTWF4XCJcbiAgICAgICAgICBbcG9pbnRzXT1cImNvbXBhcmUuY29tcGFyZVBvaW50c1wiPjwvcmFhaW4tY29tcGFyZT5cbiAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICA8L2lvbi1jYXJkPlxuICA8L2lvbi1jb2w+XG5cbiAgPCEtLVxuICA8aW9uLWNhcmQgIGlkPVwiY2FyZC1zZWxlY3RlZC1nYXVnZVwiIHNsb3Q9XCJlbmRcIj5cbiAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgIDxpb24tYWNjb3JkaW9uLWdyb3VwPlxuXG4gICAgICAgIDxpb24tYWNjb3JkaW9uIHZhbHVlPVwic2VsZWN0ZWRcIj5cbiAgICAgICAgICA8aW9uLWl0ZW0gY29sb3I9XCJsaWdodFwiIHNsb3Q9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgIDxpb24tbGFiZWw+ZGVidWc8L2lvbi1sYWJlbD5cbiAgICAgICAgICA8L2lvbi1pdGVtPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlvbi1wYWRkaW5nXCIgc2xvdD1cImNvbnRlbnRcIj5cbiAgICAgICAgICAgIGRhdGU6IHt7IGN1cnJlbnRUaW1lZnJhbWVUYXJnZXQuZGF0ZSB8ICBkYXRlOid5eXl5LU1NLWRkIEhIOm1tOnNzJyB9fTxicj5cbiAgICAgICAgICAgIHJhZGFyTWVhc3VyZUlkOiB7eyBjdXJyZW50VGltZWZyYW1lVGFyZ2V0LnJhZGFyTWVhc3VyZUlkIH19PGJyPlxuICAgICAgICAgICAgcmFpbkNvbXB1dGF0aW9uSWQ6IHt7IGN1cnJlbnRUaW1lZnJhbWVUYXJnZXQucmFpbkNvbXB1dGF0aW9uSWQgfX08YnI+XG4gICAgICAgICAgICByYWluQ29tcHV0YXRpb25WZXJzaW9uOiB7eyBjdXJyZW50VGltZWZyYW1lVGFyZ2V0LnJhaW5Db21wdXRhdGlvblZlcnNpb24gfX08YnI+XG4gICAgICAgICAgICByYWluQ29tcHV0YXRpb25RdWFsaXRpZXNQZXJEYXRlIDpcbiAgICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCByY3Egb2YgY3VycmVudFRpbWVmcmFtZVRhcmdldC5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXNQZXJEYXRlXCI+XG4gICAgICAgICAgICAgICAge3sgcmNxLnZlcnNpb24gfX0gLSB7eyByY3EuaWQgfX1cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9pb24tYWNjb3JkaW9uPlxuICAgICAgICA8aW9uLWFjY29yZGlvbiAqbmdJZj1cInNlbGVjdGVkR2F1Z2VcIiB2YWx1ZT1cImNvbnRleHRcIj5cbiAgICAgICAgICA8aW9uLWl0ZW0gY29sb3I9XCJsaWdodFwiIHNsb3Q9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgIDxpb24tbGFiZWw+e3sgc2VsZWN0ZWRHYXVnZUluUG9pbnRzRGV0YWlsIH19PC9pb24tbGFiZWw+XG4gICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZm9ybWF0TGFiZWxPZlNlbGVjdGVkR2F1Z2Uoc2VsZWN0ZWRHYXVnZUluUG9pbnRzKVwiIGNsYXNzPVwiaW9uLXBhZGRpbmdcIlxuICAgICAgICAgICAgICAgc2xvdD1cImNvbnRlbnRcIj48L2Rpdj5cbiAgICAgICAgPC9pb24tYWNjb3JkaW9uPlxuICAgICAgPC9pb24tYWNjb3JkaW9uLWdyb3VwPlxuICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgPC9pb24tY2FyZD5cbiAgLS0+XG48L2Rpdj5cbiJdfQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tY29tcGFyZS1zdGFjay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9zaGFyZWQvcmFhaW4tY29tcGFyZS1zdGFjay9yYWFpbi1jb21wYXJlLXN0YWNrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9jb3JlL3NoYXJlZC9yYWFpbi1jb21wYXJlLXN0YWNrL3JhYWluLWNvbXBhcmUtc3RhY2suY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFTN0UsTUFBTSxPQUFPLDBCQUEwQjtJQWFuQyxZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUwzQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUF5QyxDQUFDO0lBSzVDLENBQUM7SUFFNUIsT0FBTyxDQUFDLENBQXdDO1FBQ3RELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxZQUFZLEVBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7O3dIQWpCUSwwQkFBMEI7NEdBQTFCLDBCQUEwQixnTkNUdkMsNjREQTBDQTs0RkRqQ2EsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNJLHFCQUFxQjs2RkFNeEIsY0FBYztzQkFEcEIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLE1BQU07Z0JBSUEsVUFBVTtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBOZ1pvbmUsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1hZVHlwZX0gZnJvbSAnLi4veHl0eXBlJztcbmltcG9ydCB7Q29tcGFyZU1hbmFnZXJ9IGZyb20gJy4uL3Rvb2xzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdyYWFpbi1jb21wYXJlLXN0YWNrJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmFhaW4tY29tcGFyZS1zdGFjay5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcmFhaW4tY29tcGFyZS1zdGFjay5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBSYWFpbkNvbXBhcmVTdGFja0NvbXBvbmVudCB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY29tcGFyZU1hbmFnZXI6IENvbXBhcmVNYW5hZ2VyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY3VycmVudEhlaWdodDogbnVtYmVyO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHNlbGVjdGVkUG9pbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHtwb2ludDogWFlUeXBlOyBjb21wYXJlSW5kZXg6IG51bWJlcn0+KCk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjdW11bGF0aXZlOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge31cblxuICAgIHByb3RlY3RlZCBvbkNsaWNrKGU6IHtwb2ludDogWFlUeXBlOyBjb21wYXJlSW5kZXg6IG51bWJlcn0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFBvaW50LmVtaXQoe3BvaW50OiBlLnBvaW50LCBjb21wYXJlSW5kZXg6IGUuY29tcGFyZUluZGV4fSk7XG4gICAgfVxufVxuIiwiPGRpdiAqbmdJZj1cImN1bXVsYXRpdmVcIj5cbiAgICA8aW9uLWNvbCBzaXplLW1kPVwiNlwiIHNpemUteHM9XCIxMlwiPlxuICAgICAgICA8aW9uLWNhcmQgY2xhc3M9XCJjYXJkLWNvbXBhcmVcIj5cbiAgICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+Q3VtdWxhdGl2ZVxuICAgICAgICAgICAgICAgIFt7eyBjb21wYXJlTWFuYWdlci5jb21wYXJlRGF0ZXNbMF0gfCBkYXRlOid5eXl5LU1NLWRkIEhIOm1tJyB9fVxuICAgICAgICAgICAgICAgIC0ge3sgY29tcGFyZU1hbmFnZXIuY29tcGFyZURhdGVzW2NvbXBhcmVNYW5hZ2VyLmNvbXBhcmVEYXRlcy5sZW5ndGggLSAxXSB8IGRhdGU6J3l5eXktTU0tZGQgSEg6bW0nIH19XVxuICAgICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudCAqbmdJZj1cImNvbXBhcmVNYW5hZ2VyLmdsb2JhbENvbXBhcmVQb2ludHM/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgIDxyYWFpbi1jb21wYXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRQb2ludCk9XCJvbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbXBhcmVJbmRleF09XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjdXJyZW50SGVpZ2h0XT1cIjUwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcG9pbnRNYXhdPVwiY29tcGFyZU1hbmFnZXIuZ2xvYmFsQ29tcGFyZVBvaW50c01heFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcG9pbnRzXT1cImNvbXBhcmVNYW5hZ2VyLmdsb2JhbENvbXBhcmVQb2ludHNcIj48L3JhYWluLWNvbXBhcmU+XG4gICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgPC9pb24tY29sPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCIhY3VtdWxhdGl2ZVwiPlxuICAgIDxpb24tY29sICpuZ0Zvcj1cImxldCBjb21wYXJlIG9mICBjb21wYXJlTWFuYWdlcj8udWlDb21wYXJlczsgaW5kZXggYXMgY29tcGFyZUluZGV4XCIgc2l6ZS1tZD1cIjZcIiBzaXplLXhzPVwiMTJcIj5cbiAgICAgICAgPGlvbi1jYXJkIGNsYXNzPVwiY2FyZC1jb21wYXJlXCI+XG4gICAgICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPkdhdWdlcyBmaWxsZWQge3sgY29tcGFyZS5uYW1lIH19IHt7IGNvbXBhcmUucmVtYXJrcyB9fVxuICAgICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudCAqbmdJZj1cImNvbXBhcmUuY29tcGFyZVBvaW50cz8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgPHJhYWluLWNvbXBhcmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZFBvaW50KT1cIm9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29tcGFyZUluZGV4XT1cImNvbXBhcmVJbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudEhlaWdodF09XCI1MDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3BvaW50TWF4XT1cImNvbXBhcmUuY29tcGFyZVBvaW50c01heFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcG9pbnRzXT1cImNvbXBhcmUuY29tcGFyZVBvaW50c1wiPjwvcmFhaW4tY29tcGFyZT5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgPC9pb24tY2FyZD5cbiAgICA8L2lvbi1jb2w+XG48L2Rpdj5cblxuPCEtLSBUT0RPIFNwZWVkIGF2ZXJhZ2UgdXNlZFxuPGlvbi1jb2w+XG4gICAgU3BlZWQgYXZlcmFnZSB1c2VkIDoge3sgY29tcGFyZU1hbmFnZXI/LmNvbXBhcmVTcGVlZD8ucGl4ZWxzUGVyUGVyaW9kID8/IDAgLyAxMiB9fSBtL3NcbiAgICB3aXRoIHt7IGNvbXBhcmVNYW5hZ2VyPy5jb21wYXJlU3BlZWQ/LmFuZ2xlSW5EZWdyZWVzIH19IMKwXG48L2lvbi1jb2w+XG4tLT5cbiJdfQ==