@the-liberators/ngx-scrumteamsurvey-tools 2.2.80 → 2.2.81

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.
@@ -0,0 +1,35 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "@angular/material/tooltip";
5
+ export class AgeIndicatorComponent {
6
+ constructor() {
7
+ }
8
+ ngOnInit() {
9
+ var measureDate = new Date(this.lastMeasured);
10
+ var lastMeasuredMonths = Math.max(0, (new Date().getFullYear() - measureDate.getFullYear()) * 12 - measureDate.getMonth() + new Date().getMonth());
11
+ if (lastMeasuredMonths > 12) {
12
+ lastMeasuredMonths == 12;
13
+ }
14
+ this.lastMeasuredDots = new Array(lastMeasuredMonths);
15
+ this.lastMeasuredOpacity = 1 - (lastMeasuredMonths / 14);
16
+ if (lastMeasuredMonths <= 1) {
17
+ this.lastMeasuredTooltip = 'This factor was last measured 1 month or less ago. It is fresh data.';
18
+ }
19
+ else if (lastMeasuredMonths >= 12) {
20
+ this.lastMeasuredTooltip = 'This factor was last measured 12 month or more ago. We recommend to measure this again to keep data fresh.';
21
+ }
22
+ else {
23
+ this.lastMeasuredTooltip = 'This factor was last measured ' + lastMeasuredMonths + ' month or more ago. The fresher your data, the more reliable it is.';
24
+ }
25
+ }
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AgeIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: AgeIndicatorComponent, selector: "age-indicator", inputs: { lastMeasured: "lastMeasured" }, ngImport: i0, template: "<div class=\"age-indicator\" [style.opacity]=\"lastMeasuredOpacity\" [matTooltip]=\"lastMeasuredTooltip\" *ngIf=\"lastMeasuredDots\">\n <div class=\"age-indicator-dot\" *ngFor=\"let dot of lastMeasuredDots\"></div>\n</div>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}\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: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
28
+ }
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AgeIndicatorComponent, decorators: [{
30
+ type: Component,
31
+ args: [{ selector: 'age-indicator', template: "<div class=\"age-indicator\" [style.opacity]=\"lastMeasuredOpacity\" [matTooltip]=\"lastMeasuredTooltip\" *ngIf=\"lastMeasuredDots\">\n <div class=\"age-indicator-dot\" *ngFor=\"let dot of lastMeasuredDots\"></div>\n</div>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}\n"] }]
32
+ }], ctorParameters: () => [], propDecorators: { lastMeasured: [{
33
+ type: Input
34
+ }] } });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlLWluZGljYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvcmVzdWx0cy9jb21wb25lbnRzL2FnZS1pbmRpY2F0b3IvYWdlLWluZGljYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvcmVzdWx0cy9jb21wb25lbnRzL2FnZS1pbmRpY2F0b3IvYWdlLWluZGljYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7OztBQU96RCxNQUFNLE9BQU8scUJBQXFCO0lBTS9CO0lBQ0EsQ0FBQztJQUVNLFFBQVE7UUFDWixJQUFJLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUMsSUFBSSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEdBQUcsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbkosSUFBSSxrQkFBa0IsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUFDLGtCQUFrQixJQUFJLEVBQUUsQ0FBQztRQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsR0FBRyxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBRXpELElBQUksa0JBQWtCLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLHNFQUFzRSxDQUFDO1FBQ3JHLENBQUM7YUFDSSxJQUFJLGtCQUFrQixJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyw0R0FBNEcsQ0FBQztRQUMzSSxDQUFDO2FBQ0ksQ0FBQztZQUNILElBQUksQ0FBQyxtQkFBbUIsR0FBRyxnQ0FBZ0MsR0FBRyxrQkFBa0IsR0FBRyxxRUFBcUUsQ0FBQztRQUM1SixDQUFDO0lBQ0wsQ0FBQzs4R0F6QlUscUJBQXFCO2tHQUFyQixxQkFBcUIsK0ZDUGxDLG9PQUdBOzsyRkRJYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsZUFBZTt3REFLZixZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FnZS1pbmRpY2F0b3InLFxuICAgdGVtcGxhdGVVcmw6ICcuL2FnZS1pbmRpY2F0b3IuY29tcG9uZW50Lmh0bWwnLFxuICAgc3R5bGVVcmxzOiBbJy4vYWdlLWluZGljYXRvci5jb21wb25lbnQubGVzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBBZ2VJbmRpY2F0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgQElucHV0KCkgbGFzdE1lYXN1cmVkOiBEYXRlO1xuICAgcHVibGljIGxhc3RNZWFzdXJlZERvdHM6IEFycmF5PG51bWJlcj47XG4gICBwdWJsaWMgbGFzdE1lYXN1cmVkT3BhY2l0eTogbnVtYmVyO1xuICAgcHVibGljIGxhc3RNZWFzdXJlZFRvb2x0aXA6IHN0cmluZztcblxuICAgY29uc3RydWN0b3IoKSB7XG4gICB9XG4gIFxuICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgdmFyIG1lYXN1cmVEYXRlID0gbmV3IERhdGUodGhpcy5sYXN0TWVhc3VyZWQpO1xuICAgICAgdmFyIGxhc3RNZWFzdXJlZE1vbnRocyA9IE1hdGgubWF4KDAsIChuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgLSBtZWFzdXJlRGF0ZS5nZXRGdWxsWWVhcigpKSAqIDEyIC0gbWVhc3VyZURhdGUuZ2V0TW9udGgoKSArIG5ldyBEYXRlKCkuZ2V0TW9udGgoKSk7XG4gICAgICBpZiAobGFzdE1lYXN1cmVkTW9udGhzID4gMTIpIHsgbGFzdE1lYXN1cmVkTW9udGhzID09IDEyOyB9XG4gICAgICB0aGlzLmxhc3RNZWFzdXJlZERvdHMgPSBuZXcgQXJyYXkobGFzdE1lYXN1cmVkTW9udGhzKTtcbiAgICAgIHRoaXMubGFzdE1lYXN1cmVkT3BhY2l0eSA9IDEgLSAobGFzdE1lYXN1cmVkTW9udGhzIC8gMTQpO1xuXG4gICAgICBpZiAobGFzdE1lYXN1cmVkTW9udGhzIDw9IDEpIHtcbiAgICAgICAgIHRoaXMubGFzdE1lYXN1cmVkVG9vbHRpcCA9ICdUaGlzIGZhY3RvciB3YXMgbGFzdCBtZWFzdXJlZCAxIG1vbnRoIG9yIGxlc3MgYWdvLiBJdCBpcyBmcmVzaCBkYXRhLic7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChsYXN0TWVhc3VyZWRNb250aHMgPj0gMTIpIHtcbiAgICAgICAgIHRoaXMubGFzdE1lYXN1cmVkVG9vbHRpcCA9ICdUaGlzIGZhY3RvciB3YXMgbGFzdCBtZWFzdXJlZCAxMiBtb250aCBvciBtb3JlIGFnby4gV2UgcmVjb21tZW5kIHRvIG1lYXN1cmUgdGhpcyBhZ2FpbiB0byBrZWVwIGRhdGEgZnJlc2guJztcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICAgdGhpcy5sYXN0TWVhc3VyZWRUb29sdGlwID0gJ1RoaXMgZmFjdG9yIHdhcyBsYXN0IG1lYXN1cmVkICcgKyBsYXN0TWVhc3VyZWRNb250aHMgKyAnIG1vbnRoIG9yIG1vcmUgYWdvLiBUaGUgZnJlc2hlciB5b3VyIGRhdGEsIHRoZSBtb3JlIHJlbGlhYmxlIGl0IGlzLic7XG4gICAgICB9XG4gIH1cbiAgXG59XG4iLCI8ZGl2IGNsYXNzPVwiYWdlLWluZGljYXRvclwiIFtzdHlsZS5vcGFjaXR5XT1cImxhc3RNZWFzdXJlZE9wYWNpdHlcIiBbbWF0VG9vbHRpcF09XCJsYXN0TWVhc3VyZWRUb29sdGlwXCIgKm5nSWY9XCJsYXN0TWVhc3VyZWREb3RzXCI+XG4gICA8ZGl2IGNsYXNzPVwiYWdlLWluZGljYXRvci1kb3RcIiAqbmdGb3I9XCJsZXQgZG90IG9mIGxhc3RNZWFzdXJlZERvdHNcIj48L2Rpdj5cbjwvZGl2PlxuIl19
@@ -34,7 +34,7 @@ export class FactorsComponent extends ComponentWithViewStateBase {
34
34
  }
35
35
  ;
