@the-liberators/ngx-scrumteamsurvey-tools 2.3.19 → 2.3.23

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,90 @@
1
+ import { Component, Input, forwardRef } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class QuantitySelectorComponent {
6
+ constructor() {
7
+ this.disabled = false;
8
+ this.maximum = 999;
9
+ this.minimum = 0;
10
+ this.onChange = () => { };
11
+ this.onTouched = () => { };
12
+ }
13
+ increaseQuantity() {
14
+ if (this.quantity >= this.maximum) {
15
+ this.quantity = this.maximum;
16
+ }
17
+ else {
18
+ this.quantity = this.quantity + 1;
19
+ }
20
+ this.onChange(this.quantity);
21
+ }
22
+ setQuantity() {
23
+ if (this.quantity < this.minimum) {
24
+ this.quantity = this.minimum;
25
+ }
26
+ if (this.quantity > this.maximum) {
27
+ this.quantity = this.maximum;
28
+ }
29
+ this.onChange(this.quantity);
30
+ }
31
+ decreaseQuantity() {
32
+ if (this.quantity <= this.minimum) {
33
+ this.quantity = this.minimum;
34
+ }
35
+ else {
36
+ this.quantity = this.quantity - 1;
37
+ }
38
+ this.onChange(this.quantity);
39
+ }
40
+ onInput(event) {
41
+ const input = event.target;
42
+ const value = input.value.trim();
43
+ if (/^-?\d*\.?\d*$/.test(value)) {
44
+ this.quantity = parseFloat(input.value);
45
+ }
46
+ else {
47
+ this.quantity = this.minimum;
48
+ input.value = this.quantity.toString();
49
+ }
50
+ this.onChange(this.quantity);
51
+ }
52
+ writeValue(quantity) {
53
+ console.log(quantity);
54
+ this.quantity = quantity;
55
+ }
56
+ registerOnChange(fn) {
57
+ this.onChange = fn;
58
+ }
59
+ registerOnTouched(fn) {
60
+ this.onTouched = fn;
61
+ }
62
+ setDisabledState(isDisabled) {
63
+ this.disabled = isDisabled;
64
+ }
65
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: QuantitySelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
66
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: QuantitySelectorComponent, selector: "quantity-selector", inputs: { disabled: "disabled", maximum: "maximum", minimum: "minimum" }, providers: [
67
+ {
68
+ provide: NG_VALUE_ACCESSOR,
69
+ useExisting: forwardRef(() => QuantitySelectorComponent),
70
+ multi: true
71
+ }
72
+ ], ngImport: i0, template: "<div class=\"quantity-selector\">\n <div class=\"quantity-selector-change quantity-selector-change-minus disabled\" id=\"quantity-decrease\" *ngIf=\"quantity <= minimum\"><span class=\"ph ph-minus-bold\"></span></div>\n <div class=\"quantity-selector-change quantity-selector-change-minus\" id=\"quantity-decrease\" *ngIf=\"quantity > minimum\" (click)=\"decreaseQuantity()\" (keyup.arrowleft)=\"decreaseQuantity()\"><span class=\"ph ph-minus-bold\"></span></div>\n <input class=\"quantity-selector-change quantity-selector-change-quantity\" id=\"quantity-input\" (blur)=\"setQuantity()\" [value]=\"quantity\" (input)=\"onInput($event)\" />\n <div class=\"quantity-selector-change quantity-selector-change-plus\" id=\"quantity-increase\" *ngIf=\"quantity < maximum\" (click)=\"increaseQuantity()\" (keyup.arrowright)=\"increaseQuantity()\"><span class=\"ph ph-plus-bold\"></span></div>\n <div class=\"quantity-selector-change quantity-selector-change-plus disabled\" id=\"quantity-increase\" *ngIf=\"quantity >= maximum\"><span class=\"ph ph-plus-bold\"></span></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%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}.quantity-selector{display:flex;align-content:center}.quantity-selector .quantity-selector-change{border:none;background:#fff;font-size:18px;min-width:30px;min-height:40px;display:flex;align-items:center;justify-content:center}.quantity-selector .quantity-selector-change.disabled{opacity:.2;cursor:none}.quantity-selector .quantity-selector-change.quantity-selector-change-minus{cursor:pointer;margin-right:15px}.quantity-selector .quantity-selector-change.quantity-selector-change-plus{cursor:pointer;margin-left:15px;font-family:StevieSans,sans-serif}.quantity-selector .quantity-selector-change.quantity-selector-change-quantity{background:#f0f0f0;max-width:70px;text-align:center}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
73
+ }
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: QuantitySelectorComponent, decorators: [{
75
+ type: Component,
76
+ args: [{ selector: 'quantity-selector', providers: [
77
+ {
78
+ provide: NG_VALUE_ACCESSOR,
79
+ useExisting: forwardRef(() => QuantitySelectorComponent),
80
+ multi: true
81
+ }
82
+ ], template: "<div class=\"quantity-selector\">\n <div class=\"quantity-selector-change quantity-selector-change-minus disabled\" id=\"quantity-decrease\" *ngIf=\"quantity <= minimum\"><span class=\"ph ph-minus-bold\"></span></div>\n <div class=\"quantity-selector-change quantity-selector-change-minus\" id=\"quantity-decrease\" *ngIf=\"quantity > minimum\" (click)=\"decreaseQuantity()\" (keyup.arrowleft)=\"decreaseQuantity()\"><span class=\"ph ph-minus-bold\"></span></div>\n <input class=\"quantity-selector-change quantity-selector-change-quantity\" id=\"quantity-input\" (blur)=\"setQuantity()\" [value]=\"quantity\" (input)=\"onInput($event)\" />\n <div class=\"quantity-selector-change quantity-selector-change-plus\" id=\"quantity-increase\" *ngIf=\"quantity < maximum\" (click)=\"increaseQuantity()\" (keyup.arrowright)=\"increaseQuantity()\"><span class=\"ph ph-plus-bold\"></span></div>\n <div class=\"quantity-selector-change quantity-selector-change-plus disabled\" id=\"quantity-increase\" *ngIf=\"quantity >= maximum\"><span class=\"ph ph-plus-bold\"></span></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%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}.quantity-selector{display:flex;align-content:center}.quantity-selector .quantity-selector-change{border:none;background:#fff;font-size:18px;min-width:30px;min-height:40px;display:flex;align-items:center;justify-content:center}.quantity-selector .quantity-selector-change.disabled{opacity:.2;cursor:none}.quantity-selector .quantity-selector-change.quantity-selector-change-minus{cursor:pointer;margin-right:15px}.quantity-selector .quantity-selector-change.quantity-selector-change-plus{cursor:pointer;margin-left:15px;font-family:StevieSans,sans-serif}.quantity-selector .quantity-selector-change.quantity-selector-change-quantity{background:#f0f0f0;max-width:70px;text-align:center}\n"] }]
83
+ }], propDecorators: { disabled: [{
84
+ type: Input
85
+ }], maximum: [{
86
+ type: Input
87
+ }], minimum: [{
88
+ type: Input
89
+ }] } });
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhbnRpdHktc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjcnVtdGVhbXN1cnZleS10b29scy9zcmMvbGliL2NvbXBvbmVudHMvcXVhbnRpdHktc2VsZWN0b3IvcXVhbnRpdHktc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjcnVtdGVhbXN1cnZleS10b29scy9zcmMvbGliL2NvbXBvbmVudHMvcXVhbnRpdHktc2VsZWN0b3IvcXVhbnRpdHktc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQWV6RSxNQUFNLE9BQU8seUJBQXlCO0lBWnRDO1FBY1ksYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixZQUFPLEdBQVcsR0FBRyxDQUFDO1FBQ3RCLFlBQU8sR0FBVyxDQUFDLENBQUM7UUFDN0IsYUFBUSxHQUFRLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMxQixjQUFTLEdBQVEsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBaUQ3QjtJQS9DUyxnQkFBZ0I7UUFDcEIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQTtRQUFDLENBQUM7YUFBTSxDQUFDO1lBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQTtRQUFDLENBQUM7UUFDOUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLFdBQVc7UUFDZixJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQUMsQ0FBQztRQUNuRSxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU0sZ0JBQWdCO1FBQ3BCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFBQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUE7UUFBQyxDQUFDO2FBQU0sQ0FBQztZQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUE7UUFBQyxDQUFDO1FBQzlHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTSxPQUFPLENBQUMsS0FBWTtRQUN4QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUMvQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRWpDLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxDQUFDO2FBQ0ksQ0FBQztZQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUM3QixLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUMsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTSxVQUFVLENBQUMsUUFBZ0I7UUFDL0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM1QixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsRUFBTztRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU0saUJBQWlCLENBQUMsRUFBTztRQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0sZ0JBQWdCLENBQUUsVUFBbUI7UUFDekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDOUIsQ0FBQzsrR0F0RFMseUJBQXlCO21HQUF6Qix5QkFBeUIsc0hBUnhCO1lBQ1I7Z0JBQ0csT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztnQkFDeEQsS0FBSyxFQUFFLElBQUk7YUFDYjtTQUNILDBCQ2RKLGtrQ0FPQTs7NEZEU2EseUJBQXlCO2tCQVpyQyxTQUFTOytCQUNHLG1CQUFtQixhQUdsQjt3QkFDUjs0QkFDRyxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwwQkFBMEIsQ0FBQzs0QkFDeEQsS0FBSyxFQUFFLElBQUk7eUJBQ2I7cUJBQ0g7OEJBSVEsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24sIGZvcndhcmRSZWYsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuQENvbXBvbmVudCh7XG4gICBzZWxlY3RvcjogJ3F1YW50aXR5LXNlbGVjdG9yJyxcbiAgIHRlbXBsYXRlVXJsOiAnLi9xdWFudGl0eS1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gICBzdHlsZVVybHM6IFsnLi9xdWFudGl0eS1zZWxlY3Rvci5jb21wb25lbnQubGVzcyddLFxuICAgcHJvdmlkZXJzOiBbXG4gICAgICB7XG4gICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFF1YW50aXR5U2VsZWN0b3JDb21wb25lbnQpLFxuICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgIH1cbiAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUXVhbnRpdHlTZWxlY3RvckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgIHB1YmxpYyBxdWFudGl0eTogbnVtYmVyO1xuICAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgIEBJbnB1dCgpIG1heGltdW06IG51bWJlciA9IDk5OTtcbiAgIEBJbnB1dCgpIG1pbmltdW06IG51bWJlciA9IDA7XG4gICBvbkNoYW5nZTogYW55ID0gKCkgPT4geyB9O1xuICAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7IH07XG5cbiAgIHB1YmxpYyBpbmNyZWFzZVF1YW50aXR5KCkge1xuICAgICAgaWYgKHRoaXMucXVhbnRpdHkgPj0gdGhpcy5tYXhpbXVtKSB7IHRoaXMucXVhbnRpdHkgPSB0aGlzLm1heGltdW0gfSBlbHNlIHsgdGhpcy5xdWFudGl0eSA9IHRoaXMucXVhbnRpdHkgKyAxIH1cbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5xdWFudGl0eSk7XG4gICB9XG5cbiAgIHB1YmxpYyBzZXRRdWFudGl0eSgpIHtcbiAgICAgIGlmICh0aGlzLnF1YW50aXR5IDwgdGhpcy5taW5pbXVtKSB7IHRoaXMucXVhbnRpdHkgPSB0aGlzLm1pbmltdW07IH1cbiAgICAgIGlmICh0aGlzLnF1YW50aXR5ID4gdGhpcy5tYXhpbXVtKSB7IHRoaXMucXVhbnRpdHkgPSB0aGlzLm1heGltdW07IH1cbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5xdWFudGl0eSk7XG4gICB9XG5cbiAgIHB1YmxpYyBkZWNyZWFzZVF1YW50aXR5KCkge1xuICAgICAgaWYgKHRoaXMucXVhbnRpdHkgPD0gdGhpcy5taW5pbXVtKSB7IHRoaXMucXVhbnRpdHkgPSB0aGlzLm1pbmltdW0gfSBlbHNlIHsgdGhpcy5xdWFudGl0eSA9IHRoaXMucXVhbnRpdHkgLSAxIH1cbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5xdWFudGl0eSk7XG4gICB9XG5cbiAgIHB1YmxpYyBvbklucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgIGNvbnN0IHZhbHVlID0gaW5wdXQudmFsdWUudHJpbSgpO1xuXG4gICAgICBpZiAoL14tP1xcZCpcXC4/XFxkKiQvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICB0aGlzLnF1YW50aXR5ID0gcGFyc2VGbG9hdChpbnB1dC52YWx1ZSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgIHRoaXMucXVhbnRpdHkgPSB0aGlzLm1pbmltdW07XG4gICAgICAgICBpbnB1dC52YWx1ZSA9IHRoaXMucXVhbnRpdHkudG9TdHJpbmcoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnF1YW50aXR5KTtcbiAgIH1cblxuICAgcHVibGljIHdyaXRlVmFsdWUocXVhbnRpdHk6IG51bWJlcik6IHZvaWQge1xuICAgICAgY29uc29sZS5sb2cocXVhbnRpdHkpO1xuICAgICAgdGhpcy5xdWFudGl0eSA9IHF1YW50aXR5O1xuICAgfVxuXG4gICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICB9XG5cbiAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgfVxuXG4gICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicXVhbnRpdHktc2VsZWN0b3JcIj5cbiAgIDxkaXYgY2xhc3M9XCJxdWFudGl0eS1zZWxlY3Rvci1jaGFuZ2UgcXVhbnRpdHktc2VsZWN0b3ItY2hhbmdlLW1pbnVzIGRpc2FibGVkXCIgaWQ9XCJxdWFudGl0eS1kZWNyZWFzZVwiICpuZ0lmPVwicXVhbnRpdHkgPD0gbWluaW11bVwiPjxzcGFuIGNsYXNzPVwicGggcGgtbWludXMtYm9sZFwiPjwvc3Bhbj48L2Rpdj5cbiAgIDxkaXYgY2xhc3M9XCJxdWFudGl0eS1zZWxlY3Rvci1jaGFuZ2UgcXVhbnRpdHktc2VsZWN0b3ItY2hhbmdlLW1pbnVzXCIgaWQ9XCJxdWFudGl0eS1kZWNyZWFzZVwiICpuZ0lmPVwicXVhbnRpdHkgPiBtaW5pbXVtXCIgKGNsaWNrKT1cImRlY3JlYXNlUXVhbnRpdHkoKVwiIChrZXl1cC5hcnJvd2xlZnQpPVwiZGVjcmVhc2VRdWFudGl0eSgpXCI+PHNwYW4gY2xhc3M9XCJwaCBwaC1taW51cy1ib2xkXCI+PC9zcGFuPjwvZGl2PlxuICAgPGlucHV0IGNsYXNzPVwicXVhbnRpdHktc2VsZWN0b3ItY2hhbmdlIHF1YW50aXR5LXNlbGVjdG9yLWNoYW5nZS1xdWFudGl0eVwiIGlkPVwicXVhbnRpdHktaW5wdXRcIiAoYmx1cik9XCJzZXRRdWFudGl0eSgpXCIgW3ZhbHVlXT1cInF1YW50aXR5XCIgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiICAvPlxuICAgPGRpdiBjbGFzcz1cInF1YW50aXR5LXNlbGVjdG9yLWNoYW5nZSBxdWFudGl0eS1zZWxlY3Rvci1jaGFuZ2UtcGx1c1wiIGlkPVwicXVhbnRpdHktaW5jcmVhc2VcIiAqbmdJZj1cInF1YW50aXR5IDwgbWF4aW11bVwiIChjbGljayk9XCJpbmNyZWFzZVF1YW50aXR5KClcIiAoa2V5dXAuYXJyb3dyaWdodCk9XCJpbmNyZWFzZVF1YW50aXR5KClcIj48c3BhbiBjbGFzcz1cInBoIHBoLXBsdXMtYm9sZFwiPjwvc3Bhbj48L2Rpdj5cbiAgIDxkaXYgY2xhc3M9XCJxdWFudGl0eS1zZWxlY3Rvci1jaGFuZ2UgcXVhbnRpdHktc2VsZWN0b3ItY2hhbmdlLXBsdXMgZGlzYWJsZWRcIiBpZD1cInF1YW50aXR5LWluY3JlYXNlXCIgKm5nSWY9XCJxdWFudGl0eSA+PSBtYXhpbXVtXCI+PHNwYW4gY2xhc3M9XCJwaCBwaC1wbHVzLWJvbGRcIj48L3NwYW4+PC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,43 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
+ import { MatFormFieldModule } from '@angular/material/form-field';
5
+ import { MatInputModule } from '@angular/material/input';
6
+ import { RouterModule } from '@angular/router';
7
+ import { QuantitySelectorComponent } from './quantity-selector.component';
8
+ import * as i0 from "@angular/core";
9
+ export class QuantitySelectorModule {
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: QuantitySelectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: QuantitySelectorModule, declarations: [QuantitySelectorComponent], imports: [CommonModule,
12
+ RouterModule,
13
+ FormsModule,
14
+ MatFormFieldModule,
15
+ ReactiveFormsModule,
16
+ MatInputModule], exports: [QuantitySelectorComponent] }); }
17
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: QuantitySelectorModule, imports: [CommonModule,
18
+ RouterModule,
19
+ FormsModule,
20
+ MatFormFieldModule,
21
+ ReactiveFormsModule,
22
+ MatInputModule] }); }
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: QuantitySelectorModule, decorators: [{
25
+ type: NgModule,
26
+ args: [{
27
+ imports: [
28
+ CommonModule,
29
+ RouterModule,
30
+ FormsModule,
31
+ MatFormFieldModule,
32
+ ReactiveFormsModule,
33
+ MatInputModule
34
+ ],
35
+ declarations: [
36
+ QuantitySelectorComponent
37
+ ],
38
+ exports: [
39
+ QuantitySelectorComponent
40
+ ]
41
+ }]
42
+ }] });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhbnRpdHktc2VsZWN0b3IubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjcnVtdGVhbXN1cnZleS10b29scy9zcmMvbGliL2NvbXBvbmVudHMvcXVhbnRpdHktc2VsZWN0b3IvcXVhbnRpdHktc2VsZWN0b3IubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQWdCMUUsTUFBTSxPQUFPLHNCQUFzQjsrR0FBdEIsc0JBQXNCO2dIQUF0QixzQkFBc0IsaUJBSjdCLHlCQUF5QixhQVJ6QixZQUFZO1lBQ1osWUFBWTtZQUNaLFdBQVc7WUFDWCxrQkFBa0I7WUFDbEIsbUJBQW1CO1lBQ25CLGNBQWMsYUFLZCx5QkFBeUI7Z0hBRWxCLHNCQUFzQixZQVo3QixZQUFZO1lBQ1osWUFBWTtZQUNaLFdBQVc7WUFDWCxrQkFBa0I7WUFDbEIsbUJBQW1CO1lBQ25CLGNBQWM7OzRGQU9QLHNCQUFzQjtrQkFkbEMsUUFBUTttQkFBQztvQkFDUCxPQUFPLEVBQUU7d0JBQ04sWUFBWTt3QkFDWixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLGNBQWM7cUJBQ2hCO29CQUNELFlBQVksRUFBRTt3QkFDWCx5QkFBeUI7cUJBQUM7b0JBQzdCLE9BQU8sRUFBRTt3QkFDTix5QkFBeUI7cUJBQUM7aUJBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUXVhbnRpdHlTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4vcXVhbnRpdHktc2VsZWN0b3IuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgIGltcG9ydHM6IFtcbiAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgIFJvdXRlck1vZHVsZSxcbiAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgIE1hdElucHV0TW9kdWxlXG4gICBdLFxuICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICBRdWFudGl0eVNlbGVjdG9yQ29tcG9uZW50XSxcbiAgIGV4cG9ydHM6IFtcbiAgICAgIFF1YW50aXR5U2VsZWN0b3JDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIFF1YW50aXR5U2VsZWN0b3JNb2R1bGUgeyB9XG4iXX0=
@@ -195,13 +195,13 @@ export class TopicSelectorComponent {
195
195
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TopicSelectorComponent, deps: [{ token: i1.FormBuilder }, { token: i2.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
196
196
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: TopicSelectorComponent, selector: "topic-selector", inputs: { topics: "topics", disabled: "disabled", topicKeys: "topicKeys", presets: "presets" }, providers: [
197
197
  { provide: NG_VALUE_ACCESSOR, multi: true, useExisting: forwardRef(() => TopicSelectorComponent), }
198
- ], ngImport: i0, template: "<form [formGroup]=\"form\">\n <div class=\"topicselector-container\">\n <div class=\"topicselector-metadata\">\n <div class=\"questionnaire-preset\">\n <mat-form-field class=\"questionnaire-preset-select\" appearance=\"fill\">\n <mat-label>Select predefined questionnaire</mat-label>\n <mat-select id=\"question-preset\" formControlName=\"preset\" (selectionChange)=\"selectPreset()\">\n <mat-option [value]=\"type.publicKey\" *ngFor=\"let type of presets\" class=\"select-option\">{{type.name}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"questionnaire-accuracy\">\n <div class=\"questionnaire-breakdown-label\">Accuracy</div>\n <div class=\"questionnaire-breakdown-bar-holder\">\n <div class=\"questionnaire-accuracy-bar\" [ngClass]=\"{'low': questionnaireAccuracy < 0.25, 'moderate' : questionnaireAccuracy < 0.5 && questionnaireAccuracy >= 0.25}\" [ngStyle]=\"{'width': (questionnaireAccuracy * 100) + '%' }\">{{questionnaireAccuracy * 100 | number:'1.0-0'}}%</div>\n </div>\n </div>\n <div class=\"questionnaire-segments\">\n <div class=\"questionnaire-segments-label\">Time investment</div>\n <div class=\"questionnaire-breakdowns\">\n <div class=\"questionnaire-breakdown\">\n <div class=\"questionnaire-breakdown-label\">Team members</div>\n <div class=\"progressbar progressbar-positive progressbar-teammember\">\n <div class=\"progressbar-bar\" *ngIf=\"questionsTeamMembers > 0\" [style.width]=\"((questionsTeamMembers / questionsTotal) * 100) + '%'\"></div>\n <div class=\"progressbar-score\">{{durationTeamMembers | number:'1.0-0'}} min</div>\n </div>\n </div>\n <div class=\"questionnaire-breakdown\">\n <div class=\"questionnaire-breakdown-label\">Stakeholders</div>\n <div class=\"progressbar progressbar-positive progressbar-stakeholder\">\n <div class=\"progressbar-bar\" *ngIf=\"questionsStakeholders > 0\" [style.width]=\"((questionsStakeholders / questionsTotal) * 100) + '%'\"></div>\n <div class=\"progressbar-score\">{{durationStakeholders | number:'1.0-0'}} min</div>\n </div>\n </div>\n <div class=\"questionnaire-breakdown\">\n <div class=\"questionnaire-breakdown-label\">Supporters</div>\n <div class=\"progressbar progressbar-positive progressbar-supporter\">\n <div class=\"progressbar-bar\" *ngIf=\"questionsSupporters > 0\" [style.width]=\"((questionsSupporters / questionsTotal) * 100) + '%'\"></div>\n <div class=\"progressbar-score\">{{durationSupporters | number:'1.0-0'}} min</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"topicselector-warnings\" *ngIf=\"warnings.length > 0\">\n <div class=\"topicselector-warnings-warning\" *ngFor=\"let warning of warnings\">\n <span class=\"icon ph-info-fill\"></span>{{warning}}\n </div>\n </div>\n <a href=\"javascript:void(null)\" *ngIf=\"!form.controls.showTopics.value\" id=\"action-advancedviewtoggle\" class=\"topic-selector-advancedviewtoggle\" (click)=\"form.controls.showTopics.setValue(true)\"><span class=\"icon ph-caret-circle-down-fill\"></span>advanced view</a>\n <a href=\"javascript:void(null)\" *ngIf=\"form.controls.showTopics.value\" id=\"action-advancedviewtoggle\" class=\"topic-selector-advancedviewtoggle\" (click)=\"form.controls.showTopics.setValue(false)\"><span class=\"icon ph-caret-circle-up-fill\"></span>simple view</a>\n </div>\n <div class=\"topicselector-topics\" *ngIf=\"form.controls.showTopics.value\"> \n <div class=\"topic-parent\" *ngFor=\"let topic of getCoreFactors()\" formArrayName=\"topics\">\n <div class=\"name\">\n <h4>{{topic.name}}</h4>\n <div class=\"helpers\">(<a href=\"#\" (click)=\"selectAll(topic, $event)\">all</a> | <a href=\"#\" (click)=\"selectNone(topic, $event)\">none</a>)</div>\n <div class=\"topic-child-moreinformation\">\n <span class=\"icon ph-info-bold\" (click)=\"openFactorInformation(topic.publicKey, $event)\"></span>\n </div>\n </div>\n\n <div *ngIf=\"topic.ownQuestionCount > 0\" class=\"topic-child\">\n <mat-checkbox class=\"topic-child-check\" [formControlName]=\"topic.publicKey\" (click)=\"toggleTopic()\" [id]=\"'topic-' + topic.name | slugify\"></mat-checkbox>\n <div class=\"topic-child-description\">\n {{topic.name}} ({{topic.ownQuestionCount}} questions)\n <div class=\"tags\">\n <div class=\"tags-tag recommended\" *ngIf=\"topic.recommended\">Recommended</div>\n <div class=\"tags-tag teammember\" *ngIf=\"hasSegmentQuestions(topic, SegmentEnum.TeamMember, true)\">For team members</div>\n <div class=\"tags-tag stakeholder\" *ngIf=\"hasSegmentQuestions(topic, SegmentEnum.Stakeholder, true)\">For stakeholders</div>\n <div class=\"tags-tag supporter\" *ngIf=\"hasSegmentQuestions(topic, SegmentEnum.Management, true)\">For supporters</div>\n </div>\n </div>\n <div class=\"topic-child-moreinformation\">\n <span class=\"icon ph-info-bold\" (click)=\"openFactorInformation(topic.publicKey, $event)\"></span>\n </div>\n </div>\n\n\n <div *ngFor=\"let subTopic of getSubFactors(topic.publicKey)\" class=\"topic-child\">\n <mat-checkbox class=\"topic-child-check\" [formControlName]=\"subTopic.publicKey\" (click)=\"toggleTopic()\" [id]=\"'topic-' + subTopic.name | slugify\"></mat-checkbox>\n <div class=\"topic-child-description\">\n {{subTopic.name}} ({{subTopic.questionCount}} questions)\n <div class=\"tags\">\n <div class=\"tags-tag recommended\" *ngIf=\"subTopic.recommended\">Recommended</div>\n <div class=\"tags-tag teammember\" *ngIf=\"hasSegmentQuestions(subTopic, SegmentEnum.TeamMember, false)\">For team members</div>\n <div class=\"tags-tag stakeholder\" *ngIf=\"hasSegmentQuestions(subTopic, SegmentEnum.Stakeholder, false)\">For stakeholders</div>\n <div class=\"tags-tag supporter\" *ngIf=\"hasSegmentQuestions(subTopic, SegmentEnum.Management, false)\">For supporters</div>\n </div>\n </div>\n <div class=\"topic-child-moreinformation\">\n <span class=\"icon ph-info-bold\" (click)=\"openFactorInformation(subTopic.publicKey, $event)\"></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n</form>\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%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}.topicselector-container .topicselector-metadata{background:#f0f0f0;border-radius:20px;padding:30px;display:flex;column-gap:30px;flex-direction:column}@media only screen and (max-width: 992px){.topicselector-container .topicselector-metadata{display:block}}.topicselector-container .topicselector-metadata .questionnaire-preset .questionnaire-preset-label{font-size:12px;font-weight:900;text-transform:uppercase;font-family:StevieSans,sans-serif;margin-bottom:5px}.topicselector-container .topicselector-metadata .questionnaire-preset .questionnaire-preset-select{width:100%}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-segments-label{font-size:12px;font-weight:900;text-transform:uppercase;font-family:StevieSans,sans-serif;margin-bottom:5px}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns{display:flex;gap:15px}@media only screen and (max-width: 992px){.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns{display:block}}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown{margin-bottom:15px;flex:auto}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .questionnaire-breakdown-label{font-size:14px;font-weight:700;font-family:StevieSans,sans-serif;margin-bottom:5px;margin-top:5px}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .questionnaire-breakdown-label .icon{color:#ef6f00;font-size:18px;vertical-align:middle;cursor:pointer}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar{margin:0;width:100%}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-teammember .progressbar-bar{background:#00af77}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-teammember .progressbar-score{color:#fff}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-stakeholder .progressbar-bar{background:#fff73f}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-stakeholder .progressbar-score{color:#fff}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-supporter .progressbar-bar{background:#ef4f9f}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-supporter .progressbar-score{color:#fff}.topicselector-container .topicselector-metadata .questionnaire-accuracy{margin-bottom:15px}.topicselector-container .topicselector-metadata .questionnaire-accuracy .questionnaire-breakdown-label{font-size:12px;font-weight:900;text-transform:uppercase;margin-bottom:5px;font-family:StevieSans,sans-serif}.topicselector-container .topicselector-metadata .questionnaire-accuracy .questionnaire-breakdown-bar-holder{margin-bottom:15px;background:#2f2f2f;height:20px;border-radius:15px;overflow:hidden}.topicselector-container .topicselector-metadata .questionnaire-accuracy .questionnaire-breakdown-bar-holder .questionnaire-accuracy-bar{flex:auto;min-width:50px;font-size:12px;font-weight:900;text-transform:uppercase;font-family:StevieSans,sans-serif;background:#00af77;height:100%;align-content:center;text-align:center}.topicselector-container .topicselector-metadata .questionnaire-accuracy .questionnaire-breakdown-bar-holder .questionnaire-accuracy-bar.low{background:#ef6f00}.topicselector-container .topicselector-metadata .questionnaire-accuracy .questionnaire-breakdown-bar-holder .questionnaire-accuracy-bar.moderate{background:#fff73f}.topicselector-container .topic-selector-advancedviewtoggle{margin-top:10px;text-align:center;font-weight:700;font-family:StevieSans,sans-serif;font-size:12pt;text-decoration:none}.topicselector-container .topic-selector-advancedviewtoggle .icon{margin-right:10px;vertical-align:middle}.topicselector-container .topicselector-warnings{margin-top:15px}.topicselector-container .topicselector-warnings .topicselector-warnings-warning{display:flex;align-items:center;font-size:12pt}.topicselector-container .topicselector-warnings .topicselector-warnings-warning .icon{color:#1f3f8f;font-size:16px;cursor:pointer;margin-right:10px}.topicselector-container .topicselector-topics{margin-top:30px}.topicselector-container .topicselector-topics .topic-parent{margin-bottom:60px;padding-left:30px}.topicselector-container .topicselector-topics .topic-parent .name{display:flex;align-items:baseline;gap:15px}.topicselector-container .topicselector-topics .topic-parent .name h4{font-weight:700!important;font-family:StevieSans,sans-serif!important;margin:0}.topicselector-container .topicselector-topics .topic-parent .name .helpers{font-size:12pt}.topicselector-container .topicselector-topics .topic-parent .name .helpers a{font-family:StevieSans,sans-serif}.topicselector-container .topicselector-topics .topic-parent .name .topic-child-moreinformation{margin-left:auto;cursor:pointer}.topicselector-container .topicselector-topics .topic-parent .name .topic-child-moreinformation .icon{vertical-align:middle}.topicselector-container .topicselector-topics .topic-parent .topic-child{display:flex;align-items:baseline;gap:15px;margin-bottom:15px;margin-top:15px;cursor:pointer}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description{font-family:StevieSans,sans-serif;font-size:16px;font-weight:500}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags{gap:5px;margin-top:5px;display:flex}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags .tags-tag{padding:4px 8px;border-radius:16px;font-weight:600;font-size:11px;white-space:pre}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags .tags-tag.recommended{background:#2f2f2f;color:#fff}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags .tags-tag.stakeholder{background:#fff73f}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags .tags-tag.teammember{background:#1f3f8f;color:#fff}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags .tags-tag.supporter,.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags .tags-tag.management{background:#ef4f9f}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-moreinformation{margin-left:auto}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-moreinformation .icon{vertical-align:middle;cursor:pointer}\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: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }, { kind: "pipe", type: i8.SlugifyPipe, name: "slugify" }] }); }
198
+ ], ngImport: i0, template: "<form [formGroup]=\"form\">\n <div class=\"topicselector-container\">\n <div class=\"topicselector-metadata\">\n <div class=\"questionnaire-preset\">\n <mat-form-field class=\"questionnaire-preset-select\" appearance=\"fill\">\n <mat-label>Select predefined questionnaire</mat-label>\n <mat-select id=\"question-preset\" formControlName=\"preset\" (selectionChange)=\"selectPreset()\">\n <mat-option [value]=\"type.publicKey\" *ngFor=\"let type of presets\" class=\"select-option\">{{type.name}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"questionnaire-accuracy\">\n <div class=\"questionnaire-breakdown-label\">Accuracy</div>\n <div class=\"questionnaire-breakdown-bar-holder\">\n <div class=\"questionnaire-accuracy-bar\" [ngClass]=\"{'low': questionnaireAccuracy < 0.25, 'moderate' : questionnaireAccuracy < 0.5 && questionnaireAccuracy >= 0.25}\" [ngStyle]=\"{'width': (questionnaireAccuracy * 100) + '%' }\">{{questionnaireAccuracy * 100 | number:'1.0-0'}}%</div>\n </div>\n </div>\n <div class=\"questionnaire-segments\">\n <div class=\"questionnaire-segments-label\">Time investment</div>\n <div class=\"questionnaire-breakdowns\">\n <div class=\"questionnaire-breakdown\">\n <div class=\"questionnaire-breakdown-label\">Team members</div>\n <div class=\"progressbar progressbar-positive progressbar-teammember\">\n <div class=\"progressbar-bar\" *ngIf=\"questionsTeamMembers > 0\" [style.width]=\"((questionsTeamMembers / questionsTotal) * 100) + '%'\"></div>\n <div class=\"progressbar-score\">{{durationTeamMembers | number:'1.0-0'}} min</div>\n </div>\n </div>\n <div class=\"questionnaire-breakdown\">\n <div class=\"questionnaire-breakdown-label\">Stakeholders</div>\n <div class=\"progressbar progressbar-positive progressbar-stakeholder\">\n <div class=\"progressbar-bar\" *ngIf=\"questionsStakeholders > 0\" [style.width]=\"((questionsStakeholders / questionsTotal) * 100) + '%'\"></div>\n <div class=\"progressbar-score\">{{durationStakeholders | number:'1.0-0'}} min</div>\n </div>\n </div>\n <div class=\"questionnaire-breakdown\">\n <div class=\"questionnaire-breakdown-label\">Supporters</div>\n <div class=\"progressbar progressbar-positive progressbar-supporter\">\n <div class=\"progressbar-bar\" *ngIf=\"questionsSupporters > 0\" [style.width]=\"((questionsSupporters / questionsTotal) * 100) + '%'\"></div>\n <div class=\"progressbar-score\">{{durationSupporters | number:'1.0-0'}} min</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"topicselector-warnings\" *ngIf=\"warnings.length > 0\">\n <div class=\"topicselector-warnings-warning\" *ngFor=\"let warning of warnings\">\n <span class=\"icon ph-info-fill\"></span>{{warning}}\n </div>\n </div>\n <a href=\"javascript:void(null)\" *ngIf=\"!form.controls.showTopics.value\" id=\"action-advancedviewtoggle\" class=\"topic-selector-advancedviewtoggle\" (click)=\"form.controls.showTopics.setValue(true)\"><span class=\"icon ph-caret-down-bold\"></span>Customize topics</a>\n <a href=\"javascript:void(null)\" *ngIf=\"form.controls.showTopics.value\" id=\"action-advancedviewtoggle\" class=\"topic-selector-advancedviewtoggle\" (click)=\"form.controls.showTopics.setValue(false)\"><span class=\"icon ph-caret-up-bold\"></span>Hide topics</a>\n </div>\n <div class=\"topicselector-topics\" *ngIf=\"form.controls.showTopics.value\"> \n <div class=\"topic-parent\" *ngFor=\"let topic of getCoreFactors()\" formArrayName=\"topics\">\n <div class=\"name\">\n <h4>{{topic.name}}</h4>\n <div class=\"helpers\">(<a href=\"#\" (click)=\"selectAll(topic, $event)\">all</a> | <a href=\"#\" (click)=\"selectNone(topic, $event)\">none</a>)</div>\n <div class=\"topic-child-moreinformation\">\n <span class=\"icon ph-info-bold\" (click)=\"openFactorInformation(topic.publicKey, $event)\"></span>\n </div>\n </div>\n\n <div *ngIf=\"topic.ownQuestionCount > 0\" class=\"topic-child\">\n <mat-checkbox class=\"topic-child-check\" [formControlName]=\"topic.publicKey\" (click)=\"toggleTopic()\" [id]=\"'topic-' + topic.name | slugify\"></mat-checkbox>\n <div class=\"topic-child-description\">\n {{topic.name}} ({{topic.ownQuestionCount}} questions)\n <div class=\"tags\">\n <div class=\"tags-tag recommended\" *ngIf=\"topic.recommended\">Recommended</div>\n <div class=\"tags-tag teammember\" *ngIf=\"hasSegmentQuestions(topic, SegmentEnum.TeamMember, true)\">For team members</div>\n <div class=\"tags-tag stakeholder\" *ngIf=\"hasSegmentQuestions(topic, SegmentEnum.Stakeholder, true)\">For stakeholders</div>\n <div class=\"tags-tag supporter\" *ngIf=\"hasSegmentQuestions(topic, SegmentEnum.Management, true)\">For supporters</div>\n </div>\n </div>\n <div class=\"topic-child-moreinformation\">\n <span class=\"icon ph-info-bold\" (click)=\"openFactorInformation(topic.publicKey, $event)\"></span>\n </div>\n </div>\n\n\n <div *ngFor=\"let subTopic of getSubFactors(topic.publicKey)\" class=\"topic-child\">\n <mat-checkbox class=\"topic-child-check\" [formControlName]=\"subTopic.publicKey\" (click)=\"toggleTopic()\" [id]=\"'topic-' + subTopic.name | slugify\"></mat-checkbox>\n <div class=\"topic-child-description\">\n {{subTopic.name}} ({{subTopic.questionCount}} questions)\n <div class=\"tags\">\n <div class=\"tags-tag recommended\" *ngIf=\"subTopic.recommended\">Recommended</div>\n <div class=\"tags-tag teammember\" *ngIf=\"hasSegmentQuestions(subTopic, SegmentEnum.TeamMember, false)\">For team members</div>\n <div class=\"tags-tag stakeholder\" *ngIf=\"hasSegmentQuestions(subTopic, SegmentEnum.Stakeholder, false)\">For stakeholders</div>\n <div class=\"tags-tag supporter\" *ngIf=\"hasSegmentQuestions(subTopic, SegmentEnum.Management, false)\">For supporters</div>\n </div>\n </div>\n <div class=\"topic-child-moreinformation\">\n <span class=\"icon ph-info-bold\" (click)=\"openFactorInformation(subTopic.publicKey, $event)\"></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n</form>\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%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}.topicselector-container .topicselector-metadata{background:#f0f0f0;border-radius:20px;padding:30px;display:flex;column-gap:30px;flex-direction:column}@media only screen and (max-width: 992px){.topicselector-container .topicselector-metadata{display:block}}.topicselector-container .topicselector-metadata .questionnaire-preset .questionnaire-preset-label{font-size:12px;font-weight:900;text-transform:uppercase;font-family:StevieSans,sans-serif;margin-bottom:5px}.topicselector-container .topicselector-metadata .questionnaire-preset .questionnaire-preset-select{width:100%}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-segments-label{font-size:12px;font-weight:900;text-transform:uppercase;font-family:StevieSans,sans-serif;margin-bottom:5px}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns{display:flex;gap:15px}@media only screen and (max-width: 992px){.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns{display:block}}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown{margin-bottom:15px;flex:auto}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .questionnaire-breakdown-label{font-size:14px;font-weight:700;font-family:StevieSans,sans-serif;margin-bottom:5px;margin-top:5px}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .questionnaire-breakdown-label .icon{color:#ef6f00;font-size:18px;vertical-align:middle;cursor:pointer}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar{margin:0;width:100%}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-teammember .progressbar-bar{background:#00af77}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-teammember .progressbar-score{color:#fff}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-stakeholder .progressbar-bar{background:#fff73f}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-stakeholder .progressbar-score{color:#fff}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-supporter .progressbar-bar{background:#ef4f9f}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-supporter .progressbar-score{color:#fff}.topicselector-container .topicselector-metadata .questionnaire-accuracy{margin-bottom:15px}.topicselector-container .topicselector-metadata .questionnaire-accuracy .questionnaire-breakdown-label{font-size:12px;font-weight:900;text-transform:uppercase;margin-bottom:5px;font-family:StevieSans,sans-serif}.topicselector-container .topicselector-metadata .questionnaire-accuracy .questionnaire-breakdown-bar-holder{margin-bottom:15px;background:#2f2f2f;height:20px;border-radius:15px;overflow:hidden}.topicselector-container .topicselector-metadata .questionnaire-accuracy .questionnaire-breakdown-bar-holder .questionnaire-accuracy-bar{flex:auto;min-width:50px;font-size:12px;font-weight:900;text-transform:uppercase;font-family:StevieSans,sans-serif;background:#00af77;height:100%;align-content:center;text-align:center}.topicselector-container .topicselector-metadata .questionnaire-accuracy .questionnaire-breakdown-bar-holder .questionnaire-accuracy-bar.low{background:#ef6f00}.topicselector-container .topicselector-metadata .questionnaire-accuracy .questionnaire-breakdown-bar-holder .questionnaire-accuracy-bar.moderate{background:#fff73f}.topicselector-container .topic-selector-advancedviewtoggle{margin-top:10px;text-align:center;font-weight:700;font-family:StevieSans,sans-serif;font-size:12pt;text-decoration:none}.topicselector-container .topic-selector-advancedviewtoggle .icon{margin-right:10px;vertical-align:middle}.topicselector-container .topicselector-warnings{margin-top:15px}.topicselector-container .topicselector-warnings .topicselector-warnings-warning{display:flex;align-items:center;font-size:12pt}.topicselector-container .topicselector-warnings .topicselector-warnings-warning .icon{color:#1f3f8f;font-size:16px;cursor:pointer;margin-right:10px}.topicselector-container .topicselector-topics{margin-top:30px}.topicselector-container .topicselector-topics .topic-parent{margin-bottom:60px;padding-left:30px}.topicselector-container .topicselector-topics .topic-parent .name{display:flex;align-items:baseline;gap:15px}.topicselector-container .topicselector-topics .topic-parent .name h4{font-weight:700!important;font-family:StevieSans,sans-serif!important;margin:0}.topicselector-container .topicselector-topics .topic-parent .name .helpers{font-size:12pt}.topicselector-container .topicselector-topics .topic-parent .name .helpers a{font-family:StevieSans,sans-serif}.topicselector-container .topicselector-topics .topic-parent .name .topic-child-moreinformation{margin-left:auto;cursor:pointer}.topicselector-container .topicselector-topics .topic-parent .name .topic-child-moreinformation .icon{vertical-align:middle}.topicselector-container .topicselector-topics .topic-parent .topic-child{display:flex;align-items:baseline;gap:15px;margin-bottom:15px;margin-top:15px;cursor:pointer}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description{font-family:StevieSans,sans-serif;font-size:16px;font-weight:500}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags{gap:5px;margin-top:5px;display:flex}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags .tags-tag{padding:4px 8px;border-radius:16px;font-weight:600;font-size:11px;white-space:pre}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags .tags-tag.recommended{background:#2f2f2f;color:#fff}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags .tags-tag.stakeholder{background:#fff73f}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags .tags-tag.teammember{background:#1f3f8f;color:#fff}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags .tags-tag.supporter,.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags .tags-tag.management{background:#ef4f9f}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-moreinformation{margin-left:auto}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-moreinformation .icon{vertical-align:middle;cursor:pointer}\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: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }, { kind: "pipe", type: i8.SlugifyPipe, name: "slugify" }] }); }
199
199
  }
200
200
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TopicSelectorComponent, decorators: [{
201
201
  type: Component,
202
202
  args: [{ selector: 'topic-selector', providers: [
203
203
  { provide: NG_VALUE_ACCESSOR, multi: true, useExisting: forwardRef(() => TopicSelectorComponent), }
204
- ], template: "<form [formGroup]=\"form\">\n <div class=\"topicselector-container\">\n <div class=\"topicselector-metadata\">\n <div class=\"questionnaire-preset\">\n <mat-form-field class=\"questionnaire-preset-select\" appearance=\"fill\">\n <mat-label>Select predefined questionnaire</mat-label>\n <mat-select id=\"question-preset\" formControlName=\"preset\" (selectionChange)=\"selectPreset()\">\n <mat-option [value]=\"type.publicKey\" *ngFor=\"let type of presets\" class=\"select-option\">{{type.name}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"questionnaire-accuracy\">\n <div class=\"questionnaire-breakdown-label\">Accuracy</div>\n <div class=\"questionnaire-breakdown-bar-holder\">\n <div class=\"questionnaire-accuracy-bar\" [ngClass]=\"{'low': questionnaireAccuracy < 0.25, 'moderate' : questionnaireAccuracy < 0.5 && questionnaireAccuracy >= 0.25}\" [ngStyle]=\"{'width': (questionnaireAccuracy * 100) + '%' }\">{{questionnaireAccuracy * 100 | number:'1.0-0'}}%</div>\n </div>\n </div>\n <div class=\"questionnaire-segments\">\n <div class=\"questionnaire-segments-label\">Time investment</div>\n <div class=\"questionnaire-breakdowns\">\n <div class=\"questionnaire-breakdown\">\n <div class=\"questionnaire-breakdown-label\">Team members</div>\n <div class=\"progressbar progressbar-positive progressbar-teammember\">\n <div class=\"progressbar-bar\" *ngIf=\"questionsTeamMembers > 0\" [style.width]=\"((questionsTeamMembers / questionsTotal) * 100) + '%'\"></div>\n <div class=\"progressbar-score\">{{durationTeamMembers | number:'1.0-0'}} min</div>\n </div>\n </div>\n <div class=\"questionnaire-breakdown\">\n <div class=\"questionnaire-breakdown-label\">Stakeholders</div>\n <div class=\"progressbar progressbar-positive progressbar-stakeholder\">\n <div class=\"progressbar-bar\" *ngIf=\"questionsStakeholders > 0\" [style.width]=\"((questionsStakeholders / questionsTotal) * 100) + '%'\"></div>\n <div class=\"progressbar-score\">{{durationStakeholders | number:'1.0-0'}} min</div>\n </div>\n </div>\n <div class=\"questionnaire-breakdown\">\n <div class=\"questionnaire-breakdown-label\">Supporters</div>\n <div class=\"progressbar progressbar-positive progressbar-supporter\">\n <div class=\"progressbar-bar\" *ngIf=\"questionsSupporters > 0\" [style.width]=\"((questionsSupporters / questionsTotal) * 100) + '%'\"></div>\n <div class=\"progressbar-score\">{{durationSupporters | number:'1.0-0'}} min</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"topicselector-warnings\" *ngIf=\"warnings.length > 0\">\n <div class=\"topicselector-warnings-warning\" *ngFor=\"let warning of warnings\">\n <span class=\"icon ph-info-fill\"></span>{{warning}}\n </div>\n </div>\n <a href=\"javascript:void(null)\" *ngIf=\"!form.controls.showTopics.value\" id=\"action-advancedviewtoggle\" class=\"topic-selector-advancedviewtoggle\" (click)=\"form.controls.showTopics.setValue(true)\"><span class=\"icon ph-caret-circle-down-fill\"></span>advanced view</a>\n <a href=\"javascript:void(null)\" *ngIf=\"form.controls.showTopics.value\" id=\"action-advancedviewtoggle\" class=\"topic-selector-advancedviewtoggle\" (click)=\"form.controls.showTopics.setValue(false)\"><span class=\"icon ph-caret-circle-up-fill\"></span>simple view</a>\n </div>\n <div class=\"topicselector-topics\" *ngIf=\"form.controls.showTopics.value\"> \n <div class=\"topic-parent\" *ngFor=\"let topic of getCoreFactors()\" formArrayName=\"topics\">\n <div class=\"name\">\n <h4>{{topic.name}}</h4>\n <div class=\"helpers\">(<a href=\"#\" (click)=\"selectAll(topic, $event)\">all</a> | <a href=\"#\" (click)=\"selectNone(topic, $event)\">none</a>)</div>\n <div class=\"topic-child-moreinformation\">\n <span class=\"icon ph-info-bold\" (click)=\"openFactorInformation(topic.publicKey, $event)\"></span>\n </div>\n </div>\n\n <div *ngIf=\"topic.ownQuestionCount > 0\" class=\"topic-child\">\n <mat-checkbox class=\"topic-child-check\" [formControlName]=\"topic.publicKey\" (click)=\"toggleTopic()\" [id]=\"'topic-' + topic.name | slugify\"></mat-checkbox>\n <div class=\"topic-child-description\">\n {{topic.name}} ({{topic.ownQuestionCount}} questions)\n <div class=\"tags\">\n <div class=\"tags-tag recommended\" *ngIf=\"topic.recommended\">Recommended</div>\n <div class=\"tags-tag teammember\" *ngIf=\"hasSegmentQuestions(topic, SegmentEnum.TeamMember, true)\">For team members</div>\n <div class=\"tags-tag stakeholder\" *ngIf=\"hasSegmentQuestions(topic, SegmentEnum.Stakeholder, true)\">For stakeholders</div>\n <div class=\"tags-tag supporter\" *ngIf=\"hasSegmentQuestions(topic, SegmentEnum.Management, true)\">For supporters</div>\n </div>\n </div>\n <div class=\"topic-child-moreinformation\">\n <span class=\"icon ph-info-bold\" (click)=\"openFactorInformation(topic.publicKey, $event)\"></span>\n </div>\n </div>\n\n\n <div *ngFor=\"let subTopic of getSubFactors(topic.publicKey)\" class=\"topic-child\">\n <mat-checkbox class=\"topic-child-check\" [formControlName]=\"subTopic.publicKey\" (click)=\"toggleTopic()\" [id]=\"'topic-' + subTopic.name | slugify\"></mat-checkbox>\n <div class=\"topic-child-description\">\n {{subTopic.name}} ({{subTopic.questionCount}} questions)\n <div class=\"tags\">\n <div class=\"tags-tag recommended\" *ngIf=\"subTopic.recommended\">Recommended</div>\n <div class=\"tags-tag teammember\" *ngIf=\"hasSegmentQuestions(subTopic, SegmentEnum.TeamMember, false)\">For team members</div>\n <div class=\"tags-tag stakeholder\" *ngIf=\"hasSegmentQuestions(subTopic, SegmentEnum.Stakeholder, false)\">For stakeholders</div>\n <div class=\"tags-tag supporter\" *ngIf=\"hasSegmentQuestions(subTopic, SegmentEnum.Management, false)\">For supporters</div>\n </div>\n </div>\n <div class=\"topic-child-moreinformation\">\n <span class=\"icon ph-info-bold\" (click)=\"openFactorInformation(subTopic.publicKey, $event)\"></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n</form>\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%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}.topicselector-container .topicselector-metadata{background:#f0f0f0;border-radius:20px;padding:30px;display:flex;column-gap:30px;flex-direction:column}@media only screen and (max-width: 992px){.topicselector-container .topicselector-metadata{display:block}}.topicselector-container .topicselector-metadata .questionnaire-preset .questionnaire-preset-label{font-size:12px;font-weight:900;text-transform:uppercase;font-family:StevieSans,sans-serif;margin-bottom:5px}.topicselector-container .topicselector-metadata .questionnaire-preset .questionnaire-preset-select{width:100%}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-segments-label{font-size:12px;font-weight:900;text-transform:uppercase;font-family:StevieSans,sans-serif;margin-bottom:5px}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns{display:flex;gap:15px}@media only screen and (max-width: 992px){.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns{display:block}}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown{margin-bottom:15px;flex:auto}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .questionnaire-breakdown-label{font-size:14px;font-weight:700;font-family:StevieSans,sans-serif;margin-bottom:5px;margin-top:5px}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .questionnaire-breakdown-label .icon{color:#ef6f00;font-size:18px;vertical-align:middle;cursor:pointer}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar{margin:0;width:100%}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-teammember .progressbar-bar{background:#00af77}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-teammember .progressbar-score{color:#fff}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-stakeholder .progressbar-bar{background:#fff73f}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-stakeholder .progressbar-score{color:#fff}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-supporter .progressbar-bar{background:#ef4f9f}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-supporter .progressbar-score{color:#fff}.topicselector-container .topicselector-metadata .questionnaire-accuracy{margin-bottom:15px}.topicselector-container .topicselector-metadata .questionnaire-accuracy .questionnaire-breakdown-label{font-size:12px;font-weight:900;text-transform:uppercase;margin-bottom:5px;font-family:StevieSans,sans-serif}.topicselector-container .topicselector-metadata .questionnaire-accuracy .questionnaire-breakdown-bar-holder{margin-bottom:15px;background:#2f2f2f;height:20px;border-radius:15px;overflow:hidden}.topicselector-container .topicselector-metadata .questionnaire-accuracy .questionnaire-breakdown-bar-holder .questionnaire-accuracy-bar{flex:auto;min-width:50px;font-size:12px;font-weight:900;text-transform:uppercase;font-family:StevieSans,sans-serif;background:#00af77;height:100%;align-content:center;text-align:center}.topicselector-container .topicselector-metadata .questionnaire-accuracy .questionnaire-breakdown-bar-holder .questionnaire-accuracy-bar.low{background:#ef6f00}.topicselector-container .topicselector-metadata .questionnaire-accuracy .questionnaire-breakdown-bar-holder .questionnaire-accuracy-bar.moderate{background:#fff73f}.topicselector-container .topic-selector-advancedviewtoggle{margin-top:10px;text-align:center;font-weight:700;font-family:StevieSans,sans-serif;font-size:12pt;text-decoration:none}.topicselector-container .topic-selector-advancedviewtoggle .icon{margin-right:10px;vertical-align:middle}.topicselector-container .topicselector-warnings{margin-top:15px}.topicselector-container .topicselector-warnings .topicselector-warnings-warning{display:flex;align-items:center;font-size:12pt}.topicselector-container .topicselector-warnings .topicselector-warnings-warning .icon{color:#1f3f8f;font-size:16px;cursor:pointer;margin-right:10px}.topicselector-container .topicselector-topics{margin-top:30px}.topicselector-container .topicselector-topics .topic-parent{margin-bottom:60px;padding-left:30px}.topicselector-container .topicselector-topics .topic-parent .name{display:flex;align-items:baseline;gap:15px}.topicselector-container .topicselector-topics .topic-parent .name h4{font-weight:700!important;font-family:StevieSans,sans-serif!important;margin:0}.topicselector-container .topicselector-topics .topic-parent .name .helpers{font-size:12pt}.topicselector-container .topicselector-topics .topic-parent .name .helpers a{font-family:StevieSans,sans-serif}.topicselector-container .topicselector-topics .topic-parent .name .topic-child-moreinformation{margin-left:auto;cursor:pointer}.topicselector-container .topicselector-topics .topic-parent .name .topic-child-moreinformation .icon{vertical-align:middle}.topicselector-container .topicselector-topics .topic-parent .topic-child{display:flex;align-items:baseline;gap:15px;margin-bottom:15px;margin-top:15px;cursor:pointer}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description{font-family:StevieSans,sans-serif;font-size:16px;font-weight:500}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags{gap:5px;margin-top:5px;display:flex}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags .tags-tag{padding:4px 8px;border-radius:16px;font-weight:600;font-size:11px;white-space:pre}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags .tags-tag.recommended{background:#2f2f2f;color:#fff}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags .tags-tag.stakeholder{background:#fff73f}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags .tags-tag.teammember{background:#1f3f8f;color:#fff}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags .tags-tag.supporter,.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags .tags-tag.management{background:#ef4f9f}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-moreinformation{margin-left:auto}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-moreinformation .icon{vertical-align:middle;cursor:pointer}\n"] }]
204
+ ], template: "<form [formGroup]=\"form\">\n <div class=\"topicselector-container\">\n <div class=\"topicselector-metadata\">\n <div class=\"questionnaire-preset\">\n <mat-form-field class=\"questionnaire-preset-select\" appearance=\"fill\">\n <mat-label>Select predefined questionnaire</mat-label>\n <mat-select id=\"question-preset\" formControlName=\"preset\" (selectionChange)=\"selectPreset()\">\n <mat-option [value]=\"type.publicKey\" *ngFor=\"let type of presets\" class=\"select-option\">{{type.name}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"questionnaire-accuracy\">\n <div class=\"questionnaire-breakdown-label\">Accuracy</div>\n <div class=\"questionnaire-breakdown-bar-holder\">\n <div class=\"questionnaire-accuracy-bar\" [ngClass]=\"{'low': questionnaireAccuracy < 0.25, 'moderate' : questionnaireAccuracy < 0.5 && questionnaireAccuracy >= 0.25}\" [ngStyle]=\"{'width': (questionnaireAccuracy * 100) + '%' }\">{{questionnaireAccuracy * 100 | number:'1.0-0'}}%</div>\n </div>\n </div>\n <div class=\"questionnaire-segments\">\n <div class=\"questionnaire-segments-label\">Time investment</div>\n <div class=\"questionnaire-breakdowns\">\n <div class=\"questionnaire-breakdown\">\n <div class=\"questionnaire-breakdown-label\">Team members</div>\n <div class=\"progressbar progressbar-positive progressbar-teammember\">\n <div class=\"progressbar-bar\" *ngIf=\"questionsTeamMembers > 0\" [style.width]=\"((questionsTeamMembers / questionsTotal) * 100) + '%'\"></div>\n <div class=\"progressbar-score\">{{durationTeamMembers | number:'1.0-0'}} min</div>\n </div>\n </div>\n <div class=\"questionnaire-breakdown\">\n <div class=\"questionnaire-breakdown-label\">Stakeholders</div>\n <div class=\"progressbar progressbar-positive progressbar-stakeholder\">\n <div class=\"progressbar-bar\" *ngIf=\"questionsStakeholders > 0\" [style.width]=\"((questionsStakeholders / questionsTotal) * 100) + '%'\"></div>\n <div class=\"progressbar-score\">{{durationStakeholders | number:'1.0-0'}} min</div>\n </div>\n </div>\n <div class=\"questionnaire-breakdown\">\n <div class=\"questionnaire-breakdown-label\">Supporters</div>\n <div class=\"progressbar progressbar-positive progressbar-supporter\">\n <div class=\"progressbar-bar\" *ngIf=\"questionsSupporters > 0\" [style.width]=\"((questionsSupporters / questionsTotal) * 100) + '%'\"></div>\n <div class=\"progressbar-score\">{{durationSupporters | number:'1.0-0'}} min</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"topicselector-warnings\" *ngIf=\"warnings.length > 0\">\n <div class=\"topicselector-warnings-warning\" *ngFor=\"let warning of warnings\">\n <span class=\"icon ph-info-fill\"></span>{{warning}}\n </div>\n </div>\n <a href=\"javascript:void(null)\" *ngIf=\"!form.controls.showTopics.value\" id=\"action-advancedviewtoggle\" class=\"topic-selector-advancedviewtoggle\" (click)=\"form.controls.showTopics.setValue(true)\"><span class=\"icon ph-caret-down-bold\"></span>Customize topics</a>\n <a href=\"javascript:void(null)\" *ngIf=\"form.controls.showTopics.value\" id=\"action-advancedviewtoggle\" class=\"topic-selector-advancedviewtoggle\" (click)=\"form.controls.showTopics.setValue(false)\"><span class=\"icon ph-caret-up-bold\"></span>Hide topics</a>\n </div>\n <div class=\"topicselector-topics\" *ngIf=\"form.controls.showTopics.value\"> \n <div class=\"topic-parent\" *ngFor=\"let topic of getCoreFactors()\" formArrayName=\"topics\">\n <div class=\"name\">\n <h4>{{topic.name}}</h4>\n <div class=\"helpers\">(<a href=\"#\" (click)=\"selectAll(topic, $event)\">all</a> | <a href=\"#\" (click)=\"selectNone(topic, $event)\">none</a>)</div>\n <div class=\"topic-child-moreinformation\">\n <span class=\"icon ph-info-bold\" (click)=\"openFactorInformation(topic.publicKey, $event)\"></span>\n </div>\n </div>\n\n <div *ngIf=\"topic.ownQuestionCount > 0\" class=\"topic-child\">\n <mat-checkbox class=\"topic-child-check\" [formControlName]=\"topic.publicKey\" (click)=\"toggleTopic()\" [id]=\"'topic-' + topic.name | slugify\"></mat-checkbox>\n <div class=\"topic-child-description\">\n {{topic.name}} ({{topic.ownQuestionCount}} questions)\n <div class=\"tags\">\n <div class=\"tags-tag recommended\" *ngIf=\"topic.recommended\">Recommended</div>\n <div class=\"tags-tag teammember\" *ngIf=\"hasSegmentQuestions(topic, SegmentEnum.TeamMember, true)\">For team members</div>\n <div class=\"tags-tag stakeholder\" *ngIf=\"hasSegmentQuestions(topic, SegmentEnum.Stakeholder, true)\">For stakeholders</div>\n <div class=\"tags-tag supporter\" *ngIf=\"hasSegmentQuestions(topic, SegmentEnum.Management, true)\">For supporters</div>\n </div>\n </div>\n <div class=\"topic-child-moreinformation\">\n <span class=\"icon ph-info-bold\" (click)=\"openFactorInformation(topic.publicKey, $event)\"></span>\n </div>\n </div>\n\n\n <div *ngFor=\"let subTopic of getSubFactors(topic.publicKey)\" class=\"topic-child\">\n <mat-checkbox class=\"topic-child-check\" [formControlName]=\"subTopic.publicKey\" (click)=\"toggleTopic()\" [id]=\"'topic-' + subTopic.name | slugify\"></mat-checkbox>\n <div class=\"topic-child-description\">\n {{subTopic.name}} ({{subTopic.questionCount}} questions)\n <div class=\"tags\">\n <div class=\"tags-tag recommended\" *ngIf=\"subTopic.recommended\">Recommended</div>\n <div class=\"tags-tag teammember\" *ngIf=\"hasSegmentQuestions(subTopic, SegmentEnum.TeamMember, false)\">For team members</div>\n <div class=\"tags-tag stakeholder\" *ngIf=\"hasSegmentQuestions(subTopic, SegmentEnum.Stakeholder, false)\">For stakeholders</div>\n <div class=\"tags-tag supporter\" *ngIf=\"hasSegmentQuestions(subTopic, SegmentEnum.Management, false)\">For supporters</div>\n </div>\n </div>\n <div class=\"topic-child-moreinformation\">\n <span class=\"icon ph-info-bold\" (click)=\"openFactorInformation(subTopic.publicKey, $event)\"></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n</form>\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%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}.topicselector-container .topicselector-metadata{background:#f0f0f0;border-radius:20px;padding:30px;display:flex;column-gap:30px;flex-direction:column}@media only screen and (max-width: 992px){.topicselector-container .topicselector-metadata{display:block}}.topicselector-container .topicselector-metadata .questionnaire-preset .questionnaire-preset-label{font-size:12px;font-weight:900;text-transform:uppercase;font-family:StevieSans,sans-serif;margin-bottom:5px}.topicselector-container .topicselector-metadata .questionnaire-preset .questionnaire-preset-select{width:100%}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-segments-label{font-size:12px;font-weight:900;text-transform:uppercase;font-family:StevieSans,sans-serif;margin-bottom:5px}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns{display:flex;gap:15px}@media only screen and (max-width: 992px){.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns{display:block}}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown{margin-bottom:15px;flex:auto}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .questionnaire-breakdown-label{font-size:14px;font-weight:700;font-family:StevieSans,sans-serif;margin-bottom:5px;margin-top:5px}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .questionnaire-breakdown-label .icon{color:#ef6f00;font-size:18px;vertical-align:middle;cursor:pointer}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar{margin:0;width:100%}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-teammember .progressbar-bar{background:#00af77}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-teammember .progressbar-score{color:#fff}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-stakeholder .progressbar-bar{background:#fff73f}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-stakeholder .progressbar-score{color:#fff}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-supporter .progressbar-bar{background:#ef4f9f}.topicselector-container .topicselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-supporter .progressbar-score{color:#fff}.topicselector-container .topicselector-metadata .questionnaire-accuracy{margin-bottom:15px}.topicselector-container .topicselector-metadata .questionnaire-accuracy .questionnaire-breakdown-label{font-size:12px;font-weight:900;text-transform:uppercase;margin-bottom:5px;font-family:StevieSans,sans-serif}.topicselector-container .topicselector-metadata .questionnaire-accuracy .questionnaire-breakdown-bar-holder{margin-bottom:15px;background:#2f2f2f;height:20px;border-radius:15px;overflow:hidden}.topicselector-container .topicselector-metadata .questionnaire-accuracy .questionnaire-breakdown-bar-holder .questionnaire-accuracy-bar{flex:auto;min-width:50px;font-size:12px;font-weight:900;text-transform:uppercase;font-family:StevieSans,sans-serif;background:#00af77;height:100%;align-content:center;text-align:center}.topicselector-container .topicselector-metadata .questionnaire-accuracy .questionnaire-breakdown-bar-holder .questionnaire-accuracy-bar.low{background:#ef6f00}.topicselector-container .topicselector-metadata .questionnaire-accuracy .questionnaire-breakdown-bar-holder .questionnaire-accuracy-bar.moderate{background:#fff73f}.topicselector-container .topic-selector-advancedviewtoggle{margin-top:10px;text-align:center;font-weight:700;font-family:StevieSans,sans-serif;font-size:12pt;text-decoration:none}.topicselector-container .topic-selector-advancedviewtoggle .icon{margin-right:10px;vertical-align:middle}.topicselector-container .topicselector-warnings{margin-top:15px}.topicselector-container .topicselector-warnings .topicselector-warnings-warning{display:flex;align-items:center;font-size:12pt}.topicselector-container .topicselector-warnings .topicselector-warnings-warning .icon{color:#1f3f8f;font-size:16px;cursor:pointer;margin-right:10px}.topicselector-container .topicselector-topics{margin-top:30px}.topicselector-container .topicselector-topics .topic-parent{margin-bottom:60px;padding-left:30px}.topicselector-container .topicselector-topics .topic-parent .name{display:flex;align-items:baseline;gap:15px}.topicselector-container .topicselector-topics .topic-parent .name h4{font-weight:700!important;font-family:StevieSans,sans-serif!important;margin:0}.topicselector-container .topicselector-topics .topic-parent .name .helpers{font-size:12pt}.topicselector-container .topicselector-topics .topic-parent .name .helpers a{font-family:StevieSans,sans-serif}.topicselector-container .topicselector-topics .topic-parent .name .topic-child-moreinformation{margin-left:auto;cursor:pointer}.topicselector-container .topicselector-topics .topic-parent .name .topic-child-moreinformation .icon{vertical-align:middle}.topicselector-container .topicselector-topics .topic-parent .topic-child{display:flex;align-items:baseline;gap:15px;margin-bottom:15px;margin-top:15px;cursor:pointer}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description{font-family:StevieSans,sans-serif;font-size:16px;font-weight:500}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags{gap:5px;margin-top:5px;display:flex}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags .tags-tag{padding:4px 8px;border-radius:16px;font-weight:600;font-size:11px;white-space:pre}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags .tags-tag.recommended{background:#2f2f2f;color:#fff}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags .tags-tag.stakeholder{background:#fff73f}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags .tags-tag.teammember{background:#1f3f8f;color:#fff}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags .tags-tag.supporter,.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-description .tags .tags-tag.management{background:#ef4f9f}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-moreinformation{margin-left:auto}.topicselector-container .topicselector-topics .topic-parent .topic-child .topic-child-moreinformation .icon{vertical-align:middle;cursor:pointer}\n"] }]
205
205
  }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.MatDialog }], propDecorators: { topics: [{
206
206
  type: Input
207
207
  }], disabled: [{
@@ -217,4 +217,4 @@ export class TopicSelectorDto {
217
217
  this.topicKeys = topicKeys ?? [];
218
218
  }
219
219
  }
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9waWMtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjcnVtdGVhbXN1cnZleS10b29scy9zcmMvbGliL2NvbXBvbmVudHMvdG9waWNzZWxlY3Rvci90b3BpYy1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvY29tcG9uZW50cy90b3BpY3NlbGVjdG9yL3RvcGljLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQWlFLFdBQVcsRUFBYSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFJLE9BQU8sRUFBYSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RSxPQUFPLEVBQTRDLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDJFQUEyRSxDQUFDOzs7Ozs7Ozs7O0FBVTdILE1BQU0sT0FBTyxzQkFBc0I7SUFrQmhDLFlBQW9CLFdBQXdCLEVBQVUsTUFBaUI7UUFBbkQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBaEJoRSxhQUFRLEdBQWEsRUFBRSxDQUFBO1FBQ3RCLG1CQUFjLEdBQWEsRUFBRSxDQUFDO1FBQy9CLDBCQUFxQixHQUFXLENBQUMsQ0FBQztRQUNsQyx5QkFBb0IsR0FBVyxDQUFDLENBQUM7UUFDakMsMEJBQXFCLEdBQVcsQ0FBQyxDQUFDO1FBQ2xDLHdCQUFtQixHQUFXLENBQUMsQ0FBQztRQUNoQyx3QkFBbUIsR0FBVyxDQUFDLENBQUM7UUFDaEMseUJB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SSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU1SCxJQUFJLENBQUMsY0FBYyxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoRyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoTCxJQUFJLENBQUMscUJBQXFCLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsTCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUvSyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN4TCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMxTCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUV2TCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUFDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLENBQUM7UUFBQyxDQUFDO1FBQ25FLElBQUksSUFBSSxDQUFDLG9CQUFvQixHQUFHLENBQUMsRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLENBQUMsQ0FBQztRQUFDLENBQUM7UUFDckUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFBQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO1FBQUMsQ0FBQztRQUVqRSxJQUFJLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxvRUFBb0UsQ0FBQyxDQUFDO1FBQzVGLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxvRUFBb0UsQ0FBQyxDQUFDO1FBQzVGLENBQUM7UUFFRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7SUFDckUsQ0FBQzsrR0FsTVMsc0JBQXNCO21HQUF0QixzQkFBc0IseUlBSnJCO1lBQ1IsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDLEdBQUc7U0FDckcsMEJDWkosa2dPQWlHQTs7NEZEbkZhLHNCQUFzQjtrQkFSbEMsU0FBUzsrQkFDRyxnQkFBZ0IsYUFHZjt3QkFDUixFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHVCQUF1QixDQUFDLEdBQUc7cUJBQ3JHO3dHQWNRLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLOztBQXNMVCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzFCLFlBQVksU0FBaUIsRUFBRSxTQUFtQjtRQUMvQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsSUFBSSxFQUFFLENBQUM7SUFDcEMsQ0FBQztDQUlIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ0NvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBGYWN0b3JTdHJ1Y3R1cmVEdG8sIFF1ZXN0aW9ubmFpcmVUeXBlRHRvLCBTZWdtZW50RW51bSB9IGZyb20gJy4uLy4uL21vZGVscy9tb2RlbFN0cnVjdHVyZUR0byc7XG5pbXBvcnQgeyBEaWFsb2dGYWN0b3JJbmZvcm1hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2RpYWxvZ3MvZGlhbG9nLWZhY3RvcmluZm9ybWF0aW9uL2RpYWxvZy1mYWN0b3JpbmZvcm1hdGlvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgIHNlbGVjdG9yOiAndG9waWMtc2VsZWN0b3InLFxuICAgdGVtcGxhdGVVcmw6ICcuL3RvcGljLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgIHN0eWxlVXJsczogWycuL3RvcGljLXNlbGVjdG9yLmNvbXBvbmVudC5sZXNzJ10sXG4gICBwcm92aWRlcnM6IFtcbiAgICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIG11bHRpOiB0cnVlLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUb3BpY1NlbGVjdG9yQ29tcG9uZW50KSwgfVxuICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUb3BpY1NlbGVjdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcbiAgIHB1YmxpYyB3YXJuaW5nczogc3RyaW5nW10gPSBbXVxuICAgcHJpdmF0ZSBzZWxlY3RlZFRvcGljczogc3RyaW5nW10gPSBbXTtcbiAgIHB1YmxpYyBxdWVzdGlvbm5haXJlQWNjdXJhY3k6IG51bWJlciA9IDA7XG4gICBwdWJsaWMgcXVlc3Rpb25zVGVhbU1lbWJlcnM6IG51bWJlciA9IDA7XG4gICBwdWJsaWMgcXVlc3Rpb25zU3Rha2Vob2xkZXJzOiBudW1iZXIgPSAwO1xuICAgcHVibGljIHF1ZXN0aW9uc1N1cHBvcnRlcnM6IG51bWJlciA9IDA7XG4gICBwdWJsaWMgZHVyYXRpb25UZWFtTWVtYmVyczogbnVtYmVyID0gMDtcbiAgIHB1YmxpYyBkdXJhdGlvblN0YWtlaG9sZGVyczogbnVtYmVyID0gMDtcbiAgIHB1YmxpYyBkdXJhdGlvblN1cHBvcnRlcnM6IG51bWJlciA9IDA7XG4gICBwdWJsaWMgcXVlc3Rpb25zVG90YWw6IG51bWJlciA9IDA7XG4gICBASW5wdXQoKSB0b3BpY3M6IEZhY3RvclN0cnVjdHVyZUR0b1tdO1xuICAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgIEBJbnB1dCgpIHRvcGljS2V5czogc3RyaW5nW10gPSBbXTtcbiAgIEBJbnB1dCgpIHByZXNldHM6IFF1ZXN0aW9ubmFpcmVUeXBlRHRvW10gPSBbXTtcbiAgIHB1YmxpYyBTZWdtZW50RW51bSA9IFNlZ21lbnRFbnVtO1xuXG4gICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZykge1xuICAgfVxuXG4gICBuZ09uSW5pdCgpIHtcbiAgICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuICAgICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgdmFyIG91dHB1dCA9IHRoaXMuZ2V0VmFsdWUoKTtcbiAgICAgICAgIHRoaXMub25DaGFuZ2Uob3V0cHV0KTtcbiAgICAgICAgIHRoaXMudXBkYXRlTWV0YURhdGEob3V0cHV0KTtcbiAgICAgIH0pO1xuICAgfVxuXG4gICBwdWJsaWMgdG9nZ2xlVG9waWMoKSB7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMucHJlc2V0LnNldFZhbHVlKFwiY3VzdG9tXCIpO1xuICAgfVxuXG4gICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICB9XG5cbiAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgIH1cblxuICAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHsgfTtcbiAgIG9uVG91Y2g6IGFueSA9ICgpID0+IHsgfTtcblxuICAgd3JpdGVWYWx1ZShkdG86IFRvcGljU2VsZWN0b3JEdG8pOiB2b2lkIHtcbiAgICAgIGlmICghZHRvKSB7IHJldHVybjsgfVxuXG4gICAgICB2YXIgcXVlc3Rpb25uYWlyZSA9IHRoaXMucHJlc2V0cy5maW5kKHAgPT4gcC5wdWJsaWNLZXkgPT0gZHRvLnByZXNldEtleSk7XG5cbiAgICAgIGlmICghcXVlc3Rpb25uYWlyZSkge1xuICAgICAgICAgcXVlc3Rpb25uYWlyZSA9IHRoaXMucHJlc2V0c1swXTtcbiAgICAgICAgIGR0by50b3BpY0tleXMgPSBxdWVzdGlvbm5haXJlLnNjYWxlS2V5cztcbiAgICAgICAgIGR0by5wcmVzZXRLZXkgPSBxdWVzdGlvbm5haXJlLnB1YmxpY0tleTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZWxlY3RlZFRvcGljcyA9IGR0by50b3BpY0tleXMgPz8gW107XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMucHJlc2V0LnNldFZhbHVlKGR0by5wcmVzZXRLZXkpO1xuICAgICAgaWYgKHF1ZXN0aW9ubmFpcmUucHVibGljS2V5ID09ICdjdXN0b20nKSB7IHRoaXMuZm9ybS5jb250cm9scy5zaG93VG9waWNzLnNldFZhbHVlKHRydWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTsgfVxuXG4gICAgICB2YXIgdG9waWNzID0gdGhpcy5mb3JtLmNvbnRyb2xzLnRvcGljcyBhcyBGb3JtR3JvdXA7XG4gICAgICBPYmplY3Qua2V5cyh0b3BpY3MuY29udHJvbHMpXG4gICAgICAgICAuZm9yRWFjaChwID0+IHRvcGljcy5nZXQocCkuc2V0VmFsdWUodGhpcy5zZWxlY3RlZFRvcGljcy5pbmNsdWRlcyhwKSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pKTtcblxuICAgICAgdGhpcy51cGRhdGVNZXRhRGF0YShkdG8pO1xuICAgfVxuXG4gICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgICAgdGhpcy5mb3JtLmRpc2FibGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICB0aGlzLmZvcm0uZW5hYmxlKCk7XG4gICAgICB9XG4gICB9XG4gICBwdWJsaWMgc2VsZWN0UHJlc2V0KCkge1xuICAgICAgdmFyIHF1ZXN0aW9ubmFpcmUgPSB0aGlzLnByZXNldHMuZmluZChwID0+IHAucHVibGljS2V5ID09IHRoaXMuZm9ybS5jb250cm9scy5wcmVzZXQudmFsdWUpO1xuICAgICAgaWYgKCFxdWVzdGlvbm5haXJlKSB7IHJldHVybjsgfVxuXG4gICAgICB2YXIgdG9waWNLZXlzID0gcXVlc3Rpb25uYWlyZS5zY2FsZUtleXM7XG4gICAgICBpZiAodG9waWNLZXlzLmxlbmd0aCA9PSAwKSB7IHRvcGljS2V5cyA9IHRoaXMucHJlc2V0c1swXS5zY2FsZUtleXM7IH1cblxuICAgICAgdGhpcy5zZWxlY3RlZFRvcGljcyA9IHRvcGljS2V5cyA/PyBbXTtcbiAgICAgIHZhciB0b3BpY3MgPSB0aGlzLmZvcm0uY29udHJvbHMudG9waWNzIGFzIEZvcm1Hcm91cDtcbiAgICAgIE9iamVjdC5rZXlzKHRvcGljcy5jb250cm9scylcbiAgICAgICAgIC5mb3JFYWNoKHAgPT4gdG9waWNzLmdldChwKS5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkVG9waWNzLmluY2x1ZGVzKHApKSk7XG5cbiAgICAgIGlmIChxdWVzdGlvbm5haXJlLnB1YmxpY0tleSA9PSAnY3VzdG9tJykgeyB0aGlzLmZvcm0uY29udHJvbHMuc2hvd1RvcGljcy5zZXRWYWx1ZSh0cnVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7IH1cbiAgICAgIHZhciBkdG8gPSBuZXcgVG9waWNTZWxlY3RvckR0byhxdWVzdGlvbm5haXJlLnB1YmxpY0tleSwgdG9waWNLZXlzKTtcbiAgICAgIHRoaXMudXBkYXRlTWV0YURhdGEoZHRvKTtcbiAgICAgIHRoaXMub25DaGFuZ2UoZHRvKTtcbiAgIH1cblxuICAgcHVibGljIGdldFZhbHVlKCk6IFRvcGljU2VsZWN0b3JEdG8ge1xuICAgICAgdmFyIHRvcGljcyA9IHRoaXMuZm9ybS5jb250cm9scy50b3BpY3MgYXMgRm9ybUdyb3VwO1xuICAgICAgdmFyIHNlbGVjdGVkID0gT2JqZWN0LmtleXModG9waWNzLmNvbnRyb2xzKVxuICAgICAgICAgLmZpbHRlcihwID0+IHRvcGljcy5nZXQocCkudmFsdWUgPT0gdHJ1ZSlcbiAgICAgICAgIC5tYXAocCA9PiBwKTtcblxuICAgICAgdmFyIHByZXNldEtleSA9IHRoaXMuZm9ybS5jb250cm9scy5wcmVzZXQudmFsdWU7XG4gICAgICByZXR1cm4gbmV3IFRvcGljU2VsZWN0b3JEdG8ocHJlc2V0S2V5LCBzZWxlY3RlZCk7XG4gICB9XG5cbiAgIHB1YmxpYyBvcGVuRmFjdG9ySW5mb3JtYXRpb24odG9waWNLZXk6IHN0cmluZywgJGV2ZW50OiBFdmVudCkge1xuICAgICAgdmFyIHRvcGljID0gdGhpcy50b3BpY3MuZmluZChwID0+IHAucHVibGljS2V5ID09IHRvcGljS2V5KTtcbiAgICAgIGlmICghdG9waWMpIHsgcmV0dXJuOyB9XG5cbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBjb25zdCBkaWFsb2dDb25maWcgPSBuZXcgTWF0RGlhbG9nQ29uZmlnKCk7XG4gICAgICBkaWFsb2dDb25maWcucGFuZWxDbGFzcyA9IFsnZGlhbG9nJywgJ2ZhY3RvciddO1xuICAgICAgZGlhbG9nQ29uZmlnLmRhdGEgPSB0b3BpYztcbiAgICAgIGRpYWxvZ0NvbmZpZy5lbnRlckFuaW1hdGlvbkR1cmF0aW9uID0gMDtcbiAgICAgIGRpYWxvZ0NvbmZpZy5leGl0QW5pbWF0aW9uRHVyYXRpb24gPSAwO1xuICAgICAgdGhpcy5kaWFsb2cub3BlbihEaWFsb2dGYWN0b3JJbmZvcm1hdGlvbkNvbXBvbmVudCwgZGlhbG9nQ29uZmlnKTtcbiAgIH1cblxuICAgcHVibGljIGhhc1NlZ21lbnRRdWVzdGlvbnMoZmFjdG9yOiBGYWN0b3JTdHJ1Y3R1cmVEdG8sIHNlZ21lbnQ6IFNlZ21lbnRFbnVtLCB1c2VPd25RdWVzdGlvbkNvdW50OiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgICBpZiAodXNlT3duUXVlc3Rpb25Db3VudCkge1xuICAgICAgICAgcmV0dXJuIGZhY3Rvci5zZWdtZW50cy5maW5kKHAgPT4gcC5zZWdtZW50ID09IHNlZ21lbnQudG9TdHJpbmcoKSkub3duUXVlc3Rpb25Db3VudCA+IDAgPz8gZmFsc2U7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgIHJldHVybiBmYWN0b3Iuc2VnbWVudHMuZmluZChwID0+IHAuc2VnbWVudCA9PSBzZWdtZW50LnRvU3RyaW5nKCkpLnF1ZXN0aW9uQ291bnQgPiAwID8/IGZhbHNlO1xuICAgICAgfVxuICAgfVxuXG4gICBwdWJsaWMgZ2V0Q29yZUZhY3RvcnMoKSB7XG4gICAgICByZXR1cm4gdGhpcy50b3BpY3MuZmlsdGVyKHAgPT4gcC5wYXJlbnRLZXkgPT0gbnVsbCk7XG4gICB9XG5cbiAgIHB1YmxpYyBnZXRTdWJGYWN0b3JzKHBhcmVudEtleTogc3RyaW5nKSB7XG4gICAgICByZXR1cm4gdGhpcy50b3BpY3MuZmlsdGVyKHAgPT4gcC5wYXJlbnRLZXkgPT0gcGFyZW50S2V5KS5zb3J0KChhLCBiKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKTtcbiAgIH1cblxuICAgcHVibGljIHNlbGVjdEFsbCh0b3BpYzogRmFjdG9yU3RydWN0dXJlRHRvLCAkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHZhciB0b3BpY3MgPSB0aGlzLmZvcm0uY29udHJvbHMudG9waWNzIGFzIEZvcm1Hcm91cDtcbiAgICAgIHRoaXMudG9waWNzXG4gICAgICAgICAuZmlsdGVyKHAgPT4gcC5wYXJlbnRLZXkgPT0gdG9waWMucHVibGljS2V5IHx8IChwLnB1YmxpY0tleSA9PSB0b3BpYy5wdWJsaWNLZXkgJiYgcC5vd25RdWVzdGlvbkNvdW50ID4gMCkpXG4gICAgICAgICAuZm9yRWFjaChwID0+IHRvcGljcy5nZXQocC5wdWJsaWNLZXkpLnNldFZhbHVlKHRydWUpKVxuICAgfVxuXG4gICBwdWJsaWMgc2VsZWN0Tm9uZSh0b3BpYzogRmFjdG9yU3RydWN0dXJlRHRvLCAkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgdmFyIHRvcGljcyA9IHRoaXMuZm9ybS5jb250cm9scy50b3BpY3MgYXMgRm9ybUdyb3VwO1xuICAgICAgdGhpcy50b3BpY3NcbiAgICAgICAgIC5maWx0ZXIocCA9PiBwLnBhcmVudEtleSA9PSB0b3BpYy5wdWJsaWNLZXkgfHwgKHAucHVibGljS2V5ID09IHRvcGljLnB1YmxpY0tleSAmJiBwLm93blF1ZXN0aW9uQ291bnQgPiAwKSlcbiAgICAgICAgIC5mb3JFYWNoKHAgPT4gdG9waWNzLmdldChwLnB1YmxpY0tleSkuc2V0VmFsdWUoZmFsc2UpKVxuICAgfVxuXG4gICBwcml2YXRlIGNyZWF0ZUZvcm0oKSB7XG4gICAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgIHByZXNldDogW251bGxdLFxuICAgICAgICAgdG9waWNLZXlzOiBbW11dLFxuICAgICAgICAgdG9waWNzOiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKFtdKSxcbiAgICAgICAgIHNob3dUb3BpY3M6IFtmYWxzZV1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnRvcGljcy5maWx0ZXIocCA9PiBwLnBhcmVudEtleSAhPSBudWxsIHx8IChwLnBhcmVudEtleSA9PSBudWxsICYmIHAub3duUXVlc3Rpb25Db3VudCA+IDApKVxuICAgICAgICAgLmZvckVhY2gocCA9PiAodGhpcy5mb3JtLmNvbnRyb2xzLnRvcGljcyBhcyBGb3JtR3JvdXApLmFkZENvbnRyb2wocC5wdWJsaWNLZXksIG5ldyBGb3JtQ29udHJvbChmYWxzZSksIHsgZW1pdEV2ZW50OiBmYWxzZSB9KSlcbiAgIH1cblxuICAgcHJpdmF0ZSB1cGRhdGVNZXRhRGF0YShvdXRwdXQ6IFRvcGljU2VsZWN0b3JEdG8pIHtcbiAgICAgIHRoaXMud2FybmluZ3MgPSBbXTtcblxuICAgICAgLy8gb25seSB3b3JrIHdpdGggbG93ZXItbGV2ZWwgZmFjdG9ycywgYXMgaGlnaGVyLWxldmVsIGNvbnRhaW4gYWdncmVnYXRlZCBoaWdoZXItbGV2ZWwgcXVlc3Rpb24gY291bnRzXG4gICAgICB2YXIgc2NhbGVzVG9JbmNsdWRlID0gdGhpcy50b3BpY3MuZmlsdGVyKHAgPT4gcC5wYXJlbnRLZXkgIT0gbnVsbCAmJiBvdXRwdXQudG9waWNLZXlzLmluY2x1ZGVzKHAucHVibGljS2V5KSk7XG4gICAgICB2YXIgdG90YWxRdWVzdGlvbnMgPSB0aGlzLnRvcGljcy5maWx0ZXIocCA9PiBwLnBhcmVudEtleSAhPSBudWxsKS5yZWR1Y2UoKHN1bSwgY3VycmVudCkgPT4gc3VtICs9IGN1cnJlbnQucXVlc3Rpb25Db3VudCwgMCk7XG5cbiAgICAgIHRoaXMucXVlc3Rpb25zVG90YWwgPSBzY2FsZXNUb0luY2x1ZGUucmVkdWNlKChzdW0sIGN1cnJlbnQpID0+IHN1bSArPSBjdXJyZW50LnF1ZXN0aW9uQ291bnQsIDApO1xuICAgICAgdGhpcy5xdWVzdGlvbnNUZWFtTWVtYmVycyA9IHNjYWxlc1RvSW5jbHVkZS5mbGF0TWFwKHAgPT4gcC5zZWdtZW50cykuZmlsdGVyKHAgPT4gcC5zZWdtZW50ID09IFNlZ21lbnRFbnVtLlRlYW1NZW1iZXIpLnJlZHVjZSgoc3VtLCBjdXJyZW50KSA9PiBzdW0gKz0gY3VycmVudC5xdWVzdGlvbkNvdW50LCAwKTtcbiAgICAgIHRoaXMucXVlc3Rpb25zU3Rha2Vob2xkZXJzID0gc2NhbGVzVG9JbmNsdWRlLmZsYXRNYXAocCA9PiBwLnNlZ21lbnRzKS5maWx0ZXIocCA9PiBwLnNlZ21lbnQgPT0gU2VnbWVudEVudW0uU3Rha2Vob2xkZXIpLnJlZHVjZSgoc3VtLCBjdXJyZW50KSA9PiBzdW0gKz0gY3VycmVudC5xdWVzdGlvbkNvdW50LCAwKTtcbiAgICAgIHRoaXMucXVlc3Rpb25zU3VwcG9ydGVycyA9IHNjYWxlc1RvSW5jbHVkZS5mbGF0TWFwKHAgPT4gcC5zZWdtZW50cykuZmlsdGVyKHAgPT4gcC5zZWdtZW50ID09IFNlZ21lbnRFbnVtLk1hbmFnZW1lbnQpLnJlZHVjZSgoc3VtLCBjdXJyZW50KSA9PiBzdW0gKz0gY3VycmVudC5xdWVzdGlvbkNvdW50LCAwKTtcblxuICAgICAgdGhpcy5kdXJhdGlvblRlYW1NZW1iZXJzID0gc2NhbGVzVG9JbmNsdWRlLmZsYXRNYXAocCA9PiBwLnNlZ21lbnRzKS5maWx0ZXIocCA9PiBwLnNlZ21lbnQgPT0gU2VnbWVudEVudW0uVGVhbU1lbWJlcikucmVkdWNlKChzdW0sIGN1cnJlbnQpID0+IHN1bSArPSBjdXJyZW50LmR1cmF0aW9uSW5TZWNvbmRzLCAwKSAvIDYwO1xuICAgICAgdGhpcy5kdXJhdGlvblN0YWtlaG9sZGVycyA9IHNjYWxlc1RvSW5jbHVkZS5mbGF0TWFwKHAgPT4gcC5zZWdtZW50cykuZmlsdGVyKHAgPT4gcC5zZWdtZW50ID09IFNlZ21lbnRFbnVtLlN0YWtlaG9sZGVyKS5yZWR1Y2UoKHN1bSwgY3VycmVudCkgPT4gc3VtICs9IGN1cnJlbnQuZHVyYXRpb25JblNlY29uZHMsIDApIC8gNjA7XG4gICAgICB0aGlzLmR1cmF0aW9uU3VwcG9ydGVycyA9IHNjYWxlc1RvSW5jbHVkZS5mbGF0TWFwKHAgPT4gcC5zZWdtZW50cykuZmlsdGVyKHAgPT4gcC5zZWdtZW50ID09IFNlZ21lbnRFbnVtLk1hbmFnZW1lbnQpLnJlZHVjZSgoc3VtLCBjdXJyZW50KSA9PiBzdW0gKz0gY3VycmVudC5kdXJhdGlvbkluU2Vjb25kcywgMCkgLyA2MDtcblxuICAgICAgaWYgKHRoaXMuZHVyYXRpb25UZWFtTWVtYmVycyA8IDEpIHsgdGhpcy5kdXJhdGlvblRlYW1NZW1iZXJzID0gMTsgfVxuICAgICAgaWYgKHRoaXMuZHVyYXRpb25TdGFrZWhvbGRlcnMgPCAxKSB7IHRoaXMuZHVyYXRpb25TdGFrZWhvbGRlcnMgPSAxOyB9XG4gICAgICBpZiAodGhpcy5kdXJhdGlvblN1cHBvcnRlcnMgPCAxKSB7IHRoaXMuZHVyYXRpb25TdXBwb3J0ZXJzID0gMTsgfVxuXG4gICAgICBpZiAodGhpcy5xdWVzdGlvbnNTdGFrZWhvbGRlcnMgPT0gMCkge1xuICAgICAgICAgdGhpcy53YXJuaW5ncy5wdXNoKFwiVGhlIHNlbGVjdGlvbiBkb2VzIG5vdCBpbmNsdWRlIHRvcGljcyBmb3Igc3Rha2Vob2xkZXJzLlwiKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnF1ZXN0aW9uc1N1cHBvcnRlcnMgPT0gMCkge1xuICAgICAgICAgdGhpcy53YXJuaW5ncy5wdXNoKFwiVGhlIHNlbGVjdGlvbiBkb2VzIG5vdCBpbmNsdWRlIHRvcGljcyBmb3Igc3VwcG9ydGVycyAvIG1hbmFnZW1lbnQuXCIpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucXVlc3Rpb25zVGVhbU1lbWJlcnMgPT0gMCkge1xuICAgICAgICAgdGhpcy53YXJuaW5ncy5wdXNoKFwiVGhlIHNlbGVjdGlvbiBkb2VzIG5vdCBpbmNsdWRlIHRvcGljcyBmb3IgdGVhbSBtZW1iZXJzLlwiKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnF1ZXN0aW9ubmFpcmVBY2N1cmFjeSA8IDAuMjUpIHtcbiAgICAgICAgIHRoaXMud2FybmluZ3MucHVzaChcIlRoZSBzZWxlY3Rpb24gbWVhc3VyZXMgZmV3IHRvcGljcywgc28gaXRzIG92ZXJhbGwgYWNjdXJhY3kgaXMgbG93LlwiKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5xdWVzdGlvbm5haXJlQWNjdXJhY3kgPSB0aGlzLnF1ZXN0aW9uc1RvdGFsIC8gdG90YWxRdWVzdGlvbnM7XG4gICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUb3BpY1NlbGVjdG9yRHRvIHtcbiAgIGNvbnN0cnVjdG9yKHByZXNldEtleTogc3RyaW5nLCB0b3BpY0tleXM6IHN0cmluZ1tdKSB7XG4gICAgICB0aGlzLnByZXNldEtleSA9IHByZXNldEtleTtcbiAgICAgIHRoaXMudG9waWNLZXlzID0gdG9waWNLZXlzID8/IFtdO1xuICAgfVxuXG4gICBwcmVzZXRLZXk6IHN0cmluZztcbiAgIHRvcGljS2V5czogc3RyaW5nW107XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgIDxkaXYgY2xhc3M9XCJ0b3BpY3NlbGVjdG9yLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRvcGljc2VsZWN0b3ItbWV0YWRhdGFcIj5cbiAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWVzdGlvbm5haXJlLXByZXNldFwiPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwicXVlc3Rpb25uYWlyZS1wcmVzZXQtc2VsZWN0XCIgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U2VsZWN0IHByZWRlZmluZWQgcXVlc3Rpb25uYWlyZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgaWQ9XCJxdWVzdGlvbi1wcmVzZXRcIiBmb3JtQ29udHJvbE5hbWU9XCJwcmVzZXRcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdFByZXNldCgpXCI+XG4gICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwidHlwZS5wdWJsaWNLZXlcIiAqbmdGb3I9XCJsZXQgdHlwZSBvZiBwcmVzZXRzXCIgY2xhc3M9XCJzZWxlY3Qtb3B0aW9uXCI+e3t0eXBlLm5hbWV9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICA8L2Rpdj5cbiAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWVzdGlvbm5haXJlLWFjY3VyYWN5XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXVlc3Rpb25uYWlyZS1icmVha2Rvd24tbGFiZWxcIj5BY2N1cmFjeTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1ZXN0aW9ubmFpcmUtYnJlYWtkb3duLWJhci1ob2xkZXJcIj5cbiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWVzdGlvbm5haXJlLWFjY3VyYWN5LWJhclwiIFtuZ0NsYXNzXT1cInsnbG93JzogcXVlc3Rpb25uYWlyZUFjY3VyYWN5IDwgMC4yNSwgJ21vZGVyYXRlJyA6IHF1ZXN0aW9ubmFpcmVBY2N1cmFjeSA8IDAuNSAmJiBxdWVzdGlvbm5haXJlQWNjdXJhY3kgPj0gMC4yNX1cIiBbbmdTdHlsZV09XCJ7J3dpZHRoJzogKHF1ZXN0aW9ubmFpcmVBY2N1cmFjeSAqIDEwMCkgKyAnJScgfVwiPnt7cXVlc3Rpb25uYWlyZUFjY3VyYWN5ICogMTAwIHwgbnVtYmVyOicxLjAtMCd9fSU8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgPC9kaXY+XG4gICAgICAgICA8ZGl2IGNsYXNzPVwicXVlc3Rpb25uYWlyZS1zZWdtZW50c1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1ZXN0aW9ubmFpcmUtc2VnbWVudHMtbGFiZWxcIj5UaW1lIGludmVzdG1lbnQ8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWVzdGlvbm5haXJlLWJyZWFrZG93bnNcIj5cbiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWVzdGlvbm5haXJlLWJyZWFrZG93blwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1ZXN0aW9ubmFpcmUtYnJlYWtkb3duLWxhYmVsXCI+VGVhbSBtZW1iZXJzPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NiYXIgcHJvZ3Jlc3NiYXItcG9zaXRpdmUgcHJvZ3Jlc3NiYXItdGVhbW1lbWJlclwiPlxuICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzYmFyLWJhclwiICpuZ0lmPVwicXVlc3Rpb25zVGVhbU1lbWJlcnMgPiAwXCIgW3N0eWxlLndpZHRoXT1cIigocXVlc3Rpb25zVGVhbU1lbWJlcnMgLyBxdWVzdGlvbnNUb3RhbCkgKiAxMDApICsgJyUnXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NiYXItc2NvcmVcIj57e2R1cmF0aW9uVGVhbU1lbWJlcnMgfCBudW1iZXI6JzEuMC0wJ319IG1pbjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWVzdGlvbm5haXJlLWJyZWFrZG93blwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1ZXN0aW9ubmFpcmUtYnJlYWtkb3duLWxhYmVsXCI+U3Rha2Vob2xkZXJzPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NiYXIgcHJvZ3Jlc3NiYXItcG9zaXRpdmUgcHJvZ3Jlc3NiYXItc3Rha2Vob2xkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc2Jhci1iYXJcIiAqbmdJZj1cInF1ZXN0aW9uc1N0YWtlaG9sZGVycyA+IDBcIiBbc3R5bGUud2lkdGhdPVwiKChxdWVzdGlvbnNTdGFrZWhvbGRlcnMgLyBxdWVzdGlvbnNUb3RhbCkgKiAxMDApICsgJyUnXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NiYXItc2NvcmVcIj57e2R1cmF0aW9uU3Rha2Vob2xkZXJzIHwgbnVtYmVyOicxLjAtMCd9fSBtaW48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXVlc3Rpb25uYWlyZS1icmVha2Rvd25cIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWVzdGlvbm5haXJlLWJyZWFrZG93bi1sYWJlbFwiPlN1cHBvcnRlcnM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc2JhciBwcm9ncmVzc2Jhci1wb3NpdGl2ZSBwcm9ncmVzc2Jhci1zdXBwb3J0ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc2Jhci1iYXJcIiAqbmdJZj1cInF1ZXN0aW9uc1N1cHBvcnRlcnMgPiAwXCIgW3N0eWxlLndpZHRoXT1cIigocXVlc3Rpb25zU3VwcG9ydGVycyAvIHF1ZXN0aW9uc1RvdGFsKSAqIDEwMCkgKyAnJSdcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc2Jhci1zY29yZVwiPnt7ZHVyYXRpb25TdXBwb3J0ZXJzIHwgbnVtYmVyOicxLjAtMCd9fSBtaW48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgIDwvZGl2PlxuICAgICAgICAgPGRpdiBjbGFzcz1cInRvcGljc2VsZWN0b3Itd2FybmluZ3NcIiAqbmdJZj1cIndhcm5pbmdzLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b3BpY3NlbGVjdG9yLXdhcm5pbmdzLXdhcm5pbmdcIiAqbmdGb3I9XCJsZXQgd2FybmluZyBvZiB3YXJuaW5nc1wiPlxuICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIHBoLWluZm8tZmlsbFwiPjwvc3Bhbj57e3dhcm5pbmd9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICA8L2Rpdj5cbiAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQobnVsbClcIiAqbmdJZj1cIiFmb3JtLmNvbnRyb2xzLnNob3dUb3BpY3MudmFsdWVcIiBpZD1cImFjdGlvbi1hZHZhbmNlZHZpZXd0b2dnbGVcIiBjbGFzcz1cInRvcGljLXNlbGVjdG9yLWFkdmFuY2Vkdmlld3RvZ2dsZVwiIChjbGljayk9XCJmb3JtLmNvbnRyb2xzLnNob3dUb3BpY3Muc2V0VmFsdWUodHJ1ZSlcIj48c3BhbiBjbGFzcz1cImljb24gcGgtY2FyZXQtY2lyY2xlLWRvd24tZmlsbFwiPjwvc3Bhbj5hZHZhbmNlZCB2aWV3PC9hPlxuICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZChudWxsKVwiICpuZ0lmPVwiZm9ybS5jb250cm9scy5zaG93VG9waWNzLnZhbHVlXCIgaWQ9XCJhY3Rpb24tYWR2YW5jZWR2aWV3dG9nZ2xlXCIgY2xhc3M9XCJ0b3BpYy1zZWxlY3Rvci1hZHZhbmNlZHZpZXd0b2dnbGVcIiAoY2xpY2spPVwiZm9ybS5jb250cm9scy5zaG93VG9waWNzLnNldFZhbHVlKGZhbHNlKVwiPjxzcGFuIGNsYXNzPVwiaWNvbiBwaC1jYXJldC1jaXJjbGUtdXAtZmlsbFwiPjwvc3Bhbj5zaW1wbGUgdmlldzwvYT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInRvcGljc2VsZWN0b3ItdG9waWNzXCIgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLnNob3dUb3BpY3MudmFsdWVcIj4gXG4gICAgICAgICA8ZGl2IGNsYXNzPVwidG9waWMtcGFyZW50XCIgKm5nRm9yPVwibGV0IHRvcGljIG9mIGdldENvcmVGYWN0b3JzKClcIiBmb3JtQXJyYXlOYW1lPVwidG9waWNzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZVwiPlxuICAgICAgICAgICAgICAgPGg0Pnt7dG9waWMubmFtZX19PC9oND5cbiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWxwZXJzXCI+KDxhIGhyZWY9XCIjXCIgKGNsaWNrKT1cInNlbGVjdEFsbCh0b3BpYywgJGV2ZW50KVwiPmFsbDwvYT4gfCA8YSBocmVmPVwiI1wiIChjbGljayk9XCJzZWxlY3ROb25lKHRvcGljLCAkZXZlbnQpXCI+bm9uZTwvYT4pPC9kaXY+XG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9waWMtY2hpbGQtbW9yZWluZm9ybWF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gcGgtaW5mby1ib2xkXCIgKGNsaWNrKT1cIm9wZW5GYWN0b3JJbmZvcm1hdGlvbih0b3BpYy5wdWJsaWNLZXksICRldmVudClcIj48L3NwYW4+XG4gICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidG9waWMub3duUXVlc3Rpb25Db3VudCA+IDBcIiBjbGFzcz1cInRvcGljLWNoaWxkXCI+XG4gICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94IGNsYXNzPVwidG9waWMtY2hpbGQtY2hlY2tcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInRvcGljLnB1YmxpY0tleVwiIChjbGljayk9XCJ0b2dnbGVUb3BpYygpXCIgW2lkXT1cIid0b3BpYy0nICsgdG9waWMubmFtZSB8IHNsdWdpZnlcIj48L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b3BpYy1jaGlsZC1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAge3t0b3BpYy5uYW1lfX0gKHt7dG9waWMub3duUXVlc3Rpb25Db3VudH19IHF1ZXN0aW9ucylcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWdzXCI+XG4gICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFncy10YWcgcmVjb21tZW5kZWRcIiAqbmdJZj1cInRvcGljLnJlY29tbWVuZGVkXCI+UmVjb21tZW5kZWQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWdzLXRhZyB0ZWFtbWVtYmVyXCIgKm5nSWY9XCJoYXNTZWdtZW50UXVlc3Rpb25zKHRvcGljLCBTZWdtZW50RW51bS5UZWFtTWVtYmVyLCB0cnVlKVwiPkZvciB0ZWFtIG1lbWJlcnM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWdzLXRhZyBzdGFrZWhvbGRlclwiICpuZ0lmPVwiaGFzU2VnbWVudFF1ZXN0aW9ucyh0b3BpYywgU2VnbWVudEVudW0uU3Rha2Vob2xkZXIsIHRydWUpXCI+Rm9yIHN0YWtlaG9sZGVyczwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZ3MtdGFnIHN1cHBvcnRlclwiICpuZ0lmPVwiaGFzU2VnbWVudFF1ZXN0aW9ucyh0b3BpYywgU2VnbWVudEVudW0uTWFuYWdlbWVudCwgdHJ1ZSlcIj5Gb3Igc3VwcG9ydGVyczwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b3BpYy1jaGlsZC1tb3JlaW5mb3JtYXRpb25cIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBwaC1pbmZvLWJvbGRcIiAoY2xpY2spPVwib3BlbkZhY3RvckluZm9ybWF0aW9uKHRvcGljLnB1YmxpY0tleSwgJGV2ZW50KVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc3ViVG9waWMgb2YgZ2V0U3ViRmFjdG9ycyh0b3BpYy5wdWJsaWNLZXkpXCIgY2xhc3M9XCJ0b3BpYy1jaGlsZFwiPlxuICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cInRvcGljLWNoaWxkLWNoZWNrXCIgW2Zvcm1Db250cm9sTmFtZV09XCJzdWJUb3BpYy5wdWJsaWNLZXlcIiAoY2xpY2spPVwidG9nZ2xlVG9waWMoKVwiIFtpZF09XCIndG9waWMtJyArIHN1YlRvcGljLm5hbWUgfCBzbHVnaWZ5XCI+PC9tYXQtY2hlY2tib3g+XG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9waWMtY2hpbGQtZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgIHt7c3ViVG9waWMubmFtZX19ICh7e3N1YlRvcGljLnF1ZXN0aW9uQ291bnR9fSBxdWVzdGlvbnMpXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFnc1wiPlxuICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZ3MtdGFnIHJlY29tbWVuZGVkXCIgKm5nSWY9XCJzdWJUb3BpYy5yZWNvbW1lbmRlZFwiPlJlY29tbWVuZGVkPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFncy10YWcgdGVhbW1lbWJlclwiICpuZ0lmPVwiaGFzU2VnbWVudFF1ZXN0aW9ucyhzdWJUb3BpYywgU2VnbWVudEVudW0uVGVhbU1lbWJlciwgZmFsc2UpXCI+Rm9yIHRlYW0gbWVtYmVyczwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZ3MtdGFnIHN0YWtlaG9sZGVyXCIgKm5nSWY9XCJoYXNTZWdtZW50UXVlc3Rpb25zKHN1YlRvcGljLCBTZWdtZW50RW51bS5TdGFrZWhvbGRlciwgZmFsc2UpXCI+Rm9yIHN0YWtlaG9sZGVyczwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZ3MtdGFnIHN1cHBvcnRlclwiICpuZ0lmPVwiaGFzU2VnbWVudFF1ZXN0aW9ucyhzdWJUb3BpYywgU2VnbWVudEVudW0uTWFuYWdlbWVudCwgZmFsc2UpXCI+Rm9yIHN1cHBvcnRlcnM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9waWMtY2hpbGQtbW9yZWluZm9ybWF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gcGgtaW5mby1ib2xkXCIgKGNsaWNrKT1cIm9wZW5GYWN0b3JJbmZvcm1hdGlvbihzdWJUb3BpYy5wdWJsaWNLZXksICRldmVudClcIj48L3NwYW4+XG4gICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgIDwvZGl2PlxuPC9mb3JtPlxuIl19
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9waWMtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjcnVtdGVhbXN1cnZleS10b29scy9zcmMvbGliL2NvbXBvbmVudHMvdG9waWNzZWxlY3Rvci90b3BpYy1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvY29tcG9uZW50cy90b3BpY3NlbGVjdG9yL3RvcGljLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQWlFLFdBQVcsRUFBYSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFJLE9BQU8sRUFBYSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RSxPQUFPLEVBQTRDLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDJFQUEyRSxDQUFDOzs7Ozs7Ozs7O0FBVTdILE1BQU0sT0FBTyxzQkFBc0I7SUFrQmhDLFlBQW9CLFdBQXdCLEVBQVUsTUFBaUI7UUFBbkQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBaEJoRSxhQUFRLEdBQWEsRUFBRSxDQUFBO1FBQ3RCLG1CQUFjLEdBQWEsRUFBRSxDQUFDO1FBQy9CLDBCQUFxQixHQUFXLENBQUMsQ0FBQztRQUNsQyx5QkFBb0IsR0FBVyxDQUFDLENBQUM7UUFDakMsMEJBQXFCLEdBQVcsQ0FBQyxDQUFDO1FBQ2xDLHdCQUFtQixHQUFXLENBQUMsQ0FBQztRQUNoQyx3QkFBbUIsR0FBVyxDQUFDLENBQUM7UUFDaEMseUJBQW9CLEdBQVcsQ0FBQyxDQUFDO1FBQ2pDLHVCQUFrQixHQUFXLENBQUMsQ0FBQztRQUMvQixtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUV6QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFDekIsWUFBTyxHQUEyQixFQUFFLENBQUM7UUFDdkMsZ0JBQVcsR0FBRyxXQUFXLENBQUM7UUEwQmpDLGFBQVEsR0FBUSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDMUIsWUFBTyxHQUFRLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQXhCekIsQ0FBQztJQUVELFFBQVE7UUFDTCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNuQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVNLFdBQVc7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxFQUFPO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxFQUFPO1FBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFLRCxVQUFVLENBQUMsR0FBcUI7UUFDN0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQUMsT0FBTztRQUFDLENBQUM7UUFFckIsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV6RSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbEIsYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEMsR0FBRyxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDO1lBQ3hDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQztRQUMzQyxDQUFDO1FBRUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRCxJQUFJLGFBQWEsQ0FBQyxTQUFTLElBQUksUUFBUSxFQUFFLENBQUM7WUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQUMsQ0FBQztRQUVoSCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFtQixDQUFDO1FBQ3BELE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQzthQUN4QixPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFaEcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsZ0JBQWdCLENBQUUsVUFBbUI7UUFDbEMsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdkIsQ0FBQzthQUFNLENBQUM7WUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSixDQUFDO0lBQ00sWUFBWTtRQUNoQixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBRS9CLElBQUksU0FBUyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUM7UUFDeEMsSUFBSSxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQUMsQ0FBQztRQUVyRSxJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFDdEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBbUIsQ0FBQztRQUNwRCxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7YUFDeEIsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTFFLElBQUksYUFBYSxDQUFDLFNBQVMsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFBQyxDQUFDO1FBQ2hILElBQUksR0FBRyxHQUFHLElBQUksZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVNLFFBQVE7UUFDWixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFtQixDQUFDO1FBQ3BELElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQzthQUN2QyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUM7YUFDeEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFaEIsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNoRCxPQUFPLElBQUksZ0JBQWdCLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxRQUFnQixFQUFFLE1BQWE7UUFDekQsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLFFBQVEsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBRXZCLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQTtRQUN2QixNQUFNLFlBQVksR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQzNDLFlBQVksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDL0MsWUFBWSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDMUIsWUFBWSxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQztRQUN4QyxZQUFZLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxNQUEwQixFQUFFLE9BQW9CLEVBQUUsbUJBQTRCO1FBQ3RHLElBQUksbUJBQW1CLEVBQUUsQ0FBQztZQUN2QixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDO1FBQ25HLENBQUM7YUFDSSxDQUFDO1lBQ0gsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUM7UUFDaEcsQ0FBQztJQUNKLENBQUM7SUFFTSxjQUFjO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFTSxhQUFhLENBQUMsU0FBaUI7UUFDbkMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekcsQ0FBQztJQUVNLFNBQVMsQ0FBQyxLQUF5QixFQUFFLE1BQWE7UUFDdEQsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQW1CLENBQUM7UUFDcEQsSUFBSSxDQUFDLE1BQU07YUFDUCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3pHLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQzNELENBQUM7SUFFTSxVQUFVLENBQUMsS0FBeUIsRUFBRSxNQUFhO1FBQ3ZELE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQTtRQUN2QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFtQixDQUFDO1FBQ3BELElBQUksQ0FBQyxNQUFNO2FBQ1AsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUN6RyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUM1RCxDQUFDO0lBRU8sVUFBVTtRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDaEMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ2QsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2YsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUM7U0FDckIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUMzRixPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNuSSxDQUFDO0lBRU8sY0FBYyxDQUFDLE1BQXdCO1FBQzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBRW5CLHNHQUFzRztRQUN0RyxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzdHLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU1SCxJQUFJLENBQUMsY0FBYyxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoRyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoTCxJQUFJLENBQUMscUJBQXFCLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsTCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUvSyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN4TCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMxTCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUV2TCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUFDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLENBQUM7UUFBQyxDQUFDO1FBQ25FLElBQUksSUFBSSxDQUFDLG9CQUFvQixHQUFHLENBQUMsRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLENBQUMsQ0FBQztRQUFDLENBQUM7UUFDckUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFBQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO1FBQUMsQ0FBQztRQUVqRSxJQUFJLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxvRUFBb0UsQ0FBQyxDQUFDO1FBQzVGLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxvRUFBb0UsQ0FBQyxDQUFDO1FBQzVGLENBQUM7UUFFRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7SUFDckUsQ0FBQzsrR0FsTVMsc0JBQXNCO21HQUF0QixzQkFBc0IseUlBSnJCO1lBQ1IsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDLEdBQUc7U0FDckcsMEJDWkosdS9OQWlHQTs7NEZEbkZhLHNCQUFzQjtrQkFSbEMsU0FBUzsrQkFDRyxnQkFBZ0IsYUFHZjt3QkFDUixFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHVCQUF1QixDQUFDLEdBQUc7cUJBQ3JHO3dHQWNRLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLOztBQXNMVCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzFCLFlBQVksU0FBaUIsRUFBRSxTQUFtQjtRQUMvQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsSUFBSSxFQUFFLENBQUM7SUFDcEMsQ0FBQztDQUlIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ0NvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBGYWN0b3JTdHJ1Y3R1cmVEdG8sIFF1ZXN0aW9ubmFpcmVUeXBlRHRvLCBTZWdtZW50RW51bSB9IGZyb20gJy4uLy4uL21vZGVscy9tb2RlbFN0cnVjdHVyZUR0byc7XG5pbXBvcnQgeyBEaWFsb2dGYWN0b3JJbmZvcm1hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2RpYWxvZ3MvZGlhbG9nLWZhY3RvcmluZm9ybWF0aW9uL2RpYWxvZy1mYWN0b3JpbmZvcm1hdGlvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgIHNlbGVjdG9yOiAndG9waWMtc2VsZWN0b3InLFxuICAgdGVtcGxhdGVVcmw6ICcuL3RvcGljLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgIHN0eWxlVXJsczogWycuL3RvcGljLXNlbGVjdG9yLmNvbXBvbmVudC5sZXNzJ10sXG4gICBwcm92aWRlcnM6IFtcbiAgICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIG11bHRpOiB0cnVlLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUb3BpY1NlbGVjdG9yQ29tcG9uZW50KSwgfVxuICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUb3BpY1NlbGVjdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcbiAgIHB1YmxpYyB3YXJuaW5nczogc3RyaW5nW10gPSBbXVxuICAgcHJpdmF0ZSBzZWxlY3RlZFRvcGljczogc3RyaW5nW10gPSBbXTtcbiAgIHB1YmxpYyBxdWVzdGlvbm5haXJlQWNjdXJhY3k6IG51bWJlciA9IDA7XG4gICBwdWJsaWMgcXVlc3Rpb25zVGVhbU1lbWJlcnM6IG51bWJlciA9IDA7XG4gICBwdWJsaWMgcXVlc3Rpb25zU3Rha2Vob2xkZXJzOiBudW1iZXIgPSAwO1xuICAgcHVibGljIHF1ZXN0aW9uc1N1cHBvcnRlcnM6IG51bWJlciA9IDA7XG4gICBwdWJsaWMgZHVyYXRpb25UZWFtTWVtYmVyczogbnVtYmVyID0gMDtcbiAgIHB1YmxpYyBkdXJhdGlvblN0YWtlaG9sZGVyczogbnVtYmVyID0gMDtcbiAgIHB1YmxpYyBkdXJhdGlvblN1cHBvcnRlcnM6IG51bWJlciA9IDA7XG4gICBwdWJsaWMgcXVlc3Rpb25zVG90YWw6IG51bWJlciA9IDA7XG4gICBASW5wdXQoKSB0b3BpY3M6IEZhY3RvclN0cnVjdHVyZUR0b1tdO1xuICAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgIEBJbnB1dCgpIHRvcGljS2V5czogc3RyaW5nW10gPSBbXTtcbiAgIEBJbnB1dCgpIHByZXNldHM6IFF1ZXN0aW9ubmFpcmVUeXBlRHRvW10gPSBbXTtcbiAgIHB1YmxpYyBTZWdtZW50RW51bSA9IFNlZ21lbnRFbnVtO1xuXG4gICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZykge1xuICAgfVxuXG4gICBuZ09uSW5pdCgpIHtcbiAgICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuICAgICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgdmFyIG91dHB1dCA9IHRoaXMuZ2V0VmFsdWUoKTtcbiAgICAgICAgIHRoaXMub25DaGFuZ2Uob3V0cHV0KTtcbiAgICAgICAgIHRoaXMudXBkYXRlTWV0YURhdGEob3V0cHV0KTtcbiAgICAgIH0pO1xuICAgfVxuXG4gICBwdWJsaWMgdG9nZ2xlVG9waWMoKSB7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMucHJlc2V0LnNldFZhbHVlKFwiY3VzdG9tXCIpO1xuICAgfVxuXG4gICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICB9XG5cbiAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgIH1cblxuICAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHsgfTtcbiAgIG9uVG91Y2g6IGFueSA9ICgpID0+IHsgfTtcblxuICAgd3JpdGVWYWx1ZShkdG86IFRvcGljU2VsZWN0b3JEdG8pOiB2b2lkIHtcbiAgICAgIGlmICghZHRvKSB7IHJldHVybjsgfVxuXG4gICAgICB2YXIgcXVlc3Rpb25uYWlyZSA9IHRoaXMucHJlc2V0cy5maW5kKHAgPT4gcC5wdWJsaWNLZXkgPT0gZHRvLnByZXNldEtleSk7XG5cbiAgICAgIGlmICghcXVlc3Rpb25uYWlyZSkge1xuICAgICAgICAgcXVlc3Rpb25uYWlyZSA9IHRoaXMucHJlc2V0c1swXTtcbiAgICAgICAgIGR0by50b3BpY0tleXMgPSBxdWVzdGlvbm5haXJlLnNjYWxlS2V5cztcbiAgICAgICAgIGR0by5wcmVzZXRLZXkgPSBxdWVzdGlvbm5haXJlLnB1YmxpY0tleTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZWxlY3RlZFRvcGljcyA9IGR0by50b3BpY0tleXMgPz8gW107XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMucHJlc2V0LnNldFZhbHVlKGR0by5wcmVzZXRLZXkpO1xuICAgICAgaWYgKHF1ZXN0aW9ubmFpcmUucHVibGljS2V5ID09ICdjdXN0b20nKSB7IHRoaXMuZm9ybS5jb250cm9scy5zaG93VG9waWNzLnNldFZhbHVlKHRydWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTsgfVxuXG4gICAgICB2YXIgdG9waWNzID0gdGhpcy5mb3JtLmNvbnRyb2xzLnRvcGljcyBhcyBGb3JtR3JvdXA7XG4gICAgICBPYmplY3Qua2V5cyh0b3BpY3MuY29udHJvbHMpXG4gICAgICAgICAuZm9yRWFjaChwID0+IHRvcGljcy5nZXQocCkuc2V0VmFsdWUodGhpcy5zZWxlY3RlZFRvcGljcy5pbmNsdWRlcyhwKSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pKTtcblxuICAgICAgdGhpcy51cGRhdGVNZXRhRGF0YShkdG8pO1xuICAgfVxuXG4gICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgICAgdGhpcy5mb3JtLmRpc2FibGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICB0aGlzLmZvcm0uZW5hYmxlKCk7XG4gICAgICB9XG4gICB9XG4gICBwdWJsaWMgc2VsZWN0UHJlc2V0KCkge1xuICAgICAgdmFyIHF1ZXN0aW9ubmFpcmUgPSB0aGlzLnByZXNldHMuZmluZChwID0+IHAucHVibGljS2V5ID09IHRoaXMuZm9ybS5jb250cm9scy5wcmVzZXQudmFsdWUpO1xuICAgICAgaWYgKCFxdWVzdGlvbm5haXJlKSB7IHJldHVybjsgfVxuXG4gICAgICB2YXIgdG9waWNLZXlzID0gcXVlc3Rpb25uYWlyZS5zY2FsZUtleXM7XG4gICAgICBpZiAodG9waWNLZXlzLmxlbmd0aCA9PSAwKSB7IHRvcGljS2V5cyA9IHRoaXMucHJlc2V0c1swXS5zY2FsZUtleXM7IH1cblxuICAgICAgdGhpcy5zZWxlY3RlZFRvcGljcyA9IHRvcGljS2V5cyA/PyBbXTtcbiAgICAgIHZhciB0b3BpY3MgPSB0aGlzLmZvcm0uY29udHJvbHMudG9waWNzIGFzIEZvcm1Hcm91cDtcbiAgICAgIE9iamVjdC5rZXlzKHRvcGljcy5jb250cm9scylcbiAgICAgICAgIC5mb3JFYWNoKHAgPT4gdG9waWNzLmdldChwKS5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkVG9waWNzLmluY2x1ZGVzKHApKSk7XG5cbiAgICAgIGlmIChxdWVzdGlvbm5haXJlLnB1YmxpY0tleSA9PSAnY3VzdG9tJykgeyB0aGlzLmZvcm0uY29udHJvbHMuc2hvd1RvcGljcy5zZXRWYWx1ZSh0cnVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7IH1cbiAgICAgIHZhciBkdG8gPSBuZXcgVG9waWNTZWxlY3RvckR0byhxdWVzdGlvbm5haXJlLnB1YmxpY0tleSwgdG9waWNLZXlzKTtcbiAgICAgIHRoaXMudXBkYXRlTWV0YURhdGEoZHRvKTtcbiAgICAgIHRoaXMub25DaGFuZ2UoZHRvKTtcbiAgIH1cblxuICAgcHVibGljIGdldFZhbHVlKCk6IFRvcGljU2VsZWN0b3JEdG8ge1xuICAgICAgdmFyIHRvcGljcyA9IHRoaXMuZm9ybS5jb250cm9scy50b3BpY3MgYXMgRm9ybUdyb3VwO1xuICAgICAgdmFyIHNlbGVjdGVkID0gT2JqZWN0LmtleXModG9waWNzLmNvbnRyb2xzKVxuICAgICAgICAgLmZpbHRlcihwID0+IHRvcGljcy5nZXQocCkudmFsdWUgPT0gdHJ1ZSlcbiAgICAgICAgIC5tYXAocCA9PiBwKTtcblxuICAgICAgdmFyIHByZXNldEtleSA9IHRoaXMuZm9ybS5jb250cm9scy5wcmVzZXQudmFsdWU7XG4gICAgICByZXR1cm4gbmV3IFRvcGljU2VsZWN0b3JEdG8ocHJlc2V0S2V5LCBzZWxlY3RlZCk7XG4gICB9XG5cbiAgIHB1YmxpYyBvcGVuRmFjdG9ySW5mb3JtYXRpb24odG9waWNLZXk6IHN0cmluZywgJGV2ZW50OiBFdmVudCkge1xuICAgICAgdmFyIHRvcGljID0gdGhpcy50b3BpY3MuZmluZChwID0+IHAucHVibGljS2V5ID09IHRvcGljS2V5KTtcbiAgICAgIGlmICghdG9waWMpIHsgcmV0dXJuOyB9XG5cbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBjb25zdCBkaWFsb2dDb25maWcgPSBuZXcgTWF0RGlhbG9nQ29uZmlnKCk7XG4gICAgICBkaWFsb2dDb25maWcucGFuZWxDbGFzcyA9IFsnZGlhbG9nJywgJ2ZhY3RvciddO1xuICAgICAgZGlhbG9nQ29uZmlnLmRhdGEgPSB0b3BpYztcbiAgICAgIGRpYWxvZ0NvbmZpZy5lbnRlckFuaW1hdGlvbkR1cmF0aW9uID0gMDtcbiAgICAgIGRpYWxvZ0NvbmZpZy5leGl0QW5pbWF0aW9uRHVyYXRpb24gPSAwO1xuICAgICAgdGhpcy5kaWFsb2cub3BlbihEaWFsb2dGYWN0b3JJbmZvcm1hdGlvbkNvbXBvbmVudCwgZGlhbG9nQ29uZmlnKTtcbiAgIH1cblxuICAgcHVibGljIGhhc1NlZ21lbnRRdWVzdGlvbnMoZmFjdG9yOiBGYWN0b3JTdHJ1Y3R1cmVEdG8sIHNlZ21lbnQ6IFNlZ21lbnRFbnVtLCB1c2VPd25RdWVzdGlvbkNvdW50OiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgICBpZiAodXNlT3duUXVlc3Rpb25Db3VudCkge1xuICAgICAgICAgcmV0dXJuIGZhY3Rvci5zZWdtZW50cy5maW5kKHAgPT4gcC5zZWdtZW50ID09IHNlZ21lbnQudG9TdHJpbmcoKSkub3duUXVlc3Rpb25Db3VudCA+IDAgPz8gZmFsc2U7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgIHJldHVybiBmYWN0b3Iuc2VnbWVudHMuZmluZChwID0+IHAuc2VnbWVudCA9PSBzZWdtZW50LnRvU3RyaW5nKCkpLnF1ZXN0aW9uQ291bnQgPiAwID8/IGZhbHNlO1xuICAgICAgfVxuICAgfVxuXG4gICBwdWJsaWMgZ2V0Q29yZUZhY3RvcnMoKSB7XG4gICAgICByZXR1cm4gdGhpcy50b3BpY3MuZmlsdGVyKHAgPT4gcC5wYXJlbnRLZXkgPT0gbnVsbCk7XG4gICB9XG5cbiAgIHB1YmxpYyBnZXRTdWJGYWN0b3JzKHBhcmVudEtleTogc3RyaW5nKSB7XG4gICAgICByZXR1cm4gdGhpcy50b3BpY3MuZmlsdGVyKHAgPT4gcC5wYXJlbnRLZXkgPT0gcGFyZW50S2V5KS5zb3J0KChhLCBiKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKTtcbiAgIH1cblxuICAgcHVibGljIHNlbGVjdEFsbCh0b3BpYzogRmFjdG9yU3RydWN0dXJlRHRvLCAkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHZhciB0b3BpY3MgPSB0aGlzLmZvcm0uY29udHJvbHMudG9waWNzIGFzIEZvcm1Hcm91cDtcbiAgICAgIHRoaXMudG9waWNzXG4gICAgICAgICAuZmlsdGVyKHAgPT4gcC5wYXJlbnRLZXkgPT0gdG9waWMucHVibGljS2V5IHx8IChwLnB1YmxpY0tleSA9PSB0b3BpYy5wdWJsaWNLZXkgJiYgcC5vd25RdWVzdGlvbkNvdW50ID4gMCkpXG4gICAgICAgICAuZm9yRWFjaChwID0+IHRvcGljcy5nZXQocC5wdWJsaWNLZXkpLnNldFZhbHVlKHRydWUpKVxuICAgfVxuXG4gICBwdWJsaWMgc2VsZWN0Tm9uZSh0b3BpYzogRmFjdG9yU3RydWN0dXJlRHRvLCAkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgdmFyIHRvcGljcyA9IHRoaXMuZm9ybS5jb250cm9scy50b3BpY3MgYXMgRm9ybUdyb3VwO1xuICAgICAgdGhpcy50b3BpY3NcbiAgICAgICAgIC5maWx0ZXIocCA9PiBwLnBhcmVudEtleSA9PSB0b3BpYy5wdWJsaWNLZXkgfHwgKHAucHVibGljS2V5ID09IHRvcGljLnB1YmxpY0tleSAmJiBwLm93blF1ZXN0aW9uQ291bnQgPiAwKSlcbiAgICAgICAgIC5mb3JFYWNoKHAgPT4gdG9waWNzLmdldChwLnB1YmxpY0tleSkuc2V0VmFsdWUoZmFsc2UpKVxuICAgfVxuXG4gICBwcml2YXRlIGNyZWF0ZUZvcm0oKSB7XG4gICAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgIHByZXNldDogW251bGxdLFxuICAgICAgICAgdG9waWNLZXlzOiBbW11dLFxuICAgICAgICAgdG9waWNzOiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKFtdKSxcbiAgICAgICAgIHNob3dUb3BpY3M6IFtmYWxzZV1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnRvcGljcy5maWx0ZXIocCA9PiBwLnBhcmVudEtleSAhPSBudWxsIHx8IChwLnBhcmVudEtleSA9PSBudWxsICYmIHAub3duUXVlc3Rpb25Db3VudCA+IDApKVxuICAgICAgICAgLmZvckVhY2gocCA9PiAodGhpcy5mb3JtLmNvbnRyb2xzLnRvcGljcyBhcyBGb3JtR3JvdXApLmFkZENvbnRyb2wocC5wdWJsaWNLZXksIG5ldyBGb3JtQ29udHJvbChmYWxzZSksIHsgZW1pdEV2ZW50OiBmYWxzZSB9KSlcbiAgIH1cblxuICAgcHJpdmF0ZSB1cGRhdGVNZXRhRGF0YShvdXRwdXQ6IFRvcGljU2VsZWN0b3JEdG8pIHtcbiAgICAgIHRoaXMud2FybmluZ3MgPSBbXTtcblxuICAgICAgLy8gb25seSB3b3JrIHdpdGggbG93ZXItbGV2ZWwgZmFjdG9ycywgYXMgaGlnaGVyLWxldmVsIGNvbnRhaW4gYWdncmVnYXRlZCBoaWdoZXItbGV2ZWwgcXVlc3Rpb24gY291bnRzXG4gICAgICB2YXIgc2NhbGVzVG9JbmNsdWRlID0gdGhpcy50b3BpY3MuZmlsdGVyKHAgPT4gcC5wYXJlbnRLZXkgIT0gbnVsbCAmJiBvdXRwdXQudG9waWNLZXlzLmluY2x1ZGVzKHAucHVibGljS2V5KSk7XG4gICAgICB2YXIgdG90YWxRdWVzdGlvbnMgPSB0aGlzLnRvcGljcy5maWx0ZXIocCA9PiBwLnBhcmVudEtleSAhPSBudWxsKS5yZWR1Y2UoKHN1bSwgY3VycmVudCkgPT4gc3VtICs9IGN1cnJlbnQucXVlc3Rpb25Db3VudCwgMCk7XG5cbiAgICAgIHRoaXMucXVlc3Rpb25zVG90YWwgPSBzY2FsZXNUb0luY2x1ZGUucmVkdWNlKChzdW0sIGN1cnJlbnQpID0+IHN1bSArPSBjdXJyZW50LnF1ZXN0aW9uQ291bnQsIDApO1xuICAgICAgdGhpcy5xdWVzdGlvbnNUZWFtTWVtYmVycyA9IHNjYWxlc1RvSW5jbHVkZS5mbGF0TWFwKHAgPT4gcC5zZWdtZW50cykuZmlsdGVyKHAgPT4gcC5zZWdtZW50ID09IFNlZ21lbnRFbnVtLlRlYW1NZW1iZXIpLnJlZHVjZSgoc3VtLCBjdXJyZW50KSA9PiBzdW0gKz0gY3VycmVudC5xdWVzdGlvbkNvdW50LCAwKTtcbiAgICAgIHRoaXMucXVlc3Rpb25zU3Rha2Vob2xkZXJzID0gc2NhbGVzVG9JbmNsdWRlLmZsYXRNYXAocCA9PiBwLnNlZ21lbnRzKS5maWx0ZXIocCA9PiBwLnNlZ21lbnQgPT0gU2VnbWVudEVudW0uU3Rha2Vob2xkZXIpLnJlZHVjZSgoc3VtLCBjdXJyZW50KSA9PiBzdW0gKz0gY3VycmVudC5xdWVzdGlvbkNvdW50LCAwKTtcbiAgICAgIHRoaXMucXVlc3Rpb25zU3VwcG9ydGVycyA9IHNjYWxlc1RvSW5jbHVkZS5mbGF0TWFwKHAgPT4gcC5zZWdtZW50cykuZmlsdGVyKHAgPT4gcC5zZWdtZW50ID09IFNlZ21lbnRFbnVtLk1hbmFnZW1lbnQpLnJlZHVjZSgoc3VtLCBjdXJyZW50KSA9PiBzdW0gKz0gY3VycmVudC5xdWVzdGlvbkNvdW50LCAwKTtcblxuICAgICAgdGhpcy5kdXJhdGlvblRlYW1NZW1iZXJzID0gc2NhbGVzVG9JbmNsdWRlLmZsYXRNYXAocCA9PiBwLnNlZ21lbnRzKS5maWx0ZXIocCA9PiBwLnNlZ21lbnQgPT0gU2VnbWVudEVudW0uVGVhbU1lbWJlcikucmVkdWNlKChzdW0sIGN1cnJlbnQpID0+IHN1bSArPSBjdXJyZW50LmR1cmF0aW9uSW5TZWNvbmRzLCAwKSAvIDYwO1xuICAgICAgdGhpcy5kdXJhdGlvblN0YWtlaG9sZGVycyA9IHNjYWxlc1RvSW5jbHVkZS5mbGF0TWFwKHAgPT4gcC5zZWdtZW50cykuZmlsdGVyKHAgPT4gcC5zZWdtZW50ID09IFNlZ21lbnRFbnVtLlN0YWtlaG9sZGVyKS5yZWR1Y2UoKHN1bSwgY3VycmVudCkgPT4gc3VtICs9IGN1cnJlbnQuZHVyYXRpb25JblNlY29uZHMsIDApIC8gNjA7XG4gICAgICB0aGlzLmR1cmF0aW9uU3VwcG9ydGVycyA9IHNjYWxlc1RvSW5jbHVkZS5mbGF0TWFwKHAgPT4gcC5zZWdtZW50cykuZmlsdGVyKHAgPT4gcC5zZWdtZW50ID09IFNlZ21lbnRFbnVtLk1hbmFnZW1lbnQpLnJlZHVjZSgoc3VtLCBjdXJyZW50KSA9PiBzdW0gKz0gY3VycmVudC5kdXJhdGlvbkluU2Vjb25kcywgMCkgLyA2MDtcblxuICAgICAgaWYgKHRoaXMuZHVyYXRpb25UZWFtTWVtYmVycyA8IDEpIHsgdGhpcy5kdXJhdGlvblRlYW1NZW1iZXJzID0gMTsgfVxuICAgICAgaWYgKHRoaXMuZHVyYXRpb25TdGFrZWhvbGRlcnMgPCAxKSB7IHRoaXMuZHVyYXRpb25TdGFrZWhvbGRlcnMgPSAxOyB9XG4gICAgICBpZiAodGhpcy5kdXJhdGlvblN1cHBvcnRlcnMgPCAxKSB7IHRoaXMuZHVyYXRpb25TdXBwb3J0ZXJzID0gMTsgfVxuXG4gICAgICBpZiAodGhpcy5xdWVzdGlvbnNTdGFrZWhvbGRlcnMgPT0gMCkge1xuICAgICAgICAgdGhpcy53YXJuaW5ncy5wdXNoKFwiVGhlIHNlbGVjdGlvbiBkb2VzIG5vdCBpbmNsdWRlIHRvcGljcyBmb3Igc3Rha2Vob2xkZXJzLlwiKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnF1ZXN0aW9uc1N1cHBvcnRlcnMgPT0gMCkge1xuICAgICAgICAgdGhpcy53YXJuaW5ncy5wdXNoKFwiVGhlIHNlbGVjdGlvbiBkb2VzIG5vdCBpbmNsdWRlIHRvcGljcyBmb3Igc3VwcG9ydGVycyAvIG1hbmFnZW1lbnQuXCIpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucXVlc3Rpb25zVGVhbU1lbWJlcnMgPT0gMCkge1xuICAgICAgICAgdGhpcy53YXJuaW5ncy5wdXNoKFwiVGhlIHNlbGVjdGlvbiBkb2VzIG5vdCBpbmNsdWRlIHRvcGljcyBmb3IgdGVhbSBtZW1iZXJzLlwiKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnF1ZXN0aW9ubmFpcmVBY2N1cmFjeSA8IDAuMjUpIHtcbiAgICAgICAgIHRoaXMud2FybmluZ3MucHVzaChcIlRoZSBzZWxlY3Rpb24gbWVhc3VyZXMgZmV3IHRvcGljcywgc28gaXRzIG92ZXJhbGwgYWNjdXJhY3kgaXMgbG93LlwiKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5xdWVzdGlvbm5haXJlQWNjdXJhY3kgPSB0aGlzLnF1ZXN0aW9uc1RvdGFsIC8gdG90YWxRdWVzdGlvbnM7XG4gICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUb3BpY1NlbGVjdG9yRHRvIHtcbiAgIGNvbnN0cnVjdG9yKHByZXNldEtleTogc3RyaW5nLCB0b3BpY0tleXM6IHN0cmluZ1tdKSB7XG4gICAgICB0aGlzLnByZXNldEtleSA9IHByZXNldEtleTtcbiAgICAgIHRoaXMudG9waWNLZXlzID0gdG9waWNLZXlzID8/IFtdO1xuICAgfVxuXG4gICBwcmVzZXRLZXk6IHN0cmluZztcbiAgIHRvcGljS2V5czogc3RyaW5nW107XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgIDxkaXYgY2xhc3M9XCJ0b3BpY3NlbGVjdG9yLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRvcGljc2VsZWN0b3ItbWV0YWRhdGFcIj5cbiAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWVzdGlvbm5haXJlLXByZXNldFwiPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwicXVlc3Rpb25uYWlyZS1wcmVzZXQtc2VsZWN0XCIgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U2VsZWN0IHByZWRlZmluZWQgcXVlc3Rpb25uYWlyZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgaWQ9XCJxdWVzdGlvbi1wcmVzZXRcIiBmb3JtQ29udHJvbE5hbWU9XCJwcmVzZXRcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdFByZXNldCgpXCI+XG4gICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwidHlwZS5wdWJsaWNLZXlcIiAqbmdGb3I9XCJsZXQgdHlwZSBvZiBwcmVzZXRzXCIgY2xhc3M9XCJzZWxlY3Qtb3B0aW9uXCI+e3t0eXBlLm5hbWV9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICA8L2Rpdj5cbiAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWVzdGlvbm5haXJlLWFjY3VyYWN5XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXVlc3Rpb25uYWlyZS1icmVha2Rvd24tbGFiZWxcIj5BY2N1cmFjeTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1ZXN0aW9ubmFpcmUtYnJlYWtkb3duLWJhci1ob2xkZXJcIj5cbiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWVzdGlvbm5haXJlLWFjY3VyYWN5LWJhclwiIFtuZ0NsYXNzXT1cInsnbG93JzogcXVlc3Rpb25uYWlyZUFjY3VyYWN5IDwgMC4yNSwgJ21vZGVyYXRlJyA6IHF1ZXN0aW9ubmFpcmVBY2N1cmFjeSA8IDAuNSAmJiBxdWVzdGlvbm5haXJlQWNjdXJhY3kgPj0gMC4yNX1cIiBbbmdTdHlsZV09XCJ7J3dpZHRoJzogKHF1ZXN0aW9ubmFpcmVBY2N1cmFjeSAqIDEwMCkgKyAnJScgfVwiPnt7cXVlc3Rpb25uYWlyZUFjY3VyYWN5ICogMTAwIHwgbnVtYmVyOicxLjAtMCd9fSU8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgPC9kaXY+XG4gICAgICAgICA8ZGl2IGNsYXNzPVwicXVlc3Rpb25uYWlyZS1zZWdtZW50c1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1ZXN0aW9ubmFpcmUtc2VnbWVudHMtbGFiZWxcIj5UaW1lIGludmVzdG1lbnQ8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWVzdGlvbm5haXJlLWJyZWFrZG93bnNcIj5cbiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWVzdGlvbm5haXJlLWJyZWFrZG93blwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1ZXN0aW9ubmFpcmUtYnJlYWtkb3duLWxhYmVsXCI+VGVhbSBtZW1iZXJzPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NiYXIgcHJvZ3Jlc3NiYXItcG9zaXRpdmUgcHJvZ3Jlc3NiYXItdGVhbW1lbWJlclwiPlxuICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzYmFyLWJhclwiICpuZ0lmPVwicXVlc3Rpb25zVGVhbU1lbWJlcnMgPiAwXCIgW3N0eWxlLndpZHRoXT1cIigocXVlc3Rpb25zVGVhbU1lbWJlcnMgLyBxdWVzdGlvbnNUb3RhbCkgKiAxMDApICsgJyUnXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NiYXItc2NvcmVcIj57e2R1cmF0aW9uVGVhbU1lbWJlcnMgfCBudW1iZXI6JzEuMC0wJ319IG1pbjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWVzdGlvbm5haXJlLWJyZWFrZG93blwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1ZXN0aW9ubmFpcmUtYnJlYWtkb3duLWxhYmVsXCI+U3Rha2Vob2xkZXJzPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NiYXIgcHJvZ3Jlc3NiYXItcG9zaXRpdmUgcHJvZ3Jlc3NiYXItc3Rha2Vob2xkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc2Jhci1iYXJcIiAqbmdJZj1cInF1ZXN0aW9uc1N0YWtlaG9sZGVycyA+IDBcIiBbc3R5bGUud2lkdGhdPVwiKChxdWVzdGlvbnNTdGFrZWhvbGRlcnMgLyBxdWVzdGlvbnNUb3RhbCkgKiAxMDApICsgJyUnXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NiYXItc2NvcmVcIj57e2R1cmF0aW9uU3Rha2Vob2xkZXJzIHwgbnVtYmVyOicxLjAtMCd9fSBtaW48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXVlc3Rpb25uYWlyZS1icmVha2Rvd25cIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWVzdGlvbm5haXJlLWJyZWFrZG93bi1sYWJlbFwiPlN1cHBvcnRlcnM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc2JhciBwcm9ncmVzc2Jhci1wb3NpdGl2ZSBwcm9ncmVzc2Jhci1zdXBwb3J0ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc2Jhci1iYXJcIiAqbmdJZj1cInF1ZXN0aW9uc1N1cHBvcnRlcnMgPiAwXCIgW3N0eWxlLndpZHRoXT1cIigocXVlc3Rpb25zU3VwcG9ydGVycyAvIHF1ZXN0aW9uc1RvdGFsKSAqIDEwMCkgKyAnJSdcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc2Jhci1zY29yZVwiPnt7ZHVyYXRpb25TdXBwb3J0ZXJzIHwgbnVtYmVyOicxLjAtMCd9fSBtaW48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgIDwvZGl2PlxuICAgICAgICAgPGRpdiBjbGFzcz1cInRvcGljc2VsZWN0b3Itd2FybmluZ3NcIiAqbmdJZj1cIndhcm5pbmdzLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b3BpY3NlbGVjdG9yLXdhcm5pbmdzLXdhcm5pbmdcIiAqbmdGb3I9XCJsZXQgd2FybmluZyBvZiB3YXJuaW5nc1wiPlxuICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIHBoLWluZm8tZmlsbFwiPjwvc3Bhbj57e3dhcm5pbmd9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICA8L2Rpdj5cbiAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQobnVsbClcIiAqbmdJZj1cIiFmb3JtLmNvbnRyb2xzLnNob3dUb3BpY3MudmFsdWVcIiBpZD1cImFjdGlvbi1hZHZhbmNlZHZpZXd0b2dnbGVcIiBjbGFzcz1cInRvcGljLXNlbGVjdG9yLWFkdmFuY2Vkdmlld3RvZ2dsZVwiIChjbGljayk9XCJmb3JtLmNvbnRyb2xzLnNob3dUb3BpY3Muc2V0VmFsdWUodHJ1ZSlcIj48c3BhbiBjbGFzcz1cImljb24gcGgtY2FyZXQtZG93bi1ib2xkXCI+PC9zcGFuPkN1c3RvbWl6ZSB0b3BpY3M8L2E+XG4gICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKG51bGwpXCIgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLnNob3dUb3BpY3MudmFsdWVcIiBpZD1cImFjdGlvbi1hZHZhbmNlZHZpZXd0b2dnbGVcIiBjbGFzcz1cInRvcGljLXNlbGVjdG9yLWFkdmFuY2Vkdmlld3RvZ2dsZVwiIChjbGljayk9XCJmb3JtLmNvbnRyb2xzLnNob3dUb3BpY3Muc2V0VmFsdWUoZmFsc2UpXCI+PHNwYW4gY2xhc3M9XCJpY29uIHBoLWNhcmV0LXVwLWJvbGRcIj48L3NwYW4+SGlkZSB0b3BpY3M8L2E+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0b3BpY3NlbGVjdG9yLXRvcGljc1wiICpuZ0lmPVwiZm9ybS5jb250cm9scy5zaG93VG9waWNzLnZhbHVlXCI+IFxuICAgICAgICAgPGRpdiBjbGFzcz1cInRvcGljLXBhcmVudFwiICpuZ0Zvcj1cImxldCB0b3BpYyBvZiBnZXRDb3JlRmFjdG9ycygpXCIgZm9ybUFycmF5TmFtZT1cInRvcGljc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWVcIj5cbiAgICAgICAgICAgICAgIDxoND57e3RvcGljLm5hbWV9fTwvaDQ+XG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVscGVyc1wiPig8YSBocmVmPVwiI1wiIChjbGljayk9XCJzZWxlY3RBbGwodG9waWMsICRldmVudClcIj5hbGw8L2E+IHwgPGEgaHJlZj1cIiNcIiAoY2xpY2spPVwic2VsZWN0Tm9uZSh0b3BpYywgJGV2ZW50KVwiPm5vbmU8L2E+KTwvZGl2PlxuICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvcGljLWNoaWxkLW1vcmVpbmZvcm1hdGlvblwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIHBoLWluZm8tYm9sZFwiIChjbGljayk9XCJvcGVuRmFjdG9ySW5mb3JtYXRpb24odG9waWMucHVibGljS2V5LCAkZXZlbnQpXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRvcGljLm93blF1ZXN0aW9uQ291bnQgPiAwXCIgY2xhc3M9XCJ0b3BpYy1jaGlsZFwiPlxuICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cInRvcGljLWNoaWxkLWNoZWNrXCIgW2Zvcm1Db250cm9sTmFtZV09XCJ0b3BpYy5wdWJsaWNLZXlcIiAoY2xpY2spPVwidG9nZ2xlVG9waWMoKVwiIFtpZF09XCIndG9waWMtJyArIHRvcGljLm5hbWUgfCBzbHVnaWZ5XCI+PC9tYXQtY2hlY2tib3g+XG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9waWMtY2hpbGQtZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgIHt7dG9waWMubmFtZX19ICh7e3RvcGljLm93blF1ZXN0aW9uQ291bnR9fSBxdWVzdGlvbnMpXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFnc1wiPlxuICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZ3MtdGFnIHJlY29tbWVuZGVkXCIgKm5nSWY9XCJ0b3BpYy5yZWNvbW1lbmRlZFwiPlJlY29tbWVuZGVkPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFncy10YWcgdGVhbW1lbWJlclwiICpuZ0lmPVwiaGFzU2VnbWVudFF1ZXN0aW9ucyh0b3BpYywgU2VnbWVudEVudW0uVGVhbU1lbWJlciwgdHJ1ZSlcIj5Gb3IgdGVhbSBtZW1iZXJzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFncy10YWcgc3Rha2Vob2xkZXJcIiAqbmdJZj1cImhhc1NlZ21lbnRRdWVzdGlvbnModG9waWMsIFNlZ21lbnRFbnVtLlN0YWtlaG9sZGVyLCB0cnVlKVwiPkZvciBzdGFrZWhvbGRlcnM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWdzLXRhZyBzdXBwb3J0ZXJcIiAqbmdJZj1cImhhc1NlZ21lbnRRdWVzdGlvbnModG9waWMsIFNlZ21lbnRFbnVtLk1hbmFnZW1lbnQsIHRydWUpXCI+Rm9yIHN1cHBvcnRlcnM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9waWMtY2hpbGQtbW9yZWluZm9ybWF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gcGgtaW5mby1ib2xkXCIgKGNsaWNrKT1cIm9wZW5GYWN0b3JJbmZvcm1hdGlvbih0b3BpYy5wdWJsaWNLZXksICRldmVudClcIj48L3NwYW4+XG4gICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHN1YlRvcGljIG9mIGdldFN1YkZhY3RvcnModG9waWMucHVibGljS2V5KVwiIGNsYXNzPVwidG9waWMtY2hpbGRcIj5cbiAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggY2xhc3M9XCJ0b3BpYy1jaGlsZC1jaGVja1wiIFtmb3JtQ29udHJvbE5hbWVdPVwic3ViVG9waWMucHVibGljS2V5XCIgKGNsaWNrKT1cInRvZ2dsZVRvcGljKClcIiBbaWRdPVwiJ3RvcGljLScgKyBzdWJUb3BpYy5uYW1lIHwgc2x1Z2lmeVwiPjwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvcGljLWNoaWxkLWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICB7e3N1YlRvcGljLm5hbWV9fSAoe3tzdWJUb3BpYy5xdWVzdGlvbkNvdW50fX0gcXVlc3Rpb25zKVxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZ3NcIj5cbiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWdzLXRhZyByZWNvbW1lbmRlZFwiICpuZ0lmPVwic3ViVG9waWMucmVjb21tZW5kZWRcIj5SZWNvbW1lbmRlZDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZ3MtdGFnIHRlYW1tZW1iZXJcIiAqbmdJZj1cImhhc1NlZ21lbnRRdWVzdGlvbnMoc3ViVG9waWMsIFNlZ21lbnRFbnVtLlRlYW1NZW1iZXIsIGZhbHNlKVwiPkZvciB0ZWFtIG1lbWJlcnM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWdzLXRhZyBzdGFrZWhvbGRlclwiICpuZ0lmPVwiaGFzU2VnbWVudFF1ZXN0aW9ucyhzdWJUb3BpYywgU2VnbWVudEVudW0uU3Rha2Vob2xkZXIsIGZhbHNlKVwiPkZvciBzdGFrZWhvbGRlcnM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWdzLXRhZyBzdXBwb3J0ZXJcIiAqbmdJZj1cImhhc1NlZ21lbnRRdWVzdGlvbnMoc3ViVG9waWMsIFNlZ21lbnRFbnVtLk1hbmFnZW1lbnQsIGZhbHNlKVwiPkZvciBzdXBwb3J0ZXJzPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvcGljLWNoaWxkLW1vcmVpbmZvcm1hdGlvblwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIHBoLWluZm8tYm9sZFwiIChjbGljayk9XCJvcGVuRmFjdG9ySW5mb3JtYXRpb24oc3ViVG9waWMucHVibGljS2V5LCAkZXZlbnQpXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==