36
36
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: FactorsComponent, deps: [{ token: VIEWSTATE_PROVIDER }, { token: i1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
37
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: FactorsComponent, selector: "factors", usesInheritance: true, ngImport: i0, template: "<div class=\"results\" *ngIf=\"loaded\">\n <limitationsapply [notes]=\"globalNotes\"></limitationsapply>\n\n <div class=\"resultstoolbar\">\n <h3>Detailed results</h3>\n <div class=\"legend\">\n <div class=\"column you\" *ngIf=\"showParticipant\">\n <span class=\"marker\"></span>\n <span class=\"label\">you</span>\n </div>\n\n <div [class]=\"'column ' + segment.name | lowercase\" *ngFor=\"let segment of populationSegments\">\n <span class=\"marker\"></span>\n <span class=\"label\">{{segment.name | lowercase}} {{segment.occurances || 1}}x</span>\n </div>\n\n <div class=\"column confidence\">\n <span class=\"marker\"></span>\n <span class=\"label\">benchmark '{{benchmarkName}}' <a [routerLink]=\"[]\" id=\"change-benchmark\" settingsDialog><span class=\"icon ph-faders-bold\"></span></a></span>\n </div>\n </div>\n <div class=\"filters\">\n <mat-slide-toggle *ngIf=\"showParticipant\" class=\"toggle showmyscores\" [(ngModel)]=\"showIndividualScore\">Show my scores</mat-slide-toggle>\n <mat-slide-toggle class=\"toggle showscoringrange\" [(ngModel)]=\"showTeamRange\" *ngIf=\"subscribed\">Show range of scores in my team</mat-slide-toggle>\n <mat-slide-toggle class=\"toggle showscoringrange\" *ngIf=\"!subscribed\" subscribeDialog>Show range of scores in my team</mat-slide-toggle>\n </div>\n </div>\n\n <div class=\"dimensions\">\n <div class=\"dimension\" *ngFor=\"let factor of factors\" [id]=\"'factor-' + factor.name | slugify\">\n <factor-axis [showIndividualScore]=\"showIndividualScore\" [showTeamRange]=\"showTeamRange\" [dimensionSelector]=\"factor\"></factor-axis>\n </div>\n </div>\n</div>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.results{margin-bottom:50px}.results .moreparticipantsneeded{background:#ef6f00;padding:15px;color:#fff}.results .dimensions{border:3px solid #f0f0f0}.results .dimension{border-bottom:3px solid #f0f0f0}.results .dimension:last-of-type{border-bottom:none}.results .resultstoolbar{padding:20px;background:#f0f0f0;position:relative}.results .resultstoolbar .warning{position:absolute;top:25px;right:25px;text-decoration:none;color:#ef6f00}.results .resultstoolbar .warning .icon{font-size:36px}.results .resultstoolbar .legend .column .label a{text-decoration:none}.results .resultstoolbar .legend .column .label .icon{margin-left:5px;font-size:18px}.results .resultstoolbar .legend .column.you .marker{background:#1f3f8f}.results .resultstoolbar .legend .column.teammember .marker{background:#00af77}.results .resultstoolbar .legend .column.stakeholder .marker{background:#fff73f}.results .resultstoolbar .legend .column.supporter .marker{background:#ef6f00}.results .resultstoolbar .legend .column.confidence .marker{background:#ef59a1}.results .resultstoolbar .filters{margin-top:30px;align-items:center;display:flex}@media only screen and (max-width: 1320px){.results .resultstoolbar .filters{display:block}}.results .resultstoolbar .filters .toggle{margin-right:30px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: i6.OpenSubscribeDialogDirective, selector: "[subscribeDialog]" }, { kind: "directive", type: i7.OpenSettingsDialogDirective, selector: "[settingsDialog]" }, { kind: "component", type: i8.FactorAxisComponent, selector: "factor-axis", inputs: ["dimensionSelector", "showIndividualScore", "showTeamRange"] }, { kind: "component", type: i9.LimitationsApplyComponent, selector: "limitationsapply", inputs: ["notes"] }, { kind: "pipe", type: i2.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i10.SlugifyPipe, name: "slugify" }] }); }
37
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: FactorsComponent, selector: "factors", usesInheritance: true, ngImport: i0, template: "<div class=\"results\" *ngIf=\"loaded\">\n <limitationsapply [notes]=\"globalNotes\"></limitationsapply>\n\n <div class=\"resultstoolbar\">\n <h3>Detailed results</h3>\n <div class=\"legend\">\n <div class=\"column you\" *ngIf=\"showParticipant\">\n <span class=\"marker\"></span>\n <span class=\"label\">you</span>\n </div>\n\n <div [class]=\"'column ' + segment.name | lowercase\" *ngFor=\"let segment of populationSegments\">\n <span class=\"marker\"></span>\n <span class=\"label\">{{segment.name | lowercase}} {{segment.occurances || 1}}x</span>\n </div>\n\n <div class=\"column confidence\">\n <span class=\"marker\"></span>\n <span class=\"label\">benchmark '{{benchmarkName}}' <a [routerLink]=\"[]\" id=\"change-benchmark\" settingsDialog><span class=\"icon ph-faders-bold\"></span></a></span>\n </div>\n </div>\n <div class=\"filters\">\n <mat-slide-toggle *ngIf=\"showParticipant\" class=\"toggle showmyscores\" [(ngModel)]=\"showIndividualScore\">Show my scores</mat-slide-toggle>\n <mat-slide-toggle class=\"toggle showscoringrange\" [(ngModel)]=\"showTeamRange\" *ngIf=\"subscribed\">Show range of scores in my team</mat-slide-toggle>\n <mat-slide-toggle class=\"toggle showscoringrange\" *ngIf=\"!subscribed\" subscribeDialog>Show range of scores in my team</mat-slide-toggle>\n </div>\n </div>\n\n <div class=\"dimensions\">\n <div class=\"dimension\" *ngFor=\"let factor of factors\" [id]=\"'factor-' + factor.name | slugify\">\n <factor-axis [showIndividualScore]=\"showIndividualScore\" [showTeamRange]=\"showTeamRange\" [dimensionSelector]=\"factor\"></factor-axis>\n </div>\n </div>\n</div>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.results{margin-bottom:50px}.results .moreparticipantsneeded{background:#ef6f00;padding:15px;color:#fff}.results .dimensions{border:3px solid #f0f0f0}.results .dimension{border-bottom:3px solid #f0f0f0}.results .dimension:last-of-type{border-bottom:none}.results .resultstoolbar{padding:20px;background:#f0f0f0;position:relative}.results .resultstoolbar .warning{position:absolute;top:25px;right:25px;text-decoration:none;color:#ef6f00}.results .resultstoolbar .warning .icon{font-size:36px}.results .resultstoolbar .legend .column .label a{text-decoration:none}.results .resultstoolbar .legend .column .label .icon{margin-left:5px;font-size:18px}.results .resultstoolbar .legend .column.you .marker{background:#1f3f8f}.results .resultstoolbar .legend .column.teammember .marker{background:#00af77}.results .resultstoolbar .legend .column.stakeholder .marker{background:#fff73f}.results .resultstoolbar .legend .column.supporter .marker{background:#ef6f00}.results .resultstoolbar .legend .column.confidence .marker{background:#ef59a1}.results .resultstoolbar .filters{margin-top:30px;align-items:center;display:flex}@media only screen and (max-width: 1320px){.results .resultstoolbar .filters{display:block}}.results .resultstoolbar .filters .toggle{margin-right:30px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: i6.OpenSubscribeDialogDirective, selector: "[subscribeDialog]" }, { kind: "directive", type: i7.OpenSettingsDialogDirective, selector: "[settingsDialog]", inputs: ["showSettingStacking"] }, { kind: "component", type: i8.FactorAxisComponent, selector: "factor-axis", inputs: ["dimensionSelector", "showIndividualScore", "showTeamRange"] }, { kind: "component", type: i9.LimitationsApplyComponent, selector: "limitationsapply", inputs: ["notes"] }, { kind: "pipe", type: i2.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i10.SlugifyPipe, name: "slugify" }] }); }
38
38
  }
39
39
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: FactorsComponent, decorators: [{
40
40
  type: Component,
@@ -64,7 +64,7 @@ export class ModelComponent extends ComponentWithViewStateBase {
64
64
  }
65
65
  ;
66
66
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ModelComponent, deps: [{ token: VIEWSTATE_PROVIDER }, { token: i1.MatDialog }, { token: i2.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
67
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: ModelComponent, selector: "model", host: { listeners: { "window:resize": "determineScreenSize($event)" } }, usesInheritance: true, ngImport: i0, template: "\n<div *ngIf=\"!showModel\" class=\"message message-warning\">\n <div><span class=\"icon ph-info-fill\"></span> We've hidden the model visualization because your resolution is too low. Please try a larger device, like a tablet, laptop or desktop.</div>\n</div>\n\n<limitationsapply [notes]=\"globalNotes\"></limitationsapply>\n\n<div class=\"wirebox model\" *ngIf=\"factors && showModel\">\n <div class=\"top\">\n <div class=\"toolbar\">\n <div class=\"toolbar-settings\">\n <div class=\"toolbar-setting\">\n <div class=\"toolbar-setting-title\">Selected Benchmark</div>\n <div class=\"toolbar-setting-label\">{{benchmark}}</div>\n </div>\n <div class=\"toolbar-setting\">\n <div class=\"toolbar-setting-title\">compare results to</div>\n <div class=\"toolbar-setting-label\" *ngIf=\"qualifiedBy == QualifiedByEnum.none\">No comparison</div>\n <div class=\"toolbar-setting-label\" *ngIf=\"qualifiedBy == QualifiedByEnum.delta && deltaType == 'PreviousSnapshot'\">Previous snapshot from {{deltaDateRange | dateRange}}</div>\n <div class=\"toolbar-setting-label\" *ngIf=\"qualifiedBy == QualifiedByEnum.delta && deltaType != 'PreviousSnapshot'\">Current period <span class=\"icon ph-info-fill\" [matTooltip]=\"'Current period ranges from ' + (dateRange | dateRange) + '. This includes weighed measurements from ' + pointCount + ' ' + pointType + ': ' + pointNames\"></span> with previous period <span class=\"icon ph-info-fill\" [matTooltip]=\"'Previous period ranges from ' + (deltaDateRange | dateRange) + '. This includes weighed measurements from ' + deltaTeams + ' ' + pointType + ': ' + deltaTeamNames\"></span></div>\n <div class=\"toolbar-setting-label\" *ngIf=\"qualifiedBy == QualifiedByEnum.benchmark\">Against benchmark</div>\n </div>\n <div class=\"toolbar-setting\" *ngIf=\"qualifiedBy != QualifiedByEnum.none\">\n <div class=\"toolbar-setting-title\">comparison legend</div>\n <div class=\"toolbar-setting-markers negative\">\n <ng-container *ngIf=\"qualifiedBy == 'Benchmark'\">\n <div class=\"toolbar-setting-marker negative\">\n <span class=\"marker\"></span>\n <span class=\"label\">lower</span>\n </div>\n <div class=\"toolbar-setting-marker neutral\">\n <span class=\"marker\"></span>\n <span class=\"label\">similar</span>\n </div>\n <div class=\"toolbar-setting-marker positive\">\n <span class=\"marker\"></span>\n <span class=\"label\">higher</span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"qualifiedBy == 'Delta'\">\n <div class=\"toolbar-setting-marker negative\">\n <span class=\"marker\"></span>\n <span class=\"label\">decreased</span>\n </div>\n <div class=\"toolbar-setting-marker neutral\">\n <span class=\"marker\"></span>\n <span class=\"label\">similar</span>\n </div>\n <div class=\"toolbar-setting-marker positive\">\n <span class=\"marker\"></span>\n <span class=\"label\">improved</span>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n <div class=\"buttons\">\n <div class=\"button\" id=\"change-settings\" settingsDialog><span class=\"ph-faders icon\"></span> Settings</div>\n <div class=\"button\" id=\"export-factorscores\" exportFactorScoresDialog *ngIf=\"isLoggedIn\"><span class=\"ph-download-simple icon\"></span> Export</div>\n </div>\n </div>\n </div>\n <div class=\"content\">\n <div class=\"model\">\n <div *ngIf=\"!showModel || !showSubFactorArrows\" class=\"message message-warning\">\n <div><span class=\"icon ph-info-fill\"></span> View on a larger device to see more details (like lower-order factors).</div>\n </div>\n\n <div class=\"model-frame\" [class]=\"'model-' + modelDefinition.publicKey\">\n <ng-container *ngFor=\"let factor of factors\">\n <model-factor [dimension]=\"factor\" [factorExtraClass]=\"'factor-primary'\"></model-factor>\n </ng-container>\n </div>\n\n <ng-container *ngFor=\"let factor of factors\">\n <arrow [from]=\"'#factor-' + factor.publicKey\" [to]=\"'#factor-' + effect.to\" [onlyVisible]=\"true\" [tail]=\"true\" [head]=\"false\" [width]=\"effect.standardizedBeta * 10\" [text]=\"'+'\" *ngFor=\"let effect of factor.effects\"></arrow>\n <ng-container *ngIf=\"showSubFactorArrows\">\n <ng-container *ngFor=\"let lowerFactor of factor.lower\">\n <arrow [from]=\"'#factor-' + lowerFactor.publicKey\" [to]=\"'#factor-' + lowerEffect.to\" [onlyVisible]=\"true\" [tail]=\"false\" [head]=\"false\" [width]=\"1\" *ngFor=\"let lowerEffect of lowerFactor.effects\"></arrow>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n\n <div class=\"bottom\">\n <div class=\"message message-information\">\n <div>\n <span class=\"icon ph-info-fill\"></span>\n <span>\n <span [innerHtml]=\"modelDefinition.attribution\"></span>\n <span>&nbsp;Explore our <a href=\"https://github.com/theliberators/scrumteamsurvey.docs/wiki\" target=\"_blank\">wiki</a> for details on calculations and common questions.</span>\n </span>\n </div>\n </div>\n </div>\n</div>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.content .model .model-frame{margin-top:30px;min-height:1000px;position:relative}@media only screen and (max-width: 1320px){.content .model .model-frame{min-height:350px}}.message{flex-wrap:wrap}.message ul{margin-bottom:0;margin-top:15px}.break{flex-basis:100%;height:0}.toolbar .buttons{min-width:350px;text-align:right}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i5.ArrowComponent, selector: "arrow", inputs: ["from", "to", "head", "tail", "text", "toolTip", "color", "width", "onlyVisible", "fromX", "fromY", "toX", "toY"] }, { kind: "component", type: i6.ModelFactorComponent, selector: "model-factor", inputs: ["dimension", "factorExtraClass"] }, { kind: "directive", type: i7.OpenSettingsDialogDirective, selector: "[settingsDialog]" }, { kind: "directive", type: i8.OpenExportFactorScoresDialogDirective, selector: "[exportFactorScoresDialog]" }, { kind: "component", type: i9.LimitationsApplyComponent, selector: "limitationsapply", inputs: ["notes"] }, { kind: "pipe", type: i10.DateRangePipe, name: "dateRange" }] }); }
67
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: ModelComponent, selector: "model", host: { listeners: { "window:resize": "determineScreenSize($event)" } }, usesInheritance: true, ngImport: i0, template: "\n<div *ngIf=\"!showModel\" class=\"message message-warning\">\n <div><span class=\"icon ph-info-fill\"></span> We've hidden the model visualization because your resolution is too low. Please try a larger device, like a tablet, laptop or desktop.</div>\n</div>\n\n<limitationsapply [notes]=\"globalNotes\"></limitationsapply>\n\n<div class=\"wirebox model\" *ngIf=\"factors && showModel\">\n <div class=\"top\">\n <div class=\"toolbar\">\n <div class=\"toolbar-settings\">\n <div class=\"toolbar-setting\">\n <div class=\"toolbar-setting-title\">Selected Benchmark</div>\n <div class=\"toolbar-setting-label\">{{benchmark}}</div>\n </div>\n <div class=\"toolbar-setting\">\n <div class=\"toolbar-setting-title\">compare results to</div>\n <div class=\"toolbar-setting-label\" *ngIf=\"qualifiedBy == QualifiedByEnum.none\">No comparison</div>\n <div class=\"toolbar-setting-label\" *ngIf=\"qualifiedBy == QualifiedByEnum.delta && deltaType == 'PreviousSnapshot'\">Previous snapshot from {{deltaDateRange | dateRange}}</div>\n <div class=\"toolbar-setting-label\" *ngIf=\"qualifiedBy == QualifiedByEnum.delta && deltaType != 'PreviousSnapshot'\">Current period <span class=\"icon ph-info-fill\" [matTooltip]=\"'Current period ranges from ' + (dateRange | dateRange) + '. This includes weighed measurements from ' + pointCount + ' ' + pointType + ': ' + pointNames\"></span> with previous period <span class=\"icon ph-info-fill\" [matTooltip]=\"'Previous period ranges from ' + (deltaDateRange | dateRange) + '. This includes weighed measurements from ' + deltaTeams + ' ' + pointType + ': ' + deltaTeamNames\"></span></div>\n <div class=\"toolbar-setting-label\" *ngIf=\"qualifiedBy == QualifiedByEnum.benchmark\">Against benchmark</div>\n </div>\n <div class=\"toolbar-setting\" *ngIf=\"qualifiedBy != QualifiedByEnum.none\">\n <div class=\"toolbar-setting-title\">comparison legend</div>\n <div class=\"toolbar-setting-markers negative\">\n <ng-container *ngIf=\"qualifiedBy == 'Benchmark'\">\n <div class=\"toolbar-setting-marker negative\">\n <span class=\"marker\"></span>\n <span class=\"label\">lower</span>\n </div>\n <div class=\"toolbar-setting-marker neutral\">\n <span class=\"marker\"></span>\n <span class=\"label\">similar</span>\n </div>\n <div class=\"toolbar-setting-marker positive\">\n <span class=\"marker\"></span>\n <span class=\"label\">higher</span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"qualifiedBy == 'Delta'\">\n <div class=\"toolbar-setting-marker negative\">\n <span class=\"marker\"></span>\n <span class=\"label\">decreased</span>\n </div>\n <div class=\"toolbar-setting-marker neutral\">\n <span class=\"marker\"></span>\n <span class=\"label\">similar</span>\n </div>\n <div class=\"toolbar-setting-marker positive\">\n <span class=\"marker\"></span>\n <span class=\"label\">improved</span>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n <div class=\"buttons\">\n <div class=\"button\" id=\"change-settings\" settingsDialog><span class=\"ph-faders icon\"></span> Settings</div>\n <div class=\"button\" id=\"export-factorscores\" exportFactorScoresDialog *ngIf=\"isLoggedIn\"><span class=\"ph-download-simple icon\"></span> Export</div>\n </div>\n </div>\n </div>\n <div class=\"content\">\n <div class=\"model\">\n <div *ngIf=\"!showModel || !showSubFactorArrows\" class=\"message message-warning\">\n <div><span class=\"icon ph-info-fill\"></span> View on a larger device to see more details (like lower-order factors).</div>\n </div>\n\n <div class=\"model-frame\" [class]=\"'model-' + modelDefinition.publicKey\">\n <ng-container *ngFor=\"let factor of factors\">\n <model-factor [dimension]=\"factor\" [factorExtraClass]=\"'factor-primary'\"></model-factor>\n </ng-container>\n </div>\n\n <ng-container *ngFor=\"let factor of factors\">\n <arrow [from]=\"'#factor-' + factor.publicKey\" [to]=\"'#factor-' + effect.to\" [onlyVisible]=\"true\" [tail]=\"true\" [head]=\"false\" [width]=\"effect.standardizedBeta * 10\" [text]=\"'+'\" *ngFor=\"let effect of factor.effects\"></arrow>\n <ng-container *ngIf=\"showSubFactorArrows\">\n <ng-container *ngFor=\"let lowerFactor of factor.lower\">\n <arrow [from]=\"'#factor-' + lowerFactor.publicKey\" [to]=\"'#factor-' + lowerEffect.to\" [onlyVisible]=\"true\" [tail]=\"false\" [head]=\"false\" [width]=\"1\" *ngFor=\"let lowerEffect of lowerFactor.effects\"></arrow>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n\n <div class=\"bottom\">\n <div class=\"message message-information\">\n <div>\n <span class=\"icon ph-info-fill\"></span>\n <span>\n <span [innerHtml]=\"modelDefinition.attribution\"></span>\n <span>&nbsp;Explore our <a href=\"https://github.com/theliberators/scrumteamsurvey.docs/wiki\" target=\"_blank\">wiki</a> for details on calculations and common questions.</span>\n </span>\n </div>\n </div>\n </div>\n</div>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.content .model .model-frame{margin-top:30px;min-height:1000px;position:relative}@media only screen and (max-width: 1320px){.content .model .model-frame{min-height:350px}}.message{flex-wrap:wrap}.message ul{margin-bottom:0;margin-top:15px}.break{flex-basis:100%;height:0}.toolbar .buttons{min-width:350px;text-align:right}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i5.ArrowComponent, selector: "arrow", inputs: ["from", "to", "head", "tail", "text", "toolTip", "color", "width", "onlyVisible", "fromX", "fromY", "toX", "toY"] }, { kind: "component", type: i6.ModelFactorComponent, selector: "model-factor", inputs: ["dimension", "factorExtraClass"] }, { kind: "directive", type: i7.OpenSettingsDialogDirective, selector: "[settingsDialog]", inputs: ["showSettingStacking"] }, { kind: "directive", type: i8.OpenExportFactorScoresDialogDirective, selector: "[exportFactorScoresDialog]" }, { kind: "component", type: i9.LimitationsApplyComponent, selector: "limitationsapply", inputs: ["notes"] }, { kind: "pipe", type: i10.DateRangePipe, name: "dateRange" }] }); }
68
68
  }
69
69
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ModelComponent, decorators: [{
70
70
  type: Component,
@@ -11,10 +11,11 @@ import * as i5 from "@angular/router";
11
11
  import * as i6 from "@ncstate/sat-popover";
12
12
  import * as i7 from "../../../dialogs/dialog-factorinformation/dialog-factorinformation.component";
13
13
  import * as i8 from "../delta-arrow/delta-arrow.component";
14
- import * as i9 from "../quicktips/quicktips.component";
15
- import * as i10 from "../model-factor-breakdown/model-factor-breakdown.component";
16
- import * as i11 from "../../dialogs/dialog-notes/dialog-notes.component";
17
- import * as i12 from "../../../viewModel/viewModelState.service";
14
+ import * as i9 from "../age-indicator/age-indicator.component";
15
+ import * as i10 from "../quicktips/quicktips.component";
16
+ import * as i11 from "../model-factor-breakdown/model-factor-breakdown.component";
17
+ import * as i12 from "../../dialogs/dialog-notes/dialog-notes.component";
18
+ import * as i13 from "../../../viewModel/viewModelState.service";
18
19
  export class ModelFactorComponent extends ComponentWithViewStateBase {
19
20
  constructor(state, userSettingsService, snackBar) {
20
21
  super(state, snackBar);
@@ -78,12 +79,12 @@ export class ModelFactorComponent extends ComponentWithViewStateBase {
78
79
  }
79
80
  ;
80
81
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ModelFactorComponent, deps: [{ token: VIEWSTATE_PROVIDER }, { token: i1.UserSettingService }, { token: i2.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
81
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: ModelFactorComponent, selector: "model-factor", inputs: { dimension: "dimension", factorExtraClass: "factorExtraClass" }, usesInheritance: true, ngImport: i0, template: "<div [class]=\"'factor ' + factorExtraClass + ' ' + direction\" [ngClass]=\"{'factor-notmeasured' : !dataAvailable}\" [id]=\"'factor-' + dimensionKey\" #factor (click)=\"popover.open()\">\n <div class=\"factor-content\">\n <h2>\n {{name}}\n </h2>\n <div [class]=\"'progressbar progressbar-' + direction\">\n <div class=\"progressbar-score\">{{score | number:'1.0-0'}}</div>\n <div class=\"progressbar-confidence\" *ngIf=\"confidenceAvailable\" [matTooltip]=\"'Most responses fall in the range of ' + factorScore.lowerConfidence + ' (15% percentile) and ' + factorScore.upperConfidence + ' (85% percentile)'\" [style]=\"'left: ' + factorScoreLeft + '%; width: ' + factorScoreWidth + '%'\"></div>\n <div class=\"progressbar-bar\" *ngIf=\"!confidenceAvailable\" [style]=\"'width: ' + score + '%'\"></div>\n </div>\n <delta-arrow *ngIf=\"dataAvailable\" [factorScore]=\"factorScore\" [delta]=\"delta\" [noDataIndicator]=\"false\"></delta-arrow>\n </div>\n <div class=\"emphasize emphasize-interventions\" *ngIf=\"filter.interventionFilter == 'All' && (openInterventions > 0 || completedInterventions > 0)\" [routerLink]=\"[baseUrl, 'actions']\" [queryParams]=\"{ expectedImpactOn: dimensionKey }\" [matTooltip]=\"'There are ' + openInterventions + ' open, and ' + completedInterventions + ' completed action(s). Each action is identified and created by the teams themselves.'\">\n {{openInterventions}}<small>/{{completedInterventions}}</small>\n </div>\n <a class=\"emphasize emphasize-interventions\" *ngIf=\"filter.interventionFilter == 'OnlyOpen' && openInterventions > 0\" [routerLink]=\"[baseUrl, 'actions']\" [queryParams]=\"{ state: InterventionStateEnum.open, expectedImpactOn: dimensionKey }\" [matTooltip]=\"'There are ' + openInterventions + ' open improvement actions. Each action is identified and created by the teams themselves.'\">\n <i class=\"ph-flask icon\"></i> {{openInterventions}}\n </a>\n <div class=\"emphasize emphasize-interventions\" *ngIf=\"filter.interventionFilter == 'OnlyCompleted' && completedInterventions > 0\" [routerLink]=\"[baseUrl, 'actions']\" [queryParams]=\"{ state: InterventionStateEnum.completed, expectedImpactOn: dimensionKey }\" [matTooltip]=\"'There are ' + openInterventions + ' completed improvement actions. Each action is identified and created by the teams themselves.'\">\n <i class=\"ph-check-bold icon\"></i> {{completedInterventions}}\n </div>\n <div class=\"emphasize emphasize-impediments\" *ngIf=\"impededInterventions > 0\" [routerLink]=\"[baseUrl, 'actions']\" [queryParams]=\"{ state: InterventionStateEnum.impeded, expectedImpactOn: dimensionKey }\" [matTooltip]=\"'There are ' + impededInterventions + ' actions where teams are requesting from help from outside the team.'\">\n <img class=\"icon\" src=\"/assets/img/impeded.svg\" /> {{impededInterventions}}\n </div>\n</div>\n\n<div [id]=\"'factor-' + dimensionKey + '-subfactors'\" class=\"subfactors\">\n <model-factor [dimension]=\"subDimension\" [factorExtraClass]=\"'factor-sub'\" *ngFor=\"let subDimension of subDimensions\"></model-factor>\n</div>\n\n<sat-popover #popover horizontalAlign=\"after\" [anchor]=\"factor\" verticalAlign=\"center\" [hasBackdrop]=\"true\" [autoFocus]=\"false\">\n <div class=\"popover\" [id]=\"'popover-' + dimensionKey\">\n <div class=\"popover-container\">\n <span (click)=\"popover.close()\" class=\"close ph-x\"></span>\n <h3 factorInformationDialog [factor]=\"dimension\">\n {{name}}\n <span class=\"icon ph-info-fill\"></span>\n </h3>\n <div class=\"description\">{{description}}</div>\n\n <div class=\"message message-warning limitations\" *ngIf=\"notes && notes.length > 0\">\n <span class=\"icon ph-warning-circle\"></span>\n <span *ngIf=\"notes.length == 1\">\n {{notes.length}} limitation applies to these results. <a [routerLink]=\"[]\" notesDialog [notes]=\"notes\">Click to explore</a>.\n </span>\n <span *ngIf=\"notes.length > 1\">\n {{notes.length}} limitations apply to these results. <a [routerLink]=\"[]\" notesDialog [notes]=\"notes\">Click to explore</a>.\n </span>\n </div>\n\n <div class=\"breakdown\">\n <div [matTooltip]=\"'This is the average score of teams in the benchmark [' + benchmark + ']. Change the benchmark under \\'Settings\\'.'\" [attr.normalizedScore]=\"benchmarkScore\" [class]=\"'progressbar progressbar-inverted progressbar-benchmark'\" *ngIf=\"benchmarkScore != 0\">\n <div class=\"progressbar-bar\" [style]=\"'width: ' + benchmarkScore + '%'\"></div>\n <div class=\"progressbar-label\">benchmark</div>\n <div class=\"progressbar-score\">{{benchmarkScore | number:'1.0-0' }}</div>W\n </div>\n <div class=\"details\">\n </div>\n </div>\n\n <model-factor-breakdown [factor]=\"currentFactor\"></model-factor-breakdown>\n\n <quicktips [dimensionKey]=\"dimensionKey\" [extraClass]=\"'quicktips-popover'\"></quicktips>\n\n <div class=\"link\" *ngIf=\"feedbackAvailable\">\n <a [routerLink]=\"[baseUrl, 'tips']\" [fragment]=\"dimensionKey\">discover how to improve ></a>\n </div>\n </div>\n <div class=\"arrow\"></div>\n </div>\n</sat-popover>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.quicktips-popover{background:none}h3{cursor:pointer;margin-bottom:10px}h3 .icon{vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i6.SatPopoverComponent, selector: "sat-popover", inputs: ["anchor", "horizontalAlign", "xAlign", "verticalAlign", "yAlign", "forceAlignment", "lockAlignment", "autoFocus", "restoreFocus", "scrollStrategy", "hasBackdrop", "interactiveClose", "openTransition", "closeTransition", "openAnimationStartAtScale", "closeAnimationEndAtScale", "backdropClass", "panelClass"], outputs: ["opened", "closed", "afterOpen", "afterClose", "backdropClicked", "overlayKeydown"] }, { kind: "directive", type: i7.OpenFactorInformationDialogDirective, selector: "[factorInformationDialog]", inputs: ["factor"] }, { kind: "component", type: i8.DeltaArrowComponent, selector: "delta-arrow", inputs: ["factorScore", "delta", "noDataIndicator"] }, { kind: "component", type: i9.QuickTipsComponent, selector: "quicktips", inputs: ["dimensionKey", "extraClass"] }, { kind: "component", type: ModelFactorComponent, selector: "model-factor", inputs: ["dimension", "factorExtraClass"] }, { kind: "component", type: i10.ModelFactorBreakdownComponent, selector: "model-factor-breakdown", inputs: ["factor", "pageSize"] }, { kind: "directive", type: i11.OpenNotesDialogDirective, selector: "[notesDialog]", inputs: ["notes"] }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }] }); }
82
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: ModelFactorComponent, selector: "model-factor", inputs: { dimension: "dimension", factorExtraClass: "factorExtraClass" }, usesInheritance: true, ngImport: i0, template: "<div [class]=\"'factor ' + factorExtraClass + ' ' + direction\" [ngClass]=\"{'factor-notmeasured' : !dataAvailable}\" [id]=\"'factor-' + dimensionKey\" #factor (click)=\"popover.open()\">\n <div class=\"factor-content\">\n <h2>\n {{name}}\n </h2>\n <div [class]=\"'progressbar progressbar-' + direction\">\n <div class=\"progressbar-score\">{{score | number:'1.0-0'}}</div>\n <div class=\"progressbar-confidence\" *ngIf=\"confidenceAvailable\" [matTooltip]=\"'Most responses fall in the range of ' + factorScore.lowerConfidence + ' (15% percentile) and ' + factorScore.upperConfidence + ' (85% percentile)'\" [style]=\"'left: ' + factorScoreLeft + '%; width: ' + factorScoreWidth + '%'\"></div>\n <div class=\"progressbar-bar\" *ngIf=\"!confidenceAvailable\" [style]=\"'width: ' + score + '%'\"></div>\n </div>\n <age-indicator [lastMeasured]=\"factorScore.lastMeasured\"></age-indicator>\n <delta-arrow *ngIf=\"dataAvailable\" [factorScore]=\"factorScore\" [delta]=\"delta\" [noDataIndicator]=\"false\"></delta-arrow>\n </div>\n <div class=\"emphasize emphasize-interventions\" *ngIf=\"filter.interventionFilter == 'All' && (openInterventions > 0 || completedInterventions > 0)\" [routerLink]=\"[baseUrl, 'actions']\" [queryParams]=\"{ expectedImpactOn: dimensionKey }\" [matTooltip]=\"'There are ' + openInterventions + ' open, and ' + completedInterventions + ' completed action(s). Each action is identified and created by the teams themselves.'\">\n {{openInterventions}}<small>/{{completedInterventions}}</small>\n </div>\n <a class=\"emphasize emphasize-interventions\" *ngIf=\"filter.interventionFilter == 'OnlyOpen' && openInterventions > 0\" [routerLink]=\"[baseUrl, 'actions']\" [queryParams]=\"{ state: InterventionStateEnum.open, expectedImpactOn: dimensionKey }\" [matTooltip]=\"'There are ' + openInterventions + ' open improvement actions. Each action is identified and created by the teams themselves.'\">\n <i class=\"ph-flask icon\"></i> {{openInterventions}}\n </a>\n <div class=\"emphasize emphasize-interventions\" *ngIf=\"filter.interventionFilter == 'OnlyCompleted' && completedInterventions > 0\" [routerLink]=\"[baseUrl, 'actions']\" [queryParams]=\"{ state: InterventionStateEnum.completed, expectedImpactOn: dimensionKey }\" [matTooltip]=\"'There are ' + openInterventions + ' completed improvement actions. Each action is identified and created by the teams themselves.'\">\n <i class=\"ph-check-bold icon\"></i> {{completedInterventions}}\n </div>\n <div class=\"emphasize emphasize-impediments\" *ngIf=\"impededInterventions > 0\" [routerLink]=\"[baseUrl, 'actions']\" [queryParams]=\"{ state: InterventionStateEnum.impeded, expectedImpactOn: dimensionKey }\" [matTooltip]=\"'There are ' + impededInterventions + ' actions where teams are requesting from help from outside the team.'\">\n <img class=\"icon\" src=\"/assets/img/impeded.svg\" /> {{impededInterventions}}\n </div>\n</div>\n\n<div [id]=\"'factor-' + dimensionKey + '-subfactors'\" class=\"subfactors\">\n <model-factor [dimension]=\"subDimension\" [factorExtraClass]=\"'factor-sub'\" *ngFor=\"let subDimension of subDimensions\"></model-factor>\n</div>\n\n<sat-popover #popover horizontalAlign=\"after\" [anchor]=\"factor\" verticalAlign=\"center\" [hasBackdrop]=\"true\" [autoFocus]=\"false\">\n <div class=\"popover\" [id]=\"'popover-' + dimensionKey\">\n <div class=\"popover-container\">\n <span (click)=\"popover.close()\" class=\"close ph-x\"></span>\n <h3 factorInformationDialog [factor]=\"dimension\">\n {{name}}\n <span class=\"icon ph-info-fill\"></span>\n </h3>\n <div class=\"description\">{{description}}</div>\n\n <div class=\"message message-warning limitations\" *ngIf=\"notes && notes.length > 0\">\n <span class=\"icon ph-warning-circle\"></span>\n <span *ngIf=\"notes.length == 1\">\n {{notes.length}} limitation applies to these results. <a [routerLink]=\"[]\" notesDialog [notes]=\"notes\">Click to explore</a>.\n </span>\n <span *ngIf=\"notes.length > 1\">\n {{notes.length}} limitations apply to these results. <a [routerLink]=\"[]\" notesDialog [notes]=\"notes\">Click to explore</a>.\n </span>\n </div>\n\n <div class=\"breakdown\">\n <div [matTooltip]=\"'This is the average score of teams in the benchmark [' + benchmark + ']. Change the benchmark under \\'Settings\\'.'\" [attr.normalizedScore]=\"benchmarkScore\" [class]=\"'progressbar progressbar-inverted progressbar-benchmark'\" *ngIf=\"benchmarkScore != 0\">\n <div class=\"progressbar-bar\" [style]=\"'width: ' + benchmarkScore + '%'\"></div>\n <div class=\"progressbar-label\">benchmark</div>\n <div class=\"progressbar-score\">{{benchmarkScore | number:'1.0-0' }}</div>W\n </div>\n <div class=\"details\">\n </div>\n </div>\n\n <model-factor-breakdown [factor]=\"currentFactor\"></model-factor-breakdown>\n\n <quicktips [dimensionKey]=\"dimensionKey\" [extraClass]=\"'quicktips-popover'\"></quicktips>\n\n <div class=\"link\" *ngIf=\"feedbackAvailable\">\n <a [routerLink]=\"[baseUrl, 'tips']\" [fragment]=\"dimensionKey\">discover how to improve ></a>\n </div>\n </div>\n <div class=\"arrow\"></div>\n </div>\n</sat-popover>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.quicktips-popover{background:none}h3{cursor:pointer;margin-bottom:10px}h3 .icon{vertical-align:middle}.age-indicator{width:100%;display:flex;font-size:8px;flex-direction:row;justify-content:center;margin-top:3px;margin-bottom:3px}.age-indicator .age-indicator-dot{width:4px;height:4px;background:#2f2f2f;border-radius:4px;margin-right:1px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i6.SatPopoverComponent, selector: "sat-popover", inputs: ["anchor", "horizontalAlign", "xAlign", "verticalAlign", "yAlign", "forceAlignment", "lockAlignment", "autoFocus", "restoreFocus", "scrollStrategy", "hasBackdrop", "interactiveClose", "openTransition", "closeTransition", "openAnimationStartAtScale", "closeAnimationEndAtScale", "backdropClass", "panelClass"], outputs: ["opened", "closed", "afterOpen", "afterClose", "backdropClicked", "overlayKeydown"] }, { kind: "directive", type: i7.OpenFactorInformationDialogDirective, selector: "[factorInformationDialog]", inputs: ["factor"] }, { kind: "component", type: i8.DeltaArrowComponent, selector: "delta-arrow", inputs: ["factorScore", "delta", "noDataIndicator"] }, { kind: "component", type: i9.AgeIndicatorComponent, selector: "age-indicator", inputs: ["lastMeasured"] }, { kind: "component", type: i10.QuickTipsComponent, selector: "quicktips", inputs: ["dimensionKey", "extraClass"] }, { kind: "component", type: ModelFactorComponent, selector: "model-factor", inputs: ["dimension", "factorExtraClass"] }, { kind: "component", type: i11.ModelFactorBreakdownComponent, selector: "model-factor-breakdown", inputs: ["factor", "pageSize"] }, { kind: "directive", type: i12.OpenNotesDialogDirective, selector: "[notesDialog]", inputs: ["notes"] }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }] }); }
82
83
  }
83
84
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ModelFactorComponent, decorators: [{
84
85
  type: Component,
85
- args: [{ selector: 'model-factor', template: "<div [class]=\"'factor ' + factorExtraClass + ' ' + direction\" [ngClass]=\"{'factor-notmeasured' : !dataAvailable}\" [id]=\"'factor-' + dimensionKey\" #factor (click)=\"popover.open()\">\n <div class=\"factor-content\">\n <h2>\n {{name}}\n </h2>\n <div [class]=\"'progressbar progressbar-' + direction\">\n <div class=\"progressbar-score\">{{score | number:'1.0-0'}}</div>\n <div class=\"progressbar-confidence\" *ngIf=\"confidenceAvailable\" [matTooltip]=\"'Most responses fall in the range of ' + factorScore.lowerConfidence + ' (15% percentile) and ' + factorScore.upperConfidence + ' (85% percentile)'\" [style]=\"'left: ' + factorScoreLeft + '%; width: ' + factorScoreWidth + '%'\"></div>\n <div class=\"progressbar-bar\" *ngIf=\"!confidenceAvailable\" [style]=\"'width: ' + score + '%'\"></div>\n </div>\n <delta-arrow *ngIf=\"dataAvailable\" [factorScore]=\"factorScore\" [delta]=\"delta\" [noDataIndicator]=\"false\"></delta-arrow>\n </div>\n <div class=\"emphasize emphasize-interventions\" *ngIf=\"filter.interventionFilter == 'All' && (openInterventions > 0 || completedInterventions > 0)\" [routerLink]=\"[baseUrl, 'actions']\" [queryParams]=\"{ expectedImpactOn: dimensionKey }\" [matTooltip]=\"'There are ' + openInterventions + ' open, and ' + completedInterventions + ' completed action(s). Each action is identified and created by the teams themselves.'\">\n {{openInterventions}}<small>/{{completedInterventions}}</small>\n </div>\n <a class=\"emphasize emphasize-interventions\" *ngIf=\"filter.interventionFilter == 'OnlyOpen' && openInterventions > 0\" [routerLink]=\"[baseUrl, 'actions']\" [queryParams]=\"{ state: InterventionStateEnum.open, expectedImpactOn: dimensionKey }\" [matTooltip]=\"'There are ' + openInterventions + ' open improvement actions. Each action is identified and created by the teams themselves.'\">\n <i class=\"ph-flask icon\"></i> {{openInterventions}}\n </a>\n <div class=\"emphasize emphasize-interventions\" *ngIf=\"filter.interventionFilter == 'OnlyCompleted' && completedInterventions > 0\" [routerLink]=\"[baseUrl, 'actions']\" [queryParams]=\"{ state: InterventionStateEnum.completed, expectedImpactOn: dimensionKey }\" [matTooltip]=\"'There are ' + openInterventions + ' completed improvement actions. Each action is identified and created by the teams themselves.'\">\n <i class=\"ph-check-bold icon\"></i> {{completedInterventions}}\n </div>\n <div class=\"emphasize emphasize-impediments\" *ngIf=\"impededInterventions > 0\" [routerLink]=\"[baseUrl, 'actions']\" [queryParams]=\"{ state: InterventionStateEnum.impeded, expectedImpactOn: dimensionKey }\" [matTooltip]=\"'There are ' + impededInterventions + ' actions where teams are requesting from help from outside the team.'\">\n <img class=\"icon\" src=\"/assets/img/impeded.svg\" /> {{impededInterventions}}\n </div>\n</div>\n\n<div [id]=\"'factor-' + dimensionKey + '-subfactors'\" class=\"subfactors\">\n <model-factor [dimension]=\"subDimension\" [factorExtraClass]=\"'factor-sub'\" *ngFor=\"let subDimension of subDimensions\"></model-factor>\n</div>\n\n<sat-popover #popover horizontalAlign=\"after\" [anchor]=\"factor\" verticalAlign=\"center\" [hasBackdrop]=\"true\" [autoFocus]=\"false\">\n <div class=\"popover\" [id]=\"'popover-' + dimensionKey\">\n <div class=\"popover-container\">\n <span (click)=\"popover.close()\" class=\"close ph-x\"></span>\n <h3 factorInformationDialog [factor]=\"dimension\">\n {{name}}\n <span class=\"icon ph-info-fill\"></span>\n </h3>\n <div class=\"description\">{{description}}</div>\n\n <div class=\"message message-warning limitations\" *ngIf=\"notes && notes.length > 0\">\n <span class=\"icon ph-warning-circle\"></span>\n <span *ngIf=\"notes.length == 1\">\n {{notes.length}} limitation applies to these results. <a [routerLink]=\"[]\" notesDialog [notes]=\"notes\">Click to explore</a>.\n </span>\n <span *ngIf=\"notes.length > 1\">\n {{notes.length}} limitations apply to these results. <a [routerLink]=\"[]\" notesDialog [notes]=\"notes\">Click to explore</a>.\n </span>\n </div>\n\n <div class=\"breakdown\">\n <div [matTooltip]=\"'This is the average score of teams in the benchmark [' + benchmark + ']. Change the benchmark under \\'Settings\\'.'\" [attr.normalizedScore]=\"benchmarkScore\" [class]=\"'progressbar progressbar-inverted progressbar-benchmark'\" *ngIf=\"benchmarkScore != 0\">\n <div class=\"progressbar-bar\" [style]=\"'width: ' + benchmarkScore + '%'\"></div>\n <div class=\"progressbar-label\">benchmark</div>\n <div class=\"progressbar-score\">{{benchmarkScore | number:'1.0-0' }}</div>W\n </div>\n <div class=\"details\">\n </div>\n </div>\n\n <model-factor-breakdown [factor]=\"currentFactor\"></model-factor-breakdown>\n\n <quicktips [dimensionKey]=\"dimensionKey\" [extraClass]=\"'quicktips-popover'\"></quicktips>\n\n <div class=\"link\" *ngIf=\"feedbackAvailable\">\n <a [routerLink]=\"[baseUrl, 'tips']\" [fragment]=\"dimensionKey\">discover how to improve ></a>\n </div>\n </div>\n <div class=\"arrow\"></div>\n </div>\n</sat-popover>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.quicktips-popover{background:none}h3{cursor:pointer;margin-bottom:10px}h3 .icon{vertical-align:middle}\n"] }]
86
- }], ctorParameters: () => [{ type: i12.ViewModelStateBase, decorators: [{
86
+ args: [{ selector: 'model-factor', template: "<div [class]=\"'factor ' + factorExtraClass + ' ' + direction\" [ngClass]=\"{'factor-notmeasured' : !dataAvailable}\" [id]=\"'factor-' + dimensionKey\" #factor (click)=\"popover.open()\">\n <div class=\"factor-content\">\n <h2>\n {{name}}\n </h2>\n <div [class]=\"'progressbar progressbar-' + direction\">\n <div class=\"progressbar-score\">{{score | number:'1.0-0'}}</div>\n <div class=\"progressbar-confidence\" *ngIf=\"confidenceAvailable\" [matTooltip]=\"'Most responses fall in the range of ' + factorScore.lowerConfidence + ' (15% percentile) and ' + factorScore.upperConfidence + ' (85% percentile)'\" [style]=\"'left: ' + factorScoreLeft + '%; width: ' + factorScoreWidth + '%'\"></div>\n <div class=\"progressbar-bar\" *ngIf=\"!confidenceAvailable\" [style]=\"'width: ' + score + '%'\"></div>\n </div>\n <age-indicator [lastMeasured]=\"factorScore.lastMeasured\"></age-indicator>\n <delta-arrow *ngIf=\"dataAvailable\" [factorScore]=\"factorScore\" [delta]=\"delta\" [noDataIndicator]=\"false\"></delta-arrow>\n </div>\n <div class=\"emphasize emphasize-interventions\" *ngIf=\"filter.interventionFilter == 'All' && (openInterventions > 0 || completedInterventions > 0)\" [routerLink]=\"[baseUrl, 'actions']\" [queryParams]=\"{ expectedImpactOn: dimensionKey }\" [matTooltip]=\"'There are ' + openInterventions + ' open, and ' + completedInterventions + ' completed action(s). Each action is identified and created by the teams themselves.'\">\n {{openInterventions}}<small>/{{completedInterventions}}</small>\n </div>\n <a class=\"emphasize emphasize-interventions\" *ngIf=\"filter.interventionFilter == 'OnlyOpen' && openInterventions > 0\" [routerLink]=\"[baseUrl, 'actions']\" [queryParams]=\"{ state: InterventionStateEnum.open, expectedImpactOn: dimensionKey }\" [matTooltip]=\"'There are ' + openInterventions + ' open improvement actions. Each action is identified and created by the teams themselves.'\">\n <i class=\"ph-flask icon\"></i> {{openInterventions}}\n </a>\n <div class=\"emphasize emphasize-interventions\" *ngIf=\"filter.interventionFilter == 'OnlyCompleted' && completedInterventions > 0\" [routerLink]=\"[baseUrl, 'actions']\" [queryParams]=\"{ state: InterventionStateEnum.completed, expectedImpactOn: dimensionKey }\" [matTooltip]=\"'There are ' + openInterventions + ' completed improvement actions. Each action is identified and created by the teams themselves.'\">\n <i class=\"ph-check-bold icon\"></i> {{completedInterventions}}\n </div>\n <div class=\"emphasize emphasize-impediments\" *ngIf=\"impededInterventions > 0\" [routerLink]=\"[baseUrl, 'actions']\" [queryParams]=\"{ state: InterventionStateEnum.impeded, expectedImpactOn: dimensionKey }\" [matTooltip]=\"'There are ' + impededInterventions + ' actions where teams are requesting from help from outside the team.'\">\n <img class=\"icon\" src=\"/assets/img/impeded.svg\" /> {{impededInterventions}}\n </div>\n</div>\n\n<div [id]=\"'factor-' + dimensionKey + '-subfactors'\" class=\"subfactors\">\n <model-factor [dimension]=\"subDimension\" [factorExtraClass]=\"'factor-sub'\" *ngFor=\"let subDimension of subDimensions\"></model-factor>\n</div>\n\n<sat-popover #popover horizontalAlign=\"after\" [anchor]=\"factor\" verticalAlign=\"center\" [hasBackdrop]=\"true\" [autoFocus]=\"false\">\n <div class=\"popover\" [id]=\"'popover-' + dimensionKey\">\n <div class=\"popover-container\">\n <span (click)=\"popover.close()\" class=\"close ph-x\"></span>\n <h3 factorInformationDialog [factor]=\"dimension\">\n {{name}}\n <span class=\"icon ph-info-fill\"></span>\n </h3>\n <div class=\"description\">{{description}}</div>\n\n <div class=\"message message-warning limitations\" *ngIf=\"notes && notes.length > 0\">\n <span class=\"icon ph-warning-circle\"></span>\n <span *ngIf=\"notes.length == 1\">\n {{notes.length}} limitation applies to these results. <a [routerLink]=\"[]\" notesDialog [notes]=\"notes\">Click to explore</a>.\n </span>\n <span *ngIf=\"notes.length > 1\">\n {{notes.length}} limitations apply to these results. <a [routerLink]=\"[]\" notesDialog [notes]=\"notes\">Click to explore</a>.\n </span>\n </div>\n\n <div class=\"breakdown\">\n <div [matTooltip]=\"'This is the average score of teams in the benchmark [' + benchmark + ']. Change the benchmark under \\'Settings\\'.'\" [attr.normalizedScore]=\"benchmarkScore\" [class]=\"'progressbar progressbar-inverted progressbar-benchmark'\" *ngIf=\"benchmarkScore != 0\">\n <div class=\"progressbar-bar\" [style]=\"'width: ' + benchmarkScore + '%'\"></div>\n <div class=\"progressbar-label\">benchmark</div>\n <div class=\"progressbar-score\">{{benchmarkScore | number:'1.0-0' }}</div>W\n </div>\n <div class=\"details\">\n </div>\n </div>\n\n <model-factor-breakdown [factor]=\"currentFactor\"></model-factor-breakdown>\n\n <quicktips [dimensionKey]=\"dimensionKey\" [extraClass]=\"'quicktips-popover'\"></quicktips>\n\n <div class=\"link\" *ngIf=\"feedbackAvailable\">\n <a [routerLink]=\"[baseUrl, 'tips']\" [fragment]=\"dimensionKey\">discover how to improve ></a>\n </div>\n </div>\n <div class=\"arrow\"></div>\n </div>\n</sat-popover>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.quicktips-popover{background:none}h3{cursor:pointer;margin-bottom:10px}h3 .icon{vertical-align:middle}.age-indicator{width:100%;display:flex;font-size:8px;flex-direction:row;justify-content:center;margin-top:3px;margin-bottom:3px}.age-indicator .age-indicator-dot{width:4px;height:4px;background:#2f2f2f;border-radius:4px;margin-right:1px}\n"] }]
87
+ }], ctorParameters: () => [{ type: i13.ViewModelStateBase, decorators: [{
87
88
  type: Inject,
88
89
  args: [VIEWSTATE_PROVIDER]
89
90
  }] }, { type: i1.UserSettingService }, { type: i2.MatSnackBar }], propDecorators: { dimension: [{
@@ -91,4 +92,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
91
92
  }], factorExtraClass: [{
92
93
  type: Input
93
94
  }] } });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtZmFjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY3J1bXRlYW1zdXJ2ZXktdG9vbHMvc3JjL2xpYi9yZXN1bHRzL2NvbXBvbmVudHMvbW9kZWwtZmFjdG9yL21vZGVsLWZhY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvcmVzdWx0cy9jb21wb25lbnRzL21vZGVsLWZhY3Rvci9tb2RlbC1mYWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBSWpGLE9BQU8sRUFBc0Isa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFVbkcsTUFBTSxPQUFPLG9CQUFxQixTQUFRLDBCQUF5QztJQWtDaEYsWUFBZ0QsS0FBd0MsRUFBVSxtQkFBdUMsRUFBWSxRQUFxQjtRQUN2SyxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBRHVCLFVBQUssR0FBTCxLQUFLLENBQW1DO1FBQVUsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFvQjtRQUFZLGFBQVEsR0FBUixRQUFRLENBQWE7UUFIbkssMEJBQXFCLEdBQUcscUJBQXFCLENBQUM7UUFDOUMsa0JBQWEsR0FBRyxDQUFDLENBQUM7SUFJekIsQ0FBQztJQUVELFFBQVE7UUFDTCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJ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LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbnRlcnZlbnRpb25TdGF0ZUVudW0gfSBmcm9tICcuLi8uLi8uLi9hY3Rpb25zL21vZGVscy9hY3Rpb25EdG8nO1xuaW1wb3J0IHsgQ29tcG9uZW50V2l0aFZpZXdTdGF0ZUJhc2UgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRXaXRoVmlld1N0YXRlQmFzZSc7XG5pbXBvcnQgeyBNb2RlbEZpbHRlciB9IGZyb20gJy4uLy4uLy4uL21vZGVscy91c2VyU2V0dGluZ3NEdG8nO1xuaW1wb3J0IHsgRGF0ZVJhbmdlRHRvIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvZGF0ZVJhbmdlL25neC1kYXRlUmFuZ2VEdG8ubW9kZWwnO1xuaW1wb3J0IHsgVXNlclNldHRpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdmlld01vZGVsL3VzZXJTZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IFZpZXdNb2RlbFN0YXRlQmFzZSwgVklFV1NUQVRFX1BST1ZJREVSIH0gZnJvbSAnLi4vLi4vLi4vdmlld01vZGVsL3ZpZXdNb2RlbFN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSVJlc3VsdHNTdGF0ZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVJlc3VsdHNTdGF0ZSc7XG5pbXBvcnQgeyBCZW5jaG1hcmtUeXBlRW51bSwgRmFjdG9yU2NvcmVDb2xsZWN0aW9uRGVsdGFEdG8sIEZhY3RvclNjb3JlRHRvLCBQb2ludER0bywgUXVhbGlmaWVkQnlFbnVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZhY3RvclNjb3JlRHRvJztcbmltcG9ydCB7IEVmZmVjdER0bywgRmFjdG9yU3RydWN0dXJlRHRvIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL21vZGVsU3RydWN0dXJlRHRvJztcblxuQENvbXBvbmVudCh7XG4gICBzZWxlY3RvcjogJ21vZGVsLWZhY3RvcicsXG4gICB0ZW1wbGF0ZVVybDogJy4vbW9kZWwtZmFjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgIHN0eWxlVXJsczogWycuL21vZGVsLWZhY3Rvci5jb21wb25lbnQubGVzcyddXG59KVxuZXhwb3J0IGNsYXNzIE1vZGVsRmFjdG9yQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50V2l0aFZpZXdTdGF0ZUJhc2U8SVJlc3VsdHNTdGF0ZT4ge1xuICAgQElucHV0KCkgZGltZW5zaW9uOiBGYWN0b3JTdHJ1Y3R1cmVEdG87XG4gICBASW5wdXQoKSBmYWN0b3JFeHRyYUNsYXNzOiBzdHJpbmc7XG4gICBwdWJsaWMgY3VycmVudEZhY3RvcjogRmFjdG9yU2NvcmVEdG87XG4gICBwdWJsaWMgZmlsdGVyOiBNb2RlbEZpbHRlcjtcbiAgIHB1YmxpYyBkaXJlY3Rpb246IHN0cmluZztcbiAgIHB1YmxpYyBmYWN0b3JTY29yZTogRmFjdG9yU2NvcmVEdG87XG4gICBwdWJsaWMgYmVuY2htYXJrU2NvcmU6IG51bWJlcjtcbiAgIHB1YmxpYyBkaW1lbnNpb25LZXk6IHN0cmluZztcbiAgIHB1YmxpYyBzdWJEaW1lbnNpb25zOiBGYWN0b3JTdHJ1Y3R1cmVEdG9bXTtcbiAgIHB1YmxpYyBiZW5jaG1hcms6IHN0cmluZztcbiAgIHB1YmxpYyBzaG93QmVuY2htYXJrOiBib29sZWFuO1xuICAgcHVibGljIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICBwdWJsaWMgbm90ZXM6IHN0cmluZ1tdO1xuICAgcHVibGljIGNvbmZpZGVuY2VBdmFpbGFibGU6IGJvb2xlYW47XG4gICBwdWJsaWMgdGVhbUtleTogc3RyaW5nO1xuICAgcHVibGljIGVmZmVjdHM6IEVmZmVjdER0b1tdO1xuICAgcHVibGljIHBvaW50czogUG9pbnREdG9bXTtcbiAgIHB1YmxpYyBvcGVuSW50ZXJ2ZW50aW9uczogbnVtYmVyO1xuICAgcHVibGljIGNvbXBsZXRlZEludGVydmVudGlvbnM6IG51bWJlcjtcbiAgIHB1YmxpYyBkYXRhQXZhaWxhYmxlOiBib29sZWFuO1xuICAgcHVibGljIHNjb3JlOiBudW1iZXI7XG4gICBwdWJsaWMgZmFjdG9yU2NvcmVXaWR0aDogbnVtYmVyO1xuICAgcHVibGljIGZhY3RvclNjb3JlTGVmdDogbnVtYmVyO1xuICAgcHVibGljIGZlZWRiYWNrQXZhaWxhYmxlOiBib29sZWFuO1xuICAgcHVibGljIGRlbHRhOiBGYWN0b3JTY29yZUNvbGxlY3Rpb25EZWx0YUR0bztcbiAgIHB1YmxpYyBkYXRlUmFuZ2U6IERhdGVSYW5nZUR0bztcbiAgIHB1YmxpYyBpbXBlZGVkSW50ZXJ2ZW50aW9uczogbnVtYmVyO1xuICAgcHVibGljIG5hbWU6IHN0cmluZztcbiAgIHB1YmxpYyBiYXNlVXJsOiBzdHJpbmc7XG4gICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgcHVibGljIEludGVydmVudGlvblN0YXRlRW51bSA9IEludGVydmVudGlvblN0YXRlRW51bTtcbiAgIHB1YmxpYyBicmVha2Rvd25QYWdlID0gMDtcblxuICAgY29uc3RydWN0b3IoQEluamVjdChWSUVXU1RBVEVfUFJPVklERVIpIHByaXZhdGUgc3RhdGU6IFZpZXdNb2RlbFN0YXRlQmFzZTxJUmVzdWx0c1N0YXRlPiwgcHJpdmF0ZSB1c2VyU2V0dGluZ3NTZXJ2aWNlOiBVc2VyU2V0dGluZ1NlcnZpY2UsIHByb3RlY3RlZCBzbmFja0JhcjogTWF0U25hY2tCYXIpIHtcbiAgICAgIHN1cGVyKHN0YXRlLCBzbmFja0JhcilcbiAgIH1cblxuICAgbmdPbkluaXQoKSB7XG4gICAgICB0aGlzLmZpbHRlciA9IHRoaXMudXNlclNldHRpbmdzU2VydmljZS5nZXQoKS51c2VyLm1vZGVsRmlsdGVyO1xuICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnVzZXJTZXR0aW5nc1NlcnZpY2UuY2hhbmdlZC5zdWJzY3JpYmUoc3VjY2VzcyA9PiB7XG4gICAgICAgICB0aGlzLmZpbHRlciA9IHRoaXMudXNlclNldHRpbmdzU2VydmljZS5nZXQoKS51c2VyLm1vZGVsRmlsdGVyO1xuICAgICAgfSk7XG4gICB9XG5cbiAgIG5nT25EZXN0cm95KCkge1xuICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgfVxuXG4gICBwcm90ZWN0ZWQgb25EYXRhVXBkYXRlKGRhdGE6IElSZXN1bHRzU3RhdGUpOiB2b2lkIHtcbiAgICAgIHRoaXMuY3VycmVudEZhY3RvciA9IGRhdGEuZmFjdG9yU2NvcmVzLmZhY3RvclNjb3Jlcy5maW5kKHAgPT4gcC5rZXkgPT0gdGhpcy5kaW1lbnNpb24ucHVibGljS2V5KTtcbiAgICAgIHRoaXMuZGVsdGEgPSBkYXRhLmZhY3RvclNjb3Jlcy5kZWx0YTtcbiAgICAgIHRoaXMuZGF0ZVJhbmdlID0gZGF0YS5mYWN0b3JTY29yZXMuZGF0ZVJhbmdlO1xuICAgICAgdGhpcy5iYXNlVXJsID0gZGF0YS5iYXNlVXJsO1xuICAgICAgdGhpcy5uYW1lID0gdGhpcy5kaW1lbnNpb24ubmFtZTtcbiAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSB0aGlzLmRpbWVuc2lvbi5kZXNjcmlwdGlvbjtcbiAgICAgIHRoaXMuc3ViRGltZW5zaW9ucyA9IHRoaXMuZGltZW5zaW9uLmxvd2VyO1xuICAgICAgdGhpcy5kaW1lbnNpb25LZXkgPSB0aGlzLmRpbWVuc2lvbi5wdWJsaWNLZXk7XG4gICAgICB0aGlzLmVmZmVjdHMgPSB0aGlzLmRpbWVuc2lvbi5lZmZlY3RzO1xuICAgICAgdGhpcy5iZW5jaG1hcmsgPSBkYXRhLmZhY3RvclNjb3Jlcy5iZW5jaG1hcmsubmFtZTtcblxuICAgICAgaWYgKHRoaXMuY3VycmVudEZhY3RvciAhPSBudWxsKSB7XG4gICAgICAgICB0aGlzLmRhdGFBdmFpbGFibGUgPSAhdGhpcy5jdXJyZW50RmFjdG9yLmFub255bWl6ZWQgJiYgdGhpcy5jdXJyZW50RmFjdG9yLnNhbXBsZVNpemUgPiAwO1xuICAgICAgICAgdGhpcy5jb25maWRlbmNlQXZhaWxhYmxlID0gZGF0YS5mYWN0b3JTY29yZXMuY29tcG9zaXRpb24ucG9pbnRzLmNvdW50ID4gMCAmJiB0aGlzLmRhdGFBdmFpbGFibGU7XG4gICAgICAgICB0aGlzLmZlZWRiYWNrQXZhaWxhYmxlID0gdGhpcy5jdXJyZW50RmFjdG9yLnJlY29tbWVuZGF0aW9uLmF2YWlsYWJsZTtcbiAgICAgICAgIHRoaXMuYmVuY2htYXJrU2NvcmUgPSB0aGlzLmN1cnJlbnRGYWN0b3IuYmVuY2htYXJrO1xuICAgICAgICAgdGhpcy5mYWN0b3JTY29yZSA9IHRoaXMuY3VycmVudEZhY3RvcjtcbiAgICAgICAgIHRoaXMuc2NvcmUgPSB0aGlzLmN1cnJlbnRGYWN0b3Iuc2NvcmU7XG4gICAgICAgICB0aGlzLnBvaW50cyA9IHRoaXMuY3VycmVudEZhY3Rvci5wb2ludHMuc2xpY2UodGhpcy5icmVha2Rvd25QYWdlICogMTAsIHRoaXMuYnJlYWtkb3duUGFnZSAqIDEwICsgMTApO1xuXG4gICAgICAgICB0aGlzLmZpbHRlci5pbnRlcnZlbnRpb25GaWx0ZXI7XG4gICAgICAgICB0aGlzLm9wZW5JbnRlcnZlbnRpb25zID0gdGhpcy5jdXJyZW50RmFjdG9yLmludGVydmVudGlvblN1bW1hcnkub3BlbjtcbiAgICAgICAgIHRoaXMuY29tcGxldGVkSW50ZXJ2ZW50aW9ucyA9IHRoaXMuY3VycmVudEZhY3Rvci5pbnRlcnZlbnRpb25TdW1tYXJ5LmNvbXBsZXRlZDtcbiAgICAgICAgIHRoaXMuaW1wZWRlZEludGVydmVudGlvbnMgPSB0aGlzLmN1cnJlbnRGYWN0b3IuaW50ZXJ2ZW50aW9uU3VtbWFyeS5pbXBlZGVkO1xuICAgICAgICAgdGhpcy5ub3RlcyA9IHRoaXMuY3VycmVudEZhY3Rvci5ub3RlcztcblxuICAgICAgICAgdGhpcy5mYWN0b3JTY29yZVdpZHRoID0gKHRoaXMuY3VycmVudEZhY3Rvci51cHBlckNvbmZpZGVuY2UgLSB0aGlzLmN1cnJlbnRGYWN0b3IubG93ZXJDb25maWRlbmNlKTtcbiAgICAgICAgIGlmICh0aGlzLmZhY3RvclNjb3JlV2lkdGggPD0gMTApIHsgdGhpcy5mYWN0b3JTY29yZVdpZHRoID0gMTAgfTtcbiAgICAgICAgIHRoaXMuZmFjdG9yU2NvcmVMZWZ0ID0gdGhpcy5jdXJyZW50RmFjdG9yLmxvd2VyQ29uZmlkZW5jZTtcbiAgICAgICAgIGlmICh0aGlzLmZhY3RvclNjb3JlTGVmdCA+PSA5MCkgeyB0aGlzLmZhY3RvclNjb3JlTGVmdCA9IDkwIH07XG5cbiAgICAgICAgIHRoaXMuZGlyZWN0aW9uID0gdGhpcy5mYWN0b3JTY29yZS5xdWFsaWZpY2F0aW9uLnRvTG93ZXJDYXNlKCk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgIHRoaXMuc2NvcmUgPSAwO1xuICAgICAgfVxuICAgfTtcbn1cbiIsIjxkaXYgW2NsYXNzXT1cIidmYWN0b3IgJyArIGZhY3RvckV4dHJhQ2xhc3MgKyAnICcgKyBkaXJlY3Rpb25cIiBbbmdDbGFzc109XCJ7J2ZhY3Rvci1ub3RtZWFzdXJlZCcgOiAhZGF0YUF2YWlsYWJsZX1cIiBbaWRdPVwiJ2ZhY3Rvci0nICsgZGltZW5zaW9uS2V5XCIgI2ZhY3RvciAoY2xpY2spPVwicG9wb3Zlci5vcGVuKClcIj5cbiAgIDxkaXYgY2xhc3M9XCJmYWN0b3ItY29udGVudFwiPlxuICAgICAgPGgyPlxuICAgICAgICAge3tuYW1lfX1cbiAgICAgIDwvaDI+XG4gICAgICA8ZGl2IFtjbGFzc109XCIncHJvZ3Jlc3NiYXIgcHJvZ3Jlc3NiYXItJyArIGRpcmVjdGlvblwiPlxuICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzYmFyLXNjb3JlXCI+e3tzY29yZSB8IG51bWJlcjonMS4wLTAnfX08L2Rpdj5cbiAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc2Jhci1jb25maWRlbmNlXCIgKm5nSWY9XCJjb25maWRlbmNlQXZhaWxhYmxlXCIgW21hdFRvb2x0aXBdPVwiJ01vc3QgcmVzcG9uc2VzIGZhbGwgaW4gdGhlIHJhbmdlIG9mICcgKyBmYWN0b3JTY29yZS5sb3dlckNvbmZpZGVuY2UgKyAnICgxNSUgcGVyY2VudGlsZSkgYW5kICcgKyBmYWN0b3JTY29yZS51cHBlckNvbmZpZGVuY2UgKyAnICg4NSUgcGVyY2VudGlsZSknXCIgW3N0eWxlXT1cIidsZWZ0OiAnICsgZmFjdG9yU2NvcmVMZWZ0ICsgJyU7IHdpZHRoOiAnICsgZmFjdG9yU2NvcmVXaWR0aCArICclJ1wiPjwvZGl2PlxuICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzYmFyLWJhclwiICpuZ0lmPVwiIWNvbmZpZGVuY2VBdmFpbGFibGVcIiBbc3R5bGVdPVwiJ3dpZHRoOiAnICsgc2NvcmUgKyAnJSdcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRlbHRhLWFycm93ICpuZ0lmPVwiZGF0YUF2YWlsYWJsZVwiIFtmYWN0b3JTY29yZV09XCJmYWN0b3JTY29yZVwiIFtkZWx0YV09XCJkZWx0YVwiIFtub0RhdGFJbmRpY2F0b3JdPVwiZmFsc2VcIj48L2RlbHRhLWFycm93PlxuICAgPC9kaXY+XG4gICA8ZGl2IGNsYXNzPVwiZW1waGFzaXplIGVtcGhhc2l6ZS1pbnRlcnZlbnRpb25zXCIgKm5nSWY9XCJmaWx0ZXIuaW50ZXJ2ZW50aW9uRmlsdGVyID09ICdBbGwnICYmIChvcGVuSW50ZXJ2ZW50aW9ucyA+IDAgfHwgY29tcGxldGVkSW50ZXJ2ZW50aW9ucyA+IDApXCIgW3JvdXRlckxpbmtdPVwiW2Jhc2VVcmwsICdhY3Rpb25zJ11cIiBbcXVlcnlQYXJhbXNdPVwieyBleHBlY3RlZEltcGFjdE9uOiBkaW1lbnNpb25LZXkgfVwiIFttYXRUb29sdGlwXT1cIidUaGVyZSBhcmUgJyArIG9wZW5JbnRlcnZlbnRpb25zICsgJyBvcGVuLCBhbmQgJyArIGNvbXBsZXRlZEludGVydmVudGlvbnMgKyAnIGNvbXBsZXRlZCBhY3Rpb24ocykuIEVhY2ggYWN0aW9uIGlzIGlkZW50aWZpZWQgYW5kIGNyZWF0ZWQgYnkgdGhlIHRlYW1zIHRoZW1zZWx2ZXMuJ1wiPlxuICAgICAge3tvcGVuSW50ZXJ2ZW50aW9uc319PHNtYWxsPi97e2NvbXBsZXRlZEludGVydmVudGlvbnN9fTwvc21hbGw+XG4gICA8L2Rpdj5cbiAgIDxhIGNsYXNzPVwiZW1waGFzaXplIGVtcGhhc2l6ZS1pbnRlcnZlbnRpb25zXCIgKm5nSWY9XCJmaWx0ZXIuaW50ZXJ2ZW50aW9uRmlsdGVyID09ICdPbmx5T3BlbicgJiYgb3BlbkludGVydmVudGlvbnMgPiAwXCIgW3JvdXRlckxpbmtdPVwiW2Jhc2VVcmwsICdhY3Rpb25zJ11cIiBbcXVlcnlQYXJhbXNdPVwieyBzdGF0ZTogSW50ZXJ2ZW50aW9uU3RhdGVFbnVtLm9wZW4sIGV4cGVjdGVkSW1wYWN0T246IGRpbWVuc2lvbktleSB9XCIgW21hdFRvb2x0aXBdPVwiJ1RoZXJlIGFyZSAnICsgb3BlbkludGVydmVudGlvbnMgKyAnIG9wZW4gaW1wcm92ZW1lbnQgYWN0aW9ucy4gRWFjaCBhY3Rpb24gaXMgaWRlbnRpZmllZCBhbmQgY3JlYXRlZCBieSB0aGUgdGVhbXMgdGhlbXNlbHZlcy4nXCI+XG4gICAgICA8aSBjbGFzcz1cInBoLWZsYXNrIGljb25cIj48L2k+IHt7b3BlbkludGVydmVudGlvbnN9fVxuICAgPC9hPlxuICAgPGRpdiBjbGFzcz1cImVtcGhhc2l6ZSBlbXBoYXNpemUtaW50ZXJ2ZW50aW9uc1wiICpuZ0lmPVwiZmlsdGVyLmludGVydmVudGlvbkZpbHRlciA9PSAnT25seUNvbXBsZXRlZCcgJiYgY29tcGxldGVkSW50ZXJ2ZW50aW9ucyA+IDBcIiBbcm91dGVyTGlua109XCJbYmFzZVVybCwgJ2FjdGlvbnMnXVwiIFtxdWVyeVBhcmFtc109XCJ7IHN0YXRlOiBJbnRlcnZlbnRpb25TdGF0ZUVudW0uY29tcGxldGVkLCBleHBlY3RlZEltcGFjdE9uOiBkaW1lbnNpb25LZXkgfVwiIFttYXRUb29sdGlwXT1cIidUaGVyZSBhcmUgJyArIG9wZW5JbnRlcnZlbnRpb25zICsgJyBjb21wbGV0ZWQgaW1wcm92ZW1lbnQgYWN0aW9ucy4gRWFjaCBhY3Rpb24gaXMgaWRlbnRpZmllZCBhbmQgY3JlYXRlZCBieSB0aGUgdGVhbXMgdGhlbXNlbHZlcy4nXCI+XG4gICAgICA8aSBjbGFzcz1cInBoLWNoZWNrLWJvbGQgaWNvblwiPjwvaT4ge3tjb21wbGV0ZWRJbnRlcnZlbnRpb25zfX1cbiAgIDwvZGl2PlxuICAgPGRpdiBjbGFzcz1cImVtcGhhc2l6ZSBlbXBoYXNpemUtaW1wZWRpbWVudHNcIiAqbmdJZj1cImltcGVkZWRJbnRlcnZlbnRpb25zID4gMFwiIFtyb3V0ZXJMaW5rXT1cIltiYXNlVXJsLCAnYWN0aW9ucyddXCIgW3F1ZXJ5UGFyYW1zXT1cInsgc3RhdGU6IEludGVydmVudGlvblN0YXRlRW51bS5pbXBlZGVkLCBleHBlY3RlZEltcGFjdE9uOiBkaW1lbnNpb25LZXkgfVwiIFttYXRUb29sdGlwXT1cIidUaGVyZSBhcmUgJyArIGltcGVkZWRJbnRlcnZlbnRpb25zICsgJyBhY3Rpb25zIHdoZXJlIHRlYW1zIGFyZSByZXF1ZXN0aW5nIGZyb20gaGVscCBmcm9tIG91dHNpZGUgdGhlIHRlYW0uJ1wiPlxuICAgICAgPGltZyBjbGFzcz1cImljb25cIiBzcmM9XCIvYXNzZXRzL2ltZy9pbXBlZGVkLnN2Z1wiIC8+IHt7aW1wZWRlZEludGVydmVudGlvbnN9fVxuICAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBbaWRdPVwiJ2ZhY3Rvci0nICsgZGltZW5zaW9uS2V5ICsgJy1zdWJmYWN0b3JzJ1wiIGNsYXNzPVwic3ViZmFjdG9yc1wiPlxuICAgPG1vZGVsLWZhY3RvciBbZGltZW5zaW9uXT1cInN1YkRpbWVuc2lvblwiIFtmYWN0b3JFeHRyYUNsYXNzXT1cIidmYWN0b3Itc3ViJ1wiICpuZ0Zvcj1cImxldCBzdWJEaW1lbnNpb24gb2Ygc3ViRGltZW5zaW9uc1wiPjwvbW9kZWwtZmFjdG9yPlxuPC9kaXY+XG5cbjxzYXQtcG9wb3ZlciAjcG9wb3ZlciBob3Jpem9udGFsQWxpZ249XCJhZnRlclwiIFthbmNob3JdPVwiZmFjdG9yXCIgdmVydGljYWxBbGlnbj1cImNlbnRlclwiIFtoYXNCYWNrZHJvcF09XCJ0cnVlXCIgW2F1dG9Gb2N1c109XCJmYWxzZVwiPlxuICAgPGRpdiBjbGFzcz1cInBvcG92ZXJcIiBbaWRdPVwiJ3BvcG92ZXItJyArIGRpbWVuc2lvbktleVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBvcG92ZXItY29udGFpbmVyXCI+XG4gICAgICAgICA8c3BhbiAoY2xpY2spPVwicG9wb3Zlci5jbG9zZSgpXCIgY2xhc3M9XCJjbG9zZSBwaC14XCI+PC9zcGFuPlxuICAgICAgICAgPGgzIGZhY3RvckluZm9ybWF0aW9uRGlhbG9nIFtmYWN0b3JdPVwiZGltZW5zaW9uXCI+XG4gICAgICAgICAgICB7e25hbWV9fVxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIHBoLWluZm8tZmlsbFwiPjwvc3Bhbj5cbiAgICAgICAgIDwvaDM+XG4gICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIj57e2Rlc2NyaXB0aW9ufX08L2Rpdj5cblxuICAgICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2UgbWVzc2FnZS13YXJuaW5nIGxpbWl0YXRpb25zXCIgKm5nSWY9XCJub3RlcyAmJiBub3Rlcy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gcGgtd2FybmluZy1jaXJjbGVcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm5vdGVzLmxlbmd0aCA9PSAxXCI+XG4gICAgICAgICAgICAgICB7e25vdGVzLmxlbmd0aH19IGxpbWl0YXRpb24gYXBwbGllcyB0byB0aGVzZSByZXN1bHRzLiA8YSBbcm91dGVyTGlua109XCJbXVwiIG5vdGVzRGlhbG9nIFtub3Rlc109XCJub3Rlc1wiPkNsaWNrIHRvIGV4cGxvcmU8L2E+LlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJub3Rlcy5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgICB7e25vdGVzLmxlbmd0aH19IGxpbWl0YXRpb25zIGFwcGx5IHRvIHRoZXNlIHJlc3VsdHMuIDxhIFtyb3V0ZXJMaW5rXT1cIltdXCIgbm90ZXNEaWFsb2cgW25vdGVzXT1cIm5vdGVzXCI+Q2xpY2sgdG8gZXhwbG9yZTwvYT4uXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrZG93blwiPlxuICAgICAgICAgICAgPGRpdiBbbWF0VG9vbHRpcF09XCInVGhpcyBpcyB0aGUgYXZlcmFnZSBzY29yZSBvZiB0ZWFtcyBpbiB0aGUgYmVuY2htYXJrIFsnICsgYmVuY2htYXJrICsgJ10uIENoYW5nZSB0aGUgYmVuY2htYXJrIHVuZGVyIFxcJ1NldHRpbmdzXFwnLidcIiBbYXR0ci5ub3JtYWxpemVkU2NvcmVdPVwiYmVuY2htYXJrU2NvcmVcIiBbY2xhc3NdPVwiJ3Byb2dyZXNzYmFyIHByb2dyZXNzYmFyLWludmVydGVkIHByb2dyZXNzYmFyLWJlbmNobWFyaydcIiAqbmdJZj1cImJlbmNobWFya1Njb3JlICE9IDBcIj5cbiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc2Jhci1iYXJcIiBbc3R5bGVdPVwiJ3dpZHRoOiAnICsgYmVuY2htYXJrU2NvcmUgKyAnJSdcIj48L2Rpdj5cbiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc2Jhci1sYWJlbFwiPmJlbmNobWFyazwvZGl2PlxuICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzYmFyLXNjb3JlXCI+e3tiZW5jaG1hcmtTY29yZSB8IG51bWJlcjonMS4wLTAnIH19PC9kaXY+V1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsc1wiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgPG1vZGVsLWZhY3Rvci1icmVha2Rvd24gW2ZhY3Rvcl09XCJjdXJyZW50RmFjdG9yXCI+PC9tb2RlbC1mYWN0b3ItYnJlYWtkb3duPlxuXG4gICAgICAgICA8cXVpY2t0aXBzIFtkaW1lbnNpb25LZXldPVwiZGltZW5zaW9uS2V5XCIgW2V4dHJhQ2xhc3NdPVwiJ3F1aWNrdGlwcy1wb3BvdmVyJ1wiPjwvcXVpY2t0aXBzPlxuXG4gICAgICAgICA8ZGl2IGNsYXNzPVwibGlua1wiICpuZ0lmPVwiZmVlZGJhY2tBdmFpbGFibGVcIj5cbiAgICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIltiYXNlVXJsLCAndGlwcyddXCIgW2ZyYWdtZW50XT1cImRpbWVuc2lvbktleVwiPmRpc2NvdmVyIGhvdyB0byBpbXByb3ZlID48L2E+XG4gICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImFycm93XCI+PC9kaXY+XG4gICA8L2Rpdj5cbjwvc2F0LXBvcG92ZXI+XG4iXX0=
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtZmFjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY3J1bXRlYW1zdXJ2ZXktdG9vbHMvc3JjL2xpYi9yZXN1bHRzL2NvbXBvbmVudHMvbW9kZWwtZmFjdG9yL21vZGVsLWZhY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvcmVzdWx0cy9jb21wb25lbnRzL21vZGVsLWZhY3Rvci9tb2RlbC1mYWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBSWpGLE9BQU8sRUFBc0Isa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBVW5HLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSwwQkFBeUM7SUFxQ2hGLFlBQWdELEtBQXdDLEVBQVUsbUJBQXVDLEVBQVksUUFBcUI7UUFDdkssS0FBSyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUR1QixVQUFLLEdBQUwsS0FBSyxDQUFtQztRQUFVLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFBWSxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBTm5LLDBCQUFxQixHQUFHLHFCQUFxQixDQUFDO1FBQzlDLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO0lBT3pCLENBQUM7SUFFRCxRQUFRO1FBQ0wsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFLENBQUMs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dCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW50ZXJ2ZW50aW9uU3RhdGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vYWN0aW9ucy9tb2RlbHMvYWN0aW9uRHRvJztcbmltcG9ydCB7IENvbXBvbmVudFdpdGhWaWV3U3RhdGVCYXNlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50V2l0aFZpZXdTdGF0ZUJhc2UnO1xuaW1wb3J0IHsgTW9kZWxGaWx0ZXIgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvdXNlclNldHRpbmdzRHRvJztcbmltcG9ydCB7IERhdGVSYW5nZUR0byB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL2RhdGVSYW5nZS9uZ3gtZGF0ZVJhbmdlRHRvLm1vZGVsJztcbmltcG9ydCB7IFVzZXJTZXR0aW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3ZpZXdNb2RlbC91c2VyU2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBWaWV3TW9kZWxTdGF0ZUJhc2UsIFZJRVdTVEFURV9QUk9WSURFUiB9IGZyb20gJy4uLy4uLy4uL3ZpZXdNb2RlbC92aWV3TW9kZWxTdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IElSZXN1bHRzU3RhdGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZXN1bHRzU3RhdGUnO1xuaW1wb3J0IHsgQmVuY2htYXJrVHlwZUVudW0sIEZhY3RvclNjb3JlQ29sbGVjdGlvbkRlbHRhRHRvLCBGYWN0b3JTY29yZUR0bywgUG9pbnREdG8sIFF1YWxpZmllZEJ5RW51bSB9IGZyb20gJy4uLy4uL21vZGVscy9mYWN0b3JTY29yZUR0byc7XG5pbXBvcnQgeyBFZmZlY3REdG8sIEZhY3RvclN0cnVjdHVyZUR0byB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9tb2RlbFN0cnVjdHVyZUR0byc7XG5cbkBDb21wb25lbnQoe1xuICAgc2VsZWN0b3I6ICdtb2RlbC1mYWN0b3InLFxuICAgdGVtcGxhdGVVcmw6ICcuL21vZGVsLWZhY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gICBzdHlsZVVybHM6IFsnLi9tb2RlbC1mYWN0b3IuY29tcG9uZW50Lmxlc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBNb2RlbEZhY3RvckNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudFdpdGhWaWV3U3RhdGVCYXNlPElSZXN1bHRzU3RhdGU+IHtcbiAgIEBJbnB1dCgpIGRpbWVuc2lvbjogRmFjdG9yU3RydWN0dXJlRHRvO1xuICAgQElucHV0KCkgZmFjdG9yRXh0cmFDbGFzczogc3RyaW5nO1xuICAgcHVibGljIGN1cnJlbnRGYWN0b3I6IEZhY3RvclNjb3JlRHRvO1xuICAgcHVibGljIGZpbHRlcjogTW9kZWxGaWx0ZXI7XG4gICBwdWJsaWMgZGlyZWN0aW9uOiBzdHJpbmc7XG4gICBwdWJsaWMgZmFjdG9yU2NvcmU6IEZhY3RvclNjb3JlRHRvO1xuICAgcHVibGljIGJlbmNobWFya1Njb3JlOiBudW1iZXI7XG4gICBwdWJsaWMgZGltZW5zaW9uS2V5OiBzdHJpbmc7XG4gICBwdWJsaWMgc3ViRGltZW5zaW9uczogRmFjdG9yU3RydWN0dXJlRHRvW107XG4gICBwdWJsaWMgYmVuY2htYXJrOiBzdHJpbmc7XG4gICBwdWJsaWMgc2hvd0JlbmNobWFyazogYm9vbGVhbjtcbiAgIHB1YmxpYyBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgcHVibGljIG5vdGVzOiBzdHJpbmdbXTtcbiAgIHB1YmxpYyBjb25maWRlbmNlQXZhaWxhYmxlOiBib29sZWFuO1xuICAgcHVibGljIHRlYW1LZXk6IHN0cmluZztcbiAgIHB1YmxpYyBlZmZlY3RzOiBFZmZlY3REdG9bXTtcbiAgIHB1YmxpYyBwb2ludHM6IFBvaW50RHRvW107XG4gICBwdWJsaWMgb3BlbkludGVydmVudGlvbnM6IG51bWJlcjtcbiAgIHB1YmxpYyBjb21wbGV0ZWRJbnRlcnZlbnRpb25zOiBudW1iZXI7XG4gICBwdWJsaWMgZGF0YUF2YWlsYWJsZTogYm9vbGVhbjtcbiAgIHB1YmxpYyBzY29yZTogbnVtYmVyO1xuICAgcHVibGljIGZhY3RvclNjb3JlV2lkdGg6IG51bWJlcjtcbiAgIHB1YmxpYyBmYWN0b3JTY29yZUxlZnQ6IG51bWJlcjtcbiAgIHB1YmxpYyBmZWVkYmFja0F2YWlsYWJsZTogYm9vbGVhbjtcbiAgIHB1YmxpYyBkZWx0YTogRmFjdG9yU2NvcmVDb2xsZWN0aW9uRGVsdGFEdG87XG4gICBwdWJsaWMgZGF0ZVJhbmdlOiBEYXRlUmFuZ2VEdG87XG4gICBwdWJsaWMgaW1wZWRlZEludGVydmVudGlvbnM6IG51bWJlcjtcbiAgIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG4gICBwdWJsaWMgYmFzZVVybDogc3RyaW5nO1xuICAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgIHB1YmxpYyBJbnRlcnZlbnRpb25TdGF0ZUVudW0gPSBJbnRlcnZlbnRpb25TdGF0ZUVudW07XG4gICBwdWJsaWMgYnJlYWtkb3duUGFnZSA9IDA7XG4gICBwdWJsaWMgbGFzdE1lYXN1cmVkRG90czogQXJyYXk8bnVtYmVyPjtcbiAgIHB1YmxpYyBsYXN0TWVhc3VyZWRPcGFjaXR5OiBudW1iZXI7XG4gICBwdWJsaWMgbGFzdE1lYXN1cmVkVG9vbHRpcDogc3RyaW5nO1xuXG4gICBjb25zdHJ1Y3RvcihASW5qZWN0KFZJRVdTVEFURV9QUk9WSURFUikgcHJpdmF0ZSBzdGF0ZTogVmlld01vZGVsU3RhdGVCYXNlPElSZXN1bHRzU3RhdGU+LCBwcml2YXRlIHVzZXJTZXR0aW5nc1NlcnZpY2U6IFVzZXJTZXR0aW5nU2VydmljZSwgcHJvdGVjdGVkIHNuYWNrQmFyOiBNYXRTbmFja0Jhcikge1xuICAgICAgc3VwZXIoc3RhdGUsIHNuYWNrQmFyKVxuICAgfVxuXG4gICBuZ09uSW5pdCgpIHtcbiAgICAgIHRoaXMuZmlsdGVyID0gdGhpcy51c2VyU2V0dGluZ3NTZXJ2aWNlLmdldCgpLnVzZXIubW9kZWxGaWx0ZXI7XG4gICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMudXNlclNldHRpbmdzU2VydmljZS5jaGFuZ2VkLnN1YnNjcmliZShzdWNjZXNzID0+IHtcbiAgICAgICAgIHRoaXMuZmlsdGVyID0gdGhpcy51c2VyU2V0dGluZ3NTZXJ2aWNlLmdldCgpLnVzZXIubW9kZWxGaWx0ZXI7XG4gICAgICB9KTtcbiAgIH1cblxuICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcbiAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICB9XG4gICBcbiAgIHByb3RlY3RlZCBvbkRhdGFVcGRhdGUoZGF0YTogSVJlc3VsdHNTdGF0ZSk6IHZvaWQge1xuICAgICAgdGhpcy5jdXJyZW50RmFjdG9yID0gZGF0YS5mYWN0b3JTY29yZXMuZmFjdG9yU2NvcmVzLmZpbmQocCA9PiBwLmtleSA9PSB0aGlzLmRpbWVuc2lvbi5wdWJsaWNLZXkpO1xuICAgICAgdGhpcy5kZWx0YSA9IGRhdGEuZmFjdG9yU2NvcmVzLmRlbHRhO1xuICAgICAgdGhpcy5kYXRlUmFuZ2UgPSBkYXRhLmZhY3RvclNjb3Jlcy5kYXRlUmFuZ2U7XG4gICAgICB0aGlzLmJhc2VVcmwgPSBkYXRhLmJhc2VVcmw7XG4gICAgICB0aGlzLm5hbWUgPSB0aGlzLmRpbWVuc2lvbi5uYW1lO1xuICAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IHRoaXMuZGltZW5zaW9uLmRlc2NyaXB0aW9uO1xuICAgICAgdGhpcy5zdWJEaW1lbnNpb25zID0gdGhpcy5kaW1lbnNpb24ubG93ZXI7XG4gICAgICB0aGlzLmRpbWVuc2lvbktleSA9IHRoaXMuZGltZW5zaW9uLnB1YmxpY0tleTtcbiAgICAgIHRoaXMuZWZmZWN0cyA9IHRoaXMuZGltZW5zaW9uLmVmZmVjdHM7XG4gICAgICB0aGlzLmJlbmNobWFyayA9IGRhdGEuZmFjdG9yU2NvcmVzLmJlbmNobWFyay5uYW1lO1xuXG4gICAgICBpZiAodGhpcy5jdXJyZW50RmFjdG9yICE9IG51bGwpIHtcbiAgICAgICAgIHRoaXMuZGF0YUF2YWlsYWJsZSA9ICF0aGlzLmN1cnJlbnRGYWN0b3IuYW5vbnltaXplZCAmJiB0aGlzLmN1cnJlbnRGYWN0b3Iuc2FtcGxlU2l6ZSA+IDA7XG4gICAgICAgICB0aGlzLmNvbmZpZGVuY2VBdmFpbGFibGUgPSBkYXRhLmZhY3RvclNjb3Jlcy5jb21wb3NpdGlvbi5wb2ludHMuY291bnQgPiAwICYmIHRoaXMuZGF0YUF2YWlsYWJsZTtcbiAgICAgICAgIHRoaXMuZmVlZGJhY2tBdmFpbGFibGUgPSB0aGlzLmN1cnJlbnRGYWN0b3IucmVjb21tZW5kYXRpb24uYXZhaWxhYmxlO1xuICAgICAgICAgdGhpcy5iZW5jaG1hcmtTY29yZSA9IHRoaXMuY3VycmVudEZhY3Rvci5iZW5jaG1hcms7XG4gICAgICAgICB0aGlzLmZhY3RvclNjb3JlID0gdGhpcy5jdXJyZW50RmFjdG9yO1xuICAgICAgICAgdGhpcy5zY29yZSA9IHRoaXMuY3VycmVudEZhY3Rvci5zY29yZTtcbiAgICAgICAgIHRoaXMucG9pbnRzID0gdGhpcy5jdXJyZW50RmFjdG9yLnBvaW50cy5zbGljZSh0aGlzLmJyZWFrZG93blBhZ2UgKiAxMCwgdGhpcy5icmVha2Rvd25QYWdlICogMTAgKyAxMCk7XG5cbiAgICAgICAgIHRoaXMuZmlsdGVyLmludGVydmVudGlvbkZpbHRlcjtcbiAgICAgICAgIHRoaXMub3BlbkludGVydmVudGlvbnMgPSB0aGlzLmN1cnJlbnRGYWN0b3IuaW50ZXJ2ZW50aW9uU3VtbWFyeS5vcGVuO1xuICAgICAgICAgdGhpcy5jb21wbGV0ZWRJbnRlcnZlbnRpb25zID0gdGhpcy5jdXJyZW50RmFjdG9yLmludGVydmVudGlvblN1bW1hcnkuY29tcGxldGVkO1xuICAgICAgICAgdGhpcy5pbXBlZGVkSW50ZXJ2ZW50aW9ucyA9IHRoaXMuY3VycmVudEZhY3Rvci5pbnRlcnZlbnRpb25TdW1tYXJ5LmltcGVkZWQ7XG4gICAgICAgICB0aGlzLm5vdGVzID0gdGhpcy5jdXJyZW50RmFjdG9yLm5vdGVzO1xuXG4gICAgICAgICB0aGlzLmZhY3RvclNjb3JlV2lkdGggPSAodGhpcy5jdXJyZW50RmFjdG9yLnVwcGVyQ29uZmlkZW5jZSAtIHRoaXMuY3VycmVudEZhY3Rvci5sb3dlckNvbmZpZGVuY2UpO1xuICAgICAgICAgaWYgKHRoaXMuZmFjdG9yU2NvcmVXaWR0aCA8PSAxMCkgeyB0aGlzLmZhY3RvclNjb3JlV2lkdGggPSAxMCB9O1xuICAgICAgICAgdGhpcy5mYWN0b3JTY29yZUxlZnQgPSB0aGlzLmN1cnJlbnRGYWN0b3IubG93ZXJDb25maWRlbmNlO1xuICAgICAgICAgaWYgKHRoaXMuZmFjdG9yU2NvcmVMZWZ0ID49IDkwKSB7IHRoaXMuZmFjdG9yU2NvcmVMZWZ0ID0gOTAgfTtcblxuICAgICAgICAgdGhpcy5kaXJlY3Rpb24gPSB0aGlzLmZhY3RvclNjb3JlLnF1YWxpZmljYXRpb24udG9Mb3dlckNhc2UoKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICAgdGhpcy5zY29yZSA9IDA7XG4gICAgICB9XG4gICB9O1xufVxuIiwiPGRpdiBbY2xhc3NdPVwiJ2ZhY3RvciAnICsgZmFjdG9yRXh0cmFDbGFzcyArICcgJyArIGRpcmVjdGlvblwiIFtuZ0NsYXNzXT1cInsnZmFjdG9yLW5vdG1lYXN1cmVkJyA6ICFkYXRhQXZhaWxhYmxlfVwiIFtpZF09XCInZmFjdG9yLScgKyBkaW1lbnNpb25LZXlcIiAjZmFjdG9yIChjbGljayk9XCJwb3BvdmVyLm9wZW4oKVwiPlxuICAgPGRpdiBjbGFzcz1cImZhY3Rvci1jb250ZW50XCI+XG4gICAgICA8aDI+XG4gICAgICAgICB7e25hbWV9fVxuICAgICAgPC9oMj5cbiAgICAgIDxkaXYgW2NsYXNzXT1cIidwcm9ncmVzc2JhciBwcm9ncmVzc2Jhci0nICsgZGlyZWN0aW9uXCI+XG4gICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NiYXItc2NvcmVcIj57e3Njb3JlIHwgbnVtYmVyOicxLjAtMCd9fTwvZGl2PlxuICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzYmFyLWNvbmZpZGVuY2VcIiAqbmdJZj1cImNvbmZpZGVuY2VBdmFpbGFibGVcIiBbbWF0VG9vbHRpcF09XCInTW9zdCByZXNwb25zZXMgZmFsbCBpbiB0aGUgcmFuZ2Ugb2YgJyArIGZhY3RvclNjb3JlLmxvd2VyQ29uZmlkZW5jZSArICcgKDE1JSBwZXJjZW50aWxlKSBhbmQgJyArIGZhY3RvclNjb3JlLnVwcGVyQ29uZmlkZW5jZSArICcgKDg1JSBwZXJjZW50aWxlKSdcIiBbc3R5bGVdPVwiJ2xlZnQ6ICcgKyBmYWN0b3JTY29yZUxlZnQgKyAnJTsgd2lkdGg6ICcgKyBmYWN0b3JTY29yZVdpZHRoICsgJyUnXCI+PC9kaXY+XG4gICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NiYXItYmFyXCIgKm5nSWY9XCIhY29uZmlkZW5jZUF2YWlsYWJsZVwiIFtzdHlsZV09XCInd2lkdGg6ICcgKyBzY29yZSArICclJ1wiPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8YWdlLWluZGljYXRvciBbbGFzdE1lYXN1cmVkXT1cImZhY3RvclNjb3JlLmxhc3RNZWFzdXJlZFwiPjwvYWdlLWluZGljYXRvcj5cbiAgICAgIDxkZWx0YS1hcnJvdyAqbmdJZj1cImRhdGFBdmFpbGFibGVcIiBbZmFjdG9yU2NvcmVdPVwiZmFjdG9yU2NvcmVcIiBbZGVsdGFdPVwiZGVsdGFcIiBbbm9EYXRhSW5kaWNhdG9yXT1cImZhbHNlXCI+PC9kZWx0YS1hcnJvdz5cbiAgIDwvZGl2PlxuICAgPGRpdiBjbGFzcz1cImVtcGhhc2l6ZSBlbXBoYXNpemUtaW50ZXJ2ZW50aW9uc1wiICpuZ0lmPVwiZmlsdGVyLmludGVydmVudGlvbkZpbHRlciA9PSAnQWxsJyAmJiAob3BlbkludGVydmVudGlvbnMgPiAwIHx8IGNvbXBsZXRlZEludGVydmVudGlvbnMgPiAwKVwiIFtyb3V0ZXJMaW5rXT1cIltiYXNlVXJsLCAnYWN0aW9ucyddXCIgW3F1ZXJ5UGFyYW1zXT1cInsgZXhwZWN0ZWRJbXBhY3RPbjogZGltZW5zaW9uS2V5IH1cIiBbbWF0VG9vbHRpcF09XCInVGhlcmUgYXJlICcgKyBvcGVuSW50ZXJ2ZW50aW9ucyArICcgb3BlbiwgYW5kICcgKyBjb21wbGV0ZWRJbnRlcnZlbnRpb25zICsgJyBjb21wbGV0ZWQgYWN0aW9uKHMpLiBFYWNoIGFjdGlvbiBpcyBpZGVudGlmaWVkIGFuZCBjcmVhdGVkIGJ5IHRoZSB0ZWFtcyB0aGVtc2VsdmVzLidcIj5cbiAgICAgIHt7b3BlbkludGVydmVudGlvbnN9fTxzbWFsbD4ve3tjb21wbGV0ZWRJbnRlcnZlbnRpb25zfX08L3NtYWxsPlxuICAgPC9kaXY+XG4gICA8YSBjbGFzcz1cImVtcGhhc2l6ZSBlbXBoYXNpemUtaW50ZXJ2ZW50aW9uc1wiICpuZ0lmPVwiZmlsdGVyLmludGVydmVudGlvbkZpbHRlciA9PSAnT25seU9wZW4nICYmIG9wZW5JbnRlcnZlbnRpb25zID4gMFwiIFtyb3V0ZXJMaW5rXT1cIltiYXNlVXJsLCAnYWN0aW9ucyddXCIgW3F1ZXJ5UGFyYW1zXT1cInsgc3RhdGU6IEludGVydmVudGlvblN0YXRlRW51bS5vcGVuLCBleHBlY3RlZEltcGFjdE9uOiBkaW1lbnNpb25LZXkgfVwiIFttYXRUb29sdGlwXT1cIidUaGVyZSBhcmUgJyArIG9wZW5JbnRlcnZlbnRpb25zICsgJyBvcGVuIGltcHJvdmVtZW50IGFjdGlvbnMuIEVhY2ggYWN0aW9uIGlzIGlkZW50aWZpZWQgYW5kIGNyZWF0ZWQgYnkgdGhlIHRlYW1zIHRoZW1zZWx2ZXMuJ1wiPlxuICAgICAgPGkgY2xhc3M9XCJwaC1mbGFzayBpY29uXCI+PC9pPiB7e29wZW5JbnRlcnZlbnRpb25zfX1cbiAgIDwvYT5cbiAgIDxkaXYgY2xhc3M9XCJlbXBoYXNpemUgZW1waGFzaXplLWludGVydmVudGlvbnNcIiAqbmdJZj1cImZpbHRlci5pbnRlcnZlbnRpb25GaWx0ZXIgPT0gJ09ubHlDb21wbGV0ZWQnICYmIGNvbXBsZXRlZEludGVydmVudGlvbnMgPiAwXCIgW3JvdXRlckxpbmtdPVwiW2Jhc2VVcmwsICdhY3Rpb25zJ11cIiBbcXVlcnlQYXJhbXNdPVwieyBzdGF0ZTogSW50ZXJ2ZW50aW9uU3RhdGVFbnVtLmNvbXBsZXRlZCwgZXhwZWN0ZWRJbXBhY3RPbjogZGltZW5zaW9uS2V5IH1cIiBbbWF0VG9vbHRpcF09XCInVGhlcmUgYXJlICcgKyBvcGVuSW50ZXJ2ZW50aW9ucyArICcgY29tcGxldGVkIGltcHJvdmVtZW50IGFjdGlvbnMuIEVhY2ggYWN0aW9uIGlzIGlkZW50aWZpZWQgYW5kIGNyZWF0ZWQgYnkgdGhlIHRlYW1zIHRoZW1zZWx2ZXMuJ1wiPlxuICAgICAgPGkgY2xhc3M9XCJwaC1jaGVjay1ib2xkIGljb25cIj48L2k+IHt7Y29tcGxldGVkSW50ZXJ2ZW50aW9uc319XG4gICA8L2Rpdj5cbiAgIDxkaXYgY2xhc3M9XCJlbXBoYXNpemUgZW1waGFzaXplLWltcGVkaW1lbnRzXCIgKm5nSWY9XCJpbXBlZGVkSW50ZXJ2ZW50aW9ucyA+IDBcIiBbcm91dGVyTGlua109XCJbYmFzZVVybCwgJ2FjdGlvbnMnXVwiIFtxdWVyeVBhcmFtc109XCJ7IHN0YXRlOiBJbnRlcnZlbnRpb25TdGF0ZUVudW0uaW1wZWRlZCwgZXhwZWN0ZWRJbXBhY3RPbjogZGltZW5zaW9uS2V5IH1cIiBbbWF0VG9vbHRpcF09XCInVGhlcmUgYXJlICcgKyBpbXBlZGVkSW50ZXJ2ZW50aW9ucyArICcgYWN0aW9ucyB3aGVyZSB0ZWFtcyBhcmUgcmVxdWVzdGluZyBmcm9tIGhlbHAgZnJvbSBvdXRzaWRlIHRoZSB0ZWFtLidcIj5cbiAgICAgIDxpbWcgY2xhc3M9XCJpY29uXCIgc3JjPVwiL2Fzc2V0cy9pbWcvaW1wZWRlZC5zdmdcIiAvPiB7e2ltcGVkZWRJbnRlcnZlbnRpb25zfX1cbiAgIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgW2lkXT1cIidmYWN0b3ItJyArIGRpbWVuc2lvbktleSArICctc3ViZmFjdG9ycydcIiBjbGFzcz1cInN1YmZhY3RvcnNcIj5cbiAgIDxtb2RlbC1mYWN0b3IgW2RpbWVuc2lvbl09XCJzdWJEaW1lbnNpb25cIiBbZmFjdG9yRXh0cmFDbGFzc109XCInZmFjdG9yLXN1YidcIiAqbmdGb3I9XCJsZXQgc3ViRGltZW5zaW9uIG9mIHN1YkRpbWVuc2lvbnNcIj48L21vZGVsLWZhY3Rvcj5cbjwvZGl2PlxuXG48c2F0LXBvcG92ZXIgI3BvcG92ZXIgaG9yaXpvbnRhbEFsaWduPVwiYWZ0ZXJcIiBbYW5jaG9yXT1cImZhY3RvclwiIHZlcnRpY2FsQWxpZ249XCJjZW50ZXJcIiBbaGFzQmFja2Ryb3BdPVwidHJ1ZVwiIFthdXRvRm9jdXNdPVwiZmFsc2VcIj5cbiAgIDxkaXYgY2xhc3M9XCJwb3BvdmVyXCIgW2lkXT1cIidwb3BvdmVyLScgKyBkaW1lbnNpb25LZXlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwb3BvdmVyLWNvbnRhaW5lclwiPlxuICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInBvcG92ZXIuY2xvc2UoKVwiIGNsYXNzPVwiY2xvc2UgcGgteFwiPjwvc3Bhbj5cbiAgICAgICAgIDxoMyBmYWN0b3JJbmZvcm1hdGlvbkRpYWxvZyBbZmFjdG9yXT1cImRpbWVuc2lvblwiPlxuICAgICAgICAgICAge3tuYW1lfX1cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBwaC1pbmZvLWZpbGxcIj48L3NwYW4+XG4gICAgICAgICA8L2gzPlxuICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+e3tkZXNjcmlwdGlvbn19PC9kaXY+XG5cbiAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXNzYWdlIG1lc3NhZ2Utd2FybmluZyBsaW1pdGF0aW9uc1wiICpuZ0lmPVwibm90ZXMgJiYgbm90ZXMubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIHBoLXdhcm5pbmctY2lyY2xlXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJub3Rlcy5sZW5ndGggPT0gMVwiPlxuICAgICAgICAgICAgICAge3tub3Rlcy5sZW5ndGh9fSBsaW1pdGF0aW9uIGFwcGxpZXMgdG8gdGhlc2UgcmVzdWx0cy4gPGEgW3JvdXRlckxpbmtdPVwiW11cIiBub3Rlc0RpYWxvZyBbbm90ZXNdPVwibm90ZXNcIj5DbGljayB0byBleHBsb3JlPC9hPi5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibm90ZXMubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAge3tub3Rlcy5sZW5ndGh9fSBsaW1pdGF0aW9ucyBhcHBseSB0byB0aGVzZSByZXN1bHRzLiA8YSBbcm91dGVyTGlua109XCJbXVwiIG5vdGVzRGlhbG9nIFtub3Rlc109XCJub3Rlc1wiPkNsaWNrIHRvIGV4cGxvcmU8L2E+LlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgIDxkaXYgY2xhc3M9XCJicmVha2Rvd25cIj5cbiAgICAgICAgICAgIDxkaXYgW21hdFRvb2x0aXBdPVwiJ1RoaXMgaXMgdGhlIGF2ZXJhZ2Ugc2NvcmUgb2YgdGVhbXMgaW4gdGhlIGJlbmNobWFyayBbJyArIGJlbmNobWFyayArICddLiBDaGFuZ2UgdGhlIGJlbmNobWFyayB1bmRlciBcXCdTZXR0aW5nc1xcJy4nXCIgW2F0dHIubm9ybWFsaXplZFNjb3JlXT1cImJlbmNobWFya1Njb3JlXCIgW2NsYXNzXT1cIidwcm9ncmVzc2JhciBwcm9ncmVzc2Jhci1pbnZlcnRlZCBwcm9ncmVzc2Jhci1iZW5jaG1hcmsnXCIgKm5nSWY9XCJiZW5jaG1hcmtTY29yZSAhPSAwXCI+XG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NiYXItYmFyXCIgW3N0eWxlXT1cIid3aWR0aDogJyArIGJlbmNobWFya1Njb3JlICsgJyUnXCI+PC9kaXY+XG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NiYXItbGFiZWxcIj5iZW5jaG1hcms8L2Rpdj5cbiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc2Jhci1zY29yZVwiPnt7YmVuY2htYXJrU2NvcmUgfCBudW1iZXI6JzEuMC0wJyB9fTwvZGl2PldcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbHNcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgIDxtb2RlbC1mYWN0b3ItYnJlYWtkb3duIFtmYWN0b3JdPVwiY3VycmVudEZhY3RvclwiPjwvbW9kZWwtZmFjdG9yLWJyZWFrZG93bj5cblxuICAgICAgICAgPHF1aWNrdGlwcyBbZGltZW5zaW9uS2V5XT1cImRpbWVuc2lvbktleVwiIFtleHRyYUNsYXNzXT1cIidxdWlja3RpcHMtcG9wb3ZlcidcIj48L3F1aWNrdGlwcz5cblxuICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmtcIiAqbmdJZj1cImZlZWRiYWNrQXZhaWxhYmxlXCI+XG4gICAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJbYmFzZVVybCwgJ3RpcHMnXVwiIFtmcmFnbWVudF09XCJkaW1lbnNpb25LZXlcIj5kaXNjb3ZlciBob3cgdG8gaW1wcm92ZSA+PC9hPlxuICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhcnJvd1wiPjwvZGl2PlxuICAgPC9kaXY+XG48L3NhdC1wb3BvdmVyPlxuIl19